summaryrefslogtreecommitdiff
path: root/apt-private/private-main.cc
diff options
context:
space:
mode:
authorDavid Kalnischkies <david@kalnischkies.de>2015-07-09 21:10:53 +0200
committerDavid Kalnischkies <david@kalnischkies.de>2015-08-10 17:27:17 +0200
commit0d5b9da9f597fecae9b912d37d4e58bc903bdd4f (patch)
tree091475cd19cb6530e6f7ec2a941fd6e69d3ca3e1 /apt-private/private-main.cc
parenta4b8112b19763cbd2c12b81d55bc7d43a591d610 (diff)
disable locking even for root in --simulate
Six years ago in 55a5a46c235a30bf024fb2301066553953701cc5 apt-get learned to disable locking if run as normal user and show a message. Helmut Grohne rightly suggests on IRC now that there isn't much point in getting the locks for root either as the output isn't in any way more authoritive than without locking given that after this call the lock is freed and any action can sneak in before we make the next call. So we exchange no benefit for the disavantage of blocking real calls. This can be especially confusing with the aliases --no-act and --just-print. We do not print the message we print for users through as the non-root users can be confronted with a lot more difference via unreadable files.
Diffstat (limited to 'apt-private/private-main.cc')
-rw-r--r--apt-private/private-main.cc8
1 files changed, 5 insertions, 3 deletions
diff --git a/apt-private/private-main.cc b/apt-private/private-main.cc
index 668b1733a..3886c7df6 100644
--- a/apt-private/private-main.cc
+++ b/apt-private/private-main.cc
@@ -22,13 +22,15 @@ void InitSignals()
void CheckSimulateMode(CommandLine &CmdL)
{
- // simulate user-friendly if apt-get has no root privileges
- if (getuid() != 0 && _config->FindB("APT::Get::Simulate") == true &&
+ // disable locking in simulation, but show the message only for users
+ // as root hasn't the same problems like unreadable files which can heavily
+ // distort the simulation.
+ if (_config->FindB("APT::Get::Simulate") == true &&
(CmdL.FileSize() == 0 ||
(strcmp(CmdL.FileList[0], "source") != 0 && strcmp(CmdL.FileList[0], "download") != 0 &&
strcmp(CmdL.FileList[0], "changelog") != 0)))
{
- if (_config->FindB("APT::Get::Show-User-Simulation-Note",true) == true)
+ if (getuid() != 0 && _config->FindB("APT::Get::Show-User-Simulation-Note",true) == true)
std::cout << _("NOTE: This is only a simulation!\n"
" apt-get needs root privileges for real execution.\n"
" Keep also in mind that locking is deactivated,\n"