La funzione estrai input si incarica di recuperare il numero di matricola passato in input. Due sono i parametri di questa funzione: La funzione estrai_input comincia con l'allocare uno spazio sufficiente per ospitare la stringa di input. Se l'input è stato passato al programma tramite linea di comando (e dunque il parametro formato è uguale a PARAMETRO_COMMAND_LINE), la funzione non fa altro che copiare il parametro parametro nello spazio appena allocato e puntato dal puntatore valore_input; quindi la funzione termina.
Se invece l'input non è stato passato sulla linea di comando, allora il parametro parametro non ha alcun significato (la funzione main ha passato un NULL), ed è quindi disponibile per ospitare temporaneamente una stringa (ci metteremo la stringa nome=valore). Prima, però, è necessario allocarsi uno spazio opportuno (viene infatti allocato uno spazio per 256 caratteri).
In ogni caso (passaggio di parametri tramite variabili d'ambiente oppure passaggio di parametri tramite standard input), il server avrà settato una variabile d'ambiente dal nome REQUEST_METHOD, al valore GET o POST, a seconda del metodo utilizzato dal client nel suo messaggio http (il nome ed il ruolo di questa variabile rientra nelle specifiche della CGI). Come prima cosa, dunque, andiamo a verificare quale valore abbia questa variabile d'ambiente. Infatti se il metodo utilizzato dal client è il GET, possiamo desumere che i parametri siano stati passati dal server al gateway tramite la variabile di ambiente QUERY_STRING, altrimenti (metodo POST) saranno necessariamente passati dal server al gateway tramite standard input.
Una volta acquisita la coppia nome=valore (per esempio "matricola=080894563") nello spazio allocato per il puntatore parametro, dobbiamo estrarre da questa stringa la seconda parte contenente il numero di matricola, eliminando la parte iniziale fino al segno "=" incluso. Per far questo incrementiamo la variabile parametro fino a che non punti sul segno "=", e poi la incrementiamo ancora una volta per farglielo scavalcare. A questo punto copiamo la stringa puntata dalla variabile paramentro sullo spazio puntato da valore_input.  
 

pagina precedente    prossima pagina