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>
This commit is contained in:
Denys Vlasenko 2014-03-07 14:32:39 +01:00
parent 190693ced1
commit 102f0d0d07
1 changed files with 5 additions and 3 deletions

View File

@ -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);