diff options
author | Denys Vlasenko | 2014-03-07 14:32:39 +0100 |
---|---|---|
committer | Denys Vlasenko | 2014-03-07 14:32:39 +0100 |
commit | 102f0d0d073c4781b5a58f679bdfd0999eea5e71 (patch) | |
tree | ed6225c4eb714995e636dc7816a6fb19618975ad /coreutils | |
parent | 190693ced1bb82d96c5dedbe850840aae9246a5c (diff) | |
download | busybox-102f0d0d073c4781b5a58f679bdfd0999eea5e71.zip busybox-102f0d0d073c4781b5a58f679bdfd0999eea5e71.tar.gz |
shuf: do not use strings for -i RANGE case
function old new delta
shuf_main 482 496 +14
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'coreutils')
-rw-r--r-- | coreutils/shuf.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/coreutils/shuf.c b/coreutils/shuf.c index e0c2fbf..d1cd39d 100644 --- a/coreutils/shuf.c +++ b/coreutils/shuf.c @@ -79,7 +79,6 @@ int shuf_main(int argc, char **argv) /* Prepare lines for shuffling - either: */ if (opts & OPT_e) { /* make lines from command-line arguments */ - numlines = argc; lines = argv; } else @@ -103,7 +102,7 @@ int shuf_main(int argc, char **argv) numlines = (hi+1) - lo; lines = xmalloc(numlines * sizeof(lines[0])); for (i = 0; i < numlines; i++) { - lines[i] = xstrdup(utoa(lo)); + lines[i] = (char*)(uintptr_t)lo; lo++; } } else { @@ -144,7 +143,10 @@ int shuf_main(int argc, char **argv) eol = '\0'; for (i = 0; i < numlines; i++) { - printf("%s%c", lines[i], eol); + if (opts & OPT_i) + printf("%u%c", (unsigned)(uintptr_t)lines[i], eol); + else + printf("%s%c", lines[i], eol); } fflush_stdout_and_exit(EXIT_SUCCESS); |