From: Guillem Jover Date: Fri, 28 Mar 2008 07:23:55 +0000 (+0200) Subject: Refactor post postinst script tasks into a new function X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6a65c0a8d430c80bd800a0a3489d3dfbc5714eb2;p=dpkg Refactor post postinst script tasks into a new function Based on a patch by Ian Jackson . --- diff --git a/ChangeLog b/ChangeLog index da9ba16b..122ac871 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2008-03-28 Ian Jackson , + Guillem Jover + + * src/main.h (post_postinst_tasks): New prototype. + * src/help.c (post_postinst_tasks): New function. + * src/cleanup.c (cu_prermupgrade): Use post_postinst_tasks instead of + duplicate code. + (cu_prermdeconfigure): Likewise. + (cu_prerminfavour): Likewise. + (cu_prermremove): Likewise. + * src/configure.c (deferred_configure): Likewise. + 2008-03-28 Guillem Jover * src/packages.c (process_queue): Fix typo in comment. diff --git a/src/cleanup.c b/src/cleanup.c index d1ebb68a..0a9ffad1 100644 --- a/src/cleanup.c +++ b/src/cleanup.c @@ -112,9 +112,8 @@ void cu_prermupgrade(int argc, void **argv) { versiondescribe(&pkg->available.version, vdew_nonambig), NULL); - pkg->status= stat_installed; pkg->eflag &= ~eflagf_reinstreq; - modstatdb_note(pkg); + post_postinst_tasks(pkg, stat_installed); cleanup_pkg_failed--; } @@ -151,8 +150,7 @@ void cu_prermdeconfigure(int argc, void **argv) { NULL); } - deconf->status= stat_installed; - modstatdb_note(deconf); + post_postinst_tasks(deconf, stat_installed); } void cu_prerminfavour(int argc, void **argv) { @@ -165,9 +163,8 @@ void cu_prerminfavour(int argc, void **argv) { versiondescribe(&infavour->available.version, vdew_nonambig), NULL); - conflictor->status= stat_installed; conflictor->eflag &= ~eflagf_reinstreq; - modstatdb_note(conflictor); + post_postinst_tasks(conflictor, stat_installed); cleanup_conflictor_failed--; } @@ -238,8 +235,7 @@ void cu_prermremove(int argc, void **argv) { if (cleanup_pkg_failed++) return; maintainer_script_installed(pkg,POSTINSTFILE,"post-installation", "abort-remove", NULL); - pkg->status= *oldpkgstatus; pkg->eflag &= ~eflagf_reinstreq; - modstatdb_note(pkg); + post_postinst_tasks(pkg, *oldpkgstatus); cleanup_pkg_failed--; } diff --git a/src/configure.c b/src/configure.c index 4fbdc74c..12ffdb1e 100644 --- a/src/configure.c +++ b/src/configure.c @@ -303,9 +303,8 @@ void deferred_configure(struct pkginfo *pkg) { vdew_nonambig) : "", NULL); - pkg->status= stat_installed; pkg->eflag= eflagv_ok; - modstatdb_note(pkg); + post_postinst_tasks(pkg, stat_installed); } diff --git a/src/help.c b/src/help.c index e09c348d..e74d51b7 100644 --- a/src/help.c +++ b/src/help.c @@ -217,6 +217,13 @@ static void script_catchsignals(void) { onerr_abort--; } +void +post_postinst_tasks(struct pkginfo *pkg, enum pkgstatus new_status) +{ + pkg->status = new_status; + modstatdb_note(pkg); +} + static void setexecute(const char *path, struct stat *stab) { if ((stab->st_mode & 0555) == 0555) return; if (!chmod(path,0755)) return; diff --git a/src/main.h b/src/main.h index 63348850..5c503436 100644 --- a/src/main.h +++ b/src/main.h @@ -214,6 +214,8 @@ int maintainer_script_alternative(struct pkginfo *pkg, const char *scriptname, const char *description, const char *cidir, char *cidirrest, const char *ifok, const char *iffallback); +void post_postinst_tasks(struct pkginfo *pkg, enum pkgstatus new_status); + void clear_istobes(void); int isdirectoryinuse(struct filenamenode *namenode, struct pkginfo *pkg); int hasdirectoryconffiles(struct filenamenode *namenode, struct pkginfo *pkg);