From db41c94d58762d2675e7021e0cd03a31072a1196 Mon Sep 17 00:00:00 2001 From: akagunduz Date: Mon, 15 Sep 2025 17:44:47 +0200 Subject: [PATCH] maj --- TP2.txt | 33 ++++++++++++ get_ping_from_temp_log.pdf | Bin 0 -> 16351 bytes ping-report/ping-report | Bin 0 -> 17896 bytes ping-report/ping-report.db | Bin 0 -> 8192 bytes ping-report/src/stats.c | 103 +++++++++++++++++++++++-------------- set_stats_ping.pdf | Bin 0 -> 17532 bytes 6 files changed, 96 insertions(+), 40 deletions(-) create mode 100644 TP2.txt create mode 100644 get_ping_from_temp_log.pdf create mode 100755 ping-report/ping-report create mode 100644 ping-report/ping-report.db create mode 100644 set_stats_ping.pdf diff --git a/TP2.txt b/TP2.txt new file mode 100644 index 0000000..17dfdb8 --- /dev/null +++ b/TP2.txt @@ -0,0 +1,33 @@ +TP2 David AKAGUNDUZ Bamba TOP + +Nous allons analyser lesfichier et trouver leur nombre de compléxité cyclonique : + +Fichier daemon.c : + +Fonction create_deamon : 4 +Fonction ping_request : 2 +Fonction send_check : 4 +Fonction check_keep_working : 4 +Fonction daemon_work : 3 + +Fichier db-sqlite.c : + +Fonction db_connect : 1 +Fonction db_disconnect : 1 +Fonction insert_hourly_report : 1 + +Fichier ping-report.c : + +Focntion main : 4 + +Fichier stats.c : +Fonction get_ping_from_temp_log : 15 +Fonction write_ping_log : 5 +Fonction set_stats_ping : 17 + +Fichier utils.c : + +Fonction write_pid_file : 2 +Fonction remove_file : 1 + + diff --git a/get_ping_from_temp_log.pdf b/get_ping_from_temp_log.pdf new file mode 100644 index 0000000000000000000000000000000000000000..cbf7e3283722e1f2e94e29a452802b65a6bd41f0 GIT binary patch literal 16351 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

-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 Iy862T00*_))&Kwi literal 0 HcmV?d00001 diff --git a/ping-report/ping-report b/ping-report/ping-report new file mode 100755 index 0000000000000000000000000000000000000000..a20d1fc106d30a3cc49bdec29c54deda9a80cb64 GIT binary patch literal 17896 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 literal 0 HcmV?d00001 diff --git a/ping-report/ping-report.db b/ping-report/ping-report.db new file mode 100644 index 0000000000000000000000000000000000000000..3f9da66fc0c43f2d31ae0d494d801d7bd3b47ac4 GIT binary patch literal 8192 zcmWFz^vNtqRY=P(%1ta$FlG>7U}R))P*7lCU|@n`1}FgWS)gnX#Rwt@U?v8=E)iak zL0k+Bd?&dGC?Ay`4S~@R7!85Z5Eu=C(GVC7fzc44bqI92F|ms(D|1W=FUw3VcS+35 zsSHXj$S*2EVmb%8I)=C^gn7D#D<=B%lgC{oo2S^N_#N>?B6eQ(P z5hNWN;E(`?4^mKpxF8%153`K?(jvG@w;+FCI0vN8Bfqo=7B33H9&ovE57!`9I1i*U z7#7~CiFpdP3JBXlk|2!56(C^{_Vx7B2u3zQ6UAtd5)7At1VI?pg-A{WNrEt@Q$eC2 z46+iDaujS8iZhT>5{eTL4s!H!L6Jd(WJ+SCf-Op71S`~pCOvS90);jt@(}@qC14PS zf;51Q0XY~W5Kui&v*>Y*82-@%DH*`Q4G(6N;Pv2g5AqKUP;iO_#|I+eG?_56i>sz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2n=Kh002J2oyY(H literal 0 HcmV?d00001 diff --git a/ping-report/src/stats.c b/ping-report/src/stats.c index 5b343e8..e37fbe8 100644 --- a/ping-report/src/stats.c +++ b/ping-report/src/stats.c @@ -22,6 +22,59 @@ Return value : Ping value as a string or NULL if an error occured */ +void whil(FILE* fd, + char* read_line, + size_t n , + size_t nmatch, + regex_t *p_reg, + regmatch_t* pmatch, + char* ping, + int start, + int end, + size_t size_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; + } + + free(read_line); + read_line = NULL; + n = 0; + } +} /*@null@*/char* get_ping_from_temp_log(){ /* Variables */ @@ -68,46 +121,16 @@ } /* Read file */ - 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; - } - - free(read_line); - read_line = NULL; - n = 0; - } + whil(FILE* fd, + char* read_line, + size_t n , + size_t nmatch, + regex_t *p_reg, + regmatch_t* pmatch, + char* ping, + int start, + int end, + size_t size_ping); /* free allocated memory */ regfree(p_reg); diff --git a/set_stats_ping.pdf b/set_stats_ping.pdf new file mode 100644 index 0000000000000000000000000000000000000000..ae625dc131deee1c2fca4b83712c45be36f8f58f GIT binary patch literal 17532 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