summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--debian/changelog1
-rw-r--r--po/POTFILES.in1
-rw-r--r--src/Makefile.am1
-rw-r--r--src/filesdb.c14
-rw-r--r--src/filesdb.h2
-rw-r--r--src/main.h4
-rw-r--r--src/perpkgstate.c43
7 files changed, 50 insertions, 16 deletions
diff --git a/debian/changelog b/debian/changelog
index bec8355b6..d9985ff11 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -181,6 +181,7 @@ dpkg (1.19.1) UNRELEASED; urgency=medium
- dpkg: For read-only state functions, check that clientdata is allocated
before using it.
- libdpkg: Move files list information from dpkg clientdata to pkginfo.
+ - dpkg: Move ensure_package_clientdata() into its own file.
* Build system:
- Set distribution tarball format to ustar, instead of default v7 format.
- Mark PO4A and POD2MAN as precious variables.
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 1a8cbc2ae..bc549a21c 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -80,6 +80,7 @@ src/filters.c
src/help.c
src/main.c
src/packages.c
+src/perpkgstate.c
src/querycmd.c
src/remove.c
src/script.c
diff --git a/src/Makefile.am b/src/Makefile.am
index 1e9735acd..38b725169 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -45,6 +45,7 @@ dpkg_SOURCES = \
help.c \
main.c main.h \
packages.c \
+ perpkgstate.c \
remove.c \
script.c \
select.c \
diff --git a/src/filesdb.c b/src/filesdb.c
index 22aad89e0..8421d327e 100644
--- a/src/filesdb.c
+++ b/src/filesdb.c
@@ -58,20 +58,6 @@
static bool allpackagesdone = false;
-void
-ensure_package_clientdata(struct pkginfo *pkg)
-{
- if (pkg->clientdata)
- return;
- pkg->clientdata = nfmalloc(sizeof(struct perpackagestate));
- pkg->clientdata->istobe = PKG_ISTOBE_NORMAL;
- pkg->clientdata->color = PKG_CYCLE_WHITE;
- pkg->clientdata->enqueued = false;
- pkg->clientdata->replacingfilesandsaid = 0;
- pkg->clientdata->cmdline_seen = 0;
- pkg->clientdata->trigprocdeferred = NULL;
-}
-
void note_must_reread_files_inpackage(struct pkginfo *pkg) {
allpackagesdone = false;
pkg->files_list_valid = false;
diff --git a/src/filesdb.h b/src/filesdb.h
index 4fbe6b0a7..f38fdd245 100644
--- a/src/filesdb.h
+++ b/src/filesdb.h
@@ -47,8 +47,6 @@
struct pkginfo;
-void ensure_package_clientdata(struct pkginfo *pkg);
-
void ensure_diversions(void);
enum statdb_parse_flags {
diff --git a/src/main.h b/src/main.h
index f5695aeea..bc3f07a65 100644
--- a/src/main.h
+++ b/src/main.h
@@ -148,6 +148,10 @@ struct invoke_list {
struct invoke_hook *head, **tail;
};
+/* from perpkgstate.c */
+
+void ensure_package_clientdata(struct pkginfo *pkg);
+
/* from archives.c */
int archivefiles(const char *const *argv);
diff --git a/src/perpkgstate.c b/src/perpkgstate.c
new file mode 100644
index 000000000..8a0667a68
--- /dev/null
+++ b/src/perpkgstate.c
@@ -0,0 +1,43 @@
+/*
+ * dpkg - main program for package management
+ * perpkgstate.c - struct perpackagestate and function handling
+ *
+ * Copyright © 1995 Ian Jackson <ijackson@chiark.greenend.org.uk>
+ * Copyright © 2000,2001 Wichert Akkerman <wakkerma@debian.org>
+ * Copyright © 2008-2014 Guillem Jover <guillem@debian.org>
+ *
+ * This is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+#include <config.h>
+#include <compat.h>
+
+#include <dpkg/dpkg.h>
+#include <dpkg/dpkg-db.h>
+
+#include "main.h"
+
+void
+ensure_package_clientdata(struct pkginfo *pkg)
+{
+ if (pkg->clientdata)
+ return;
+ pkg->clientdata = nfmalloc(sizeof(struct perpackagestate));
+ pkg->clientdata->istobe = PKG_ISTOBE_NORMAL;
+ pkg->clientdata->color = PKG_CYCLE_WHITE;
+ pkg->clientdata->enqueued = false;
+ pkg->clientdata->replacingfilesandsaid = 0;
+ pkg->clientdata->cmdline_seen = 0;
+ pkg->clientdata->trigprocdeferred = NULL;
+}