diff -uprk.orig tcptraceroute-1.5beta6.orig/capture.c tcptraceroute-1.5beta6/capture.c --- tcptraceroute-1.5beta6.orig/capture.c 2005-01-03 07:03:16 +0300 +++ tcptraceroute-1.5beta6/capture.c 2005-01-03 19:34:58 +0300 @@ -180,7 +180,7 @@ int capture(proberecord *record) if (len > SNAPLEN) { - debug("Packet received is larger than our snaplen? Ignoring\n", SNAPLEN); + debug("Packet received is larger than our snaplen (%d)? Ignoring\n", SNAPLEN); continue; } diff -uprk.orig tcptraceroute-1.5beta6.orig/main.c tcptraceroute-1.5beta6/main.c --- tcptraceroute-1.5beta6.orig/main.c 2005-01-03 06:40:54 +0300 +++ tcptraceroute-1.5beta6/main.c 2005-01-03 19:31:54 +0300 @@ -74,7 +74,7 @@ void defaults(void) } if (device == NULL) - fatal("Could not determine device via pcap_lookupdev(): %\n", errbuf); + fatal("Could not determine device via pcap_lookupdev(): %s\n", errbuf); if ((pcap = pcap_open_live(device, 0, 0, 0, errbuf)) == NULL) fatal("error opening device %s: %s\n", device, errbuf); @@ -296,7 +296,7 @@ int main(int argc, char **argv) for(i = 1; argv[i]; i++) { if (CHECKLONG("--help")) - usage(); + usage(0); if (CHECKLONG("--version")) about(); @@ -387,7 +387,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(); + usage(1); } } @@ -400,7 +400,7 @@ int main(int argc, char **argv) switch(op) { case 'h': - usage(); + usage(0); case 'v': about(); @@ -495,7 +495,7 @@ int main(int argc, char **argv) if (optopt != ':' && strchr(optstring, optopt)) fatal("Argument required for -%c\n", optopt); fprintf(stderr, "Unknown command line argument: -%c\n", optopt); - usage(); + usage(1); } argc -= optind; @@ -526,7 +526,7 @@ int main(int argc, char **argv) break; default: - usage(); + usage(1); } if (getuid() & geteuid()) diff -uprk.orig tcptraceroute-1.5beta6.orig/util.c tcptraceroute-1.5beta6/util.c --- tcptraceroute-1.5beta6.orig/util.c 2005-01-03 07:14:28 +0300 +++ tcptraceroute-1.5beta6/util.c 2005-01-03 19:30:54 +0300 @@ -69,14 +69,17 @@ void pfatal(char *err) exit(1); } -void usage(void) +void usage(int rc) { - printf("\n%s %s\n%s\n", PACKAGE, VERSION, BANNER); - fatal("\ + FILE *fp = rc ? stderr : stdout; + + fprintf(fp, "\n%s %s\n%s\n", PACKAGE, VERSION, BANNER); + fprintf(fp, "\ Usage: %s [-nNFSAE] [-i ] [-f ]\n\ [-l ] [-q ] [-t ]\n\ [-m ] [-pP] ] [-s ]\n\ [-w ] [destination port] [packet length]\n\n", name); + exit(rc); } void about(void) diff -uprk.orig tcptraceroute-1.5beta6.orig/util.h tcptraceroute-1.5beta6/util.h --- tcptraceroute-1.5beta6.orig/util.h 2005-01-03 06:41:09 +0300 +++ tcptraceroute-1.5beta6/util.h 2005-01-03 19:37:56 +0300 @@ -20,6 +20,16 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ +/* GCC attributes */ +#if !defined(__GNUC__) || __GNUC__ < 2 || \ + (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__ +# define NORETURN +# define FORMAT(x) +#else +# define NORETURN __attribute__ ((__noreturn__)) +# define FORMAT(x) __attribute__ ((__format__ x)) +#endif + #define IPTOSBUFFERS 12 #define IPTOSBUFSIZ (4*3+3+1) /* Four three-digit numbers, three dots, and NUL */ @@ -37,15 +47,15 @@ libnet_name2addr4(libnet_context, (u_char *)hostname, numeric) #endif -void fatal(char *, ...); -void debug(char *, ...); -void warn(char *, ...); -void pfatal(char *); -void usage(void); -void about(void); +void fatal(char *, ...) NORETURN FORMAT ((__printf__, 1, 2)); +void debug(char *, ...) FORMAT ((__printf__, 1, 2)); +void warn(char *, ...) FORMAT ((__printf__, 1, 2)); +void pfatal(char *) NORETURN; +void usage(int) NORETURN; +void about(void) NORETURN; void *xrealloc(void *, int); char *safe_strncpy(char *, char *, int); -int safe_snprintf(char *, int, char *, ...); +int safe_snprintf(char *, int, char *, ...) FORMAT ((__printf__, 3, 4)); char *sprintable(char *); int isnumeric(char *); struct timeval tvdiff(struct timeval *, struct timeval *);