Re: [Patch] use exit() directly in usage()
On Sat, Sep 27, 2014 at 07:10:01PM +0200, Fritjof Bornebusch wrote: Hi, Hi, after usage() was called, there is no where you can go. as suggested by otto@ and @nicm, the usage() functions are marked as __dead. fritjof fritjof Index: ci.c === RCS file: /cvs/src/usr.bin/rcs/ci.c,v retrieving revision 1.217 diff -u -p -r1.217 ci.c --- ci.c19 May 2014 19:42:24 - 1.217 +++ ci.c1 Oct 2014 08:38:31 - @@ -89,7 +89,7 @@ static voidcheckin_parsekeyword(char * static int checkin_update(struct checkin_params *); static int checkin_revert(struct checkin_params *); -void +__dead void checkin_usage(void) { fprintf(stderr, @@ -97,6 +97,8 @@ checkin_usage(void) [-j[rev]] [-k[rev]] [-l[rev]] [-M[rev]] [-mmsg]\n [-Nsymbol] [-nsymbol] [-r[rev]] [-sstate] [-t[str]]\n [-u[rev]] [-wusername] [-xsuffixes] [-ztz] file ...\n); + + exit(1); } /* @@ -221,7 +223,6 @@ checkin_main(int argc, char **argv) break; default: (usage)(); - exit(1); } } @@ -231,7 +232,6 @@ checkin_main(int argc, char **argv) if (argc == 0) { warnx(no input file); (usage)(); - exit(1); } if ((pb.username = getlogin()) == NULL) Index: co.c === RCS file: /cvs/src/usr.bin/rcs/co.c,v retrieving revision 1.117 diff -u -p -r1.117 co.c --- co.c16 Apr 2013 20:24:45 - 1.117 +++ co.c1 Oct 2014 08:38:40 - @@ -79,7 +79,6 @@ checkout_main(int argc, char **argv) if (RCS_KWEXP_INVAL(kflag)) { warnx(invalid RCS keyword substitution mode); (usage)(); - exit(1); } break; case 'l': @@ -141,7 +140,6 @@ checkout_main(int argc, char **argv) break; default: (usage)(); - exit(1); } } @@ -151,7 +149,6 @@ checkout_main(int argc, char **argv) if (argc == 0) { warnx(no input file); (usage)(); - exit (1); } if ((username = getlogin()) == NULL) @@ -222,13 +219,15 @@ checkout_main(int argc, char **argv) return (ret); } -void +__dead void checkout_usage(void) { fprintf(stderr, usage: co [-TV] [-ddate] [-f[rev]] [-I[rev]] [-kmode] [-l[rev]]\n [-M[rev]] [-p[rev]] [-q[rev]] [-r[rev]] [-sstate]\n [-u[rev]] [-w[user]] [-xsuffixes] [-ztz] file ...\n); + + exit(1); } /* Index: merge.c === RCS file: /cvs/src/usr.bin/rcs/merge.c,v retrieving revision 1.7 diff -u -p -r1.7 merge.c --- merge.c 23 Jul 2010 21:46:05 - 1.7 +++ merge.c 1 Oct 2014 08:38:52 - @@ -77,7 +77,6 @@ merge_main(int argc, char **argv) exit(0); default: (usage)(); - exit(D_ERROR); } } argc -= optind; @@ -86,7 +85,6 @@ merge_main(int argc, char **argv) if (argc != 3) { warnx(%s arguments, (argc 3) ? not enough : too many); (usage)(); - exit(D_ERROR); } for (; labels 3; labels++) @@ -113,9 +111,11 @@ merge_main(int argc, char **argv) return (status); } -void +__dead void merge_usage(void) { (void)fprintf(stderr, usage: merge [-EepqV] [-L label] file1 file2 file3\n); + + exit(D_ERROR); } Index: rcsclean.c === RCS file: /cvs/src/usr.bin/rcs/rcsclean.c,v retrieving revision 1.52 diff -u -p -r1.52 rcsclean.c --- rcsclean.c 28 Jul 2010 09:07:11 - 1.52 +++ rcsclean.c 1 Oct 2014 08:39:05 - @@ -60,7 +60,6 @@ rcsclean_main(int argc, char **argv) if (RCS_KWEXP_INVAL(kflag)) { warnx(invalid RCS keyword substitution mode); (usage)(); - exit(1); } break; case 'n': @@ -90,7 +89,6 @@ rcsclean_main(int argc, char **argv) break; default: (usage)(); - exit(1); } } @@ -104,7 +102,6 @@ rcsclean_main(int argc, char **argv) if ((dirp = opendir(.)) == NULL) { warn(opendir); (usage)(); -
Re: [Patch] use exit() directly in usage()
Looks good but you have missed out ident.c and rcsprog.c On Wed, Oct 01, 2014 at 11:19:29AM +0200, Fritjof Bornebusch wrote: On Sat, Sep 27, 2014 at 07:10:01PM +0200, Fritjof Bornebusch wrote: Hi, Hi, after usage() was called, there is no where you can go. as suggested by otto@ and @nicm, the usage() functions are marked as __dead. fritjof fritjof Index: ci.c === RCS file: /cvs/src/usr.bin/rcs/ci.c,v retrieving revision 1.217 diff -u -p -r1.217 ci.c --- ci.c 19 May 2014 19:42:24 - 1.217 +++ ci.c 1 Oct 2014 08:38:31 - @@ -89,7 +89,7 @@ static void checkin_parsekeyword(char * static intcheckin_update(struct checkin_params *); static intcheckin_revert(struct checkin_params *); -void +__dead void checkin_usage(void) { fprintf(stderr, @@ -97,6 +97,8 @@ checkin_usage(void) [-j[rev]] [-k[rev]] [-l[rev]] [-M[rev]] [-mmsg]\n [-Nsymbol] [-nsymbol] [-r[rev]] [-sstate] [-t[str]]\n [-u[rev]] [-wusername] [-xsuffixes] [-ztz] file ...\n); + + exit(1); } /* @@ -221,7 +223,6 @@ checkin_main(int argc, char **argv) break; default: (usage)(); - exit(1); } } @@ -231,7 +232,6 @@ checkin_main(int argc, char **argv) if (argc == 0) { warnx(no input file); (usage)(); - exit(1); } if ((pb.username = getlogin()) == NULL) Index: co.c === RCS file: /cvs/src/usr.bin/rcs/co.c,v retrieving revision 1.117 diff -u -p -r1.117 co.c --- co.c 16 Apr 2013 20:24:45 - 1.117 +++ co.c 1 Oct 2014 08:38:40 - @@ -79,7 +79,6 @@ checkout_main(int argc, char **argv) if (RCS_KWEXP_INVAL(kflag)) { warnx(invalid RCS keyword substitution mode); (usage)(); - exit(1); } break; case 'l': @@ -141,7 +140,6 @@ checkout_main(int argc, char **argv) break; default: (usage)(); - exit(1); } } @@ -151,7 +149,6 @@ checkout_main(int argc, char **argv) if (argc == 0) { warnx(no input file); (usage)(); - exit (1); } if ((username = getlogin()) == NULL) @@ -222,13 +219,15 @@ checkout_main(int argc, char **argv) return (ret); } -void +__dead void checkout_usage(void) { fprintf(stderr, usage: co [-TV] [-ddate] [-f[rev]] [-I[rev]] [-kmode] [-l[rev]]\n [-M[rev]] [-p[rev]] [-q[rev]] [-r[rev]] [-sstate]\n [-u[rev]] [-w[user]] [-xsuffixes] [-ztz] file ...\n); + + exit(1); } /* Index: merge.c === RCS file: /cvs/src/usr.bin/rcs/merge.c,v retrieving revision 1.7 diff -u -p -r1.7 merge.c --- merge.c 23 Jul 2010 21:46:05 - 1.7 +++ merge.c 1 Oct 2014 08:38:52 - @@ -77,7 +77,6 @@ merge_main(int argc, char **argv) exit(0); default: (usage)(); - exit(D_ERROR); } } argc -= optind; @@ -86,7 +85,6 @@ merge_main(int argc, char **argv) if (argc != 3) { warnx(%s arguments, (argc 3) ? not enough : too many); (usage)(); - exit(D_ERROR); } for (; labels 3; labels++) @@ -113,9 +111,11 @@ merge_main(int argc, char **argv) return (status); } -void +__dead void merge_usage(void) { (void)fprintf(stderr, usage: merge [-EepqV] [-L label] file1 file2 file3\n); + + exit(D_ERROR); } Index: rcsclean.c === RCS file: /cvs/src/usr.bin/rcs/rcsclean.c,v retrieving revision 1.52 diff -u -p -r1.52 rcsclean.c --- rcsclean.c28 Jul 2010 09:07:11 - 1.52 +++ rcsclean.c1 Oct 2014 08:39:05 - @@ -60,7 +60,6 @@ rcsclean_main(int argc, char **argv) if (RCS_KWEXP_INVAL(kflag)) { warnx(invalid RCS keyword substitution mode); (usage)(); - exit(1); } break; case 'n': @@ -90,7 +89,6 @@ rcsclean_main(int argc, char **argv) break; default: (usage)(); - exit(1); } } @@ -104,7 +102,6 @@ rcsclean_main(int argc, char
Re: [Patch] use exit() directly in usage()
On Wed, Oct 01, 2014 at 06:41:25PM +0100, Nicholas Marriott wrote: Looks good but you have missed out ident.c and rcsprog.c Ups, sorry. On Wed, Oct 01, 2014 at 11:19:29AM +0200, Fritjof Bornebusch wrote: On Sat, Sep 27, 2014 at 07:10:01PM +0200, Fritjof Bornebusch wrote: Hi, Hi, after usage() was called, there is no where you can go. as suggested by otto@ and @nicm, the usage() functions are marked as __dead. fritjof fritjof fritjof Index: ci.c === RCS file: /cvs/src/usr.bin/rcs/ci.c,v retrieving revision 1.217 diff -u -p -r1.217 ci.c --- ci.c19 May 2014 19:42:24 - 1.217 +++ ci.c1 Oct 2014 08:38:31 - @@ -89,7 +89,7 @@ static voidcheckin_parsekeyword(char * static int checkin_update(struct checkin_params *); static int checkin_revert(struct checkin_params *); -void +__dead void checkin_usage(void) { fprintf(stderr, @@ -97,6 +97,8 @@ checkin_usage(void) [-j[rev]] [-k[rev]] [-l[rev]] [-M[rev]] [-mmsg]\n [-Nsymbol] [-nsymbol] [-r[rev]] [-sstate] [-t[str]]\n [-u[rev]] [-wusername] [-xsuffixes] [-ztz] file ...\n); + + exit(1); } /* @@ -221,7 +223,6 @@ checkin_main(int argc, char **argv) break; default: (usage)(); - exit(1); } } @@ -231,7 +232,6 @@ checkin_main(int argc, char **argv) if (argc == 0) { warnx(no input file); (usage)(); - exit(1); } if ((pb.username = getlogin()) == NULL) Index: co.c === RCS file: /cvs/src/usr.bin/rcs/co.c,v retrieving revision 1.117 diff -u -p -r1.117 co.c --- co.c16 Apr 2013 20:24:45 - 1.117 +++ co.c1 Oct 2014 08:38:40 - @@ -79,7 +79,6 @@ checkout_main(int argc, char **argv) if (RCS_KWEXP_INVAL(kflag)) { warnx(invalid RCS keyword substitution mode); (usage)(); - exit(1); } break; case 'l': @@ -141,7 +140,6 @@ checkout_main(int argc, char **argv) break; default: (usage)(); - exit(1); } } @@ -151,7 +149,6 @@ checkout_main(int argc, char **argv) if (argc == 0) { warnx(no input file); (usage)(); - exit (1); } if ((username = getlogin()) == NULL) @@ -222,13 +219,15 @@ checkout_main(int argc, char **argv) return (ret); } -void +__dead void checkout_usage(void) { fprintf(stderr, usage: co [-TV] [-ddate] [-f[rev]] [-I[rev]] [-kmode] [-l[rev]]\n [-M[rev]] [-p[rev]] [-q[rev]] [-r[rev]] [-sstate]\n [-u[rev]] [-w[user]] [-xsuffixes] [-ztz] file ...\n); + + exit(1); } /* Index: merge.c === RCS file: /cvs/src/usr.bin/rcs/merge.c,v retrieving revision 1.7 diff -u -p -r1.7 merge.c --- merge.c 23 Jul 2010 21:46:05 - 1.7 +++ merge.c 1 Oct 2014 08:38:52 - @@ -77,7 +77,6 @@ merge_main(int argc, char **argv) exit(0); default: (usage)(); - exit(D_ERROR); } } argc -= optind; @@ -86,7 +85,6 @@ merge_main(int argc, char **argv) if (argc != 3) { warnx(%s arguments, (argc 3) ? not enough : too many); (usage)(); - exit(D_ERROR); } for (; labels 3; labels++) @@ -113,9 +111,11 @@ merge_main(int argc, char **argv) return (status); } -void +__dead void merge_usage(void) { (void)fprintf(stderr, usage: merge [-EepqV] [-L label] file1 file2 file3\n); + + exit(D_ERROR); } Index: rcsclean.c === RCS file: /cvs/src/usr.bin/rcs/rcsclean.c,v retrieving revision 1.52 diff -u -p -r1.52 rcsclean.c --- rcsclean.c 28 Jul 2010 09:07:11 - 1.52 +++ rcsclean.c 1 Oct 2014 08:39:05 - @@ -60,7 +60,6 @@ rcsclean_main(int argc, char **argv) if (RCS_KWEXP_INVAL(kflag)) { warnx(invalid RCS keyword substitution mode); (usage)(); - exit(1); } break; case 'n': @@ -90,7 +89,6 @@ rcsclean_main(int argc, char **argv) break; default:
Re: [Patch] use exit() directly in usage()
Please do not change to EXIT_FAILURE. Original message From: Kent R. Spillner kspill...@acm.org Date: 01/10/2014 23:41 (GMT+00:00) To: Fritjof Bornebusch frit...@alokat.org Cc: Nicholas Marriott nicholas.marri...@gmail.com,tech@openbsd.org,o...@openbsd.org Subject: Re: [Patch] use exit() directly in usage() ok kspillner@. It would be nice to replace some of those exit(1) with exit(EXIT_FAILURE), but that should be a separate diff that also updates the err/errx's as well. On Oct 1, 2014, at 13:06, Fritjof Bornebusch frit...@alokat.org wrote: On Wed, Oct 01, 2014 at 06:41:25PM +0100, Nicholas Marriott wrote: Looks good but you have missed out ident.c and rcsprog.c Ups, sorry. On Wed, Oct 01, 2014 at 11:19:29AM +0200, Fritjof Bornebusch wrote: On Sat, Sep 27, 2014 at 07:10:01PM +0200, Fritjof Bornebusch wrote: Hi, Hi, after usage() was called, there is no where you can go. as suggested by otto@ and @nicm, the usage() functions are marked as __dead. fritjof fritjof fritjof Index: ci.c === RCS file: /cvs/src/usr.bin/rcs/ci.c,v retrieving revision 1.217 diff -u -p -r1.217 ci.c --- ci.c 19 May 2014 19:42:24 - 1.217 +++ ci.c 1 Oct 2014 08:38:31 - @@ -89,7 +89,7 @@ static void checkin_parsekeyword(char * static int checkin_update(struct checkin_params *); static int checkin_revert(struct checkin_params *); -void +__dead void checkin_usage(void) { fprintf(stderr, @@ -97,6 +97,8 @@ checkin_usage(void) [-j[rev]] [-k[rev]] [-l[rev]] [-M[rev]] [-mmsg]\n [-Nsymbol] [-nsymbol] [-r[rev]] [-sstate] [-t[str]]\n [-u[rev]] [-wusername] [-xsuffixes] [-ztz] file ...\n); + + exit(1); } /* @@ -221,7 +223,6 @@ checkin_main(int argc, char **argv) break; default: (usage)(); - exit(1); } } @@ -231,7 +232,6 @@ checkin_main(int argc, char **argv) if (argc == 0) { warnx(no input file); (usage)(); - exit(1); } if ((pb.username = getlogin()) == NULL) Index: co.c === RCS file: /cvs/src/usr.bin/rcs/co.c,v retrieving revision 1.117 diff -u -p -r1.117 co.c --- co.c 16 Apr 2013 20:24:45 - 1.117 +++ co.c 1 Oct 2014 08:38:40 - @@ -79,7 +79,6 @@ checkout_main(int argc, char **argv) if (RCS_KWEXP_INVAL(kflag)) { warnx(invalid RCS keyword substitution mode); (usage)(); - exit(1); } break; case 'l': @@ -141,7 +140,6 @@ checkout_main(int argc, char **argv) break; default: (usage)(); - exit(1); } } @@ -151,7 +149,6 @@ checkout_main(int argc, char **argv) if (argc == 0) { warnx(no input file); (usage)(); - exit (1); } if ((username = getlogin()) == NULL) @@ -222,13 +219,15 @@ checkout_main(int argc, char **argv) return (ret); } -void +__dead void checkout_usage(void) { fprintf(stderr, usage: co [-TV] [-ddate] [-f[rev]] [-I[rev]] [-kmode] [-l[rev]]\n [-M[rev]] [-p[rev]] [-q[rev]] [-r[rev]] [-sstate]\n [-u[rev]] [-w[user]] [-xsuffixes] [-ztz] file ...\n); + + exit(1); } /* Index: merge.c === RCS file: /cvs/src/usr.bin/rcs/merge.c,v retrieving revision 1.7 diff -u -p -r1.7 merge.c --- merge.c 23 Jul 2010 21:46:05 - 1.7 +++ merge.c 1 Oct 2014 08:38:52 - @@ -77,7 +77,6 @@ merge_main(int argc, char **argv) exit(0); default: (usage)(); - exit(D_ERROR); } } argc -= optind; @@ -86,7 +85,6 @@ merge_main(int argc, char **argv) if (argc != 3) { warnx(%s arguments, (argc 3) ? not enough : too many); (usage)(); - exit(D_ERROR); } for (; labels 3; labels++) @@ -113,9 +111,11 @@ merge_main(int argc, char **argv) return (status); } -void +__dead void merge_usage(void) { (void)fprintf(stderr, usage: merge [-EepqV] [-L label] file1 file2 file3\n); + + exit(D_ERROR); } Index: rcsclean.c === RCS file: /cvs/src/usr.bin/rcs/rcsclean.c,v retrieving revision 1.52 diff -u -p -r1.52 rcsclean.c --- rcsclean.c 28 Jul 2010 09:07:11 - 1.52 +++ rcsclean.c 1 Oct 2014 08:39:05 - @@ -60,7 +60,6 @@ rcsclean_main(int argc, char **argv) if (RCS_KWEXP_INVAL(kflag)) { warnx(invalid RCS keyword substitution mode); (usage)(); - exit(1); } break; case 'n': @@ -90,7 +89,6 @@ rcsclean_main(int argc, char **argv
Re: [Patch] use exit() directly in usage()
ok kspillner@. It would be nice to replace some of those exit(1) with exit(EXIT_FAILURE), but that should be a separate diff that also updates the err/errx's as well. On Oct 1, 2014, at 13:06, Fritjof Bornebusch frit...@alokat.org wrote: On Wed, Oct 01, 2014 at 06:41:25PM +0100, Nicholas Marriott wrote: Looks good but you have missed out ident.c and rcsprog.c Ups, sorry. On Wed, Oct 01, 2014 at 11:19:29AM +0200, Fritjof Bornebusch wrote: On Sat, Sep 27, 2014 at 07:10:01PM +0200, Fritjof Bornebusch wrote: Hi, Hi, after usage() was called, there is no where you can go. as suggested by otto@ and @nicm, the usage() functions are marked as __dead. fritjof fritjof fritjof Index: ci.c === RCS file: /cvs/src/usr.bin/rcs/ci.c,v retrieving revision 1.217 diff -u -p -r1.217 ci.c --- ci.c19 May 2014 19:42:24 -1.217 +++ ci.c1 Oct 2014 08:38:31 - @@ -89,7 +89,7 @@ static void checkin_parsekeyword(char * static int checkin_update(struct checkin_params *); static int checkin_revert(struct checkin_params *); -void +__dead void checkin_usage(void) { fprintf(stderr, @@ -97,6 +97,8 @@ checkin_usage(void) [-j[rev]] [-k[rev]] [-l[rev]] [-M[rev]] [-mmsg]\n [-Nsymbol] [-nsymbol] [-r[rev]] [-sstate] [-t[str]]\n [-u[rev]] [-wusername] [-xsuffixes] [-ztz] file ...\n); + +exit(1); } /* @@ -221,7 +223,6 @@ checkin_main(int argc, char **argv) break; default: (usage)(); -exit(1); } } @@ -231,7 +232,6 @@ checkin_main(int argc, char **argv) if (argc == 0) { warnx(no input file); (usage)(); -exit(1); } if ((pb.username = getlogin()) == NULL) Index: co.c === RCS file: /cvs/src/usr.bin/rcs/co.c,v retrieving revision 1.117 diff -u -p -r1.117 co.c --- co.c16 Apr 2013 20:24:45 -1.117 +++ co.c1 Oct 2014 08:38:40 - @@ -79,7 +79,6 @@ checkout_main(int argc, char **argv) if (RCS_KWEXP_INVAL(kflag)) { warnx(invalid RCS keyword substitution mode); (usage)(); -exit(1); } break; case 'l': @@ -141,7 +140,6 @@ checkout_main(int argc, char **argv) break; default: (usage)(); -exit(1); } } @@ -151,7 +149,6 @@ checkout_main(int argc, char **argv) if (argc == 0) { warnx(no input file); (usage)(); -exit (1); } if ((username = getlogin()) == NULL) @@ -222,13 +219,15 @@ checkout_main(int argc, char **argv) return (ret); } -void +__dead void checkout_usage(void) { fprintf(stderr, usage: co [-TV] [-ddate] [-f[rev]] [-I[rev]] [-kmode] [-l[rev]]\n [-M[rev]] [-p[rev]] [-q[rev]] [-r[rev]] [-sstate]\n [-u[rev]] [-w[user]] [-xsuffixes] [-ztz] file ...\n); + +exit(1); } /* Index: merge.c === RCS file: /cvs/src/usr.bin/rcs/merge.c,v retrieving revision 1.7 diff -u -p -r1.7 merge.c --- merge.c23 Jul 2010 21:46:05 -1.7 +++ merge.c1 Oct 2014 08:38:52 - @@ -77,7 +77,6 @@ merge_main(int argc, char **argv) exit(0); default: (usage)(); -exit(D_ERROR); } } argc -= optind; @@ -86,7 +85,6 @@ merge_main(int argc, char **argv) if (argc != 3) { warnx(%s arguments, (argc 3) ? not enough : too many); (usage)(); -exit(D_ERROR); } for (; labels 3; labels++) @@ -113,9 +111,11 @@ merge_main(int argc, char **argv) return (status); } -void +__dead void merge_usage(void) { (void)fprintf(stderr, usage: merge [-EepqV] [-L label] file1 file2 file3\n); + +exit(D_ERROR); } Index: rcsclean.c === RCS file: /cvs/src/usr.bin/rcs/rcsclean.c,v retrieving revision 1.52 diff -u -p -r1.52 rcsclean.c --- rcsclean.c28 Jul 2010 09:07:11 -1.52 +++ rcsclean.c1 Oct 2014 08:39:05 - @@ -60,7 +60,6 @@ rcsclean_main(int argc, char **argv) if (RCS_KWEXP_INVAL(kflag)) { warnx(invalid RCS keyword substitution mode); (usage)(); -exit(1); } break; case 'n': @@ -90,7 +89,6 @@ rcsclean_main(int argc, char **argv) break; default: (usage)(); -exit(1); } } @@ -104,7 +102,6 @@ rcsclean_main(int argc, char **argv) if ((dirp = opendir(.)) == NULL) { warn(opendir); (usage)(); -exit(1); } while ((dp = readdir(dirp)) != NULL) { @@
Re: [Patch] use exit() directly in usage()
On Wed, Oct 01, 2014 at 05:41:11PM -0500, Kent R. Spillner wrote: ok kspillner@. It would be nice to replace some of those exit(1) with exit(EXIT_FAILURE), but that should be a separate diff that also updates the err/errx's as well. In general EXIT_XXX is frowned upon in OpenBSD. -Otto On Oct 1, 2014, at 13:06, Fritjof Bornebusch frit...@alokat.org wrote: On Wed, Oct 01, 2014 at 06:41:25PM +0100, Nicholas Marriott wrote: Looks good but you have missed out ident.c and rcsprog.c Ups, sorry. On Wed, Oct 01, 2014 at 11:19:29AM +0200, Fritjof Bornebusch wrote: On Sat, Sep 27, 2014 at 07:10:01PM +0200, Fritjof Bornebusch wrote: Hi, Hi, after usage() was called, there is no where you can go. as suggested by otto@ and @nicm, the usage() functions are marked as __dead. fritjof fritjof fritjof Index: ci.c === RCS file: /cvs/src/usr.bin/rcs/ci.c,v retrieving revision 1.217 diff -u -p -r1.217 ci.c --- ci.c19 May 2014 19:42:24 -1.217 +++ ci.c1 Oct 2014 08:38:31 - @@ -89,7 +89,7 @@ static void checkin_parsekeyword(char * static int checkin_update(struct checkin_params *); static int checkin_revert(struct checkin_params *); -void +__dead void checkin_usage(void) { fprintf(stderr, @@ -97,6 +97,8 @@ checkin_usage(void) [-j[rev]] [-k[rev]] [-l[rev]] [-M[rev]] [-mmsg]\n [-Nsymbol] [-nsymbol] [-r[rev]] [-sstate] [-t[str]]\n [-u[rev]] [-wusername] [-xsuffixes] [-ztz] file ...\n); + +exit(1); } /* @@ -221,7 +223,6 @@ checkin_main(int argc, char **argv) break; default: (usage)(); -exit(1); } } @@ -231,7 +232,6 @@ checkin_main(int argc, char **argv) if (argc == 0) { warnx(no input file); (usage)(); -exit(1); } if ((pb.username = getlogin()) == NULL) Index: co.c === RCS file: /cvs/src/usr.bin/rcs/co.c,v retrieving revision 1.117 diff -u -p -r1.117 co.c --- co.c16 Apr 2013 20:24:45 -1.117 +++ co.c1 Oct 2014 08:38:40 - @@ -79,7 +79,6 @@ checkout_main(int argc, char **argv) if (RCS_KWEXP_INVAL(kflag)) { warnx(invalid RCS keyword substitution mode); (usage)(); -exit(1); } break; case 'l': @@ -141,7 +140,6 @@ checkout_main(int argc, char **argv) break; default: (usage)(); -exit(1); } } @@ -151,7 +149,6 @@ checkout_main(int argc, char **argv) if (argc == 0) { warnx(no input file); (usage)(); -exit (1); } if ((username = getlogin()) == NULL) @@ -222,13 +219,15 @@ checkout_main(int argc, char **argv) return (ret); } -void +__dead void checkout_usage(void) { fprintf(stderr, usage: co [-TV] [-ddate] [-f[rev]] [-I[rev]] [-kmode] [-l[rev]]\n [-M[rev]] [-p[rev]] [-q[rev]] [-r[rev]] [-sstate]\n [-u[rev]] [-w[user]] [-xsuffixes] [-ztz] file ...\n); + +exit(1); } /* Index: merge.c === RCS file: /cvs/src/usr.bin/rcs/merge.c,v retrieving revision 1.7 diff -u -p -r1.7 merge.c --- merge.c23 Jul 2010 21:46:05 -1.7 +++ merge.c1 Oct 2014 08:38:52 - @@ -77,7 +77,6 @@ merge_main(int argc, char **argv) exit(0); default: (usage)(); -exit(D_ERROR); } } argc -= optind; @@ -86,7 +85,6 @@ merge_main(int argc, char **argv) if (argc != 3) { warnx(%s arguments, (argc 3) ? not enough : too many); (usage)(); -exit(D_ERROR); } for (; labels 3; labels++) @@ -113,9 +111,11 @@ merge_main(int argc, char **argv) return (status); } -void +__dead void merge_usage(void) { (void)fprintf(stderr, usage: merge [-EepqV] [-L label] file1 file2 file3\n); + +exit(D_ERROR); } Index: rcsclean.c === RCS file: /cvs/src/usr.bin/rcs/rcsclean.c,v retrieving revision 1.52 diff -u -p -r1.52 rcsclean.c --- rcsclean.c28 Jul 2010 09:07:11 -1.52 +++ rcsclean.c1 Oct 2014 08:39:05 - @@ -60,7 +60,6 @@ rcsclean_main(int argc, char **argv) if (RCS_KWEXP_INVAL(kflag)) { warnx(invalid RCS keyword substitution mode); (usage)(); -exit(1); } break; case 'n': @@ -90,7 +89,6 @@ rcsclean_main(int argc, char **argv) break; default:
Re: [Patch] use exit() directly in usage()
If we do this then these usage functions also need to be marked __dead. On Sat, Sep 27, 2014 at 07:10:01PM +0200, Fritjof Bornebusch wrote: Hi, after usage() was called, there is no where you can go. fritjof Index: ci.c === RCS file: /cvs/src/usr.bin/rcs/ci.c,v retrieving revision 1.217 diff -u -p -r1.217 ci.c --- ci.c 19 May 2014 19:42:24 - 1.217 +++ ci.c 2 Jun 2014 22:18:25 - @@ -97,6 +97,8 @@ checkin_usage(void) [-j[rev]] [-k[rev]] [-l[rev]] [-M[rev]] [-mmsg]\n [-Nsymbol] [-nsymbol] [-r[rev]] [-sstate] [-t[str]]\n [-u[rev]] [-wusername] [-xsuffixes] [-ztz] file ...\n); + + exit(1); } /* @@ -221,7 +223,6 @@ checkin_main(int argc, char **argv) break; default: (usage)(); - exit(1); } } @@ -231,7 +232,6 @@ checkin_main(int argc, char **argv) if (argc == 0) { warnx(no input file); (usage)(); - exit(1); } if ((pb.username = getlogin()) == NULL) Index: co.c === RCS file: /cvs/src/usr.bin/rcs/co.c,v retrieving revision 1.117 diff -u -p -r1.117 co.c --- co.c 16 Apr 2013 20:24:45 - 1.117 +++ co.c 2 Jun 2014 22:19:38 - @@ -79,7 +79,6 @@ checkout_main(int argc, char **argv) if (RCS_KWEXP_INVAL(kflag)) { warnx(invalid RCS keyword substitution mode); (usage)(); - exit(1); } break; case 'l': @@ -141,7 +140,6 @@ checkout_main(int argc, char **argv) break; default: (usage)(); - exit(1); } } @@ -151,7 +149,6 @@ checkout_main(int argc, char **argv) if (argc == 0) { warnx(no input file); (usage)(); - exit (1); } if ((username = getlogin()) == NULL) @@ -229,6 +226,8 @@ checkout_usage(void) usage: co [-TV] [-ddate] [-f[rev]] [-I[rev]] [-kmode] [-l[rev]]\n [-M[rev]] [-p[rev]] [-q[rev]] [-r[rev]] [-sstate]\n [-u[rev]] [-w[user]] [-xsuffixes] [-ztz] file ...\n); + + exit(1); } /* Index: merge.c === RCS file: /cvs/src/usr.bin/rcs/merge.c,v retrieving revision 1.7 diff -u -p -r1.7 merge.c --- merge.c 23 Jul 2010 21:46:05 - 1.7 +++ merge.c 2 Jun 2014 22:20:55 - @@ -77,7 +77,6 @@ merge_main(int argc, char **argv) exit(0); default: (usage)(); - exit(D_ERROR); } } argc -= optind; @@ -86,7 +85,6 @@ merge_main(int argc, char **argv) if (argc != 3) { warnx(%s arguments, (argc 3) ? not enough : too many); (usage)(); - exit(D_ERROR); } for (; labels 3; labels++) @@ -118,4 +116,6 @@ merge_usage(void) { (void)fprintf(stderr, usage: merge [-EepqV] [-L label] file1 file2 file3\n); + + exit(D_ERROR); } Index: rcsclean.c === RCS file: /cvs/src/usr.bin/rcs/rcsclean.c,v retrieving revision 1.52 diff -u -p -r1.52 rcsclean.c --- rcsclean.c28 Jul 2010 09:07:11 - 1.52 +++ rcsclean.c2 Jun 2014 22:22:05 - @@ -60,7 +60,6 @@ rcsclean_main(int argc, char **argv) if (RCS_KWEXP_INVAL(kflag)) { warnx(invalid RCS keyword substitution mode); (usage)(); - exit(1); } break; case 'n': @@ -90,7 +89,6 @@ rcsclean_main(int argc, char **argv) break; default: (usage)(); - exit(1); } } @@ -104,7 +102,6 @@ rcsclean_main(int argc, char **argv) if ((dirp = opendir(.)) == NULL) { warn(opendir); (usage)(); - exit(1); } while ((dp = readdir(dirp)) != NULL) { @@ -127,6 +124,8 @@ rcsclean_usage(void) fprintf(stderr, usage: rcsclean [-TV] [-kmode] [-n[rev]] [-q[rev]] [-r[rev]]\n [-u[rev]] [-xsuffixes] [-ztz] [file ...]\n); + + exit(1); } static void Index: rcsdiff.c === RCS file: /cvs/src/usr.bin/rcs/rcsdiff.c,v
Re: [Patch] use exit() directly in usage()
On Tue, Sep 30, 2014 at 10:05:00AM +0100, Nicholas Marriott wrote: If we do this then these usage functions also need to be marked __dead. Agreed, Fritjof, can you aadd that to your diff? -Otto On Sat, Sep 27, 2014 at 07:10:01PM +0200, Fritjof Bornebusch wrote: Hi, after usage() was called, there is no where you can go. fritjof Index: ci.c === RCS file: /cvs/src/usr.bin/rcs/ci.c,v retrieving revision 1.217 diff -u -p -r1.217 ci.c --- ci.c19 May 2014 19:42:24 - 1.217 +++ ci.c2 Jun 2014 22:18:25 - @@ -97,6 +97,8 @@ checkin_usage(void) [-j[rev]] [-k[rev]] [-l[rev]] [-M[rev]] [-mmsg]\n [-Nsymbol] [-nsymbol] [-r[rev]] [-sstate] [-t[str]]\n [-u[rev]] [-wusername] [-xsuffixes] [-ztz] file ...\n); + + exit(1); } /* @@ -221,7 +223,6 @@ checkin_main(int argc, char **argv) break; default: (usage)(); - exit(1); } } @@ -231,7 +232,6 @@ checkin_main(int argc, char **argv) if (argc == 0) { warnx(no input file); (usage)(); - exit(1); } if ((pb.username = getlogin()) == NULL) Index: co.c === RCS file: /cvs/src/usr.bin/rcs/co.c,v retrieving revision 1.117 diff -u -p -r1.117 co.c --- co.c16 Apr 2013 20:24:45 - 1.117 +++ co.c2 Jun 2014 22:19:38 - @@ -79,7 +79,6 @@ checkout_main(int argc, char **argv) if (RCS_KWEXP_INVAL(kflag)) { warnx(invalid RCS keyword substitution mode); (usage)(); - exit(1); } break; case 'l': @@ -141,7 +140,6 @@ checkout_main(int argc, char **argv) break; default: (usage)(); - exit(1); } } @@ -151,7 +149,6 @@ checkout_main(int argc, char **argv) if (argc == 0) { warnx(no input file); (usage)(); - exit (1); } if ((username = getlogin()) == NULL) @@ -229,6 +226,8 @@ checkout_usage(void) usage: co [-TV] [-ddate] [-f[rev]] [-I[rev]] [-kmode] [-l[rev]]\n [-M[rev]] [-p[rev]] [-q[rev]] [-r[rev]] [-sstate]\n [-u[rev]] [-w[user]] [-xsuffixes] [-ztz] file ...\n); + + exit(1); } /* Index: merge.c === RCS file: /cvs/src/usr.bin/rcs/merge.c,v retrieving revision 1.7 diff -u -p -r1.7 merge.c --- merge.c 23 Jul 2010 21:46:05 - 1.7 +++ merge.c 2 Jun 2014 22:20:55 - @@ -77,7 +77,6 @@ merge_main(int argc, char **argv) exit(0); default: (usage)(); - exit(D_ERROR); } } argc -= optind; @@ -86,7 +85,6 @@ merge_main(int argc, char **argv) if (argc != 3) { warnx(%s arguments, (argc 3) ? not enough : too many); (usage)(); - exit(D_ERROR); } for (; labels 3; labels++) @@ -118,4 +116,6 @@ merge_usage(void) { (void)fprintf(stderr, usage: merge [-EepqV] [-L label] file1 file2 file3\n); + + exit(D_ERROR); } Index: rcsclean.c === RCS file: /cvs/src/usr.bin/rcs/rcsclean.c,v retrieving revision 1.52 diff -u -p -r1.52 rcsclean.c --- rcsclean.c 28 Jul 2010 09:07:11 - 1.52 +++ rcsclean.c 2 Jun 2014 22:22:05 - @@ -60,7 +60,6 @@ rcsclean_main(int argc, char **argv) if (RCS_KWEXP_INVAL(kflag)) { warnx(invalid RCS keyword substitution mode); (usage)(); - exit(1); } break; case 'n': @@ -90,7 +89,6 @@ rcsclean_main(int argc, char **argv) break; default: (usage)(); - exit(1); } } @@ -104,7 +102,6 @@ rcsclean_main(int argc, char **argv) if ((dirp = opendir(.)) == NULL) { warn(opendir); (usage)(); - exit(1); } while ((dp = readdir(dirp)) != NULL) { @@ -127,6 +124,8 @@ rcsclean_usage(void) fprintf(stderr, usage: rcsclean [-TV] [-kmode] [-n[rev]] [-q[rev]] [-r[rev]]\n [-u[rev]] [-xsuffixes] [-ztz] [file ...]\n); + + exit(1); } static void Index: