diff -ur apinger-0.6.1.orig//src/apinger.c apinger-0.6.1/src/apinger.c --- apinger-0.6.1.orig//src/apinger.c 2012-07-26 11:10:07.608188198 +0000 +++ apinger-0.6.1/src/apinger.c 2012-07-26 11:48:46.179125555 +0000 @@ -824,26 +824,49 @@ return; } tm=time(NULL); - fprintf(f,"%s\n",ctime(&tm)); + if(!config->status_format) fprintf(f,"%s\n",ctime(&tm)); for(t=targets;t;t=t->next){ - fprintf(f,"Target: %s\n",t->name); - fprintf(f,"Source: %s\n",t->config->srcip); - fprintf(f,"Description: %s\n",t->description); - fprintf(f,"Last reply received: #%i %s",t->last_received, - ctime(&t->last_received_tv.tv_sec)); - fprintf(f,"Average delay: %0.3fms\n",AVG_DELAY(t)); + if(config->status_format){ + fprintf(f,"%s|%s|%s|%i|%i|%u|",t->name, t->config->srcip, t->description, t->last_sent+1, + t->received, t->last_received_tv.tv_sec); + fprintf(f,"%0.3fms|", AVG_DELAY(t)); + } + else{ + fprintf(f,"Target: %s\n",t->name); + fprintf(f,"Source: %s\n",t->config->srcip); + fprintf(f,"Description: %s\n",t->description); + fprintf(f,"Last reply received: #%i %s",t->last_received, + ctime(&t->last_received_tv.tv_sec)); + fprintf(f,"Average delay: %0.3fms\n",AVG_DELAY(t)); + } if (AVG_LOSS_KNOWN(t)){ - fprintf(f,"Average packet loss: %0.1f%%\n",AVG_LOSS(t)); + if(config->status_format){ + fprintf(f,"%0.1f%%",AVG_LOSS(t)); + } + else{ + fprintf(f,"Average packet loss: %0.1f%%\n",AVG_LOSS(t)); + } + } + if(config->status_format){ + fprintf(f, "|"); + } + else{ + fprintf(f,"Active alarms: "); } - fprintf(f,"Active alarms:"); if (t->active_alarms){ for(al=t->active_alarms;al;al=al->next){ a=al->alarm; - fprintf(f," \"%s\"",a->name); + if(config->status_format){ + fprintf(f,"%s",a->name); + } + else{ + fprintf(f," \"%s\"",a->name); + } } - fprintf(f,"\n"); + if(!config->status_format) fprintf(f,"\n"); } - else fprintf(f," None\n"); + else fprintf(f,"none"); + if(!config->status_format) fprintf(f,"\n"); buf1=NEW(char,t->config->avg_loss_delay_samples+1); buf2=NEW(char,t->config->avg_loss_samples+1); diff -ur apinger-0.6.1.orig//src/apinger.conf apinger-0.6.1/src/apinger.conf --- apinger-0.6.1.orig//src/apinger.conf 2012-07-26 11:24:35.000000000 +0000 +++ apinger-0.6.1/src/apinger.conf 2012-07-26 11:30:33.352064094 +0000 @@ -30,6 +30,10 @@ # ## Interval between file updates # ## when 0 or not set, file is written only when SIGUSR1 is received # interval 5m +# +# ## Create status file in script parseable format (on) or human +# ## readable format (off) +# scriptformat off #} ######################################## diff -ur apinger-0.6.1.orig//src/cfgparser1.y apinger-0.6.1/src/cfgparser1.y --- apinger-0.6.1.orig//src/cfgparser1.y 2012-07-26 10:15:23.000000000 +0000 +++ apinger-0.6.1/src/cfgparser1.y 2012-07-26 10:35:18.153063319 +0000 @@ -105,6 +105,7 @@ %token AVG_LOSS_DELAY_SAMPLES %token FILE_ +%token SCRIPTFORMAT %token ERROR @@ -283,6 +284,8 @@ { cur_config.status_interval=$2; } | INTERVAL TIME { cur_config.status_interval=$2; } + | SCRIPTFORMAT boolean + { cur_config.status_format=$2; } | statuscfg separator statuscfg ; diff -ur apinger-0.6.1.orig//src/cfgparser2.l apinger-0.6.1/src/cfgparser2.l --- apinger-0.6.1.orig//src/cfgparser2.l 2012-07-26 10:15:23.000000000 +0000 +++ apinger-0.6.1/src/cfgparser2.l 2012-07-26 10:31:46.408063728 +0000 @@ -86,6 +86,7 @@ down { LOC; LOCINC; return DOWN; } false { LOC; LOCINC; return FALSE; } file { LOC; LOCINC; return FILE_; } +scriptformat { LOC; LOCINC; return SCRIPTFORMAT; } group { LOC; LOCINC; return GROUP; } interval { LOC; LOCINC; return INTERVAL; } loss { LOC; LOCINC; return LOSS; } diff -ur apinger-0.6.1.orig//src/conf.h apinger-0.6.1/src/conf.h --- apinger-0.6.1.orig//src/conf.h 2012-07-26 10:15:23.000000000 +0000 +++ apinger-0.6.1/src/conf.h 2012-07-26 10:33:09.770251230 +0000 @@ -98,6 +98,7 @@ char *pid_file; char *status_file; int status_interval; + int status_format; char *timestamp_format; }; diff -ur apinger-0.6.1.orig//src/main.c apinger-0.6.1/src/main.c --- apinger-0.6.1.orig//src/main.c 2012-07-26 10:15:23.000000000 +0000 +++ apinger-0.6.1/src/main.c 2012-07-26 11:13:52.643188408 +0000 @@ -89,6 +89,7 @@ "/var/run/apinger.pid", /* pid file */ NULL, /* status file */ 0, /* status interval */ + 0, /* status format */ "%b %d %H:%M:%S" /* timestamp format */ };