mirror of https://github.com/mirror/busybox.git
readlink: code shrink
function old new delta readlink_main 111 103 -8 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>master
parent
c6058d221a
commit
07f8b6feac
|
@ -68,12 +68,11 @@ int readlink_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
|
||||||
int readlink_main(int argc UNUSED_PARAM, char **argv)
|
int readlink_main(int argc UNUSED_PARAM, char **argv)
|
||||||
{
|
{
|
||||||
char *buf;
|
char *buf;
|
||||||
char *fname;
|
|
||||||
unsigned opt;
|
unsigned opt;
|
||||||
|
|
||||||
|
/* -n must use bit 0 (see printf below) */
|
||||||
opt = getopt32(argv, "^" "n" IF_FEATURE_READLINK_FOLLOW("fvsq")
|
opt = getopt32(argv, "^" "n" IF_FEATURE_READLINK_FOLLOW("fvsq")
|
||||||
"\0" "=1");
|
"\0" "=1");
|
||||||
fname = argv[optind];
|
|
||||||
|
|
||||||
/* compat: coreutils readlink reports errors silently via exit code */
|
/* compat: coreutils readlink reports errors silently via exit code */
|
||||||
if (!(opt & 4)) /* not -v */
|
if (!(opt & 4)) /* not -v */
|
||||||
|
@ -81,14 +80,14 @@ int readlink_main(int argc UNUSED_PARAM, char **argv)
|
||||||
|
|
||||||
/* NOFORK: only one alloc is allowed; must free */
|
/* NOFORK: only one alloc is allowed; must free */
|
||||||
if (opt & 2) { /* -f */
|
if (opt & 2) { /* -f */
|
||||||
buf = xmalloc_realpath_coreutils(fname);
|
buf = xmalloc_realpath_coreutils(argv[optind]);
|
||||||
} else {
|
} else {
|
||||||
buf = xmalloc_readlink_or_warn(fname);
|
buf = xmalloc_readlink_or_warn(argv[optind]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!buf)
|
if (!buf)
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
printf((opt & 1) ? "%s" : "%s\n", buf);
|
printf("%s%s", buf, &"\n"[opt & 1]);
|
||||||
free(buf);
|
free(buf);
|
||||||
|
|
||||||
fflush_stdout_and_exit_SUCCESS();
|
fflush_stdout_and_exit_SUCCESS();
|
||||||
|
|
Loading…
Reference in New Issue