readlink: Handle multiple input arguments
Handle multiple links as parguments passed to readlink().
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
diff --git a/usr/utils/readlink.c b/usr/utils/readlink.c
index 8b620fd..bf9501b 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 @@
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;
}