/** * Esta funcion obtiene el string cgi cargado por el servidor * web para luego ser procesado * Puede tratarse de una llamada de tipo GET o POST * Puede tratarse de una ejecucion de linea de comando de prueba * GET el string cgi se encuentra en variable QUERY_STRING * POST el string se ingresa por teclado * Esta funcion sirve para ambos casos * Retorna 1 si todo Ok * Retorna 0 si hubo error */ int obtenercgi(char *destino,int largo) { if ( getenv("QUERY_STRING") == NULL && getenv("REQUEST_METHOD") == NULL ) { // ejecucion de prueba en linea de comando int lei = read(STDIN_FILENO,destino,largo-1); if ( lei >= 0 ) destino[lei]='\0'; return 1; } if ( getenv("QUERY_STRING") == NULL ) return 0; if ( getenv("REQUEST_METHOD") == NULL ) return 0; if ( strcasecmp(getenv("REQUEST_METHOD"),"GET") == 0 ) { // es GET if ( strlen(getenv("QUERY_STRING")) > largo ) { // el contenido de query_string supera a largo! return 0; } strcpy(destino,getenv("QUERY_STRING")); } else { // es POST int lei = read(STDIN_FILENO,destino,largo-1); if ( lei >= 0 ) destino[lei]='\0'; } return 1; }