10 |
* Licensed under GPLv2 or later, see file LICENSE in this tarball for details. |
* Licensed under GPLv2 or later, see file LICENSE in this tarball for details. |
11 |
*/ |
*/ |
12 |
|
|
13 |
#include "busybox.h" |
#include "libbb.h" |
14 |
|
|
15 |
int realpath_main(int argc, char **argv) |
int realpath_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; |
16 |
|
int realpath_main(int argc UNUSED_PARAM, char **argv) |
17 |
{ |
{ |
18 |
int retval = EXIT_SUCCESS; |
int retval = EXIT_SUCCESS; |
19 |
|
|
25 |
# define resolved_path_MUST_FREE 0 |
# define resolved_path_MUST_FREE 0 |
26 |
#endif |
#endif |
27 |
|
|
28 |
if (--argc == 0) { |
if (!*++argv) { |
29 |
bb_show_usage(); |
bb_show_usage(); |
30 |
} |
} |
31 |
|
|
32 |
do { |
do { |
|
argv++; |
|
33 |
if (realpath(*argv, resolved_path) != NULL) { |
if (realpath(*argv, resolved_path) != NULL) { |
34 |
puts(resolved_path); |
puts(resolved_path); |
35 |
} else { |
} else { |
36 |
retval = EXIT_FAILURE; |
retval = EXIT_FAILURE; |
37 |
bb_perror_msg("%s", *argv); |
bb_simple_perror_msg(*argv); |
38 |
} |
} |
39 |
} while (--argc); |
} while (*++argv); |
40 |
|
|
41 |
#if ENABLE_FEATURE_CLEAN_UP && resolved_path_MUST_FREE |
#if ENABLE_FEATURE_CLEAN_UP && resolved_path_MUST_FREE |
42 |
RELEASE_CONFIG_BUFFER(resolved_path); |
RELEASE_CONFIG_BUFFER(resolved_path); |