Disable any buffering to stdout
[oweals/busybox.git] / coreutils / realpath.c
index f89e0a27460c1b5858a0bfcfd468fa37bde46d2b..ec98221adc2ee204da0ba8a78998935d2bd78732 100644 (file)
  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
+/* BB_AUDIT SUSv3 N/A -- Apparently a busybox extension. */
+
+/* Mar 16, 2003      Manuel Novoa III   (mjn3@codepoet.org)
+ *
+ * Now does proper error checking on output and returns a failure exit code
+ * if one or more paths can not be resolved.
+ */
+
 #include <limits.h>
 #include <stdlib.h>
-
 #include "busybox.h"
 
 int realpath_main(int argc, char **argv)
 {
+       int retval = EXIT_SUCCESS;
+
        RESERVE_CONFIG_BUFFER(resolved_path, PATH_MAX);
 
        if (--argc == 0) {
-               show_usage();
+               bb_show_usage();
        }
 
        do {
@@ -32,11 +41,14 @@ int realpath_main(int argc, char **argv)
                if (realpath(*argv, resolved_path) != NULL) {
                        puts(resolved_path);
                } else {
-                       perror_msg("%s", *argv);
+                       retval = EXIT_FAILURE;
+                       bb_perror_msg("%s", *argv);
                }
        } while (--argc);
 
+#ifdef CONFIG_FEATURE_CLEAN_UP
        RELEASE_CONFIG_BUFFER(resolved_path);
+#endif
 
-       return(EXIT_SUCCESS);
+       bb_fflush_stdout_and_exit(retval);
 }