busybox/coreutils/realpath.c
<<
>>
Prefs
   1/* vi: set sw=4 ts=4: */
   2
   3/* 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
   8 * if one or more paths cannot be resolved.
   9 *
  10 * Licensed under GPLv2 or later, see file LICENSE in this source tree.
  11 */
  12
  13//usage:#define realpath_trivial_usage
  14//usage:       "FILE..."
  15//usage:#define realpath_full_usage "\n\n"
  16//usage:       "Return the absolute pathnames of given FILE"
  17
  18#include "libbb.h"
  19
  20int realpath_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
  21int realpath_main(int argc UNUSED_PARAM, char **argv)
  22{
  23        int retval = EXIT_SUCCESS;
  24
  25        if (!*++argv) {
  26                bb_show_usage();
  27        }
  28
  29        do {
  30                char *resolved_path = xmalloc_realpath(*argv);
  31                if (resolved_path != NULL) {
  32                        puts(resolved_path);
  33                        free(resolved_path);
  34                } else {
  35                        retval = EXIT_FAILURE;
  36                        bb_simple_perror_msg(*argv);
  37                }
  38        } while (*++argv);
  39
  40        fflush_stdout_and_exit(retval);
  41}
  42