forked from menault/TD2_DEV51_Qualite_Algo
pas mal de boulot fait
This commit is contained in:
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -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