forked from menault/TD2_DEV51_Qualite_Algo
		
	pas mal de boulot fait
This commit is contained in:
		@@ -11,6 +11,105 @@
 | 
			
		||||
#include "../include/stats.h"
 | 
			
		||||
#include "../include/db-sqlite.h"
 | 
			
		||||
 | 
			
		||||
void while_from_gpftl(char* read_line, size_t* n, FILE* fd, regex_t* p_reg, regmatch_t* pmatch, size_t* nmatch, int* start, int* end, size_t* size_ping, char* ping){
 | 
			
		||||
    while(getline(&read_line,n,fd) != -1){
 | 
			
		||||
        
 | 
			
		||||
        if(read_line == NULL){
 | 
			
		||||
            break;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /* Exec regex to find ping */
 | 
			
		||||
 | 
			
		||||
        if(regexec(p_reg,read_line,*nmatch,pmatch,0) == 0){
 | 
			
		||||
 | 
			
		||||
            /* Extract ping position from read line */
 | 
			
		||||
            *start = (int) pmatch[1].rm_so;
 | 
			
		||||
            *end = (int) pmatch[1].rm_eo;
 | 
			
		||||
            *size_ping = (size_t) ((*end) - (*start));
 | 
			
		||||
 | 
			
		||||
            /* ping string memory allocation */
 | 
			
		||||
            ping = malloc(sizeof(char) * ((*size_ping)+2));
 | 
			
		||||
            if(ping == NULL){
 | 
			
		||||
                free(read_line);
 | 
			
		||||
                read_line = NULL;
 | 
			
		||||
                *n = 0;
 | 
			
		||||
                break;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            /* Create ping string */
 | 
			
		||||
            (void) strncpy(ping, &read_line[*start], *size_ping);
 | 
			
		||||
            ping[*size_ping]='\n';
 | 
			
		||||
            ping[*size_ping+1]='\0';
 | 
			
		||||
 | 
			
		||||
            /* Free memory */
 | 
			
		||||
            free(read_line);
 | 
			
		||||
            read_line = NULL;
 | 
			
		||||
            *n = 0;
 | 
			
		||||
            break;
 | 
			
		||||
        }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
char* better_get_ping_from_temp_log(){
 | 
			
		||||
    /* Variables */
 | 
			
		||||
    FILE* fd = NULL;
 | 
			
		||||
    char* read_line = NULL;
 | 
			
		||||
    size_t n = 0;
 | 
			
		||||
    size_t nmatch = 2;
 | 
			
		||||
    regex_t* p_reg;
 | 
			
		||||
    regmatch_t* pmatch;
 | 
			
		||||
    char* ping = NULL;
 | 
			
		||||
    int start;
 | 
			
		||||
    int end;
 | 
			
		||||
    size_t size_ping;
 | 
			
		||||
 | 
			
		||||
    /* regex struct memory allocation */
 | 
			
		||||
    p_reg = (regex_t *) malloc(sizeof(*p_reg));
 | 
			
		||||
    if(p_reg == NULL){
 | 
			
		||||
        return ping; /* NULL */
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /* Open ping log file */
 | 
			
		||||
    fd = fopen("/var/log/ping-report/last-ping.log","r");
 | 
			
		||||
    if(fd == NULL){
 | 
			
		||||
        free(p_reg);
 | 
			
		||||
        return ping; /* NULL */
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /* Construct regex to get ping from log file */
 | 
			
		||||
    if(regcomp(p_reg,"time=(.*) ms",REG_EXTENDED) != 0){
 | 
			
		||||
        if(p_reg != NULL){
 | 
			
		||||
            free(p_reg);
 | 
			
		||||
        }
 | 
			
		||||
        (void) fclose(fd);
 | 
			
		||||
        return ping; /* NULL */
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /* match info memory allocation */
 | 
			
		||||
    pmatch = malloc(sizeof(*pmatch) * nmatch);
 | 
			
		||||
    if(pmatch == NULL){
 | 
			
		||||
        (void) fclose(fd);
 | 
			
		||||
        regfree(p_reg);
 | 
			
		||||
        free(p_reg);
 | 
			
		||||
        return ping; /* NULL */
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    while_from_gpftl(read_line, &n, fd, p_reg, pmatch, &nmatch, &start, &end, &size_ping, ping);
 | 
			
		||||
 | 
			
		||||
    /* free allocated memory */
 | 
			
		||||
    regfree(p_reg);
 | 
			
		||||
    free(p_reg);
 | 
			
		||||
    free(pmatch);
 | 
			
		||||
    if(read_line != NULL){
 | 
			
		||||
        free(read_line);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    (void) fclose(fd);
 | 
			
		||||
 | 
			
		||||
    /* ping may be null, then it must mean that the ping request was lost */
 | 
			
		||||
    return ping;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
    -- get_ping_from_temp_log --
 | 
			
		||||
    Desc :
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user