diff options
author | Eugene Syromyatnikov <evgsyr@gmail.com> | 2018-09-02 21:56:47 +0200 |
---|---|---|
committer | Dmitry V. Levin <ldv@altlinux.org> | 2019-08-06 13:38:20 +0000 |
commit | be5ef21fdabb4904ee119f134daa5af05f8c76de (patch) | |
tree | 2f3d4b90fa61edb43a16f498acdd12a9c7edb2f7 | |
parent | 6b5a9d30b99cf99b27dc27a25ede9a0410d97b52 (diff) | |
download | strace-be5ef21fdabb4904ee119f134daa5af05f8c76de.tar.gz |
count: use parse_ts for parsing overhead value
* count.c (set_overhead): Change argument type to const char *, call
parse_ts to parse it and set to overhead.
* defs.h (set_overhead): Update declaration.
* strace.c: (init) <case 'O'>: do not parse argument, pass optarg to
set_overhead call.
* tests/count.test (GENERIC, WALLCLOCK, WALLCLOCK1, HALFCLOCK): New
variables with expected patterns.
Add checks for the new -O syntax.
-rw-r--r-- | count.c | 6 | ||||
-rw-r--r-- | defs.h | 2 | ||||
-rw-r--r-- | strace.c | 4 | ||||
-rwxr-xr-x | tests/count.test | 24 |
4 files changed, 21 insertions, 15 deletions
@@ -101,10 +101,10 @@ set_sortby(const char *sortby) } } -void set_overhead(int n) +int +set_overhead(const char *str) { - overhead.tv_sec = n / 1000000; - overhead.tv_nsec = n % 1000000 * 1000; + return parse_ts(str, &overhead); } static void @@ -428,7 +428,7 @@ extern unsigned os_release; extern int read_int_from_file(struct tcb *, const char *, int *); extern void set_sortby(const char *); -extern void set_overhead(int); +extern int set_overhead(const char *); extern bool get_instruction_pointer(struct tcb *, kernel_ulong_t *); extern bool get_stack_pointer(struct tcb *, kernel_ulong_t *); @@ -1664,10 +1664,8 @@ init(int argc, char *argv[]) outfname = optarg; break; case 'O': - i = string_to_uint(optarg); - if (i < 0) + if (set_overhead(optarg) < 0) error_opt_arg(c, optarg); - set_overhead(i); break; case 'p': process_opt_p_list(optarg); diff --git a/tests/count.test b/tests/count.test index 6abb17726..2a8a73613 100755 --- a/tests/count.test +++ b/tests/count.test @@ -29,13 +29,21 @@ grep_log() } } -grep_log ' *[^ ]+ +0\.0[^n]*nanosleep' -c -grep_log ' *[^ ]+ +0\.0[^n]*nanosleep' -c -O1 -grep_log ' *[^ ]+ +0\.0[^n]*nanosleep' -c -enanosleep -grep_log ' *[^ ]+ +0\.0[^n]*nanosleep' -c -O1 -enanosleep -grep_log ' *[^ ]+ +(1\.[01]|0\.99)[^n]*nanosleep' -cw -grep_log ' *[^ ]+ +(1\.[01]|0\.99)[^n]*nanosleep' -cw -O1 -grep_log '100\.00 +(1\.[01]|0\.99)[^n]*nanosleep' -cw -enanosleep -grep_log '100\.00 +(1\.[01]|0\.99)[^n]*nanosleep' -cw -O1 -enanosleep +GENERIC=' *[^ ]+ +0\.0[^n]*nanosleep *' +WALLCLOCK=' *[^ ]+ +(1\.[01]|0\.99)[^n]*nanosleep *' +WALLCLOCK1='100\.00 +(1\.[01]|0\.99)[^n]*nanosleep' +HALFCLOCK=' *[^ ]+ +0\.[567][^n]*nanosleep *' + +grep_log "$GENERIC" -c +grep_log "$GENERIC" -c -O1 +grep_log "$GENERIC" -c -enanosleep +grep_log "$GENERIC" -c -O1 -enanosleep +grep_log "$WALLCLOCK" -cw +grep_log "$WALLCLOCK" -cw -O1 +grep_log "$WALLCLOCK1" -cw -enanosleep +grep_log "$WALLCLOCK1" -cw -O1 -enanosleep +grep_log "$HALFCLOCK" -cw -O4.5e2ms -enanosleep +grep_log "$HALFCLOCK" -cw -O4.5e-1s -enanosleep +grep_log "$HALFCLOCK" -cw -O456789012ns -enanosleep exit 0 |