#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;
}