summaryrefslogtreecommitdiff
path: root/coreutils/realpath.c
diff options
context:
space:
mode:
Diffstat (limited to 'coreutils/realpath.c')
-rw-r--r--coreutils/realpath.c22
1 files changed, 10 insertions, 12 deletions
diff --git a/coreutils/realpath.c b/coreutils/realpath.c
index 7ef935e..f89e0a2 100644
--- a/coreutils/realpath.c
+++ b/coreutils/realpath.c
@@ -21,24 +21,22 @@
int realpath_main(int argc, char **argv)
{
- char *resolved_path;
- int count;
+ RESERVE_CONFIG_BUFFER(resolved_path, PATH_MAX);
- if (argc == 1) {
+ if (--argc == 0) {
show_usage();
}
- resolved_path = malloc(PATH_MAX);
-
- for (count = 1; count < argc; count++) {
- resolved_path = realpath(argv[count], resolved_path);
- if (resolved_path) {
+ do {
+ argv++;
+ if (realpath(*argv, resolved_path) != NULL) {
puts(resolved_path);
} else {
- perror_msg("%s", argv[count]);
+ perror_msg("%s", *argv);
}
- }
- free(resolved_path);
+ } while (--argc);
+
+ RELEASE_CONFIG_BUFFER(resolved_path);
return(EXIT_SUCCESS);
-} \ No newline at end of file
+}