Skip to content

Commit 24742c0

Browse files
committed
Make hfsfuse FinderInfo serialization match macOS' native behavior
For the com.apple.FinderInfo xattr Apple appears to mask all reserved fields with zeros, and also the put away folder info and scroll position. hfsfuse should now match the output of the official driver for these. These values may still be read using hfsdump.
1 parent fbd0c41 commit 24742c0

File tree

1 file changed

+3
-14
lines changed

1 file changed

+3
-14
lines changed

lib/libhfsuser/hfsuser.c

+3-14
Original file line numberDiff line numberDiff line change
@@ -451,37 +451,26 @@ static inline char* swapcopy(char* buf, char* src, size_t size) {
451451
#define SWAPCOPY(buf, src) swapcopy((char*)(buf),(char*)&(src),sizeof((src)))
452452

453453
void hfs_serialize_finderinfo(hfs_catalog_keyed_record_t* rec, char buf[32]) {
454+
memset(buf,0,32);
454455
if(rec->type == HFS_REC_FILE) {
455456
buf = SWAPCOPY(buf, rec->file.user_info.file_type);
456457
buf = SWAPCOPY(buf, rec->file.user_info.file_creator);
457458
buf = SWAPCOPY(buf, rec->file.user_info.finder_flags);
458459
buf = SWAPCOPY(buf, rec->file.user_info.location.v);
459460
buf = SWAPCOPY(buf, rec->file.user_info.location.h);
460-
buf = SWAPCOPY(buf, rec->file.user_info.reserved);
461-
462-
for(int i = 0; i < 4; i++)
463-
buf = SWAPCOPY(buf, rec->file.finder_info.reserved[i]);
461+
buf += 10;
464462
buf = SWAPCOPY(buf, rec->file.finder_info.extended_finder_flags);
465-
buf = SWAPCOPY(buf, rec->file.finder_info.reserved2);
466-
buf = SWAPCOPY(buf, rec->file.finder_info.put_away_folder_cnid);
467463
}
468464
else if(rec->type == HFS_REC_FLDR) {
469465
buf = SWAPCOPY(buf, rec->folder.user_info.window_bounds.t);
470466
buf = SWAPCOPY(buf, rec->folder.user_info.window_bounds.l);
471467
buf = SWAPCOPY(buf, rec->folder.user_info.window_bounds.b);
472468
buf = SWAPCOPY(buf, rec->folder.user_info.window_bounds.r);
473-
474469
buf = SWAPCOPY(buf, rec->folder.user_info.finder_flags);
475470
buf = SWAPCOPY(buf, rec->folder.user_info.location.v);
476471
buf = SWAPCOPY(buf, rec->folder.user_info.location.h);
477-
buf = SWAPCOPY(buf, rec->folder.user_info.reserved);
478-
479-
buf = SWAPCOPY(buf, rec->folder.finder_info.scroll_position.v);
480-
buf = SWAPCOPY(buf, rec->folder.finder_info.scroll_position.h);
481-
buf = SWAPCOPY(buf, rec->folder.finder_info.reserved);
472+
buf += 10;
482473
buf = SWAPCOPY(buf, rec->folder.finder_info.extended_finder_flags);
483-
buf = SWAPCOPY(buf, rec->folder.finder_info.reserved2);
484-
buf = SWAPCOPY(buf, rec->folder.finder_info.put_away_folder_cnid);
485474
}
486475
}
487476

0 commit comments

Comments
 (0)