]>
Commit | Line | Data |
---|---|---|
2869485b TT |
1 | /* |
2 | * print_flags.c - Print ext2_filsys flags | |
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 | * | |
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% | |
12 | */ | |
13 | ||
14 | #include "config.h" | |
15 | #include <stdio.h> | |
16 | ||
8a253f09 | 17 | #include "print_fs_flags.h" |
2869485b TT |
18 | #include "ext2fs/ext2fs.h" |
19 | ||
20 | struct flags_name { | |
21 | unsigned long flag; | |
22 | const char *name; | |
23 | }; | |
24 | ||
f6480ab1 EB |
25 | static const struct flags_name flags_array[] = { |
26 | { EXT2_FLAG_RW, "EXT2_FLAG_RW" }, | |
27 | { EXT2_FLAG_CHANGED, "EXT2_FLAG_CHANGED" }, | |
28 | { EXT2_FLAG_DIRTY, "EXT2_FLAG_DIRTY" }, | |
29 | { EXT2_FLAG_VALID, "EXT2_FLAG_VALID" }, | |
30 | { EXT2_FLAG_IB_DIRTY, "EXT2_FLAG_IB_DIRTY" }, | |
31 | { EXT2_FLAG_BB_DIRTY, "EXT2_FLAG_BB_DIRTY" }, | |
32 | { EXT2_FLAG_SWAP_BYTES, "EXT2_FLAG_SWAP_BYTES" }, | |
33 | { EXT2_FLAG_SWAP_BYTES_READ, "EXT2_FLAG_SWAP_BYTES_READ" }, | |
34 | { EXT2_FLAG_SWAP_BYTES_WRITE, "EXT2_FLAG_SWAP_BYTES_WRITE" }, | |
35 | { EXT2_FLAG_MASTER_SB_ONLY, "EXT2_FLAG_MASTER_SB_ONLY" }, | |
36 | { EXT2_FLAG_FORCE, "EXT2_FLAG_FORCE" }, | |
37 | { EXT2_FLAG_SUPER_ONLY, "EXT2_FLAG_SUPER_ONLY" }, | |
38 | { EXT2_FLAG_JOURNAL_DEV_OK, "EXT2_FLAG_JOURNAL_DEV_OK" }, | |
39 | { EXT2_FLAG_IMAGE_FILE, "EXT2_FLAG_IMAGE_FILE" }, | |
40 | { EXT2_FLAG_EXCLUSIVE, "EXT2_FLAG_EXCLUSIVE" }, | |
41 | { EXT2_FLAG_SOFTSUPP_FEATURES, "EXT2_FLAG_SOFTSUPP_FEATURES" }, | |
42 | { EXT2_FLAG_NOFREE_ON_ERROR, "EXT2_FLAG_NOFREE_ON_ERROR" }, | |
43 | { EXT2_FLAG_64BITS, "EXT2_FLAG_64BITS" }, | |
44 | { EXT2_FLAG_PRINT_PROGRESS, "EXT2_FLAG_PRINT_PROGRESS" }, | |
45 | { EXT2_FLAG_DIRECT_IO, "EXT2_FLAG_DIRECT_IO" }, | |
46 | { EXT2_FLAG_SKIP_MMP, "EXT2_FLAG_SKIP_MMP" }, | |
47 | { EXT2_FLAG_IGNORE_CSUM_ERRORS, "EXT2_FLAG_IGNORE_CSUM_ERRORS" }, | |
48 | { EXT2_FLAG_SHARE_DUP, "EXT2_FLAG_SHARE_DUP" }, | |
49 | { EXT2_FLAG_IGNORE_SB_ERRORS, "EXT2_FLAG_IGNORE_SB_ERRORS" }, | |
50 | { EXT2_FLAG_BBITMAP_TAIL_PROBLEM, "EXT2_FLAG_BBITMAP_TAIL_PROBLEM" }, | |
51 | { EXT2_FLAG_IBITMAP_TAIL_PROBLEM, "EXT2_FLAG_IBITMAP_TAIL_PROBLEM" }, | |
52 | { EXT2_FLAG_THREADS, "EXT2_FLAG_THREADS" }, | |
53 | { 0, NULL }, | |
2869485b TT |
54 | }; |
55 | ||
56 | void print_fs_flags(FILE * f, unsigned long flags) | |
57 | { | |
f6480ab1 | 58 | const struct flags_name *fp; |
2869485b TT |
59 | int first = 1, pos = 16; |
60 | ||
61 | for (fp = flags_array; fp->flag != 0; fp++) { | |
62 | if ((flags & fp->flag) == 0) | |
63 | continue; | |
64 | pos += strlen(fp->name) + 1; | |
65 | if (pos > 72) { | |
66 | fputs("\n\t", f); | |
67 | pos = 9 + strlen(fp->name); | |
68 | } | |
69 | if (first) | |
70 | first = 0; | |
71 | else | |
72 | fputc(' ', f); | |
73 | fputs(fp->name, f); | |
74 | } | |
75 | fputc('\n', f); | |
76 | } |