inode->i_last_write_time = unix_timestamp_to_wim(root_stbuf.st_mtime);
inode->i_last_access_time = unix_timestamp_to_wim(root_stbuf.st_atime);
#endif
- if (sizeof(ino_t) >= 8)
- inode->i_ino = (u64)root_stbuf.st_ino;
- else
- inode->i_ino = (u64)root_stbuf.st_ino |
- ((u64)root_stbuf.st_dev << ((sizeof(ino_t) * 8) & 63));
+ /* Leave the inode number at 0 for directories. */
+ if (!S_ISDIR(root_stbuf.st_mode)) {
+ if (sizeof(ino_t) >= 8)
+ inode->i_ino = (u64)root_stbuf.st_ino;
+ else
+ inode->i_ino = (u64)root_stbuf.st_ino |
+ ((u64)root_stbuf.st_dev <<
+ ((sizeof(ino_t) * 8) & 63));
+ }
inode->i_resolved = 1;
if (add_image_flags & WIMLIB_ADD_IMAGE_FLAG_UNIX_DATA) {
ret = inode_set_unix_data(inode, root_stbuf.st_uid,
ret = utf8_to_utf16(root_disk_path, strlen(root_disk_path),
(char**)&path_utf16, &path_utf16_nchars);
if (ret)
- goto out;
+ goto out_destroy_sd_set;
path_utf16_nchars /= sizeof(wchar_t);
HANDLE hFile = win32_open_file_readonly(path_utf16);
ERROR("Win32 API: Failed to open \"%s\"", root_disk_path);
win32_error(err);
ret = WIMLIB_ERR_OPEN;
- goto out_destroy_sd_set;
+ goto out_free_path_utf16;
}
BY_HANDLE_FILE_INFORMATION file_info;
if (add_image_flags & WIMLIB_ADD_IMAGE_FLAG_BOOT)
wimlib_set_boot_idx(w, w->hdr.image_count);
ret = 0;
- goto out;
+ goto out_destroy_capture_config;
out_destroy_imd:
destroy_image_metadata(&w->image_metadata[w->hdr.image_count - 1],
w->lookup_table);