aboutsummaryrefslogtreecommitdiff
path: root/e2fsprogs/e2fs_lib.c
diff options
context:
space:
mode:
Diffstat (limited to 'e2fsprogs/e2fs_lib.c')
-rw-r--r--e2fsprogs/e2fs_lib.c39
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
108void print_e2flags_long(unsigned flags) 109void print_e2flags_long(unsigned flags)
110#else
111#define flags sb->st_attr
112void 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
130void print_e2flags(unsigned flags) 154void print_e2flags(unsigned flags)
155#else
156void 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++;