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>
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 @@
/* Prepare lines for shuffling - either: */
if (opts & OPT_e) {
/* make lines from command-line arguments */
-
numlines = argc;
lines = argv;
} else
@@ -103,7 +102,7 @@
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 @@
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);