aboutsummaryrefslogtreecommitdiffstats
path: root/editcap.c
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2001-07-13 07:55:13 +0000
committerGuy Harris <guy@alum.mit.edu>2001-07-13 07:55:13 +0000
commit4eb402185426a343c827d1a69722cdb8be37522b (patch)
tree36d8339152354aff96480a6800b1edb780702e2b /editcap.c
parent9d191e7f039a3ce4e64fa90d99347416d9cc5740 (diff)
From Scott Renfro:
- make a leading zero in the argument to -t optional; - includes the -t option in in the summary portion of of the editcap usage message. svn path=/trunk/; revision=3712
Diffstat (limited to 'editcap.c')
-rw-r--r--editcap.c42
1 files changed, 30 insertions, 12 deletions
diff --git a/editcap.c b/editcap.c
index d003633868..b609acbe62 100644
--- a/editcap.c
+++ b/editcap.c
@@ -1,7 +1,7 @@
/* Edit capture files. We can delete records, adjust timestamps, or
* simply convert from one format to another format.
*
- * $Id: editcap.c,v 1.16 2001/07/12 08:16:44 guy Exp $
+ * $Id: editcap.c,v 1.17 2001/07/13 07:55:13 guy Exp $
*
* Originally written by Richard Sharpe.
* Improved by Guy Harris.
@@ -216,21 +216,38 @@ set_time_adjustment(char *optarg)
if (!optarg)
return;
- /* first collect the whole seconds */
- val = strtol(optarg, &frac, 10);
- if (frac == NULL || frac == optarg || val == LONG_MIN || val == LONG_MAX) {
- fprintf(stderr, "editcap: \"%s\" is not a valid time adjustment\n",
- optarg);
- exit(1);
+ /* skip leading whitespace */
+ while (*optarg == ' ' || *optarg == '\t') {
+ optarg++;
+ }
+
+ /* check for a negative adjustment */
+ if (*optarg == '-') {
+ time_adj.is_negative = 1;
+ optarg++;
}
- if (val < 0) {
- time_adj.is_negative = 1;
- val = -val;
+
+ /* collect whole number of seconds, if any */
+ if (*optarg == '.') { /* only fractional (i.e., .5 is ok) */
+ val = 0;
+ frac = optarg;
+ } else {
+ val = strtol(optarg, &frac, 10);
+ if (frac == NULL || frac == optarg || val == LONG_MIN || val == LONG_MAX) {
+ fprintf(stderr, "editcap: \"%s\" is not a valid time adjustment\n",
+ optarg);
+ exit(1);
+ }
+ if (val < 0) { /* implies '--' since we caught '-' above */
+ fprintf(stderr, "editcap: \"%s\" is not a valid time adjustment\n",
+ optarg);
+ exit(1);
+ }
}
time_adj.tv.tv_sec = val;
/* now collect the partial seconds, if any */
- if (*frac != '\0') { /* have more to string, so more to */
+ if (*frac != '\0') { /* chars left, so get fractional part */
val = strtol(&(frac[1]), &end, 10);
if (*frac != '.' || end == NULL || end == frac
|| val < 0 || val > ONE_MILLION || val == LONG_MIN || val == LONG_MAX) {
@@ -261,7 +278,8 @@ void usage()
const char *string;
fprintf(stderr, "Usage: editcap [-r] [-h] [-v] [-T <encap type>] [-F <capture type>]\n");
- fprintf(stderr, " [-s <snaplen>] <infile> <outfile> [ <record#>[-<record#>] ... ]\n");
+ fprintf(stderr, " [-s <snaplen>] [-t <time adjustment\n");
+ fprintf(stderr, " <infile> <outfile> [ <record#>[-<record#>] ... ]\n");
fprintf(stderr, " where\t-r specifies that the records specified should be kept, not deleted, \n");
fprintf(stderr, " default is to delete\n");
fprintf(stderr, " \t-v specifies verbose operation, default is silent\n");