summaryrefslogtreecommitdiff
path: root/src/publisher.c
diff options
context:
space:
mode:
authorLoic Guegan <manzerbredes@mailbox.org>2023-07-16 14:50:53 +0200
committerLoic Guegan <manzerbredes@mailbox.org>2023-07-16 14:50:53 +0200
commit33c54437949aaefacc3326a1c2d577db072cbacd (patch)
tree985241d4701cf57a8c7912a3a97ebe3bf1acc00d /src/publisher.c
parente0fdde7cd04550e6a13aa626d2ef6517bf6e5608 (diff)
Minor changes
Diffstat (limited to 'src/publisher.c')
-rw-r--r--src/publisher.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/publisher.c b/src/publisher.c
index f826f3b..3e41d86 100644
--- a/src/publisher.c
+++ b/src/publisher.c
@@ -2,6 +2,7 @@
#include <assert.h>
#include <time.h>
#include <dirent.h>
+#include <signal.h>
#include "utils.h"
@@ -12,9 +13,17 @@ char *__interface;
char *__ip;
int __loginterval;
int __port;
+unsigned char __stop=0;
void publish(void *publisher, char *filepath, char* client, long int interval);
+void sighandler(int signo){
+ if (signo == SIGINT){
+ printf("Stopping...\n");
+ __stop=1;
+ }
+}
+
int main (int argc, char *argv [])
{
if(argc != 6){
@@ -30,6 +39,7 @@ int main (int argc, char *argv [])
__key=argv[5];
//----- Sanity checks
+ signal(SIGINT,sighandler);
if(__loginterval<MIN_INTERVAL){
printf("Log interval is too small (min=%ds)\n",MIN_INTERVAL);
exit(2);
@@ -48,7 +58,7 @@ int main (int argc, char *argv [])
//----- Start publisher
struct dirent *de; // Pointer for directory entry
- while(1){
+ while(!__stop){
int interval=INTERVAL(__loginterval);
int interval_next=INTERVAL_NEXT(__loginterval);
DIR *dr = opendir(__logdir);
@@ -63,7 +73,7 @@ int main (int argc, char *argv [])
// As long as next logfile is not available, we should wait
// for sending the current one
printf("Waiting for %s logger measurements...\n",client);
- while(!FILE_EXISTS(logfile_next)){
+ while(!FILE_EXISTS(logfile_next) && (!__stop)){
sleep(1);
}
// Send current one