summaryrefslogtreecommitdiffstats
path: root/src/pacman/pacman.c
diff options
context:
space:
mode:
authorChantry Xavier <shiningxc@gmail.com>2007-10-04 04:02:36 +0200
committerAaron Griffin <aaronmgriffin@gmail.com>2007-10-04 04:02:36 +0200
commit52e7e6d74733f7a431376a9e528c4fe4d3732068 (patch)
treee21405be433b04b9280c1abf4836e98cab603d14 /src/pacman/pacman.c
parent4453ce155c2f2c5d48e45269250ac0bab52ac63f (diff)
downloadpacman-52e7e6d74733f7a431376a9e528c4fe4d3732068.tar.gz
pacman-52e7e6d74733f7a431376a9e528c4fe4d3732068.tar.xz
needs_transaction adjustments
I just moved the root path check out of needs_transaction, and put it directly in pacman.c . I think this part is alright. For the other problems, I thought about doing the transaction first, in a new sync trans function, which will init and release a transaction. And then doing the commands like -Ss / -Sl / -Sg / -Si. The problem is that for commands like -Sys / -Syl / etc, only the refresh part of the transaction should be done. So I had to introduce an ugly sync_only hack. Signed-off-by: Aaron Griffin <aaronmgriffin@gmail.com>
Diffstat (limited to 'src/pacman/pacman.c')
-rw-r--r--src/pacman/pacman.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/pacman/pacman.c b/src/pacman/pacman.c
index c57d3464..74493986 100644
--- a/src/pacman/pacman.c
+++ b/src/pacman/pacman.c
@@ -775,7 +775,9 @@ int main(int argc, char *argv[])
#if defined(HAVE_GETEUID)
/* check if we have sufficient permission for the requested operation */
- if(myuid > 0 && needs_transaction()) {
+ if(myuid > 0 && !strcmp(alpm_option_get_root(), "/") && needs_transaction()) {
+ /* special case: ignore root user check if -r is specified, fall back on
+ * normal FS checking */
pm_printf(PM_LOG_ERROR, _("you cannot perform this operation unless you are root.\n"));
cleanup(EXIT_FAILURE);
}