=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/rcs/rcsprog.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- src/usr.bin/rcs/rcsprog.c 2005/04/15 15:46:21 1.1 +++ src/usr.bin/rcs/rcsprog.c 2005/04/15 15:59:11 1.2 @@ -1,4 +1,4 @@ -/* $OpenBSD: rcsprog.c,v 1.1 2005/04/15 15:46:21 deraadt Exp $ */ +/* $OpenBSD: rcsprog.c,v 1.2 2005/04/15 15:59:11 deraadt Exp $ */ /* * Copyright (c) 2005 Jean-Francois Brousseau * All rights reserved. @@ -46,20 +46,20 @@ const char rcs_version[] = "OpenCVS RCS version 3.6"; -void rcs_usage (void); -int rcs_main (int, char **); +void rcs_usage(void); +int rcs_main(int, char **); +void (*usage)(void); - - struct rcs_prog { char *prog_name; int (*prog_hdlr)(int, char **); + void (*prog_usage)(void); } programs[] = { - { "rcs", rcs_main }, - { "ci", NULL }, - { "co", NULL }, - { "rcsclean", NULL }, - { "rcsdiff", NULL }, + { "rcs", rcs_main, rcs_usage }, + { "ci", NULL, NULL }, + { "co", NULL, NULL }, + { "rcsclean", NULL, NULL }, + { "rcsdiff", NULL, NULL }, }; @@ -73,8 +73,11 @@ cvs_strtab_init(); for (i = 0; i < (sizeof(programs)/sizeof(programs[0])); i++) - if (strcmp(__progname, programs[i].prog_name) == 0) + if (strcmp(__progname, programs[i].prog_name) == 0) { + usage = programs[i].prog_usage; ret = programs[i].prog_hdlr(argc, argv); + break; + } cvs_strtab_cleanup(); @@ -86,20 +89,8 @@ rcs_usage(void) { fprintf(stderr, - "Usage: %s [-hiLMUV] [-a users] [-b [rev]] [-c string] " - "[-e users] [-k opt] file ...\n" - "\t-a users\tAdd the login names in the comma-separated \n" - "\t-b rev\t\tSet the head revision to \n" - "\t-c string\tSet the comment leader to \n" - "\t-e users\tRemove the login names in the comma-separated \n" - "\t-h\t\tPrint the program's usage and exit\n" - "\t-i\t\tCreate a new empty RCS file\n" - "\t-k opt\t\tSet the keyword expansion mode to \n" - "\t-L\t\tEnable strict locking on the specified files\n" - "\t-M\t\tDisable mail warning about lock breaks\n" - "\t-U\t\tDisable strict locking on the specified files\n" - "\t-V\t\tPrint the program's version string and exit\n", - __progname); + "usage: %s [-hiLMUV] [-a users] [-b [rev]] [-c string] " + "[-e users] [-k opt] file ...\n", __progname); } @@ -139,7 +130,7 @@ elist = optarg; break; case 'h': - rcs_usage(); + (usage)(); exit(0); case 'i': flags |= RCS_CREATE; @@ -170,7 +161,7 @@ printf("%s\n", rcs_version); exit(0); default: - rcs_usage(); + (usage)(); exit(1); } }