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

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

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 :