diff options
Diffstat (limited to 'e2fsprogs/e2fs_lib.c')
-rw-r--r-- | e2fsprogs/e2fs_lib.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/e2fsprogs/e2fs_lib.c b/e2fsprogs/e2fs_lib.c index e40702e78..07de5eda7 100644 --- a/e2fsprogs/e2fs_lib.c +++ b/e2fsprogs/e2fs_lib.c | |||
@@ -105,10 +105,18 @@ static const char e2attr_flags_lname[] ALIGN1 = | |||
105 | /* Another trailing NUL is added by compiler */; | 105 | /* Another trailing NUL is added by compiler */; |
106 | #endif | 106 | #endif |
107 | 107 | ||
108 | #if !ENABLE_PLATFORM_MINGW32 | ||
108 | void print_e2flags_long(unsigned flags) | 109 | void print_e2flags_long(unsigned flags) |
110 | #else | ||
111 | #define flags sb->st_attr | ||
112 | void print_e2flags_long(struct stat *sb) | ||
113 | #endif | ||
109 | { | 114 | { |
110 | const uint32_t *fv; | 115 | const uint32_t *fv; |
111 | const char *fn; | 116 | const char *fn; |
117 | #if ENABLE_PLATFORM_MINGW32 | ||
118 | const char *ln; | ||
119 | #endif | ||
112 | int first = 1; | 120 | int first = 1; |
113 | 121 | ||
114 | fv = e2attr_flags_value; | 122 | fv = e2attr_flags_value; |
@@ -117,7 +125,22 @@ void print_e2flags_long(unsigned flags) | |||
117 | if (flags & *fv) { | 125 | if (flags & *fv) { |
118 | if (!first) | 126 | if (!first) |
119 | fputs(", ", stdout); | 127 | fputs(", ", stdout); |
128 | #if ENABLE_PLATFORM_MINGW32 | ||
129 | ln = fn; | ||
130 | if (*fv == FILE_ATTRIBUTE_REPARSE_POINT) { | ||
131 | switch (sb->st_tag) { | ||
132 | case IO_REPARSE_TAG_SYMLINK: | ||
133 | ln = "Symbolic_Link"; | ||
134 | break; | ||
135 | case IO_REPARSE_TAG_MOUNT_POINT: | ||
136 | ln = "Junction"; | ||
137 | break; | ||
138 | } | ||
139 | } | ||
140 | fputs(ln, stdout); | ||
141 | #else | ||
120 | fputs(fn, stdout); | 142 | fputs(fn, stdout); |
143 | #endif | ||
121 | first = 0; | 144 | first = 0; |
122 | } | 145 | } |
123 | fv++; | 146 | fv++; |
@@ -127,7 +150,11 @@ void print_e2flags_long(unsigned flags) | |||
127 | fputs("---", stdout); | 150 | fputs("---", stdout); |
128 | } | 151 | } |
129 | 152 | ||
153 | #if !ENABLE_PLATFORM_MINGW32 | ||
130 | void print_e2flags(unsigned flags) | 154 | void print_e2flags(unsigned flags) |
155 | #else | ||
156 | void print_e2flags(struct stat *sb) | ||
157 | #endif | ||
131 | { | 158 | { |
132 | const uint32_t *fv; | 159 | const uint32_t *fv; |
133 | const char *fn; | 160 | const char *fn; |
@@ -138,6 +165,18 @@ void print_e2flags(unsigned flags) | |||
138 | char c = '-'; | 165 | char c = '-'; |
139 | if (flags & *fv) | 166 | if (flags & *fv) |
140 | c = *fn; | 167 | c = *fn; |
168 | #if ENABLE_PLATFORM_MINGW32 | ||
169 | if (*fv == FILE_ATTRIBUTE_REPARSE_POINT) { | ||
170 | switch (sb->st_tag) { | ||
171 | case IO_REPARSE_TAG_SYMLINK: | ||
172 | c = 'l'; | ||
173 | break; | ||
174 | case IO_REPARSE_TAG_MOUNT_POINT: | ||
175 | c = 'j'; | ||
176 | break; | ||
177 | } | ||
178 | } | ||
179 | #endif | ||
141 | putchar(c); | 180 | putchar(c); |
142 | fv++; | 181 | fv++; |
143 | fn++; | 182 | fn++; |