@@ -124,66 +124,11 @@ impl MftIndex {
124124 record. fn_accessed = parsed. fn_accessed ;
125125 record. fn_mft_changed = parsed. fn_mft_changed ;
126126
127- // Set $STANDARD_INFORMATION timestamps and flags
128- record. stdinfo . created = parsed. std_info . created ;
129- record. stdinfo . modified = parsed. std_info . modified ;
130- record. stdinfo . accessed = parsed. std_info . accessed ;
131- record. stdinfo . mft_changed = parsed. std_info . mft_changed ;
132- record. stdinfo . usn = parsed. std_info . usn ;
133- record. stdinfo . security_id = parsed. std_info . security_id ;
134- record. stdinfo . owner_id = parsed. std_info . owner_id ;
127+ // Set $STANDARD_INFORMATION using the canonical conversion method.
128+ // This is the single source of truth for ExtendedStandardInfo → StandardInfo.
129+ record. stdinfo = StandardInfo :: from_extended ( & parsed. std_info ) ;
135130 record. stdinfo . set_directory ( parsed. is_directory ) ;
136131
137- // Set attribute flags from ExtendedStandardInfo
138- if parsed. std_info . is_readonly {
139- record. stdinfo . flags |= StandardInfo :: IS_READONLY ;
140- }
141- if parsed. std_info . is_archive {
142- record. stdinfo . flags |= StandardInfo :: IS_ARCHIVE ;
143- }
144- if parsed. std_info . is_system {
145- record. stdinfo . flags |= StandardInfo :: IS_SYSTEM ;
146- }
147- if parsed. std_info . is_hidden {
148- record. stdinfo . flags |= StandardInfo :: IS_HIDDEN ;
149- }
150- if parsed. std_info . is_offline {
151- record. stdinfo . flags |= StandardInfo :: IS_OFFLINE ;
152- }
153- if parsed. std_info . is_not_content_indexed {
154- record. stdinfo . flags |= StandardInfo :: IS_NOT_INDEXED ;
155- }
156- if parsed. std_info . is_compressed {
157- record. stdinfo . flags |= StandardInfo :: IS_COMPRESSED ;
158- }
159- if parsed. std_info . is_encrypted {
160- record. stdinfo . flags |= StandardInfo :: IS_ENCRYPTED ;
161- }
162- if parsed. std_info . is_sparse {
163- record. stdinfo . flags |= StandardInfo :: IS_SPARSE ;
164- }
165- if parsed. std_info . is_reparse {
166- record. stdinfo . flags |= StandardInfo :: IS_REPARSE ;
167- }
168- if parsed. std_info . is_temporary {
169- record. stdinfo . flags |= StandardInfo :: IS_TEMPORARY ;
170- }
171- if parsed. std_info . is_integrity_stream {
172- record. stdinfo . flags |= StandardInfo :: IS_INTEGRITY_STREAM ;
173- }
174- if parsed. std_info . is_no_scrub_data {
175- record. stdinfo . flags |= StandardInfo :: IS_NO_SCRUB_DATA ;
176- }
177- if parsed. std_info . is_pinned {
178- record. stdinfo . flags |= StandardInfo :: IS_PINNED ;
179- }
180- if parsed. std_info . is_unpinned {
181- record. stdinfo . flags |= StandardInfo :: IS_UNPINNED ;
182- }
183- if parsed. std_info . is_virtual {
184- record. stdinfo . flags |= StandardInfo :: IS_VIRTUAL ;
185- }
186-
187132 // Set name info (offset and extension_id were computed before borrowing record)
188133 record. first_name . name =
189134 IndexNameRef :: new ( name_offset, name_len, is_ascii, extension_id) ;
0 commit comments