strings: implement -t radix
[oweals/busybox.git] / e2fsprogs / lsattr.c
index fbfbea2bc769127816eeb0842c8e5927646d4350..d2348b5f741d61be197146f67d04be6fcbb398d5 100644 (file)
@@ -9,14 +9,26 @@
  * This file can be redistributed under the terms of the GNU General
  * Public License
  */
-
-/*
- * History:
- * 93/10/30    - Creation
- * 93/11/13    - Replace stat() calls by lstat() to avoid loops
- * 94/02/27    - Integrated in Ted's distribution
- * 98/12/29    - Display version info only when -V specified (G M Sipe)
- */
+//config:config LSATTR
+//config:      bool "lsattr"
+//config:      default y
+//config:      select PLATFORM_LINUX
+//config:      help
+//config:        lsattr lists the file attributes on a second extended file system.
+
+//applet:IF_LSATTR(APPLET(lsattr, BB_DIR_BIN, BB_SUID_DROP))
+
+//kbuild:lib-$(CONFIG_LSATTR) += lsattr.o e2fs_lib.o
+
+//usage:#define lsattr_trivial_usage
+//usage:       "[-Radlv] [FILE]..."
+//usage:#define lsattr_full_usage "\n\n"
+//usage:       "List ext2 file attributes\n"
+//usage:     "\n       -R      Recurse"
+//usage:     "\n       -a      Don't hide entries starting with ."
+//usage:     "\n       -d      List directory entries instead of contents"
+//usage:     "\n       -l      List long flag names"
+//usage:     "\n       -v      List version/generation number"
 
 #include "libbb.h"
 #include "e2fs_lib.h"
@@ -45,10 +57,10 @@ static void list_attributes(const char *name)
 
        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,8 +69,9 @@ 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;
@@ -74,7 +87,7 @@ static int lsattr_dir_proc(const char *dir_name, struct dirent *de,
                ) {
                        printf("\n%s:\n", path);
                        iterate_on_dir(path, lsattr_dir_proc, NULL);
-                       puts("");
+                       bb_putchar('\n');
                }
        }
 
@@ -95,18 +108,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;
 }