nazar9318 / taller1-2c2020-TP1

0 stars 0 forks source link

Esto no es necesario #10

Open fedemgp opened 4 years ago

fedemgp commented 4 years ago

https://github.com/nazar9318/taller1-2c2020-TP1/blob/a61b543a3d047f948c663c43f2d1376f00826091/common_selector.c#L6-L18

No necesitás tener un buffer en el heap para copiar el método. Con un puntero y la función strchr lograbas exactamente esto que querés, sin tener ninguna copia extra:

// Podés hacer un strncmp(argv[3], "--method=", 9) para chequear de que el argumento cumple esa premisa y fallar
// si no sucede
const char * method = strchr(argv[3], '=');
// si method == NULL, retornás error
fedemgp commented 4 years ago

Notar que con esto, no te importa que tan largo sea el método, porque de eso ya se encargó el sistema operativo al parsear el argumento (podes tener un string "metodo_de_nombre_muy_muuuuuuuuuuuuuuuuuuy_largo" en method y no tenés que preocuparte de liberar ese recurso, porque el sistema operativo lo alloco y se hace responsable de el)

nazar9318 commented 4 years ago

Fede, es correcto lo que decís pero la función strchr me devuelve el un puntero a la primera iteración del caracter que encuentro, es decir, si el tengo '--method=cesar' me devuelve '=cesar' ¿Sería correcto hacer algo como esto?: const char * method = strchr(argv[3], '='); if (method != NULL) { method++; }

fedemgp commented 4 years ago

si tal cual, me habia olvidado de ese pequeño detalle. Recordá también de que si method == NULL entonces tenés que abortar la ejecución.