unix_apply.c: Honor i_not_rpfixed
authorEric Biggers <ebiggers3@gmail.com>
Wed, 11 Jun 2014 01:20:56 +0000 (20:20 -0500)
committerEric Biggers <ebiggers3@gmail.com>
Wed, 11 Jun 2014 01:21:12 +0000 (20:21 -0500)
This was a regression from 1.6.2

src/unix_apply.c

index 4eeee2ca4153511ad8359366a88ce68d8aa5e99d..077b49db9aa9e694dbe85f6536d3c3c9907e6cea 100644 (file)
@@ -630,13 +630,17 @@ unix_end_extract_stream(struct wim_lookup_table_entry *stream, int status,
                        /* We finally have the symlink data, so we can create
                         * the symlink.  */
                        const char *path;
+                       bool rpfix;
+
+                       rpfix = (ctx->common.extract_flags &
+                                WIMLIB_EXTRACT_FLAG_RPFIX) &&
+                                       !inode->i_not_rpfixed;
 
                        path = unix_build_inode_extraction_path(inode, ctx);
                        ret = unix_create_symlink(inode, path,
                                                  ctx->reparse_data,
                                                  stream->size,
-                                                 (ctx->common.extract_flags &
-                                                  WIMLIB_EXTRACT_FLAG_RPFIX),
+                                                 rpfix,
                                                  ctx->target_abspath,
                                                  ctx->target_abspath_nchars);
                        if (ret) {