#define FILENAME_MAXLEN 255
#define ERROR_MAXLEN 1000
#define LOGLINE_MAXLEN 4096
#define MAIL_MAXLEN 4096
int main(void)
{
FILE *fdlog;
char *ptraux;
char *filters[] = { "filtro 1", "filtro 2" };
char logfile[FILENAME_MAXLEN], logline[LOGLINE_MAXLEN];
char temp[MAIL_MAXLEN][6+1];
int errn;
int x = 0, y = 0;
memset(logfile, 0, sizeof(logfile));
GetLastLogFile(logfile); // pegando o nome do ultimo log
for (errn=0; errn<2; errn++) // loop para executar todos filtros
{
// zerando as matrizes
memset(logline, 0, sizeof(logline));
memset(temp, 0, sizeof(temp));
fprintf(stdout, "(VERIFICANDO) %s\n", filters[errn]);
if ((fdlog = fopen(logfile, "r")) == 0) // abrindo ultimo arquivo de log
{
fprintf(stdout, "(ERRO ACESSO) %s\n", logfile);
return -1;
}
fprintf(stdout, "(LENDO) %s\n", logfile);
while (!feof(fdlog)) // enquanto nao chegar ao fim do arquivo
{
fgets(logline, LOGLINE_MAXLEN, fdlog); // le uma linha por vez
if (ptraux = strstr(logline, filters[errn])) // aplica os filtros definidos
{
if (ptraux = strstr(ptraux, "Estab.")) // filtra somente o codigo do estabelecimento
{
strncpy(temp[x++], ptraux+7, 6); // acrescenta ao buffer
}
}
}
fclose(fdlog); // fechando arquivo de log
fprintf(stdout, "(FECHANDO) %s\n", logfile);
}
return 0;
}