unpack: apply correctly file permissions to existent files.
Will be backported to the 0.26.x branch.
This commit is contained in:
parent
43ba262976
commit
b2e1075efa
5
NEWS
5
NEWS
@ -1,3 +1,8 @@
|
|||||||
|
xbps-0.26.2 (2013-10-30):
|
||||||
|
|
||||||
|
* unpack: apply correctly permissions and mode to existent files if the those files
|
||||||
|
in the archive are modified compared to what it's currently on disk.
|
||||||
|
|
||||||
xbps-0.26.1 (2013-10-25):
|
xbps-0.26.1 (2013-10-25):
|
||||||
|
|
||||||
* xbps-uhelper: added new action "real-version" that only prints the version
|
* xbps-uhelper: added new action "real-version" that only prints the version
|
||||||
|
@ -459,27 +459,6 @@ unpack_archive(struct xbps_handle *xhp,
|
|||||||
free(p2);
|
free(p2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
* Check if current file mode differs from file mode
|
|
||||||
* in binpkg and apply perms if true.
|
|
||||||
*/
|
|
||||||
if (!force && file_exists && skip_extract &&
|
|
||||||
(archive_entry_mode(entry) != st.st_mode)) {
|
|
||||||
if (chmod(entry_pname,
|
|
||||||
archive_entry_mode(entry)) != 0) {
|
|
||||||
xbps_dbg_printf(xhp,
|
|
||||||
"%s: failed "
|
|
||||||
"to set perms %s to %s: %s\n",
|
|
||||||
pkgver, archive_entry_strmode(entry),
|
|
||||||
entry_pname,
|
|
||||||
strerror(errno));
|
|
||||||
rv = EINVAL;
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
xbps_dbg_printf(xhp, "%s: entry %s changed file "
|
|
||||||
"mode to %s.\n", pkgver, entry_pname,
|
|
||||||
archive_entry_strmode(entry));
|
|
||||||
}
|
|
||||||
/*
|
/*
|
||||||
* Check if current uid/gid differs from file in binpkg,
|
* Check if current uid/gid differs from file in binpkg,
|
||||||
* and change permissions if true.
|
* and change permissions if true.
|
||||||
@ -503,6 +482,27 @@ unpack_archive(struct xbps_handle *xhp,
|
|||||||
archive_entry_gid(entry));
|
archive_entry_gid(entry));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
|
* Check if current file mode differs from file mode
|
||||||
|
* in binpkg and apply perms if true.
|
||||||
|
*/
|
||||||
|
if (!force && file_exists && skip_extract &&
|
||||||
|
(archive_entry_mode(entry) != st.st_mode)) {
|
||||||
|
if (chmod(entry_pname,
|
||||||
|
archive_entry_mode(entry)) != 0) {
|
||||||
|
xbps_dbg_printf(xhp,
|
||||||
|
"%s: failed "
|
||||||
|
"to set perms %s to %s: %s\n",
|
||||||
|
pkgver, archive_entry_strmode(entry),
|
||||||
|
entry_pname,
|
||||||
|
strerror(errno));
|
||||||
|
rv = EINVAL;
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
xbps_dbg_printf(xhp, "%s: entry %s changed file "
|
||||||
|
"mode to %s.\n", pkgver, entry_pname,
|
||||||
|
archive_entry_strmode(entry));
|
||||||
|
}
|
||||||
|
|
||||||
if (!update && conf_file && file_exists && !skip_extract) {
|
if (!update && conf_file && file_exists && !skip_extract) {
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user