From 6049550c6e6381e4f294e3a451a3bb177501a95e Mon Sep 17 00:00:00 2001 From: Eric Biggers Date: Tue, 13 May 2014 10:36:06 -0500 Subject: [PATCH] unix_capture_symlink(): De-indent --- src/unix_capture.c | 82 +++++++++++++++++++++++----------------------- 1 file changed, 41 insertions(+), 41 deletions(-) diff --git a/src/unix_capture.c b/src/unix_capture.c index 38adb1c5..1de0b80b 100644 --- a/src/unix_capture.c +++ b/src/unix_capture.c @@ -141,6 +141,7 @@ unix_capture_symlink(struct wim_dentry **root_p, { char deref_name_buf[4096]; ssize_t deref_name_len; + char *dest; int ret; inode->i_attributes = FILE_ATTRIBUTE_REPARSE_POINT; @@ -151,51 +152,50 @@ unix_capture_symlink(struct wim_dentry **root_p, * that contains a relative or absolute symbolic link. */ deref_name_len = readlink(path, deref_name_buf, sizeof(deref_name_buf) - 1); - if (deref_name_len >= 0) { - char *dest = deref_name_buf; + if (deref_name_len < 0) { + ERROR_WITH_ERRNO("Failed to read target of " + "symbolic link `%s'", path); + return WIMLIB_ERR_READLINK; + } - dest[deref_name_len] = '\0'; - DEBUG("Read symlink `%s'", dest); + dest = deref_name_buf; - if ((params->add_flags & WIMLIB_ADD_FLAG_RPFIX) && - dest[0] == '/') - { - dest = capture_fixup_absolute_symlink(dest, - params->capture_root_ino, - params->capture_root_dev); - if (dest == NULL) { - /* RPFIX (reparse point fixup) mode: Ignore - * absolute symbolic link that points out of the - * tree to be captured. */ - free_dentry(*root_p); - *root_p = NULL; - params->progress.scan.cur_path = path; - params->progress.scan.symlink_target = deref_name_buf; - do_capture_progress(params, - WIMLIB_SCAN_DENTRY_EXCLUDED_SYMLINK, - NULL); - return 0; - } - inode->i_not_rpfixed = 0; - } - ret = wim_inode_set_symlink(inode, dest, params->lookup_table); - if (ret == 0) { - /* Unfortunately, Windows seems to have the concept of - * "file" symbolic links as being different from - * "directory" symbolic links... so - * FILE_ATTRIBUTE_DIRECTORY needs to be set on the - * symbolic link if the *target* of the symbolic link is - * a directory. */ - struct stat stbuf; - if (stat(path, &stbuf) == 0 && S_ISDIR(stbuf.st_mode)) - inode->i_attributes |= FILE_ATTRIBUTE_DIRECTORY; + dest[deref_name_len] = '\0'; + DEBUG("Read symlink `%s'", dest); + + if ((params->add_flags & WIMLIB_ADD_FLAG_RPFIX) && + dest[0] == '/') + { + dest = capture_fixup_absolute_symlink(dest, + params->capture_root_ino, + params->capture_root_dev); + if (dest == NULL) { + /* RPFIX (reparse point fixup) mode: Ignore + * absolute symbolic link that points out of the + * tree to be captured. */ + free_dentry(*root_p); + *root_p = NULL; + params->progress.scan.cur_path = path; + params->progress.scan.symlink_target = deref_name_buf; + do_capture_progress(params, + WIMLIB_SCAN_DENTRY_EXCLUDED_SYMLINK, + NULL); + return 0; } - } else { - ERROR_WITH_ERRNO("Failed to read target of " - "symbolic link `%s'", path); - ret = WIMLIB_ERR_READLINK; + inode->i_not_rpfixed = 0; } - return ret; + ret = wim_inode_set_symlink(inode, dest, params->lookup_table); + if (ret) + return ret; + + /* Unfortunately, Windows seems to have the concept of "file" symbolic + * links as being different from "directory" symbolic links... so + * FILE_ATTRIBUTE_DIRECTORY needs to be set on the symbolic link if the + * *target* of the symbolic link is a directory. */ + struct stat stbuf; + if (stat(path, &stbuf) == 0 && S_ISDIR(stbuf.st_mode)) + inode->i_attributes |= FILE_ATTRIBUTE_DIRECTORY; + return 0; } static int -- 2.43.0