correct log file and use parse macros
authorLaurent Mazet <mazet@softndesign.org>
Sun, 30 Mar 2025 21:44:40 +0000 (23:44 +0200)
committerLaurent Mazet <mazet@softndesign.org>
Sun, 30 Mar 2025 21:44:40 +0000 (23:44 +0200)
morep_valid.c
parse.h

index d10f84ba2f774ec50fc0fb264107a3eb32ca7877..00b5e0b9a3557035bf56e900b69c4e1b82759c32 100644 (file)
@@ -26,6 +26,7 @@
 #include <unistd.h>
 
 #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 d247d2699383335c8c9929d35e59e3c2da81780c..14889818da058f293be0a83b2a4aa4a213e1bc23 100644 (file)
--- a/parse.h
+++ b/parse.h
@@ -15,7 +15,6 @@
 #ifndef __PARSE_H__
 #define __PARSE_H__
 
-#include <stdio.h>
 #include <string.h>
 #include <sys/cdefs.h>
 
@@ -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: */