]>
Commit | Line | Data |
---|---|---|
3839e657 TT |
1 | /* |
2 | * pf.c - Print file attributes on an ext2 file system | |
3 | * | |
4 | * Copyright (C) 1993, 1994 Remy Card <card@masi.ibp.fr> | |
5 | * Laboratoire MASI, Institut Blaise Pascal | |
6 | * Universite Pierre et Marie Curie (Paris VI) | |
7 | * | |
543547a5 TT |
8 | * %Begin-Header% |
9 | * This file may be redistributed under the terms of the GNU Library | |
10 | * General Public License, version 2. | |
11 | * %End-Header% | |
3839e657 TT |
12 | */ |
13 | ||
14 | /* | |
15 | * History: | |
16 | * 93/10/30 - Creation | |
17 | */ | |
18 | ||
d1154eb4 | 19 | #include "config.h" |
3839e657 | 20 | #include <stdio.h> |
3839e657 TT |
21 | |
22 | #include "e2p.h" | |
23 | ||
dede39bb TT |
24 | struct flags_name { |
25 | unsigned long flag; | |
4ea7bd04 TT |
26 | const char *short_name; |
27 | const char *long_name; | |
dede39bb | 28 | }; |
f3db3566 | 29 | |
dede39bb TT |
30 | static struct flags_name flags_array[] = { |
31 | { EXT2_SECRM_FL, "s", "Secure_Deletion" }, | |
32 | { EXT2_UNRM_FL, "u" , "Undelete" }, | |
33 | { EXT2_SYNC_FL, "S", "Synchronous_Updates" }, | |
88372d5c | 34 | { EXT2_DIRSYNC_FL, "D", "Synchronous_Directory_Updates" }, |
dede39bb TT |
35 | { EXT2_IMMUTABLE_FL, "i", "Immutable" }, |
36 | { EXT2_APPEND_FL, "a", "Append_Only" }, | |
37 | { EXT2_NODUMP_FL, "d", "No_Dump" }, | |
38 | { EXT2_NOATIME_FL, "A", "No_Atime" }, | |
bda15095 | 39 | { EXT2_COMPR_FL, "c", "Compression_Requested" }, |
22f22ab1 | 40 | { EXT4_ENCRYPT_FL, "E", "Encrypted" }, |
c8199c47 | 41 | { EXT3_JOURNAL_DATA_FL, "j", "Journaled_Data" }, |
312c2a40 | 42 | { EXT2_INDEX_FL, "I", "Indexed_directory" }, |
b3f5b4c2 | 43 | { EXT2_NOTAIL_FL, "t", "No_Tailmerging" }, |
15f9011a | 44 | { EXT2_TOPDIR_FL, "T", "Top_of_Directory_Hierarchies" }, |
8fe81a3d | 45 | { EXT4_EXTENTS_FL, "e", "Extents" }, |
0796e660 | 46 | { FS_NOCOW_FL, "C", "No_COW" }, |
1378bb65 | 47 | { EXT4_CASEFOLD_FL, "F", "Casefold" }, |
bf5dd0ae | 48 | { EXT4_INLINE_DATA_FL, "N", "Inline_Data" }, |
97d7e2fd | 49 | { EXT4_PROJINHERIT_FL, "P", "Project_Hierarchy" }, |
7e5a95e3 | 50 | { EXT4_VERITY_FL, "V", "Verity" }, |
dede39bb TT |
51 | { 0, NULL, NULL } |
52 | }; | |
f3db3566 | 53 | |
dede39bb | 54 | void print_flags (FILE * f, unsigned long flags, unsigned options) |
3839e657 | 55 | { |
dede39bb TT |
56 | int long_opt = (options & PFOPT_LONG); |
57 | struct flags_name *fp; | |
58 | int first = 1; | |
f3db3566 | 59 | |
dede39bb TT |
60 | for (fp = flags_array; fp->flag != 0; fp++) { |
61 | if (flags & fp->flag) { | |
62 | if (long_opt) { | |
63 | if (first) | |
64 | first = 0; | |
65 | else | |
66 | fputs(", ", f); | |
67 | fputs(fp->long_name, f); | |
68 | } else | |
69 | fputs(fp->short_name, f); | |
70 | } else { | |
71 | if (!long_opt) | |
72 | fputs("-", f); | |
73 | } | |
f3db3566 | 74 | } |
dede39bb TT |
75 | if (long_opt && first) |
76 | fputs("---", f); | |
3839e657 | 77 | } |
dede39bb | 78 |