From: Laurent Mazet Date: Sun, 30 Mar 2025 21:44:40 +0000 (+0200) Subject: correct log file and use parse macros X-Git-Url: https://secure.softndesign.org/git/?a=commitdiff_plain;h=dc701d7141ca5e72665b0de317a14b5644fac9ca;p=morep.git correct log file and use parse macros --- diff --git a/morep_valid.c b/morep_valid.c index d10f84b..00b5e0b 100644 --- a/morep_valid.c +++ b/morep_valid.c @@ -26,6 +26,7 @@ #include #include "morep.h" +#include "parse.h" #include "verbose.h" char *progname = NULL; @@ -166,10 +167,10 @@ uint8_t *parse_line (char *line, uint8_t *msgtype, int *plen) if (!var) break; /* switch on string */ - if (0) { } + STR_SWITCH (var) /* case message type */ - else if (strcmp ("MSG", var) == 0) { + CASE ("MSG") { *msgtype = strtol (val, NULL, 0); if (length < 0 ) { length = 0; @@ -177,16 +178,17 @@ uint8_t *parse_line (char *line, uint8_t *msgtype, int *plen) } /* case payload */ - else if (strcmp ("PAYLOAD", var) == 0) { + CASE ("PAYLOAD") { payload = parse_payload (val, &length); } /* default */ - else { + DEFAULT { VERBOSE (morep, WARNING, PRINTF ("unknown word '%s'\n", var)); - break; } + /* end switch */ + END_SWITCH (var) } /* end of segmentation */ @@ -254,7 +256,6 @@ int main (int argc, char **argv) return 1; } logname = arg; - mode = 0; break; case 'r': arg = (arg[2]) ? arg + 2 : (--argc > 0) ? *(++argv) : NULL; @@ -284,7 +285,7 @@ int main (int argc, char **argv) break; case 'h': default: - printf ("usage: %s [-h] [-r url] [-t url] [-v level] [file]\n", progname); + printf ("usage: %s [-h] [-l log] [-r url] [-t url] [-v level] [file]\n", progname); return (c != 'h'); } @@ -315,16 +316,6 @@ int main (int argc, char **argv) return -1; } - /* open log file */ - FILE *log = NULL; - if (logname != NULL) { - log = fopen (logname, "r"); - if (log == NULL) { - VERBOSE (morep, ERROR, PRINTF ("can't open log file '%s' for reading\n", logname)); - return -1; - } - } - /* open script file */ FILE *fid = stdin; if (filename != NULL) { @@ -343,6 +334,20 @@ int main (int argc, char **argv) return -1; } + /* open log file */ + FILE *log = NULL; + if (logname != NULL) { + if (strcmp (logname, "-") == 0) { + log = stdout; + } else { + log = fopen (logname, "w"); + if (log == NULL) { + VERBOSE (morep, ERROR, PRINTF ("can't open log file '%s' for writing\n", logname)); + return -1; + } + } + } + /* signals */ signal(SIGINT, sig_handler); signal(SIGTERM, sig_handler); @@ -451,6 +456,9 @@ int main (int argc, char **argv) while (nbcomms) { MOREP_Close (--nbcomms); } + if ((log != NULL) && (log != stdout)) { + fclose (log); + } return rc; } @@ -458,7 +466,8 @@ int main (int argc, char **argv) /* test: morep_valid.exe -h | grep usage */ /* test: morep_valid.exe -r 2>&1 | grep 'url not specified' */ /* test: morep_valid.exe -t 2>&1 | grep 'url not specified' */ -/* test: morep_valid.exe -t lo://00:00:00:00:00:00/0808 -v 4 script-lo.eth */ -/* test: morep_valid.exe -t lo://00:00:00:00:00:00/0808 -r lo://00:00:00:00:00:00/0808 script-lo.eth */ +/* test: morep_valid.exe -l 2>&1 | grep 'log file not specified' */ +/* test: morep_valid.exe -l - -t lo://00:00:00:00:00:00/0808 -v 4 script-lo.eth */ +/* test: morep_valid.exe -l script.log -t lo://00:00:00:00:00:00/0808 -r lo://00:00:00:00:00:00/0808 script-lo.eth */ /* vim: set ts=4 sw=4 si et: */ diff --git a/parse.h b/parse.h index d247d26..1488981 100644 --- a/parse.h +++ b/parse.h @@ -15,7 +15,6 @@ #ifndef __PARSE_H__ #define __PARSE_H__ -#include #include #include @@ -102,42 +101,8 @@ __BEGIN_DECLS END_SWITCH(ascii_type) \ free (str); -/** - Trim a string - - @param buf string - @return trimed string -*/ -static inline char *trim (char *buf) -{ - int l = 0; - while (buf[l] !='\0') - l++; - while (l-- > 0) { - switch (buf[l]) { - case '\n': - case '\r': - case '\t': - case ' ': - buf[l] = '\0'; - continue; - } - l++; - break; - } - - int i = 0; - while ((i < l) && ((buf[i] == ' ') || (buf[i] == '\t'))) - i++; - if (i > 0) { - int k; - for (k = 0; k < l - i + 1; k++) - buf[k] = buf[i + k]; - } - - return buf; -} - __END_DECLS #endif /* __PARSE_H__ */ + +/* vim: set ts=4 sw=4 si et: */