]> The Tcpdump Group git mirrors - tcpdump/blobdiff - tcpdump.c
Merge pull request #916 from stevekay/master
[tcpdump] / tcpdump.c
index b7b6f99555eb9863a4d837f6c0c1109758785c81..2efb549b5226faf7b8d9b2462dfe267f8d48af8d 100644 (file)
--- a/tcpdump.c
+++ b/tcpdump.c
@@ -419,15 +419,15 @@ show_tstamp_types_and_exit(pcap_t *pc, const char *device)
                    device);
                exit_tcpdump(S_SUCCESS);
        }
-       fprintf(stderr, "Time stamp types for %s (use option -j to set):\n",
+       fprintf(stdout, "Time stamp types for %s (use option -j to set):\n",
            device);
        for (i = 0; i < n_tstamp_types; i++) {
                tstamp_type_name = pcap_tstamp_type_val_to_name(tstamp_types[i]);
                if (tstamp_type_name != NULL) {
-                       (void) fprintf(stderr, "  %s (%s)\n", tstamp_type_name,
+                       (void) fprintf(stdout, "  %s (%s)\n", tstamp_type_name,
                            pcap_tstamp_type_val_to_description(tstamp_types[i]));
                } else {
-                       (void) fprintf(stderr, "  %d\n", tstamp_types[i]);
+                       (void) fprintf(stdout, "  %d\n", tstamp_types[i]);
                }
        }
        pcap_free_tstamp_types(tstamp_types);
@@ -1484,6 +1484,7 @@ main(int argc, char **argv)
        int yflag_dlt = -1;
        const char *yflag_dlt_name = NULL;
        int print = 0;
+       long Cflagmult = 1000000;
 
        netdissect_options Ndo;
        netdissect_options *ndo = &Ndo;
@@ -1560,6 +1561,18 @@ main(int argc, char **argv)
 
                case 'C':
                        errno = 0;
+                       if (optarg[strlen(optarg)-1] == 'k') {
+                               Cflagmult = 1024;
+                               optarg[strlen(optarg)-1] = '\0';
+                       }
+                       if (optarg[strlen(optarg)-1] == 'm') {
+                               Cflagmult = 1024*1024;
+                               optarg[strlen(optarg)-1] = '\0';
+                       }
+                       if (optarg[strlen(optarg)-1] == 'g') {
+                               Cflagmult = 1024*1024*1024;
+                               optarg[strlen(optarg)-1] = '\0';
+                       }
 #ifdef HAVE_PCAP_DUMP_FTELL64
                        Cflag = strtoint64_t(optarg, &endp, 10);
 #else
@@ -1569,15 +1582,15 @@ main(int argc, char **argv)
                            || Cflag <= 0)
                                error("invalid file size %s", optarg);
                        /*
-                        * Will multiplying it by 1000000 overflow?
+                        * Will multiplying it by multiplier overflow?
                         */
 #ifdef HAVE_PCAP_DUMP_FTELL64
-                       if (Cflag > INT64_T_CONSTANT(0x7fffffffffffffff) / 1000000)
+                       if (Cflag > INT64_T_CONSTANT(0x7fffffffffffffff) / Cflagmult)
 #else
-                       if (Cflag > LONG_MAX / 1000000)
+                       if (Cflag > LONG_MAX / Cflagmult)
 #endif
                                error("file size %s is too large", optarg);
-                       Cflag *= 1000000;
+                       Cflag *= Cflagmult;
                        break;
 
                case 'd':