From dede39bbb8ef92920f26875de7d5cc64a319e033 Mon Sep 17 00:00:00 2001 From: Theodore Ts'o Date: Fri, 11 Feb 2000 04:48:03 +0000 Subject: [PATCH] ChangeLog, Makefile.in, e2p.h, pf.c: Makefile.in: Install the e2p.h header. e2p.h, pf.c (print_flags): Change the third parameter of print_flags() to be an option parameter, although we only support one option at this point. pf.c (print_flags): Updated to use a more generic structure for storing the ext2 inode flags. Add support for the (current) set of compression flags. --- lib/e2p/ChangeLog | 12 ++++++ lib/e2p/Makefile.in | 9 ++++- lib/e2p/e2p.h | 8 +++- lib/e2p/pf.c | 110 ++++++++++++++++++++-------------------------------- 4 files changed, 68 insertions(+), 71 deletions(-) diff --git a/lib/e2p/ChangeLog b/lib/e2p/ChangeLog index afdcfa6..ac3c6a4 100644 --- a/lib/e2p/ChangeLog +++ b/lib/e2p/ChangeLog @@ -1,3 +1,15 @@ +2000-02-10 Theodore Ts'o + + * Makefile.in: Install the e2p.h header. + + * e2p.h, pf.c (print_flags): Change the third parameter of + print_flags() to be an option parameter, although we only + support one option at this point. + + * pf.c (print_flags): Updated to use a more generic structure for + storing the ext2 inode flags. Add support for the + (current) set of compression flags. + 1999-11-19 * Makefile.in (distclean): Remove TAGS and Makefile.in.old from diff --git a/lib/e2p/Makefile.in b/lib/e2p/Makefile.in index 5ee673b..c33b1ba 100644 --- a/lib/e2p/Makefile.in +++ b/lib/e2p/Makefile.in @@ -28,6 +28,8 @@ SRCS= $(srcdir)/feature.c $(srcdir)/fgetflags.c \ $(srcdir)/setflags.c $(srcdir)/setversion.c \ $(srcdir)/uuid.c +HFILES= e2p.h + LIBRARY= libe2p LIBDIR= e2p @@ -69,16 +71,21 @@ BSDLIB_INSTALL_DIR = $(root_libdir) @BSDLIB_CMT@ $(CC) $(ALL_CFLAGS) -fpic -o pic/$*.o -c $< installdirs:: - $(top_srcdir)/mkinstalldirs $(DESTDIR)$(libdir) + $(top_srcdir)/mkinstalldirs $(DESTDIR)$(libdir) \ + $(DESTDIR)$(includedir)/e2p install:: all installdirs $(INSTALL_DATA) libe2p.a $(DESTDIR)$(libdir)/libe2p.a $(CHMOD) 644 $(DESTDIR)$(libdir)/libe2p.a -$(RANLIB) $(DESTDIR)$(libdir)/libe2p.a $(CHMOD) $(LIBMODE) $(DESTDIR)$(libdir)/libe2p.a + for i in $(HFILES); do \ + $(INSTALL_DATA) $(srcdir)/$$i $(DESTDIR)$(includedir)/e2p/$$i; \ + done uninstall:: $(RM) -f $(DESTDIR)$(libdir)/libe2p.a + $(RM) -rf $(DESTDIR)$(includedir)/e2p clean:: $(RM) -f \#* *.s *.o *.a *~ *.bak core profiled/* checker/* diff --git a/lib/e2p/e2p.h b/lib/e2p/e2p.h index 9f5636c..07af08b 100644 --- a/lib/e2p/e2p.h +++ b/lib/e2p/e2p.h @@ -8,6 +8,12 @@ #define E2P_FEATURE_INCOMPAT 1 #define E2P_FEATURE_RO_INCOMPAT 2 + +/* `options' for print_flags() */ + +#define PFOPT_LONG 1 /* Must be 1 for compatibility with `int long_format'. */ + + int fgetflags (const char * name, unsigned long * flags); int fgetversion (const char * name, unsigned long * version); int fsetflags (const char * name, unsigned long flags); @@ -19,7 +25,7 @@ int iterate_on_dir (const char * dir_name, void * private); void list_super (struct ext2_super_block * s); void print_fs_errors (FILE * f, unsigned short errors); -void print_flags (FILE * f, unsigned long flags, int long_format); +void print_flags (FILE * f, unsigned long flags, unsigned options); void print_fs_state (FILE * f, unsigned short state); int setflags (int fd, unsigned long flags); int setversion (int fd, unsigned long version); diff --git a/lib/e2p/pf.c b/lib/e2p/pf.c index 8ef00b8..91bd59e 100644 --- a/lib/e2p/pf.c +++ b/lib/e2p/pf.c @@ -18,78 +18,50 @@ #include "e2p.h" -static const unsigned long flags_array[] = { - EXT2_SECRM_FL, - EXT2_UNRM_FL, - EXT2_COMPR_FL, - EXT2_SYNC_FL, -#ifdef EXT2_IMMUTABLE_FL - EXT2_IMMUTABLE_FL, -#endif -#ifdef EXT2_APPEND_FL - EXT2_APPEND_FL, -#endif -#ifdef EXT2_NODUMP_FL - EXT2_NODUMP_FL, -#endif -#ifdef EXT2_NOATIME_FL - EXT2_NOATIME_FL, -#endif - 0}; +struct flags_name { + unsigned long flag; + char *short_name; + char *long_name; +}; -static const char * short_flags[] = { - "s", - "u", - "c", - "S", -#ifdef EXT2_IMMUTABLE_FL - "i", -#endif -#ifdef EXT2_APPEND_FL - "a", -#endif -#ifdef EXT2_NODUMP_FL - "d", -#endif -#ifdef EXT2_NOATIME_FL - "A", -#endif - NULL}; +static struct flags_name flags_array[] = { + { EXT2_SECRM_FL, "s", "Secure_Deletion" }, + { EXT2_UNRM_FL, "u" , "Undelete" }, + { EXT2_SYNC_FL, "S", "Synchronous_Updates" }, + { EXT2_IMMUTABLE_FL, "i", "Immutable" }, + { EXT2_APPEND_FL, "a", "Append_Only" }, + { EXT2_NODUMP_FL, "d", "No_Dump" }, + { EXT2_NOATIME_FL, "A", "No_Atime" }, + { EXT2_COMPR_FL, "c", "Compression_requested" }, + { EXT2_COMPRBLK_FL, "B", "Compressed_file" }, + { EXT2_DIRTY_FL, "D", "Compressed dirty file" }, + { EXT2_NOCOMP_FL, "X", "Raw_access" }, + { EXT2_ECOMPR_FL, "E", "Compression_Error" }, + { 0, NULL, NULL } +}; -static const char * long_flags[] = { - "Secure_Deletion, ", - "Undelete, ", - "Compressed_File, ", - "Synchronous_Updates, ", -#ifdef EXT2_IMMUTABLE_FL - "Immutable, ", -#endif -#ifdef EXT2_NODUMP_FL - "Append_Only, ", -#endif -#ifdef EXT2_NODUMP_FL - "No_Dump, ", -#endif -#ifdef EXT2_NOATIME_FL - "No_Atime, ", -#endif - NULL}; - -void print_flags (FILE * f, unsigned long flags, int long_format) +void print_flags (FILE * f, unsigned long flags, unsigned options) { - int i; - const char ** flags_names; - - if (long_format) - flags_names = long_flags; - else - flags_names = short_flags; + int long_opt = (options & PFOPT_LONG); + struct flags_name *fp; + int first = 1; - for (i = 0; flags_array[i] != 0; i++) - { - if (flags & flags_array[i]) - fprintf (f, flags_names[i]); - else - fprintf (f, "-"); + for (fp = flags_array; fp->flag != 0; fp++) { + if (flags & fp->flag) { + if (long_opt) { + if (first) + first = 0; + else + fputs(", ", f); + fputs(fp->long_name, f); + } else + fputs(fp->short_name, f); + } else { + if (!long_opt) + fputs("-", f); + } } + if (long_opt && first) + fputs("---", f); } + -- 1.8.3.1