diff options
-rw-r--r-- | debian/changelog | 1 | ||||
-rw-r--r-- | po/POTFILES.in | 1 | ||||
-rw-r--r-- | src/Makefile.am | 1 | ||||
-rw-r--r-- | src/filesdb.c | 14 | ||||
-rw-r--r-- | src/filesdb.h | 2 | ||||
-rw-r--r-- | src/main.h | 4 | ||||
-rw-r--r-- | src/perpkgstate.c | 43 |
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; +} |