]> wimlib.net Git - wimlib/blobdiff - src/resource.c
Workaround for FILE_SUPERSEDE being broken in Windows PE ramdisk
[wimlib] / src / resource.c
index 300aec8f1cbec29e0b919bba8243984e7e518271..fb5761d9e68ba60cf7bbf262efb4ce0e303ad5a1 100644 (file)
@@ -7,26 +7,24 @@
 /*
  * Copyright (C) 2012, 2013 Eric Biggers
  *
- * This file is part of wimlib, a library for working with WIM files.
+ * This file is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation; either version 3 of the License, or (at your option) any
+ * later version.
  *
- * wimlib is free software; you can redistribute it and/or modify it under the
- * terms of the GNU General Public License as published by the Free Software
- * Foundation; either version 3 of the License, or (at your option) any later
- * version.
+ * This file is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+ * details.
  *
- * wimlib is distributed in the hope that it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * wimlib; if not, see http://www.gnu.org/licenses/.
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this file; if not, see http://www.gnu.org/licenses/.
  */
 
 #ifdef HAVE_CONFIG_H
 #  include "config.h"
 #endif
 
-#include "wimlib.h"
 #include "wimlib/assert.h"
 #include "wimlib/endianness.h"
 #include "wimlib/error.h"
@@ -207,7 +205,7 @@ read_compressed_wim_resource(const struct wim_resource_spec * const rspec,
                rspec->wim->decompressor_ctype = WIMLIB_COMPRESSION_TYPE_NONE;
                rspec->wim->decompressor = NULL;
        } else {
-               ret = wimlib_create_decompressor(ctype, chunk_size, NULL,
+               ret = wimlib_create_decompressor(ctype, chunk_size,
                                                 &decompressor);
                if (ret) {
                        if (ret != WIMLIB_ERR_NOMEM)
@@ -1017,17 +1015,12 @@ streamifier_cb(const void *chunk, size_t size, void *_ctx)
        wimlib_assert(size <= ctx->cur_stream->size - ctx->cur_stream_offset);
 
        if (ctx->cur_stream_offset == 0) {
-               u32 flags;
 
                /* Starting a new stream.  */
                DEBUG("Begin new stream (size=%"PRIu64").",
                      ctx->cur_stream->size);
 
-               flags = BEGIN_STREAM_FLAG_PARTIAL_RESOURCE;
-               if (size == ctx->cur_stream->size)
-                       flags |= BEGIN_STREAM_FLAG_WHOLE_STREAM;
                ret = (*ctx->cbs.begin_stream)(ctx->cur_stream,
-                                              flags,
                                               ctx->cbs.begin_stream_ctx);
                if (ret)
                        return ret;
@@ -1073,8 +1066,7 @@ struct hasher_context {
 /* Callback for starting to read a stream while calculating its SHA1 message
  * digest.  */
 static int
-hasher_begin_stream(struct wim_lookup_table_entry *lte, u32 flags,
-                   void *_ctx)
+hasher_begin_stream(struct wim_lookup_table_entry *lte, void *_ctx)
 {
        struct hasher_context *ctx = _ctx;
 
@@ -1083,8 +1075,7 @@ hasher_begin_stream(struct wim_lookup_table_entry *lte, u32 flags,
        if (ctx->cbs.begin_stream == NULL)
                return 0;
        else
-               return (*ctx->cbs.begin_stream)(lte, flags,
-                                               ctx->cbs.begin_stream_ctx);
+               return (*ctx->cbs.begin_stream)(lte, ctx->cbs.begin_stream_ctx);
 }
 
 /* A consume_data_callback_t implementation that continues calculating the SHA1
@@ -1103,13 +1094,6 @@ hasher_consume_chunk(const void *chunk, size_t size, void *_ctx)
                return (*ctx->cbs.consume_chunk)(chunk, size, ctx->cbs.consume_chunk_ctx);
 }
 
-static void
-get_sha1_string(const u8 md[SHA1_HASH_SIZE], tchar *str)
-{
-       for (size_t i = 0; i < SHA1_HASH_SIZE; i++)
-               str += tsprintf(str, T("%02x"), md[i]);
-}
-
 /* Callback for finishing reading a stream while calculating its SHA1 message
  * digest.  */
 static int
@@ -1144,8 +1128,8 @@ hasher_end_stream(struct wim_lookup_table_entry *lte, int status, void *_ctx)
                                if (wimlib_print_errors) {
                                        tchar expected_hashstr[SHA1_HASH_SIZE * 2 + 1];
                                        tchar actual_hashstr[SHA1_HASH_SIZE * 2 + 1];
-                                       get_sha1_string(lte->hash, expected_hashstr);
-                                       get_sha1_string(hash, actual_hashstr);
+                                       sprint_hash(lte->hash, expected_hashstr);
+                                       sprint_hash(hash, actual_hashstr);
                                        ERROR("The stream is corrupted!\n"
                                              "        (Expected SHA1=%"TS",\n"
                                              "              got SHA1=%"TS")",
@@ -1173,7 +1157,7 @@ read_full_stream_with_cbs(struct wim_lookup_table_entry *lte,
 {
        int ret;
 
-       ret = (*cbs->begin_stream)(lte, 0, cbs->begin_stream_ctx);
+       ret = (*cbs->begin_stream)(lte, cbs->begin_stream_ctx);
        if (ret)
                return ret;
 
@@ -1444,7 +1428,7 @@ extract_stream(struct wim_lookup_table_entry *lte, u64 size,
 
 /* A consume_data_callback_t implementation that writes the chunk of data to a
  * file descriptor.  */
-int
+static int
 extract_chunk_to_fd(const void *chunk, size_t size, void *_fd_p)
 {
        struct filedes *fd = _fd_p;