]> wimlib.net Git - wimlib/blobdiff - src/unix_apply.c
write_stream_list(): Increase threshold for multithreaded compression
[wimlib] / src / unix_apply.c
index 97c1c83b2e3c0ac593184f0aa436441bfe98f3e8..969b8d2b6f74354eb7f0a6c7e0da2d3b80abc860 100644 (file)
@@ -1,3 +1,26 @@
+/*
+ * 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
@@ -42,10 +65,10 @@ path_next_part(const char *path)
 }
 
 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
@@ -177,10 +200,10 @@ dir_apply_unix_data(const char *dir, const struct wimlib_unix_data *unix_data,
 }
 
 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. */
@@ -269,9 +292,9 @@ out:
 }
 
 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;
@@ -282,20 +305,22 @@ extract_regular_file(struct wim_dentry *dentry,
                                           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;
@@ -349,8 +374,8 @@ extract_symlink(struct wim_dentry *dentry,
 }
 
 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;
@@ -358,8 +383,6 @@ extract_directory(struct wim_dentry *dentry, const tchar *output_path,
        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);
@@ -402,11 +425,11 @@ unix_do_apply_dentry(const char *output_path, size_t output_path_len,
        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