summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGuillem Jover <guillem@debian.org>2014-10-10 13:54:16 +0200
committerGuillem Jover <guillem@debian.org>2014-10-12 05:20:13 +0200
commit216c509b1daee0e2a9e0e095c5e862cf16e181c0 (patch)
treef64674f59e4837f1efedc460fbd41b730696698d /src
parent35c1c59cfad75d75b3d98974ad201f95d932adb6 (diff)
downloaddpkg-216c509b1daee0e2a9e0e095c5e862cf16e181c0.tar.gz
dpkg: Do not write the database when changing selections with --dry-run
Closes: #764673
Diffstat (limited to 'src')
-rw-r--r--src/select.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/select.c b/src/select.c
index 41e82da19..cdfd5bdd4 100644
--- a/src/select.c
+++ b/src/select.c
@@ -109,6 +109,7 @@ getselections(const char *const *argv)
int
setselections(const char *const *argv)
{
+ enum modstatdb_rw msdbflags;
const struct namevalue *nv;
struct pkginfo *pkg;
int c, lno;
@@ -119,7 +120,13 @@ setselections(const char *const *argv)
if (*argv)
badusage(_("--%s takes no arguments"), cipaction->olong);
- modstatdb_open(msdbrw_write | msdbrw_available_readonly);
+ msdbflags = msdbrw_available_readonly;
+ if (f_noact)
+ msdbflags |= msdbrw_readonly;
+ else
+ msdbflags |= msdbrw_write;
+
+ modstatdb_open(msdbflags);
pkg_infodb_upgrade();
lno= 1;
@@ -194,13 +201,19 @@ setselections(const char *const *argv)
int
clearselections(const char *const *argv)
{
+ enum modstatdb_rw msdbflags;
struct pkgiterator *it;
struct pkginfo *pkg;
if (*argv)
badusage(_("--%s takes no arguments"), cipaction->olong);
- modstatdb_open(msdbrw_write);
+ if (f_noact)
+ msdbflags = msdbrw_readonly;
+ else
+ msdbflags = msdbrw_write;
+
+ modstatdb_open(msdbflags);
pkg_infodb_upgrade();
it = pkg_db_iter_new();