TD2
This commit is contained in:
		
							
								
								
									
										
											BIN
										
									
								
								TD2_Diagramme.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								TD2_Diagramme.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										733
									
								
								Untitled Diagram.drawio
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										733
									
								
								Untitled Diagram.drawio
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										132
									
								
								ping-report/src/stats copy.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										132
									
								
								ping-report/src/stats copy.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,132 @@
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
#include <fcntl.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#include <sys/types.h>
 | 
			
		||||
#include <sys/stat.h>
 | 
			
		||||
#include <regex.h>
 | 
			
		||||
 | 
			
		||||
#include "../include/utils.h"
 | 
			
		||||
#include "../include/stats.h"
 | 
			
		||||
#include "../include/db-sqlite.h"
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
    -- get_ping_from_temp_log --
 | 
			
		||||
    Desc :
 | 
			
		||||
        Function which get the ping from a temp log containing the last ping did by the program
 | 
			
		||||
    In-param :
 | 
			
		||||
        None
 | 
			
		||||
    Out-param :
 | 
			
		||||
        None
 | 
			
		||||
    Return value :
 | 
			
		||||
        Ping value as a string or NULL if an error occured
 | 
			
		||||
*/
 | 
			
		||||
/*@null@*/char* 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 */
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /* Read file */
 | 
			
		||||
 | 
			
		||||
    whilegetline(getline(&read_line,&n,fd)) 
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    /* free allocated memory */
 | 
			
		||||
    regfree(p_reg);
 | 
			
		||||
    free(p_reg);
 | 
			
		||||
    free(pmatch);
 | 
			
		||||
    if(read_line != NULL){
 | 
			
		||||
        free(read_line);
 | 
			
		||||
    }c
 | 
			
		||||
 | 
			
		||||
    (void) fclose(fd);
 | 
			
		||||
 | 
			
		||||
    /* ping may be null, then it must mean that the ping request was lost */
 | 
			
		||||
    return ping;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void whilegetline( int gegetline) {
 | 
			
		||||
    while ( gegetline =! -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_egetlineo;
 | 
			
		||||
            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;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        free(read_line);
 | 
			
		||||
        read_line = NULL;
 | 
			
		||||
        n = 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -115,7 +115,7 @@
 | 
			
		||||
    free(pmatch);
 | 
			
		||||
    if(read_line != NULL){
 | 
			
		||||
        free(read_line);
 | 
			
		||||
    }
 | 
			
		||||
    }c
 | 
			
		||||
 | 
			
		||||
    (void) fclose(fd);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user