blob: 5933062b8aa31f430c74ce60d7fc30821775937f [file] [log] [blame]
Bernhard Reutner-Fischerc7801c42006-05-19 18:35:03 +00001/* vi: set sw=4 ts=4: */
Glenn L McGrath62fae302002-12-10 00:14:33 +00002
Manuel Novoa III cad53642003-03-19 09:13:01 +00003/* BB_AUDIT SUSv3 N/A -- Apparently a busybox extension. */
4
5/* Mar 16, 2003 Manuel Novoa III (mjn3@codepoet.org)
6 *
7 * Now does proper error checking on output and returns a failure exit code
Denis Vlasenkoe1a0d482006-10-20 13:28:22 +00008 * if one or more paths cannot be resolved.
Bernhard Reutner-Fischerc7801c42006-05-19 18:35:03 +00009 *
Denys Vlasenko0ef64bd2010-08-16 20:14:46 +020010 * Licensed under GPLv2 or later, see file LICENSE in this source tree.
Manuel Novoa III cad53642003-03-19 09:13:01 +000011 */
12
Denis Vlasenkob6adbf12007-05-26 19:00:18 +000013#include "libbb.h"
Glenn L McGrath62fae302002-12-10 00:14:33 +000014
Denis Vlasenko9b49a5e2007-10-11 10:05:36 +000015int realpath_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
Denis Vlasenkoa60f84e2008-07-05 09:18:54 +000016int realpath_main(int argc UNUSED_PARAM, char **argv)
Glenn L McGrath62fae302002-12-10 00:14:33 +000017{
Manuel Novoa III cad53642003-03-19 09:13:01 +000018 int retval = EXIT_SUCCESS;
19
Denis Vlasenko1d426652008-03-17 09:09:09 +000020 if (!*++argv) {
Manuel Novoa III cad53642003-03-19 09:13:01 +000021 bb_show_usage();
Glenn L McGrath62fae302002-12-10 00:14:33 +000022 }
23
Glenn L McGrath7b4e89b2002-12-10 03:16:37 +000024 do {
Jérémie Koenigfbedacf2010-03-26 19:08:53 +010025 char *resolved_path = xmalloc_realpath(*argv);
Denys Vlasenko8f65b0c2010-07-06 18:46:02 +020026 if (resolved_path != NULL) {
Glenn L McGrath62fae302002-12-10 00:14:33 +000027 puts(resolved_path);
Jérémie Koenigfbedacf2010-03-26 19:08:53 +010028 free(resolved_path);
Glenn L McGrath62fae302002-12-10 00:14:33 +000029 } else {
Manuel Novoa III cad53642003-03-19 09:13:01 +000030 retval = EXIT_FAILURE;
Denis Vlasenko0c97c9d2007-10-01 11:58:38 +000031 bb_simple_perror_msg(*argv);
Glenn L McGrath62fae302002-12-10 00:14:33 +000032 }
Denis Vlasenko1d426652008-03-17 09:09:09 +000033 } while (*++argv);
Glenn L McGrath7b4e89b2002-12-10 03:16:37 +000034
Denis Vlasenkof0ed3762006-10-26 23:21:47 +000035 fflush_stdout_and_exit(retval);
Glenn L McGrath7b4e89b2002-12-10 03:16:37 +000036}