diff options
author | H. Peter Anvin <hpa@linux.intel.com> | 2014-04-15 09:34:45 -0700 |
---|---|---|
committer | H. Peter Anvin <hpa@linux.intel.com> | 2014-04-15 09:34:45 -0700 |
commit | 1ba3e80738407d13bc4a71812578848b6f657e23 (patch) | |
tree | 22ffe9a3ecab966ed601b1183f6ca486f220164c | |
parent | 4a66f39cb53fde78c4518615382be83a9e2bff0b (diff) | |
download | klibc-1ba3e80738407d13bc4a71812578848b6f657e23.tar.gz |
readlink: Handle multiple input arguments
Handle multiple links as parguments passed to readlink().
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
-rw-r--r-- | usr/utils/readlink.c | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/usr/utils/readlink.c b/usr/utils/readlink.c index 8b620fdb63770..bf9501b2672dd 100644 --- a/usr/utils/readlink.c +++ b/usr/utils/readlink.c @@ -3,11 +3,11 @@ #include <unistd.h> #include <sys/stat.h> -char *progname; +const char *progname; static __noreturn usage(void) { - fprintf(stderr, "Usage: %s link\n", progname); + fprintf(stderr, "Usage: %s link...\n", progname); exit(1); } @@ -16,19 +16,22 @@ int main(int argc, char *argv[]) const char *name; char link_name[PATH_MAX]; int rv; + int i; progname = *argv++; - name = *argv++; - if (!name) + if (argc < 2) usage(); - rv = readlink(name, link_name, sizeof link_name - 1); - if (rv < 0) { - perror(name); - exit(1); + while ((name = *argv++)) { + rv = readlink(name, link_name, sizeof link_name - 1); + if (rv < 0) { + perror(name); + exit(1); + } + link_name[rv] = '\0'; + puts(link_name); } - link_name[rv] = '\0'; - puts(link_name); - exit(0); + + return 0; } |