Como foi visto, o atributo ACTION do FORM especifica o nome do programa executável (.cgi) ao qual será submetido o FORM. Portanto será mostrado agora como criar a parte básica do programa fonte deste executável.
O exemplo que será apresentado neste tutorial utiliza a linguagem C para gerar o fonte do programa cgi.
#include <stdio.h>
#include <string.h>
#define MAX_ENTRIES 10000
typedef struct {
char *name;
char *val;
} entry;
char *makeword(char *line, char stop);
char *fmakeword(FILE *f, char stop, int *len);
char x2c(char *what);
void unescape_url(char *url);
void plustospace(char *str);
/* ---------------------------------------------------------
FUNCAO: main
--------------------------------------------------------*/
main(int argc, char *argv[])
{
entry entries[MAX_ENTRIES];
register int x, m=0;
int cl;
cl = atoi(getenv("CONTENT_LENGTH"));
printf("Content-type: text/html%c%c",10,10);
for (x=0; cl && (!feof(stdin)); x++)
{
entries[x].val = fmakeword(stdin,'&',&cl);
plustospace(entries[x].val);
unescape_url(entries[x].val);
entries[x].name=makeword(entries[x].val,'=');
}
}
O bloco mostrado no exemplo acima realiza a separação dos valores dos pares name/value da
Os procedimentos fmakeword, plustospace, unescape_url, makeword estão disponíveis no arquivo util.c.