Enhance handling of command line errors, and "--help" & "--version" master
authorAlexander Barton <alex@barton.de>
Tue, 31 Dec 2019 15:34:23 +0000 (16:34 +0100)
committerAlexander Barton <alex@barton.de>
Tue, 31 Dec 2019 15:34:23 +0000 (16:34 +0100)
Return with exit code 0 ("no error") when "--help" or "--version" was
used (this resulted in exit code 1, "error" before).

And exit with code 2 ("command line error") for all invalid command
line options, and show the error message on stderr (message was printed
to stdout before, and exit code was 1, "generic error").

This new behaviour is more in line with the GNU "coding standards",
see <https://www.gnu.org/prep/standards/html_node/_002d_002dhelp.html>.

src/ngircd/ngircd.c

index 78477e5..68b34cb 100644 (file)
@@ -125,7 +125,7 @@ main(int argc, const char *argv[])
                        if (strcmp(argv[i], "--help") == 0) {
                                Show_Version();
                                puts(""); Show_Help( ); puts( "" );
-                               exit(1);
+                               exit(0);
                        }
                        if (strcmp(argv[i], "--nodaemon") == 0) {
                                NGIRCd_NoDaemon = true;
@@ -143,7 +143,7 @@ main(int argc, const char *argv[])
 #endif
                        if (strcmp(argv[i], "--version") == 0) {
                                Show_Version();
-                               exit(1);
+                               exit(0);
                        }
                }
                else if(argv[i][0] == '-' && argv[i][1] != '-') {
@@ -200,21 +200,23 @@ main(int argc, const char *argv[])
                                }
 
                                if (!ok) {
-                                       printf("%s: invalid option \"-%c\"!\n",
-                                              PACKAGE_NAME, argv[i][n]);
-                                       printf("Try \"%s --help\" for more information.\n",
-                                              PACKAGE_NAME);
-                                       exit(1);
+                                       fprintf(stderr,
+                                               "%s: invalid option \"-%c\"!\n",
+                                               PACKAGE_NAME, argv[i][n]);
+                                       fprintf(stderr,
+                                               "Try \"%s --help\" for more information.\n",
+                                               PACKAGE_NAME);
+                                       exit(2);
                                }
                        }
 
                }
                if (!ok) {
-                       printf("%s: invalid option \"%s\"!\n",
-                              PACKAGE_NAME, argv[i]);
-                       printf("Try \"%s --help\" for more information.\n",
-                              PACKAGE_NAME);
-                       exit(1);
+                       fprintf(stderr, "%s: invalid option \"%s\"!\n",
+                               PACKAGE_NAME, argv[i]);
+                       fprintf(stderr, "Try \"%s --help\" for more information.\n",
+                               PACKAGE_NAME);
+                       exit(2);
                }
        }