]> wimlib.net Git - wimlib/blobdiff - src/lookup_table.c
Merge branch 'new_extract'
[wimlib] / src / lookup_table.c
index 41642526f4b66d8ee0bf46fcf362f8d13e2b240a..1950ab21a89bbbefb75fc56473ce64936d12753c 100644 (file)
@@ -94,17 +94,11 @@ do_free_lookup_table_entry(struct wim_lookup_table_entry *entry, void *ignore)
 void
 free_lookup_table(struct wim_lookup_table *table)
 {
-       DEBUG("Freeing lookup table.");
-       if (table == NULL)
-               return;
-
-       if (table->array) {
-               for_lookup_table_entry(table,
-                                      do_free_lookup_table_entry,
-                                      NULL);
+       if (table) {
+               for_lookup_table_entry(table, do_free_lookup_table_entry, NULL);
                FREE(table->array);
+               FREE(table);
        }
-       FREE(table);
 }
 
 struct wim_lookup_table_entry *
@@ -133,7 +127,6 @@ clone_lookup_table_entry(const struct wim_lookup_table_entry *old)
        if (new == NULL)
                return NULL;
 
-       new->extracted_file = NULL;
        switch (new->resource_location) {
        case RESOURCE_IN_WIM:
                list_add(&new->rspec_node, &new->rspec->stream_list);
@@ -141,6 +134,7 @@ clone_lookup_table_entry(const struct wim_lookup_table_entry *old)
 
        case RESOURCE_IN_FILE_ON_DISK:
 #ifdef __WIN32__
+       case RESOURCE_IN_WINNT_FILE_ON_DISK:
        case RESOURCE_WIN32_ENCRYPTED:
 #endif
 #ifdef WITH_FUSE
@@ -200,6 +194,7 @@ lte_put_resource(struct wim_lookup_table_entry *lte)
                break;
        case RESOURCE_IN_FILE_ON_DISK:
 #ifdef __WIN32__
+       case RESOURCE_IN_WINNT_FILE_ON_DISK:
        case RESOURCE_WIN32_ENCRYPTED:
 #endif
 #ifdef WITH_FUSE
@@ -429,7 +424,7 @@ cmp_streams_by_sequential_order(const void *p1, const void *p2)
 
                /* Different (possibly split) WIMs?  */
                if (wim1 != wim2) {
-                       v = memcmp(wim1->hdr.guid, wim2->hdr.guid, WIM_GID_LEN);
+                       v = memcmp(wim1->hdr.guid, wim2->hdr.guid, WIM_GUID_LEN);
                        if (v)
                                return v;
                }
@@ -450,6 +445,7 @@ cmp_streams_by_sequential_order(const void *p1, const void *p2)
        case RESOURCE_IN_STAGING_FILE:
 #endif
 #ifdef __WIN32__
+       case RESOURCE_IN_WINNT_FILE_ON_DISK:
        case RESOURCE_WIN32_ENCRYPTED:
 #endif
                /* Compare files by path: just a heuristic that will place files
@@ -1275,16 +1271,6 @@ lte_zero_out_refcnt(struct wim_lookup_table_entry *lte, void *_ignore)
        return 0;
 }
 
-int
-lte_free_extracted_file(struct wim_lookup_table_entry *lte, void *_ignore)
-{
-       if (lte->extracted_file != NULL) {
-               FREE(lte->extracted_file);
-               lte->extracted_file = NULL;
-       }
-       return 0;
-}
-
 /* Allocate a stream entry for the contents of the buffer, or re-use an existing
  * entry in @lookup_table for the same stream.  */
 struct wim_lookup_table_entry *
@@ -1434,7 +1420,7 @@ wimlib_iterate_lookup_table(WIMStruct *wim, int flags,
                .cb = cb,
                .user_ctx = user_ctx,
        };
-       if (wim->hdr.part_number == 1) {
+       if (wim_has_metadata(wim)) {
                int ret;
                for (int i = 0; i < wim->hdr.image_count; i++) {
                        ret = do_iterate_lte(wim->image_metadata[i]->metadata_lte,