-/* Returns the dentry that corresponds to the parent directory of @path, or NULL
- * if the dentry is not found. */
-struct wim_dentry *
-get_parent_dentry(WIMStruct *wim, const tchar *path)
-{
- size_t path_len = tstrlen(path);
- tchar buf[path_len + 1];
-
- tmemcpy(buf, path, path_len + 1);
- to_parent_name(buf, path_len);
- return get_dentry(wim, buf);
-}
-
-/* Prints the full path of a dentry. */
-int
-print_dentry_full_path(struct wim_dentry *dentry, void *_ignore)
-{
- int ret = calculate_dentry_full_path(dentry);
- if (ret)
- return ret;
- tprintf(T("%"TS"\n"), dentry->_full_path);
- return 0;
-}
-
-/* We want to be able to show the names of the file attribute flags that are
- * set. */
-struct file_attr_flag {
- u32 flag;
- const tchar *name;
-};
-struct file_attr_flag file_attr_flags[] = {
- {FILE_ATTRIBUTE_READONLY, T("READONLY")},
- {FILE_ATTRIBUTE_HIDDEN, T("HIDDEN")},
- {FILE_ATTRIBUTE_SYSTEM, T("SYSTEM")},
- {FILE_ATTRIBUTE_DIRECTORY, T("DIRECTORY")},
- {FILE_ATTRIBUTE_ARCHIVE, T("ARCHIVE")},
- {FILE_ATTRIBUTE_DEVICE, T("DEVICE")},
- {FILE_ATTRIBUTE_NORMAL, T("NORMAL")},
- {FILE_ATTRIBUTE_TEMPORARY, T("TEMPORARY")},
- {FILE_ATTRIBUTE_SPARSE_FILE, T("SPARSE_FILE")},
- {FILE_ATTRIBUTE_REPARSE_POINT, T("REPARSE_POINT")},
- {FILE_ATTRIBUTE_COMPRESSED, T("COMPRESSED")},
- {FILE_ATTRIBUTE_OFFLINE, T("OFFLINE")},
- {FILE_ATTRIBUTE_NOT_CONTENT_INDEXED,T("NOT_CONTENT_INDEXED")},
- {FILE_ATTRIBUTE_ENCRYPTED, T("ENCRYPTED")},
- {FILE_ATTRIBUTE_VIRTUAL, T("VIRTUAL")},
-};
-
-/* Prints a directory entry. @lookup_table is a pointer to the lookup table, if
- * available. If the dentry is unresolved and the lookup table is NULL, the
- * lookup table entries will not be printed. Otherwise, they will be. */
-int
-print_dentry(struct wim_dentry *dentry, void *lookup_table)
-{
- const u8 *hash;
- struct wim_lookup_table_entry *lte;
- const struct wim_inode *inode = dentry->d_inode;
- tchar buf[50];
-
- tprintf(T("[DENTRY]\n"));
- tprintf(T("Length = %"PRIu64"\n"), dentry->length);
- tprintf(T("Attributes = 0x%x\n"), inode->i_attributes);
- for (size_t i = 0; i < ARRAY_LEN(file_attr_flags); i++)
- if (file_attr_flags[i].flag & inode->i_attributes)
- tprintf(T(" FILE_ATTRIBUTE_%"TS" is set\n"),
- file_attr_flags[i].name);
- tprintf(T("Security ID = %d\n"), inode->i_security_id);
- tprintf(T("Subdir offset = %"PRIu64"\n"), dentry->subdir_offset);