correct error managment
authorMazet Laurent <mazet@softndesign.org>
Tue, 14 May 2024 05:40:16 +0000 (07:40 +0200)
committerMazet Laurent <mazet@softndesign.org>
Tue, 14 May 2024 05:40:16 +0000 (07:40 +0200)
cmd.c
cmore.c

diff --git a/cmd.c b/cmd.c
index 7c3054af40d0adba555d63cd68fec6c1ce53467b..c2dd0e93f8c20be77164197c2ae22bbba1f18458 100644 (file)
--- a/cmd.c
+++ b/cmd.c
@@ -37,11 +37,11 @@ char *exec_cmd (char *cmd)
     int saved_stderr = dup (STDERR_FILENO);
     close (STDERR_FILENO);
     FILE *fp = popen (cmd, "r");
-    dup2 (saved_stderr, STDERR_FILENO);
     if (fp != NULL) {
         buffer = _read_stream (fp);
         status = pclose(fp);
     }
+    dup2 (saved_stderr, STDERR_FILENO);
 
     if ((status == -1) || (buffer == NULL)) {
         free (buffer);
diff --git a/cmore.c b/cmore.c
index 460814bf0b2ad476751349eb0f2a9db1c3db878e..703cbf2e27f45e45ff1527e443a60da82ee1a2d3 100644 (file)
--- a/cmore.c
+++ b/cmore.c
@@ -138,6 +138,7 @@ void process (void)
     if (buffer == NULL) {
         char msg[MAX_LENGTH + 13 + 2 + 1] = {0};
         sprintf (msg, "%s: %s", command ? "can't execute" : input ? "can't load" : "can't read", command ? command : input ? input : "stdin");
+        VERBOSE (WARNING, fprintf (stderr, "%s\n", msg));
         errormsg (msg);
         return;
     }
@@ -348,30 +349,33 @@ int main (int argc, char *argv[])
 }
 
 /* test: cmore.exe -c 2>&1 | grep error */
-/* test: cmore.exe -c notAnExistingCommand 2>&1 | grep can\'t */
+/* test: echo :fi | cmore.exe -v 1 -c notAnExistingCommand 2>&1 | grep can\'t */
 /* test: cmore.exe -f 2>&1 | grep error */
-/* test: cmore.exe -f notAnExistingFile 2>&1 | grep can\'t */
+/* test: echo :fi | cmore.exe -v 1 -f notAnExistingFile 2>&1 | grep can\'t */
 /* test: cmore.exe -h | grep usage */
 /* test: cmore.exe -Z 2>&1 | grep usage */
 /* test: cmore.exe -v 2>&1 | grep missing */
 /* test: cmore.exe -s 2>&1 | grep missing */
 /* test: cmore.exe _ 2>&1 | grep invalid */
-/* test: cat tui.c | cmore.exe -v 5 -s 2*/
+/* test: cat tui.c | cmore.exe -v 3 -s 2*/
 /* test: (sleep 1; echo -n q) | cmore.exe -c 'ip addr' */
 /* test: (sleep 1; echo -ne '\e\e') | cmore.exe -f tui.c */
 /* test: (sleep 1; echo -n kkkkk; sleep 1; echo -n i; sleep 1; echo -n q) | cmore.exe -c 'ip addr' */
-/* test: (sleep 1; echo -n q) | cmore.exe -c 'echo -n a; for i in $(seq 1 '$(( $COLUMNS*($LINES-4)-2 ))'); do echo -n .; done; echo -n z' -v 5 | grep -q 'last line too long' */
-/* test: (sleep 1; echo -n q) | cmore.exe -c 'echo -n a; for i in $(seq 1 '$(( $COLUMNS*($LINES-4)-3 ))'); do echo -n .; done; echo -n z' -v 5 | grep -q 'last line too long'; test $? -eq 1 */
+/* test: (sleep 1; echo -n q) | cmore.exe -c 'echo -n a; for i in $(seq 1 '$(( $COLUMNS*($LINES-4)-2 ))'); do echo -n .; done; echo -n z' -v 3 | grep -q 'last line too long' */
+/* test: (sleep 1; echo -n q) | cmore.exe -c 'echo -n a; for i in $(seq 1 '$(( $COLUMNS*($LINES-4)-3 ))'); do echo -n .; done; echo -n z' -v 3 | grep -q 'last line too long'; test $? -eq 1 */
 /* test: (sleep 1; echo :f; sleep 1; echo i) | cmore.exe -c 'ip addr' */
 /* test: (sleep 1; echo :fkkk; sleep 1; echo :fiii) | cmore.exe -c 'ip addr' */
 /* test: (sleep 1; echo :fjljjkkikkkk) | cmore.exe -c 'ip addr' */
 /* test: (sleep 1; echo :flk; sleep 1; echo xji) | cmore.exe -c 'ip addr' */
 /* test: (sleep 1; echo :fk; sleep 1; echo; sleep 1; echo :fi) | cmore.exe -c 'ip addr' */
+
 /* test: (sleep 1; echo :fk; sleep 1; echo date; sleep 1; echo :fi) | cmore.exe -c 'ip addr' */
-/* test: (sleep 1; echo :fk; echo not_a_command; sleep 1; echo i) | cmore.exe -c 'ip addr' -v 5 2>&1 | grep -q "can't execute" */
+/* test: (sleep 1; echo :fk; echo not_a_command; sleep 1; echo i) | cmore.exe -c 'ip addr' -v 3 2>&1 | grep -q "can't execute" */
 /* test: (sleep 1; echo :fkk; sleep 1; echo; sleep 1; echo ii) | cmore.exe -c 'ip addr' */
+
+/* test: (sleep 1; echo :fkk; sleep 1; echo tui.c; sleep 1; echo :fii) | cmore.exe -f tui.h */
 /* test: (sleep 1; echo :fkk; sleep 1; echo cmore.c; sleep 1; echo :fii) | cmore.exe -c 'ip addr' */
-/* test: (sleep 1; echo :fkk; echo not_a_file; sleep 1; echo ii) | cmore.exe -c 'ip addr' -v 5 2>&1 | grep -q "can't load" */
+/* test: (sleep 1; echo :fkk; echo not_a_file; sleep 1; echo ii) | cmore.exe -c 'ip addr' -v 3 2>&1 | grep -q "can't load" */
 /* test: (sleep 1; echo :fkk; sleep 1; echo; sleep 1; echo ii) | cmore.exe -c 'ip addr' */
 
 /* vim: set ts=4 sw=4 et: */