libalpm/remove.c: check for ability to unlink is wrong
As reported by JGC in FS #7652, the check for EACCES is not exactly correct. We need to check for the ETXTBSY error as well. This is necessary on FreeBSD. Signed-off-by: Dan McGee <dan@archlinux.org>
This commit is contained in:
parent
656c895ca4
commit
2798ebbb62
1 changed files with 2 additions and 1 deletions
|
@ -32,6 +32,7 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
|
||||||
/* libalpm */
|
/* libalpm */
|
||||||
#include "remove.h"
|
#include "remove.h"
|
||||||
|
@ -164,7 +165,7 @@ static int can_remove_file(pmtrans_t *trans, const char *path)
|
||||||
/* If we fail write permissions due to a read-only filesystem, abort.
|
/* If we fail write permissions due to a read-only filesystem, abort.
|
||||||
* Assume all other possible failures are covered somewhere else */
|
* Assume all other possible failures are covered somewhere else */
|
||||||
if(access(file, W_OK) == -1) {
|
if(access(file, W_OK) == -1) {
|
||||||
if(errno != EACCES && access(file, F_OK) == 0) {
|
if(errno != EACCES && errno != ETXTBSY && access(file, F_OK) == 0) {
|
||||||
/* only return failure if the file ACTUALLY exists and we can't write to
|
/* only return failure if the file ACTUALLY exists and we can't write to
|
||||||
* it - ignore "chmod -w" simple permission failures */
|
* it - ignore "chmod -w" simple permission failures */
|
||||||
_alpm_log(PM_LOG_ERROR, _("cannot remove file '%s': %s"),
|
_alpm_log(PM_LOG_ERROR, _("cannot remove file '%s': %s"),
|
||||||
|
|
Loading…
Add table
Reference in a new issue