*/
/*
- * Copyright (C) 2013, 2015 Eric Biggers
+ * Copyright (C) 2013-2016 Eric Biggers
*
* 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
#include "wimlib/dentry.h"
#include "wimlib/encoding.h"
#include "wimlib/metadata.h"
+#include "wimlib/object_id.h"
#include "wimlib/paths.h"
#include "wimlib/security.h"
#include "wimlib/timestamp.h"
const struct wim_inode *inode = dentry->d_inode;
const struct wim_inode_stream *strm;
struct wimlib_unix_data unix_data;
+ const void *object_id;
+ u32 object_id_len;
- ret = utf16le_get_tstr(dentry->file_name, dentry->file_name_nbytes,
+ ret = utf16le_get_tstr(dentry->d_name, dentry->d_name_nbytes,
&wdentry->filename, &dummy);
if (ret)
return ret;
- ret = utf16le_get_tstr(dentry->short_name, dentry->short_name_nbytes,
+ ret = utf16le_get_tstr(dentry->d_short_name, dentry->d_short_name_nbytes,
&wdentry->dos_name, &dummy);
if (ret)
return ret;
ret = calculate_dentry_full_path(dentry);
if (ret)
return ret;
- wdentry->full_path = dentry->_full_path;
+ wdentry->full_path = dentry->d_full_path;
for (struct wim_dentry *d = dentry; !dentry_is_root(d); d = d->d_parent)
wdentry->depth++;
- if (inode->i_security_id >= 0) {
+ if (inode_has_security_descriptor(inode)) {
struct wim_security_data *sd;
sd = wim_get_current_security_data(wim);
wdentry->unix_mode = unix_data.mode;
wdentry->unix_rdev = unix_data.rdev;
}
+ object_id = inode_get_object_id(inode, &object_id_len);
+ if (unlikely(object_id != NULL)) {
+ memcpy(&wdentry->object_id, object_id,
+ min(object_id_len, sizeof(wdentry->object_id)));
+ }
strm = inode_get_unnamed_stream(inode, get_default_stream_type(inode));
if (strm) {
}
}
out_free_wimlib_dentry:
+ FREE(dentry->d_full_path);
+ dentry->d_full_path = NULL;
free_wimlib_dentry(wdentry);
out:
return ret;