+/*
+ * unix_apply.c - Code to apply files from a WIM image on UNIX.
+ */
+
+/*
+ * Copyright (C) 2012, 2013 Eric Biggers
+ *
+ * This file is part of wimlib, a library for working with WIM files.
+ *
+ * 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.
+ *
+ * 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/.
+ */
+
#include "config.h"
#ifdef HAVE_UTIME_H
}
static int
-extract_regular_file_linked(struct wim_dentry *dentry,
- const char *output_path,
- struct apply_args *args,
- struct wim_lookup_table_entry *lte)
+unix_extract_regular_file_linked(struct wim_dentry *dentry,
+ const char *output_path,
+ struct apply_args *args,
+ struct wim_lookup_table_entry *lte)
{
/* This mode overrides the normal hard-link extraction and
* instead either symlinks or hardlinks *all* identical files in
}
static int
-extract_regular_file_unlinked(struct wim_dentry *dentry,
- struct apply_args *args,
- const char *output_path,
- struct wim_lookup_table_entry *lte)
+unix_extract_regular_file_unlinked(struct wim_dentry *dentry,
+ struct apply_args *args,
+ const char *output_path,
+ struct wim_lookup_table_entry *lte)
{
/* Normal mode of extraction. Regular files and hard links are
* extracted in the way that they appear in the WIM. */
}
static int
-extract_regular_file(struct wim_dentry *dentry,
- struct apply_args *args,
- const char *output_path)
+unix_extract_regular_file(struct wim_dentry *dentry,
+ struct apply_args *args,
+ const char *output_path)
{
struct wim_lookup_table_entry *lte;
const struct wim_inode *inode = dentry->d_inode;
WIMLIB_EXTRACT_FLAG_HARDLINK)))
{
if (lte->extracted_file) {
- return extract_regular_file_linked(dentry, output_path, args, lte);
+ return unix_extract_regular_file_linked(dentry,
+ output_path,
+ args, lte);
} else {
lte->extracted_file = STRDUP(output_path);
if (!lte->extracted_file)
return WIMLIB_ERR_NOMEM;
}
}
- return extract_regular_file_unlinked(dentry, args, output_path, lte);
+ return unix_extract_regular_file_unlinked(dentry, args, output_path, lte);
}
static int
-extract_symlink(struct wim_dentry *dentry,
- struct apply_args *args,
- const char *output_path)
+unix_extract_symlink(struct wim_dentry *dentry,
+ struct apply_args *args,
+ const char *output_path)
{
char target[4096 + args->target_realpath_len];
char *fixed_target;
}
static int
-extract_directory(struct wim_dentry *dentry, const tchar *output_path,
- int extract_flags)
+unix_extract_directory(struct wim_dentry *dentry, const tchar *output_path,
+ int extract_flags)
{
int ret;
struct stat stbuf;
ret = tstat(output_path, &stbuf);
if (ret == 0) {
if (S_ISDIR(stbuf.st_mode)) {
- /*if (!is_root)*/
- /*WARNING("`%s' already exists", output_path);*/
goto dir_exists;
} else {
ERROR("`%"TS"' is not a directory", output_path);
const struct wim_inode *inode = dentry->d_inode;
if (inode_is_symlink(inode))
- return extract_symlink(dentry, args, output_path);
+ return unix_extract_symlink(dentry, args, output_path);
else if (inode_is_directory(inode))
- return extract_directory(dentry, output_path, args->extract_flags);
+ return unix_extract_directory(dentry, output_path, args->extract_flags);
else
- return extract_regular_file(dentry, args, output_path);
+ return unix_extract_regular_file(dentry, args, output_path);
}
int