salvage: preserve xattr backed metadata
This commit is contained in:
@@ -685,10 +685,42 @@ int nwsalvage_write_metadata(const char *metadata_path,
|
||||
if (!failed && json_add_string(doc, object, "afp_entry_id",
|
||||
entry->afp_entry_id ? entry->afp_entry_id : "") < 0)
|
||||
failed = 1;
|
||||
if (!failed && json_add_uint64(doc, object, "afp_attributes",
|
||||
entry->afp_attributes) < 0)
|
||||
failed = 1;
|
||||
if (!failed && json_add_uint64(doc, object, "resource_fork_size",
|
||||
entry->resource_fork_size) < 0)
|
||||
failed = 1;
|
||||
|
||||
if (!failed && json_add_uint64(doc, object, "netware_archive_flags",
|
||||
entry->netware_archive_flags) < 0)
|
||||
failed = 1;
|
||||
if (!failed && json_add_uint64(doc, object, "netware_archive_date",
|
||||
entry->netware_archive_date) < 0)
|
||||
failed = 1;
|
||||
if (!failed && json_add_uint64(doc, object, "netware_archive_time",
|
||||
entry->netware_archive_time) < 0)
|
||||
failed = 1;
|
||||
if (!failed && json_add_uint64(doc, object, "netware_archiver_id",
|
||||
entry->netware_archiver_id) < 0)
|
||||
failed = 1;
|
||||
|
||||
if (!failed && json_add_uint64(doc, object, "netware_fileinfo_flags",
|
||||
entry->netware_fileinfo_flags) < 0)
|
||||
failed = 1;
|
||||
if (!failed && json_add_uint64(doc, object, "netware_create_date",
|
||||
entry->netware_create_date) < 0)
|
||||
failed = 1;
|
||||
if (!failed && json_add_uint64(doc, object, "netware_create_time",
|
||||
entry->netware_create_time) < 0)
|
||||
failed = 1;
|
||||
if (!failed && json_add_uint64(doc, object, "netware_creator_id",
|
||||
entry->netware_creator_id) < 0)
|
||||
failed = 1;
|
||||
if (!failed && json_add_uint64(doc, object, "netware_modifier_id",
|
||||
entry->netware_modifier_id) < 0)
|
||||
failed = 1;
|
||||
|
||||
if (!failed && !yyjson_mut_write_file(metadata_path, doc,
|
||||
YYJSON_WRITE_PRETTY_TWO_SPACES |
|
||||
YYJSON_WRITE_NEWLINE_AT_END,
|
||||
@@ -805,11 +837,53 @@ int nwsalvage_read_metadata(const char *metadata_path,
|
||||
entry->afp_entry_id,
|
||||
sizeof(entry->afp_entry_id)) < 0)
|
||||
failed = 1;
|
||||
if (!failed && json_get_uint64(object, "afp_attributes", &value) < 0)
|
||||
failed = 1;
|
||||
else if (!failed)
|
||||
entry->afp_attributes = (unsigned int)value;
|
||||
if (!failed && json_get_uint64(object, "resource_fork_size", &value) < 0)
|
||||
failed = 1;
|
||||
else if (!failed)
|
||||
entry->resource_fork_size = value;
|
||||
|
||||
if (!failed && json_get_uint64(object, "netware_archive_flags", &value) < 0)
|
||||
failed = 1;
|
||||
else if (!failed)
|
||||
entry->netware_archive_flags = (unsigned int)value;
|
||||
if (!failed && json_get_uint64(object, "netware_archive_date", &value) < 0)
|
||||
failed = 1;
|
||||
else if (!failed)
|
||||
entry->netware_archive_date = (unsigned int)value;
|
||||
if (!failed && json_get_uint64(object, "netware_archive_time", &value) < 0)
|
||||
failed = 1;
|
||||
else if (!failed)
|
||||
entry->netware_archive_time = (unsigned int)value;
|
||||
if (!failed && json_get_uint64(object, "netware_archiver_id", &value) < 0)
|
||||
failed = 1;
|
||||
else if (!failed)
|
||||
entry->netware_archiver_id = (unsigned long)value;
|
||||
|
||||
if (!failed && json_get_uint64(object, "netware_fileinfo_flags", &value) < 0)
|
||||
failed = 1;
|
||||
else if (!failed)
|
||||
entry->netware_fileinfo_flags = (unsigned int)value;
|
||||
if (!failed && json_get_uint64(object, "netware_create_date", &value) < 0)
|
||||
failed = 1;
|
||||
else if (!failed)
|
||||
entry->netware_create_date = (unsigned int)value;
|
||||
if (!failed && json_get_uint64(object, "netware_create_time", &value) < 0)
|
||||
failed = 1;
|
||||
else if (!failed)
|
||||
entry->netware_create_time = (unsigned int)value;
|
||||
if (!failed && json_get_uint64(object, "netware_creator_id", &value) < 0)
|
||||
failed = 1;
|
||||
else if (!failed)
|
||||
entry->netware_creator_id = (unsigned long)value;
|
||||
if (!failed && json_get_uint64(object, "netware_modifier_id", &value) < 0)
|
||||
failed = 1;
|
||||
else if (!failed)
|
||||
entry->netware_modifier_id = (unsigned long)value;
|
||||
|
||||
yyjson_doc_free(doc);
|
||||
|
||||
if (failed) {
|
||||
|
||||
Reference in New Issue
Block a user