

/******************************************************************
Aqui comeca o programa anexa.c
*****************************************************************/

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#include <sys/time.h>

#define MAX_ENTRIES 10000

typedef struct {
    char *name;
    char *val;
} entry;

char *makeword();
char *fmakeword();
char x2c();
void unescape_url();
void plustospace();

/*********************************************************************
 Funcao auxiliar para se colocar a data no arquivo  */

void ret_str(str, num)
char *str;
unsigned long int num;
{
 char aux[5];

 sprintf(aux,"%lu",num);
 if (strlen(aux)==1)
        {
         str[0]='0';
         str[1]=aux[0];
         str[2]=0;
        }
 else
        strcpy(str,aux);

}


/*********************************************************************
 Coloca a data na pagina, junto com os dados vindos dos forms */

void data(dia, hora)
char *dia;
char *hora;
{
 char auxi[5];
 struct tm *time_st;
 time_t hour;

 hour = time(NULL);
 time_st = localtime(&hour);

 ret_str(auxi,time_st->tm_hour);
 strcpy(hora,auxi);
 ret_str(auxi,time_st->tm_min);
 strcat(hora,":");
 strcat(hora,auxi);

 ret_str(auxi,time_st->tm_mday);
 strcpy(dia,auxi);
 ret_str(auxi,(time_st->tm_mon + 1));
 strcat(dia,"/");
 strcat(dia,auxi);


 ret_str(auxi,time_st->tm_year);
 strcat(dia,"/");
 strcat(dia,auxi);

}

/**********************************************************************/

grava(arq,entries,nro)
char *arq;
entry *entries;
int nro;
{
   register int j;
   char command[256], dia[10], hora[10];
   char ipaddr[18];

    register int x;
    FILE *fp2;
     
   if(!(fp2 = fopen(arq, "a+")))
    
    {
	printf("erro: o arquivo %s nao pode ser criado\n", arq);
        exit(1); 

    }

    data(dia,hora); 
    fprintf(fp2,"Data: %s<br>\n",dia);
    fprintf(fp2,"Hora: %s<br><br>\n",hora);	
    strcpy(ipaddr, getenv("REMOTE_HOST"));
    fprintf(fp2,"M&aacute;quina: %s<br><br>\n",ipaddr);
    for ( x=1; x <= nro ; x++)
	{
        j= fprintf(fp2, "<b>%s</b> : %s<br>\n", entries[x].name, entries[x].val);
	}

    fprintf(fp2, "<BR><HR><P>");
    fclose(fp2);

 
}

/* ---------------------------------------------------------------
   FUNCAO....: main
   --------------------------------------------------------------- */
main(argc, argv)
int argc;
char *argv[];
{
   entry entries[MAX_ENTRIES];
   register int x, m=0;
   int cl;
   char *val, *name;
 
   cl = atoi(getenv("CONTENT_LENGTH"));
  
   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,'=');
      m=x;
   }
      grava(entries[0].val,entries,m); 
    
printf("Location: %s %c%c",entries[0].val,10,10);

 
}

