X-Git-Url: https://wimlib.net/git/?a=blobdiff_plain;f=src%2Fresource.c;h=7df50e727ab7eeb1c240d0afbafe0a880a5ea4bd;hb=7e7070982833be4292431b7dbffa8280e27b3d8a;hp=0bffb3a62a74c7ff9eec29fa875a7183fb76da68;hpb=14baa6ae892debbaa18dba8119931580efd0e517;p=wimlib diff --git a/src/resource.c b/src/resource.c index 0bffb3a6..7df50e72 100644 --- a/src/resource.c +++ b/src/resource.c @@ -46,6 +46,10 @@ # include #endif +#if defined(__WIN32__) && !defined(INVALID_HANDLE_VALUE) +# define INVALID_HANDLE_VALUE ((HANDLE)(-1)) +#endif + /* * Reads all or part of a compressed resource into an in-memory buffer. * @@ -76,7 +80,7 @@ read_compressed_resource(FILE *fp, u64 resource_compressed_size, resource_compressed_size, resource_uncompressed_size, resource_offset); - DEBUG2("resource_ctype = %s, len = %"PRIu64", offset = %"PRIu64"", + DEBUG2("resource_ctype = %"TS", len = %"PRIu64", offset = %"PRIu64"", wimlib_get_compression_type_string(resource_ctype), len, offset); /* Trivial case */ if (len == 0) @@ -436,10 +440,10 @@ wim_get_fp(WIMStruct *w) goto out; } } - DEBUG("Opening extra file descriptor to `%s'", w->filename); - fp = fopen(w->filename, "rb"); + DEBUG("Opening extra file descriptor to `%"TS"'", w->filename); + fp = tfopen(w->filename, T("rb")); if (!fp) - ERROR_WITH_ERRNO("Failed to open `%s'", w->filename); + ERROR_WITH_ERRNO("Failed to open `%"TS"'", w->filename); out: pthread_mutex_unlock(&w->fp_tab_mutex); return fp; @@ -556,10 +560,10 @@ read_wim_resource(const struct wim_lookup_table_entry *lte, void *buf, if (lte->file_on_disk_fp) { fp = lte->file_on_disk_fp; } else { - fp = fopen(lte->file_on_disk, "rb"); + fp = tfopen(lte->file_on_disk, T("rb")); if (!fp) { ERROR_WITH_ERRNO("Failed to open the file " - "`%s'", lte->file_on_disk); + "`%"TS"'", lte->file_on_disk); ret = WIMLIB_ERR_OPEN; break; } @@ -570,9 +574,10 @@ read_wim_resource(const struct wim_lookup_table_entry *lte, void *buf, break; #ifdef __WIN32__ case RESOURCE_WIN32: - wimlib_assert(lte->file_on_disk_fp != NULL); - ret = win32_read_file(lte->file_on_disk, lte->file_on_disk_fp, - offset, size, buf); + wimlib_assert(lte->win32_file_on_disk_fp != INVALID_HANDLE_VALUE); + ret = win32_read_file(lte->file_on_disk, + lte->win32_file_on_disk_fp, offset, + size, buf); break; #endif case RESOURCE_IN_ATTACHED_BUFFER: @@ -589,8 +594,8 @@ read_wim_resource(const struct wim_lookup_table_entry *lte, void *buf, offset += 8; if (ntfs_attr_pread(lte->attr, offset, size, buf) != size) { ERROR_WITH_ERRNO("Error reading NTFS attribute " - "at `%s'", - lte->ntfs_loc->path_utf8); + "at `%"TS"'", + lte->ntfs_loc->path); ret = WIMLIB_ERR_NTFS_3G; } break; @@ -725,16 +730,12 @@ copy_resource(struct wim_lookup_table_entry *lte, void *wim) WIMStruct *w = wim; int ret; - if ((lte->resource_entry.flags & WIM_RESHDR_FLAG_METADATA) && - !w->write_metadata) - return 0; - ret = write_wim_resource(lte, w->out_fp, wim_resource_compression_type(lte), <e->output_resource_entry, 0); - if (ret != 0) - return ret; - lte->out_refcnt = lte->refcnt; - lte->part_number = w->hdr.part_number; - return 0; + if (ret == 0) { + lte->out_refcnt = lte->refcnt; + lte->part_number = w->hdr.part_number; + } + return ret; }