* along with wimlib; if not, see http://www.gnu.org/licenses/.
*/
-#include "config.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
#if defined(HAVE_SYS_FILE_H) && defined(HAVE_FLOCK)
-/* On BSD, this should be included before "list.h" so that "list.h" can
+/* On BSD, this should be included before "wimlib/list.h" so that "wimlib/list.h" can
* overwrite the LIST_HEAD macro. */
# include <sys/file.h>
#endif
+#include "wimlib/endianness.h"
+#include "wimlib/error.h"
+#include "wimlib/file_io.h"
+#include "wimlib/header.h"
+#include "wimlib/integrity.h"
+#include "wimlib/lookup_table.h"
+#include "wimlib/metadata.h"
+#include "wimlib/resource.h"
+#include "wimlib/write.h"
+#include "wimlib/xml.h"
+
#ifdef __WIN32__
-# include "win32.h"
+# include "wimlib/win32.h" /* win32_get_number_of_processors() */
#endif
-#include "list.h"
-#include "wimlib_internal.h"
-#include "buffer_io.h"
-#include "dentry.h"
-#include "lookup_table.h"
-#include "xml.h"
-
#ifdef ENABLE_MULTITHREADED_COMPRESSION
# include <pthread.h>
#endif
u64 table_disk_size;
u64 cur_offset;
u64 *cur_offset_p;
- u64 offsets[0];
+ union {
+ u64 offsets[0];
+ u32 u32_offsets[0];
+ };
};
/*
array_cpu_to_le64(chunk_tab->offsets, chunk_tab->num_chunks);
} else {
for (u64 i = 0; i < chunk_tab->num_chunks; i++)
- ((u32*)chunk_tab->offsets)[i] =
- cpu_to_le32(chunk_tab->offsets[i]);
+ chunk_tab->u32_offsets[i] = cpu_to_le32(chunk_tab->offsets[i]);
}
bytes_written = full_pwrite(out_fd,
(u8*)chunk_tab->offsets + chunk_tab->bytes_per_chunk_entry,
}
static long
-get_default_num_threads()
+get_default_num_threads(void)
{
#ifdef __WIN32__
return win32_get_number_of_processors();
progress.write_streams._private = 0;
#ifdef ENABLE_MULTITHREADED_COMPRESSION
- if (total_compression_bytes >= 1000000 && num_threads != 1)
+ if (total_compression_bytes >= 2000000 && num_threads != 1)
ret = write_stream_list_parallel(stream_list,
lookup_table,
out_fd,