xbps_pkgdb_lock(): check if rootfs is writable.
As shown in https://github.com/void-linux/xbps/issues/110 /var might be rw, while / might be ro. Check this via xbps_pkgdb_lock() for both things. Close #110 Signed-off-by: Juan RP <xtraeme@gmail.com>
This commit is contained in:
parent
c3b2d7ca53
commit
f6116fc2ac
10
lib/pkgdb.c
10
lib/pkgdb.c
@ -102,10 +102,20 @@ xbps_pkgdb_lock(struct xbps_handle *xhp)
|
|||||||
goto ret;
|
goto ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If we've acquired the file lock, then pkgdb is writable.
|
||||||
|
*/
|
||||||
if (lockf(pkgdb_fd, F_TLOCK, 0) == -1) {
|
if (lockf(pkgdb_fd, F_TLOCK, 0) == -1) {
|
||||||
rv = errno;
|
rv = errno;
|
||||||
xbps_dbg_printf(xhp, "[pkgdb] cannot lock pkgdb: %s\n", strerror(rv));
|
xbps_dbg_printf(xhp, "[pkgdb] cannot lock pkgdb: %s\n", strerror(rv));
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
|
* Check if rootdir is writable.
|
||||||
|
*/
|
||||||
|
if (access(xhp->rootdir, W_OK) == -1) {
|
||||||
|
rv = errno;
|
||||||
|
xbps_dbg_printf(xhp, "[pkgdb] rootdir %s: %s\n", xhp->rootdir, strerror(rv));
|
||||||
|
}
|
||||||
|
|
||||||
ret:
|
ret:
|
||||||
umask(prev_umask);
|
umask(prev_umask);
|
||||||
|
Loading…
Reference in New Issue
Block a user