diff options
Diffstat (limited to 'coreutils/realpath.c')
| -rw-r--r-- | coreutils/realpath.c | 16 |
1 files changed, 3 insertions, 13 deletions
diff --git a/coreutils/realpath.c b/coreutils/realpath.c index 28906ba55..90a71ed7d 100644 --- a/coreutils/realpath.c +++ b/coreutils/realpath.c | |||
| @@ -17,30 +17,20 @@ int realpath_main(int argc UNUSED_PARAM, char **argv) | |||
| 17 | { | 17 | { |
| 18 | int retval = EXIT_SUCCESS; | 18 | int retval = EXIT_SUCCESS; |
| 19 | 19 | ||
| 20 | #if PATH_MAX > (BUFSIZ+1) | ||
| 21 | RESERVE_CONFIG_BUFFER(resolved_path, PATH_MAX); | ||
| 22 | # define resolved_path_MUST_FREE 1 | ||
| 23 | #else | ||
| 24 | #define resolved_path bb_common_bufsiz1 | ||
| 25 | # define resolved_path_MUST_FREE 0 | ||
| 26 | #endif | ||
| 27 | |||
| 28 | if (!*++argv) { | 20 | if (!*++argv) { |
| 29 | bb_show_usage(); | 21 | bb_show_usage(); |
| 30 | } | 22 | } |
| 31 | 23 | ||
| 32 | do { | 24 | do { |
| 33 | if (realpath(*argv, resolved_path) != NULL) { | 25 | char *resolved_path = xmalloc_realpath(*argv); |
| 26 | if (resolved_path != NULL) { | ||
| 34 | puts(resolved_path); | 27 | puts(resolved_path); |
| 28 | free(resolved_path); | ||
| 35 | } else { | 29 | } else { |
| 36 | retval = EXIT_FAILURE; | 30 | retval = EXIT_FAILURE; |
| 37 | bb_simple_perror_msg(*argv); | 31 | bb_simple_perror_msg(*argv); |
| 38 | } | 32 | } |
| 39 | } while (*++argv); | 33 | } while (*++argv); |
| 40 | 34 | ||
| 41 | #if ENABLE_FEATURE_CLEAN_UP && resolved_path_MUST_FREE | ||
| 42 | RELEASE_CONFIG_BUFFER(resolved_path); | ||
| 43 | #endif | ||
| 44 | |||
| 45 | fflush_stdout_and_exit(retval); | 35 | fflush_stdout_and_exit(retval); |
| 46 | } | 36 | } |
