extern char **environ;
int scriviriga (char * s){
 FILE *fp;
 fp=fopen(anavol,"a");
 if (fp){
  fprintf(fp,"%s",s);  
 fclose(fp);
 }
}

int salvariga(char * riga, int numriga){
 FILE *fp;
 fp=fopen("/var/log/anavol/anavolu","a");
 if (fp){
  fprintf(fp,"%1u %s",numriga, riga);  
  fclose(fp);
 }
}
int strtoupper(char *stringain, char *stringaout){
 int i,l;
 i=0;l=strlen(stringain);
 stringaout[0]=' ';
 for (i=0; i<l; i++){
   stringaout[i+1]=(char)toupper(stringain[i]);
 }
stringaout[i]=' ';
stringaout[i+1]=0;
return 1;
}

int filtro(char *linea){
 int i;
 i=0;
 while(1){
    if (patterns[i][0]==0) break;
    if (strstr(linea,patterns[i])){ 
	if (getenv("DEBUGLEOQFILTER")){
		dataora();
		env();
		fprintf(stderr,"%s trovato in %s\n",patterns[i],linea);
	}
	return 1;
    }
    i++;
 }
 return 0;
}

env (){
int i;
i=0;
 while (1){
 fprintf(stderr,"%s,",environ[i]);
 i++;
 if (environ[i]==NULL) break;
 }

}


dataora(){
time_t t;
struct tm *tm;
t=time(0);
 tm=localtime(&t);
 fprintf(stderr,"DATAORA=%d-%02d-%02d %02d:%02d:%02d,",1900+tm->tm_year,
	tm->tm_mon+1,tm->tm_mday,tm->tm_hour,tm->tm_min,tm->tm_sec);

}


main(){
int c;int i;int ritorno;
int image; int fineheader; int primariga;
char linea[4097];
char s[9000];
char lineaupper[4099];
ritorno=0;
image=0;
primariga=0;
fineheader=0;
while (1){
 fgets(linea,4096,stdin);
 linea[4096]='\n';
 strtoupper(linea,lineaupper);
 if (feof(stdin)) break;
 if (!filtro(lineaupper)) fputs(linea,stdout);
 else exit(99);
// else ritorno=31;

//codice pper salvare le prime due righe degli allegati immagine 
 if (image) {
   if (fineheader){ 
      if(primariga) {
        fineheader=0;
        image=0;
	primariga=0;
	strcat (s, "2 ");
	strcat (s, linea);
	scriviriga(s);
        //salvariga(linea,2);
      } else {
	//salvariga(linea,1);
	strcpy (s, "1 ");
	strcat (s, linea);
	primariga=1;
      }
   } else {
     if (strlen(linea)<=2) fineheader=1;
   }
 }else{
   if (strcasestr (linea, "Content-Type: image")) image=1;
 }     
//Fine salvataggio prime due righe allegati immagini
}
exit(ritorno) ;
}

