*: random code shrink
[oweals/busybox.git] / e2fsprogs / lsattr.c
index 8945b53e0621d7f826ca648ac107d0ef53608d2c..7d475a96913fad29906277ff90b0ce7426871508 100644 (file)
@@ -18,7 +18,7 @@
  * 98/12/29    - Display version info only when -V specified (G M Sipe)
  */
 
-#include "busybox.h"
+#include "libbb.h"
 #include "e2fs_lib.h"
 
 enum {
@@ -34,21 +34,21 @@ static void list_attributes(const char *name)
        unsigned long fsflags;
        unsigned long generation;
 
-       if (fgetflags(name, &fsflags) == -1)
+       if (fgetflags(name, &fsflags) != 0)
                goto read_err;
 
        if (option_mask32 & OPT_GENERATION) {
-               if (fgetversion(name, &generation) == -1)
+               if (fgetversion(name, &generation) != 0)
                        goto read_err;
                printf("%5lu ", generation);
        }
 
        if (option_mask32 & OPT_PF_LONG) {
                printf("%-28s ", name);
-               print_flags(stdout, fsflags, PFOPT_LONG);
-               puts("");
+               print_e2flags(stdout, fsflags, PFOPT_LONG);
+               bb_putchar('\n');
        } else {
-               print_flags(stdout, fsflags, 0);
+               print_e2flags(stdout, fsflags, 0);
                printf(" %s\n", name);
        }
 
@@ -57,31 +57,29 @@ static void list_attributes(const char *name)
        bb_perror_msg("reading %s", name);
 }
 
-static int lsattr_dir_proc(const char *dir_name, struct dirent *de,
-                          void *private)
+static int FAST_FUNC lsattr_dir_proc(const char *dir_name,
+               struct dirent *de,
+               void *private UNUSED_PARAM)
 {
        struct stat st;
        char *path;
 
        path = concat_path_file(dir_name, de->d_name);
 
-       if (lstat(path, &st) == -1)
+       if (lstat(path, &st) != 0)
                bb_perror_msg("stat %s", path);
-
        else if (de->d_name[0] != '.' || (option_mask32 & OPT_ALL)) {
                list_attributes(path);
                if (S_ISDIR(st.st_mode) && (option_mask32 & OPT_RECUR)
-                && (de->d_name[0] != '.'
-                    || (de->d_name[1] != '\0' && NOT_LONE_CHAR(de->d_name+1, '.')))
+                && !DOT_OR_DOTDOT(de->d_name)
                ) {
                        printf("\n%s:\n", path);
                        iterate_on_dir(path, lsattr_dir_proc, NULL);
-                       puts("");
+                       bb_putchar('\n');
                }
        }
 
        free(path);
-
        return 0;
 }
 
@@ -98,18 +96,15 @@ static void lsattr_args(const char *name)
        }
 }
 
-int lsattr_main(int argc, char **argv);
-int lsattr_main(int argc, char **argv)
+int lsattr_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
+int lsattr_main(int argc UNUSED_PARAM, char **argv)
 {
-       getopt32(argc, argv, "Radlv");
+       getopt32(argv, "Radlv");
        argv += optind;
 
        if (!*argv)
-               lsattr_args(".");
-       else {
-               while (*argv)
-                       lsattr_args(*argv++);
-       }
+               *--argv = (char*)".";
+       do lsattr_args(*argv++); while (*argv);
 
        return EXIT_SUCCESS;
 }