- xheader_store ("GNU.sparse.offset", file->stat_info, &i);
- xheader_store ("GNU.sparse.numbytes", file->stat_info, &i);
+ for (i = 0; i < file->stat_info->sparse_map_avail; i++)
+ {
+ xheader_store ("GNU.sparse.offset", file->stat_info, &i);
+ xheader_store ("GNU.sparse.numbytes", file->stat_info, &i);
+ }
+ }
+ else
+ {
+ xheader_store ("GNU.sparse.name", file->stat_info, NULL);
+ save_file_name = file->stat_info->file_name;
+ file->stat_info->file_name = xheader_format_name (file->stat_info,
+ "%d/GNUSparseFile.%p/%f", 0);
+
+ xheader_string_begin ();
+ for (i = 0; i < file->stat_info->sparse_map_avail; i++)
+ {
+ if (i)
+ xheader_string_add (",");
+ xheader_string_add (umaxtostr (map[i].offset, nbuf));
+ xheader_string_add (",");
+ xheader_string_add (umaxtostr (map[i].numbytes, nbuf));
+ }
+ xheader_string_end ("GNU.sparse.map");