diff -upk.orig tcptraceroute-1.5beta7.orig/main.c tcptraceroute-1.5beta7/main.c --- tcptraceroute-1.5beta7.orig/main.c 2006-03-29 16:11:38 +0000 +++ tcptraceroute-1.5beta7/main.c 2006-03-29 16:28:44 +0000 @@ -296,7 +296,7 @@ int main(int argc, char **argv) for(i = 1; argv[i]; i++) { if (CHECKLONG("--help")) - usage(); + print_help(); if (CHECKLONG("--version")) about(); @@ -386,8 +386,7 @@ int main(int argc, char **argv) if (argv[i][0] == '-' && argv[i][1] == '-') { - fprintf(stderr, "Unknown command line argument: %s\n", argv[i]); - usage(); + print_usage("Unknown command line argument: %s", argv[i]); } } @@ -400,7 +399,7 @@ int main(int argc, char **argv) switch(op) { case 'h': - usage(); + print_help(); case 'v': about(); @@ -493,9 +492,8 @@ int main(int argc, char **argv) case '?': default: if (optopt != ':' && strchr(optstring, optopt)) - fatal("Argument required for -%c\n", optopt); - fprintf(stderr, "Unknown command line argument: -%c\n", optopt); - usage(); + print_usage("Argument required for -%c", optopt); + print_usage("Unknown command line argument: -%c", optopt); } argc -= optind; @@ -526,7 +524,7 @@ int main(int argc, char **argv) break; default: - usage(); + print_usage("Invalid number of arguments"); } if (getuid() & geteuid()) diff -upk.orig tcptraceroute-1.5beta7.orig/util.c tcptraceroute-1.5beta7/util.c --- tcptraceroute-1.5beta7.orig/util.c 2006-03-29 02:30:44 +0000 +++ tcptraceroute-1.5beta7/util.c 2006-03-29 16:33:26 +0000 @@ -69,14 +69,28 @@ void pfatal(char *err) exit(1); } -void usage(void) +void print_help(void) { printf("\n%s %s\n%s\n", PACKAGE, VERSION, BANNER); - fatal("\ + printf("\ Usage: %s [-nNFSAE] [-i ] [-f ]\n\ [-l ] [-q ] [-t ]\n\ [-m ] [-pP] ] [-s ]\n\ [-w ] [destination port] [packet length]\n\n", name); + exit(0); +} + +void print_usage(char *fmt, ...) +{ + va_list ap; + fflush(stdout); + va_start(ap, fmt); + fprintf(stderr, "%s: ", name); + vfprintf(stderr, fmt, ap); + va_end(ap); + fprintf(stderr, "\nTry `%s --help' for more information.\n", name); + fflush(stderr); + exit(1); } void about(void) diff -upk.orig tcptraceroute-1.5beta7.orig/util.h tcptraceroute-1.5beta7/util.h --- tcptraceroute-1.5beta7.orig/util.h 2006-03-29 16:10:26 +0000 +++ tcptraceroute-1.5beta7/util.h 2006-03-29 16:32:19 +0000 @@ -56,7 +56,8 @@ void fatal(char *, ...) TCPTRACEROUTE_NO void debug(char *, ...) TCPTRACEROUTE_FORMAT((__printf__, 1, 2)); void warn(char *, ...) TCPTRACEROUTE_FORMAT((__printf__, 1, 2)); void pfatal(char *) TCPTRACEROUTE_NORETURN; -void usage(void) TCPTRACEROUTE_NORETURN; +void print_help(void) TCPTRACEROUTE_NORETURN; +void print_usage(char *, ...) TCPTRACEROUTE_NORETURN TCPTRACEROUTE_FORMAT((__printf__, 1, 2)); void about(void) TCPTRACEROUTE_NORETURN; void *xrealloc(void *, int); char *safe_strncpy(char *, char *, int);