X-Git-Url: https://wimlib.net/git/?a=blobdiff_plain;f=src%2Fresource.c;h=eb79c7498c98a2e0b7d78129dad067c5df3d9643;hb=a2984b07d10ef6b49a509cf0289bd9dc824e42e7;hp=3c0804b0d3a98c4f9f5e83b8afe21f8c90cf769b;hpb=1530b6dab02a9e1e5faf81529ab502aee68d8cd2;p=wimlib diff --git a/src/resource.c b/src/resource.c index 3c0804b0..eb79c749 100644 --- a/src/resource.c +++ b/src/resource.c @@ -5,7 +5,7 @@ */ /* - * Copyright (C) 2012 Eric Biggers + * Copyright (C) 2012, 2013 Eric Biggers * * This file is part of wimlib, a library for working with WIM files. * @@ -539,8 +539,8 @@ int read_wim_resource(const struct wim_lookup_table_entry *lte, u8 buf[], case RESOURCE_IN_FILE_ON_DISK: /* The resource is in some file on the external filesystem and * needs to be read uncompressed */ - wimlib_assert(lte->file_on_disk); - wimlib_assert(<e->file_on_disk == <e->staging_file_name); + wimlib_assert(lte->file_on_disk != NULL); + BUILD_BUG_ON(<e->file_on_disk != <e->staging_file_name); /* Use existing file pointer if available; otherwise open one * temporarily */ if (lte->file_on_disk_fp) { @@ -558,6 +558,13 @@ int read_wim_resource(const struct wim_lookup_table_entry *lte, u8 buf[], if (fp != lte->file_on_disk_fp) fclose(fp); break; +#if defined(__CYGWIN__) || defined(__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); + break; +#endif case RESOURCE_IN_ATTACHED_BUFFER: /* The resource is directly attached uncompressed in an * in-memory buffer. */ @@ -644,7 +651,7 @@ int extract_wim_resource(const struct wim_lookup_table_entry *lte, if (!hashes_equal(hash, lte->hash)) { #ifdef ENABLE_ERROR_MESSAGES ERROR("Invalid checksum on the following WIM resource:"); - print_lookup_table_entry(lte); + print_lookup_table_entry(lte, stderr); #endif return WIMLIB_ERR_INVALID_RESOURCE_HASH; }