compte rendu + stats

This commit is contained in:
2025-09-15 17:23:15 +02:00
parent 1935af453c
commit 9741364afd
2 changed files with 295 additions and 51 deletions

View File

@@ -11,31 +11,7 @@
#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;
char* prepare(regex_t *p_reg, FILE* fd, regmatch_t* pmatch, char* ping, size_t nmatch){
/* regex struct memory allocation */
p_reg = (regex_t *) malloc(sizeof(*p_reg));
if(p_reg == NULL){
@@ -67,46 +43,74 @@
return ping; /* NULL */
}
/* Read file */
while(getline(&read_line,&n,fd) != -1){
if(read_line == NULL){
break;
}
return NULL; /* success */
}
/* Exec regex to find ping */
int loop_line(char* read_line)
{
int start;
int end;
size_t size_ping;
if(regexec(p_reg,read_line,nmatch,pmatch,0) == 0){
if(read_line == NULL){
return -1;
}
/* Extract ping position from read line */
start = (int) pmatch[1].rm_so;
end = (int) pmatch[1].rm_eo;
size_ping = (size_t) (end - start);
/* Exec regex to find ping */
/* ping string memory allocation */
ping = malloc(sizeof(char) * (size_ping+2));
if(ping == NULL){
free(read_line);
read_line = NULL;
n = 0;
break;
}
if(regexec(p_reg,read_line,nmatch,pmatch,0) == 0){
/* Create ping string */
(void) strncpy(ping, &read_line[start], size_ping);
ping[size_ping]='\n';
ping[size_ping+1]='\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);
/* Free memory */
/* ping string memory allocation */
ping = malloc(sizeof(char) * (size_ping+2));
if(ping == NULL){
free(read_line);
read_line = NULL;
n = 0;
break;
return -1;
}
/* 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;
return 0; /* success */
}
free(read_line);
read_line = NULL;
n = 0;
return 1;
}
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;
if(prepare(p_reg, fd, pmatch, ping, nmatch) != NULL){
return ping; /* NULL */
}
/* Read file */
while(getline(&read_line,&n,fd) != -1){
if (loop_line(read_line) != 1){
break;
}
}
/* free allocated memory */