pas mal de boulot fait

This commit is contained in:
vaisse
2025-09-15 17:23:34 +02:00
parent 8253ce6fe8
commit 34c28d45c2
13 changed files with 239 additions and 0 deletions

View File

@@ -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 :