/*
---- ---- ---- ---- ---- hexa2char ---- ---- ---- ---- ---- ---- ---- ---- ----
---- ---- Specifications Externes ---- ---- ---- ---- ---- ---- ---- ---- ----
---- entree : nombre hexa en texte sur 2 caracteres [00..FF]
---- sortie : caractere ascii correspondant
---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
*/
char hexa2char(char *s);

/*
---- ---- ---- ---- ---- ---- textval ---- ---- ---- ---- ---- ---- ---- ----
---- ---- Specifications Externes ---- ---- ---- ---- ---- ---- ---- ---- ----
---- entree : pointeur dans QUERY_STRING sur la valeur d'une variable
---- sortie : nouvelle chaine contenant la valeur decodee cgi avec \0 en fin
---- ---- Specifications Internes ---- ---- ---- ---- ---- ---- ---- ---- ----
- Arret au caratere '\0' (fin de chaine) ou '&' (variable suivante)
- Transforme '+' en ' ' et "%xx" en caractere ascii
---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
*/
char *textval(char *s);

/*
---- ---- ---- ---- ---- ---- varsuiv ---- ---- ---- ---- ---- ---- ---- ----
---- ---- Specifications Externes ---- ---- ---- ---- ---- ---- ---- ---- ----
---- entrees : char *s , int i
- s : pointeur au debut de QUERY_STRING
- i : index courant
---- sortie : index du debut du prochain nom de variable, ou -1
---- ---- Specifications Internes ---- ---- ---- ---- ---- ---- ---- ---- ----
- i parcours s pour trouver '\0' (fin de chaine) ou '&' (variable suivante)
---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
*/
int varsuiv(char *s, int i);

/*
---- ---- ---- ---- ---- ---- idval ---- ---- ---- ---- ---- ---- ---- ----
---- ---- Specifications Externes ---- ---- ---- ---- ---- ---- ---- ---- ----
---- entrees : char *s , char *v, int n
- s : pointeur au debut de QUERY_STRING
- v : nom de la variable
- n : occurence de la variable
---- sortie : index du debut de la valeur de la nieme occurence de v, ou -1
---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
*/
int idval(char *s , char *v, int n);

/*
---- ---- ---- ---- ---- ---- nbocc ---- ---- ---- ---- ---- ---- ---- ----
---- ---- Specifications Externes ---- ---- ---- ---- ---- ---- ---- ---- ----
---- entrees : char *s , char *v
- s : pointeur au debut de QUERY_STRING
- v : nom de la variable
---- sortie : nombre d'occurences de v
---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
*/
int nbocc(char *s , char *v);

/*
---- ---- ---- ---- ---- ---- getval ---- ---- ---- ---- ---- ---- ---- ----
---- ---- Specifications Externes ---- ---- ---- ---- ---- ---- ---- ---- ----
---- entrees : char *s , char *v, int n
- s : pointeur au debut de QUERY_STRING
- v : nom de la variable
- n : occurence de la variable
---- sortie : valeur de la nieme occurence de v decodee, ou NULL
---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
*/
char *getval(char *s , char *v, int n);