From 635b978983d5a9719422c2cc75fe8b4a934f0f27 Mon Sep 17 00:00:00 2001 From: Guy Maor Date: Sat, 13 Feb 1999 05:50:05 +0000 Subject: [PATCH] 1.4.1.1 changes by Wichert Akkerman --- TODO | 1 + debian/50dpkg-dev.el | 2 +- debian/changelog | 30 +++++++++++++++++ debian/control | 2 +- debian/rules | 6 ++-- debian/shlibs.default.i386 | 2 +- doc/manuals-version | 4 +-- main/dpkg.8 | 5 ++- main/errors.c | 2 +- main/filesdb.c | 2 ++ main/main.c | 9 ++++- main/main.h | 1 + methods/disk.setup | 2 +- po/en.po | 60 +++++++++++++--------------------- po/fr.po | 60 +++++++++++++--------------------- scripts/controllib.pl | 4 +-- scripts/dpkg-divert.pl | 1 + scripts/dpkg-genchanges.pl | 2 +- scripts/update-alternatives.pl | 9 +++++ scripts/update-rc.d.8 | 9 +++++ 20 files changed, 123 insertions(+), 90 deletions(-) diff --git a/TODO b/TODO index 816c203d..16aa6a85 100644 --- a/TODO +++ b/TODO @@ -18,6 +18,7 @@ urgent and action logs (kept forever?) 957 * start-stop-daemon process status check. 1480 * remove old docs from /usr/doc/dpkg. + * WTA: fix translations for dpkg --help which broke after adding --stop-after other stuff unlikely to get done soon * Automatically remove .gz if can't be found ? diff --git a/debian/50dpkg-dev.el b/debian/50dpkg-dev.el index 90fd1d3e..41a0b15e 100644 --- a/debian/50dpkg-dev.el +++ b/debian/50dpkg-dev.el @@ -4,5 +4,5 @@ ;; Copyright (C) 1997, Klee Dienes ;; I hereby release this progam into the public domain. -(autoload 'debian-changelog-mode "/usr/lib/emacs/site-lisp/debian-changelog-mode.el" +(autoload 'debian-changelog-mode "/usr/share/emacs/site-lisp/debian-changelog-mode.el" "Major mode for editing Debian-style change logs." t) diff --git a/debian/changelog b/debian/changelog index c28b80e9..60d2a915 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,33 @@ +dpkg (1.4.1.1) unstable; urgency=low + + * Non-maintainer upload + * Install emacs-startup scripts with mode 0644 (lintian) + * Incorporate changes in NMU 1.4.0.32 made by Vincent Renardias + for slink: + + Apply patch from Jim Pick for update-alternatives.pl to + fix 'Important' bugs #30891 in dpkg and (#27382, #27383, #27696, + #27703, #27736, #27097(merged bugs)) in jdk1.1. + * Incorporate changes in NMU 1.4.0.33 made by me for slink: + + Fix illegal perl construct (Bug# 30985) + + Initialize oialtname->useinstead and oicontest->camefrom to 0 (Bug# 30397) + + Update shlibs.default for libncurses 4 (Bug# 30332) + + Suggest debian-keyring instead of developer-keyring (Bug# 27376, 30248) + + Abort dpkg-divert when attempting to divert a directory (Bug# 30126) + + Make dpkg-deb.1 aware that it is in section 1, not 8 + + Fix section in reference to dpkg-deb in dpkg.8 (Bug# 29740) + + Fix typo in --force-help (Bug# 26193) + + Correct path for debian-changelog-mode.el (Bug# 24606) + + Make disk-method for dpkg use /var/run instead of /tmp to fix + symlink-attacks (Bug# 21399) + + Document -n and -f options for update-rc.d in manpage (Bug# 15913) + + Add --abort-after option to change after how many errors we abort and + change the default to 50 (Bug# 22940) + + Fix controllib.pl: don't check debian/substvars unless needed, and + don't depend on language settings (Bug# 31508) + + Allow a - in the architecture-field (Bug# 25537) + + -- Wichert Akkerman Mon, 1 Feb 1999 00:44:01 +0100 + dpkg (1.4.1) unstable; urgency=low * Maintainer release by IWJ. diff --git a/debian/control b/debian/control index 8bfcf114..e00a2729 100644 --- a/debian/control +++ b/debian/control @@ -8,7 +8,7 @@ Package: dpkg Architecture: any Essential: yes Pre-Depends: ${shlibs:Pre-Depends} -Suggests: developer-keyring +Suggests: debian-keyring Description: Package maintenance system for Debian Linux This package contains the programs which handle the installation and removal of packages on your system. diff --git a/debian/rules b/debian/rules index e0a72966..bf698c2e 100755 --- a/debian/rules +++ b/debian/rules @@ -91,9 +91,11 @@ binary-trees: build fi cp debian/{prerm,postinst} $(mcidir)/. install -d debian/tmp-dev/etc/emacs/site-start.d - install -c debian/50dpkg-dev.el debian/tmp-dev/etc/emacs/site-start.d/ + install -p -m 644 debian/50dpkg-dev.el \ + debian/tmp-dev/etc/emacs/site-start.d/ install -d debian/tmp-dev/etc/xemacs/site-start-19.d - install -c debian/50dpkg-dev.el debian/tmp-dev/etc/xemacs/site-start-19.d/ + install -p -m 644 debian/50dpkg-dev.el \ + debian/tmp-dev/etc/xemacs/site-start-19.d/ chmod +x $(mcidir)/{postinst,prerm,preinst} $(MAKE) -C $(BUILD) top_distdir=. dist $(MAKE) -C $(BUILD) \ diff --git a/debian/shlibs.default.i386 b/debian/shlibs.default.i386 index ea52269c..703abc74 100644 --- a/debian/shlibs.default.i386 +++ b/debian/shlibs.default.i386 @@ -1,6 +1,6 @@ libc 6 libc6 libm 6 libc6 -libncurses 3.4 ncurses3.4 +libncurses 4 libncurses4 libICE 6 xlib6g (>= 3.3-5) libPEX5 6 xlib6g (>= 3.3-5) libSM 6 xlib6g (>= 3.3-5) diff --git a/doc/manuals-version b/doc/manuals-version index db296829..07d249e0 100644 --- a/doc/manuals-version +++ b/doc/manuals-version @@ -1,2 +1,2 @@ - - + + diff --git a/main/dpkg.8 b/main/dpkg.8 index 2eb475a4..9a62457d 100644 --- a/main/dpkg.8 +++ b/main/dpkg.8 @@ -293,6 +293,9 @@ See \fBdpkg-deb\fP(8) for more information about the following actions. .SH OPTIONS .br .TP +\fB--abort-after=\fP\fInumber\fP +Change after how many errors dpkg will abort. The default is 50. +.TP .BR -B | --auto-deconfigure When a package is removed, there is a possibility that another installed package depended on the removed package. Specifying this @@ -519,7 +522,7 @@ convenient way to modify the package selection states. .br .SH SEE ALSO \fBdselect\fP(8), -\fBdpkg-deb\fP(8), +\fBdpkg-deb\fP(1), \fBdeb\fP(5), and \fBdeb-control\fP(5) diff --git a/main/errors.c b/main/errors.c index 07eb2db7..f7ccb009 100644 --- a/main/errors.c +++ b/main/errors.c @@ -66,7 +66,7 @@ void print_error_perpackage(const char *emsg, const char *arg) { *lastreport= nr; lastreport= &nr->next; - if (nerrs++ < 20) return; + if (nerrs++ < errabort) return; fprintf(stderr, _("dpkg: too many errors, stopping\n")); onerr_abort++; } diff --git a/main/filesdb.c b/main/filesdb.c index c53db0ee..5ff4bdee 100644 --- a/main/filesdb.c +++ b/main/filesdb.c @@ -353,6 +353,7 @@ void ensure_diversions(void) { if (linebuf[--l] != '\n') ohshit(_("diversions file has too-long line or EOF [i]")); linebuf[l]= 0; oialtname->camefrom= findnamenode(linebuf); + oialtname->useinstead= 0; if (!fgets(linebuf,sizeof(linebuf),file)) if (ferror(file)) ohshite(_("read error in diversions [ii]")); @@ -362,6 +363,7 @@ void ensure_diversions(void) { if (linebuf[--l] != '\n') ohshit(_("diversions file has too-long line or EOF [ii]")); linebuf[l]= 0; oicontest->useinstead= findnamenode(linebuf); + oicontest->camefrom= 0; if (!fgets(linebuf,sizeof(linebuf),file)) if (ferror(file)) ohshite(_("read error in diversions [iii]")); diff --git a/main/main.c b/main/main.c index 047ff388..4522cb12 100644 --- a/main/main.c +++ b/main/main.c @@ -73,6 +73,7 @@ Usage: \n\ dpkg -l|--list [ ...] list packages concisely\n\ dpkg -S|--search ... find package(s) owning file(s)\n\ dpkg -C|--audit check for broken package(s)\n\ + dpkg --abort-after abort after encountering errors\n dpkg --print-architecture print target architecture (uses GCC)\n\ dpkg --print-gnu-build-architecture print GNU version of target arch\n\ dpkg --print-installation-architecture print host architecture (for inst'n)\n\ @@ -133,6 +134,7 @@ int fc_removeessential=0, fc_conflicts=0, fc_depends=0, fc_dependsversion=0; int fc_autoselect=1, fc_badpath=0, fc_overwritediverted=0, fc_architecture=0; int fc_nonroot=0, fc_overwritedir=0; +int errabort = 50; const char *admindir= ADMINDIR; const char *instdir= ""; struct packageinlist *ignoredependss=0; @@ -236,6 +238,10 @@ static void ignoredepends(const struct cmdinfo *cip, const char *value) { } } +static void setinteger(const struct cmdinfo *cip, const char *value) { + *cip->iassignto=atoi(value); +} + static void setforce(const struct cmdinfo *cip, const char *value) { const char *comma; int l; @@ -247,7 +253,7 @@ static void setforce(const struct cmdinfo *cip, const char *value) { stop with error: --refuse-,,... | --no-force-,...\n\ Forcing things:\n\ auto-select [*] (De)select packages to install (remove) them\n\ - dowgrade [*] Replace a package with a lower version\n\ + downgrade [*] Replace a package with a lower version\n\ configure-any Configure any package which may help this one\n\ hold Process incidental packages even when on hold\n\ bad-path PATH is missing important programs, problems likely\n\ @@ -334,6 +340,7 @@ static const struct cmdinfo cmdinfos[]= { { "largemem", 0, 0, &f_largemem, 0, 0, 1 }, { "smallmem", 0, 0, &f_largemem, 0, 0, -1 }, { "root", 0, 1, 0, 0, setroot }, + { "abort-after", 0, 1, &errabort, 0, setinteger, 0 }, { "admindir", 0, 1, 0, &admindir, 0 }, { "instdir", 0, 1, 0, &instdir, 0 }, { "ignore-depends", 0, 1, 0, 0, ignoredepends }, diff --git a/main/main.h b/main/main.h index 3c9c747a..00c88868 100644 --- a/main/main.h +++ b/main/main.h @@ -85,6 +85,7 @@ extern int fc_removeessential, fc_conflicts, fc_depends, fc_dependsversion; extern int fc_autoselect, fc_badpath, fc_overwritediverted, fc_architecture; extern int fc_nonroot, fc_overwritedir; +extern int errabort; extern const char *admindir; extern const char *instdir; extern struct packageinlist *ignoredependss; diff --git a/methods/disk.setup b/methods/disk.setup index 8bbb5cfe..f7113cd3 100644 --- a/methods/disk.setup +++ b/methods/disk.setup @@ -6,7 +6,7 @@ method=$2 option=$3 cd "$vardir/methods/disk" -tp=/tmp/ddm$$ +tp=/var/run/ddm$$ iarch=`dpkg --print-installation-architecture` diff --git a/po/en.po b/po/en.po index a4d3fb59..bbb4a543 100644 --- a/po/en.po +++ b/po/en.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 1998-11-01 17:14+0000\n" +"POT-Creation-Date: 1999-01-31 05:45-0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -1725,40 +1725,40 @@ msgstr "fgets gave an empty string from diversions [i]" msgid "diversions file has too-long line or EOF [i]" msgstr "diversions file has too-long line or EOF [i]" -#: main/filesdb.c:358 +#: main/filesdb.c:359 msgid "read error in diversions [ii]" msgstr "read error in diversions [ii]" -#: main/filesdb.c:359 +#: main/filesdb.c:360 msgid "unexpected EOF in diversions [ii]" msgstr "unexpected EOF in diversions [ii]" -#: main/filesdb.c:361 +#: main/filesdb.c:362 msgid "fgets gave an empty string from diversions [ii]" msgstr "fgets gave an empty string from diversions [ii]" -#: main/filesdb.c:362 main/filesdb.c:371 +#: main/filesdb.c:363 main/filesdb.c:373 msgid "diversions file has too-long line or EOF [ii]" msgstr "diversions file has too-long line or EOF [ii]" -#: main/filesdb.c:367 +#: main/filesdb.c:369 msgid "read error in diversions [iii]" msgstr "read error in diversions [iii]" -#: main/filesdb.c:368 +#: main/filesdb.c:370 msgid "unexpected EOF in diversions [iii]" msgstr "unexpected EOF in diversions [iii]" -#: main/filesdb.c:370 +#: main/filesdb.c:372 msgid "fgets gave an empty string from diversions [iii]" msgstr "fgets gave an empty string from diversions [iii]" -#: main/filesdb.c:378 +#: main/filesdb.c:380 #, c-format msgid "conflicting diversions involving `%.250s' or `%.250s'" msgstr "conflicting diversions involving `%.250s' or `%.250s'" -#: main/filesdb.c:387 +#: main/filesdb.c:389 msgid "read error in diversions [i]" msgstr "read error in diversions [i]" @@ -1906,7 +1906,7 @@ msgstr "" "conditions. There is NO warranty. See dpkg --licence for details.\n" #: main/main.c:57 -#, fuzzy, c-format +#, fuzzy msgid "" "Usage: \n" " dpkg -i|--install <.deb file name> ... | -R|--recursive ...\n" @@ -1927,24 +1927,8 @@ msgid "" " dpkg -l|--list [ ...] list packages concisely\n" " dpkg -S|--search ... find package(s) owning file(s)\n" " dpkg -C|--audit check for broken package(s)\n" -" dpkg --print-architecture print target architecture (uses " -"GCC)\n" -" dpkg --print-gnu-build-architecture print GNU version of target arch\n" -" dpkg --print-installation-architecture print host architecture (for " -"inst'n)\n" -" dpkg --compare-versions compare version numbers - see " -"below\n" -" dpkg --help | --version show this help / version number\n" -" dpkg --force-help | -Dh|--debug=help help on forcing resp. debugging\n" -" dpkg --licence print copyright licencing terms\n" -"\n" -"Use dpkg -b|--build|-c|--contents|-e|--control|-I|--info|-f|--field|\n" -" -x|--extract|-X|--vextract|--fsys-tarfile on archives (type %s --help.)\n" -"\n" -"For internal use: dpkg --assert-support-predepends | --predep-package |\n" -" --assert-working-epoch\n" -"\n" -"Options:" +" dpkg --abort-after abort after encountering " +"errors\n" msgstr "" "Usage: \n" " dpkg -i|--install <.deb file name> ... | -R|--recursive ...\n" @@ -2007,7 +1991,7 @@ msgstr "" "\n" "Use `dselect' for user-friendly package management.\n" -#: main/main.c:116 +#: main/main.c:117 msgid "" "Type dpkg --help for help about installing and deinstalling packages [*];\n" "Use dselect for user-friendly package management;\n" @@ -2031,22 +2015,22 @@ msgstr "" "Options marked [*] produce a lot of output - pipe it through `less' or " "`more' !" -#: dpkg-deb/main.c:130 main/main.c:171 split/main.c:142 +#: dpkg-deb/main.c:130 main/main.c:173 split/main.c:142 #, c-format msgid "conflicting actions --%s and --%s" msgstr "conflicting actions --%s and --%s" -#: main/main.c:223 +#: main/main.c:225 #, c-format msgid "null package name in --ignore-depends comma-separated list `%.250s'" msgstr "null package name in --ignore-depends comma-separated list `%.250s'" -#: main/main.c:229 +#: main/main.c:231 #, c-format msgid "--ignore-depends requires a legal package name. `%.250s' is not; %s" msgstr "--ignore-depends requires a legal package name. `%.250s' is not; %s" -#: main/main.c:245 +#: main/main.c:251 #, fuzzy msgid "" "dpkg forcing options - control behaviour when problems found:\n" @@ -2054,7 +2038,7 @@ msgid "" " stop with error: --refuse-,,... | --no-force-,...\n" " Forcing things:\n" " auto-select [*] (De)select packages to install (remove) them\n" -" dowgrade [*] Replace a package with a lower version\n" +" downgrade [*] Replace a package with a lower version\n" " configure-any Configure any package which may help this one\n" " hold Process incidental packages even when on hold\n" " bad-path PATH is missing important programs, problems " @@ -2101,16 +2085,16 @@ msgstr "" "WARNING - use of options marked [!] can seriously damage your installation.\n" "Forcing options marked [*] are enabled by default.\n" -#: main/main.c:277 +#: main/main.c:283 #, c-format msgid "unknown force/refuse option `%.*s'" msgstr "unknown force/refuse option `%.*s'" -#: main/main.c:353 +#: main/main.c:360 msgid "failed to exec dpkg-deb" msgstr "failed to exec dpkg-deb" -#: dpkg-deb/main.c:150 main/main.c:389 split/main.c:163 +#: dpkg-deb/main.c:150 main/main.c:396 split/main.c:163 msgid "need an action option" msgstr "need an action option" diff --git a/po/fr.po b/po/fr.po index 1487a29a..7180fd68 100644 --- a/po/fr.po +++ b/po/fr.po @@ -17,7 +17,7 @@ msgid "" msgstr "" "Project-Id-Version: Debian dpkg 1.4.0.14\n" -"POT-Creation-Date: 1998-11-01 17:14+0000\n" +"POT-Creation-Date: 1999-01-31 05:45-0800\n" "PO-Revision-Date: 1997-05-13 22:07 EDT\n" "Last-Translator: Christophe Le Bars \n" "Language-Team: French\n" @@ -1864,40 +1864,40 @@ msgstr "\"fgets\" a donn msgid "diversions file has too-long line or EOF [i]" msgstr "le fichier des détournements a une ligne trop longue ou EOF [i]" -#: main/filesdb.c:358 +#: main/filesdb.c:359 msgid "read error in diversions [ii]" msgstr "erreur de lecture dans les détournements [ii]" -#: main/filesdb.c:359 +#: main/filesdb.c:360 msgid "unexpected EOF in diversions [ii]" msgstr "EOF inattendu dans les détournements [ii]" -#: main/filesdb.c:361 +#: main/filesdb.c:362 msgid "fgets gave an empty string from diversions [ii]" msgstr "\"fgets\" a donné une chaine vide pour les détournements [ii]" -#: main/filesdb.c:362 main/filesdb.c:371 +#: main/filesdb.c:363 main/filesdb.c:373 msgid "diversions file has too-long line or EOF [ii]" msgstr "le fichier des détournements a une ligne trop longue ou EOF [ii]" -#: main/filesdb.c:367 +#: main/filesdb.c:369 msgid "read error in diversions [iii]" msgstr "erreur de lecture dans les détournements [iii]" -#: main/filesdb.c:368 +#: main/filesdb.c:370 msgid "unexpected EOF in diversions [iii]" msgstr "EOF inattendu dans les détournements [iii]" -#: main/filesdb.c:370 +#: main/filesdb.c:372 msgid "fgets gave an empty string from diversions [iii]" msgstr "\"fgets\" a donné une chaine vide pour les détournements [iii]" -#: main/filesdb.c:378 +#: main/filesdb.c:380 #, c-format msgid "conflicting diversions involving `%.250s' or `%.250s'" msgstr "détournements contradictoires impliquant `%.250s' ou `%.250s'" -#: main/filesdb.c:387 +#: main/filesdb.c:389 msgid "read error in diversions [i]" msgstr "erreur de lecture dans les détournements [i]" @@ -2048,7 +2048,7 @@ msgstr "" "les détails.\n" #: main/main.c:57 -#, fuzzy, c-format +#, fuzzy msgid "" "Usage: \n" " dpkg -i|--install <.deb file name> ... | -R|--recursive ...\n" @@ -2069,24 +2069,8 @@ msgid "" " dpkg -l|--list [ ...] list packages concisely\n" " dpkg -S|--search ... find package(s) owning file(s)\n" " dpkg -C|--audit check for broken package(s)\n" -" dpkg --print-architecture print target architecture (uses " -"GCC)\n" -" dpkg --print-gnu-build-architecture print GNU version of target arch\n" -" dpkg --print-installation-architecture print host architecture (for " -"inst'n)\n" -" dpkg --compare-versions compare version numbers - see " -"below\n" -" dpkg --help | --version show this help / version number\n" -" dpkg --force-help | -Dh|--debug=help help on forcing resp. debugging\n" -" dpkg --licence print copyright licencing terms\n" -"\n" -"Use dpkg -b|--build|-c|--contents|-e|--control|-I|--info|-f|--field|\n" -" -x|--extract|-X|--vextract|--fsys-tarfile on archives (type %s --help.)\n" -"\n" -"For internal use: dpkg --assert-support-predepends | --predep-package |\n" -" --assert-working-epoch\n" -"\n" -"Options:" +" dpkg --abort-after abort after encountering " +"errors\n" msgstr "" "Syntaxe: \n" " dpkg -i|--install ... | -R|--recursive ...\n" @@ -2164,7 +2148,7 @@ msgstr "" "\n" "Use `dselect' for user-friendly package management.\n" -#: main/main.c:116 +#: main/main.c:117 msgid "" "Type dpkg --help for help about installing and deinstalling packages [*];\n" "Use dselect for user-friendly package management;\n" @@ -2189,23 +2173,23 @@ msgstr "" "Les options marquées de [*] produisent un affichage important - tuber-les à " "travers `less' ou `more' !" -#: dpkg-deb/main.c:130 main/main.c:171 split/main.c:142 +#: dpkg-deb/main.c:130 main/main.c:173 split/main.c:142 #, c-format msgid "conflicting actions --%s and --%s" msgstr "actions conflictuelles --%s et --%s" -#: main/main.c:223 +#: main/main.c:225 #, c-format msgid "null package name in --ignore-depends comma-separated list `%.250s'" msgstr "nom de paquet vide dans la liste `%.250s' de --ignore-depends" -#: main/main.c:229 +#: main/main.c:231 #, c-format msgid "--ignore-depends requires a legal package name. `%.250s' is not; %s" msgstr "" "--ignore-depends requiert un nom de paquet légal. `%.250s' ne l'est pas; %s" -#: main/main.c:245 +#: main/main.c:251 #, fuzzy msgid "" "dpkg forcing options - control behaviour when problems found:\n" @@ -2213,7 +2197,7 @@ msgid "" " stop with error: --refuse-,,... | --no-force-,...\n" " Forcing things:\n" " auto-select [*] (De)select packages to install (remove) them\n" -" dowgrade [*] Replace a package with a lower version\n" +" downgrade [*] Replace a package with a lower version\n" " configure-any Configure any package which may help this one\n" " hold Process incidental packages even when on hold\n" " bad-path PATH is missing important programs, problems " @@ -2267,16 +2251,16 @@ msgstr "" "votre installation.\n" "Les options de forçage marquées [*] sont activées par défaut.\n" -#: main/main.c:277 +#: main/main.c:283 #, c-format msgid "unknown force/refuse option `%.*s'" msgstr "option de forçage `%.*s' inconnue" -#: main/main.c:353 +#: main/main.c:360 msgid "failed to exec dpkg-deb" msgstr "échec pour exécuter \"dpkg-deb\"" -#: dpkg-deb/main.c:150 main/main.c:389 split/main.c:163 +#: dpkg-deb/main.c:150 main/main.c:396 split/main.c:163 msgid "need an action option" msgstr "manque une option d'action" diff --git a/scripts/controllib.pl b/scripts/controllib.pl index de961cf7..a4df97ae 100755 --- a/scripts/controllib.pl +++ b/scripts/controllib.pl @@ -90,7 +90,7 @@ sub substvars { sub outputclose { my ($dosubstvars) = @_; for $f (keys %f) { $substvar{"F:$f"}= $f{$f}; } - if (length($varlistfile)) { + if (length($varlistfile) and $dosubstvars) { $varlistfile="./$varlistfile" if $varlistfile =~ m/\s/; if (open(SV,"< $varlistfile")) { while () { @@ -101,7 +101,7 @@ sub outputclose { $substvar{$1}= $'; } close(SV); - } elsif ($! !~ m/no such file or directory/i) { + } elsif ($! != ENOENT ) { &error("unable to open substvars file $varlistfile: $!"); } } diff --git a/scripts/dpkg-divert.pl b/scripts/dpkg-divert.pl index ce58e8d9..a6bb5fcd 100755 --- a/scripts/dpkg-divert.pl +++ b/scripts/dpkg-divert.pl @@ -99,6 +99,7 @@ if ($mode eq 'add') { @ARGV == 1 || &badusage("--add needs a single argument"); $file= $ARGV[0]; $file =~ m/\n/ && &badusage("file may not contain newlines"); + -d $file && &badusage("Cannot divert directories"); $divertto= "$file.distrib" unless defined($divertto); $package= ':' unless defined($package); for ($i=0; $i<=$#contest; $i++) { diff --git a/scripts/dpkg-genchanges.pl b/scripts/dpkg-genchanges.pl index 06e00c25..1b49949e 100755 --- a/scripts/dpkg-genchanges.pl +++ b/scripts/dpkg-genchanges.pl @@ -102,7 +102,7 @@ while (@ARGV) { $fileslistfile="./$fileslistfile" if $fileslistfile =~ m/^\s/; open(FL,"< $fileslistfile") || &syserr("cannot read files list file"); while() { - if (m/^(([-+.0-9a-z]+)_([^_]+)_(\w+)\.deb) (\S+) (\S+)$/) { + if (m/^(([-+.0-9a-z]+)_([^_]+)_([-\w]+)\.deb) (\S+) (\S+)$/) { defined($p2f{"$2 $4"}) && &warn("duplicate files list entry for package $2 (line $.)"); $f2p{$1}= $2; diff --git a/scripts/update-alternatives.pl b/scripts/update-alternatives.pl index 722250ed..4add41c9 100755 --- a/scripts/update-alternatives.pl +++ b/scripts/update-alternatives.pl @@ -110,6 +110,7 @@ if (open(AF,"$admindir/$name")) { } while (($version= &gl("version")) ne '') { defined($versionnum{$version}) && &badfmt("duplicate path $tver"); + if ( -r $version ) { push(@versions,$version); $versionnum{$version}= $i= $#versions; $priority= &gl("priority"); @@ -118,6 +119,14 @@ if (open(AF,"$admindir/$name")) { for ($j=0; $j<=$#slavenames; $j++) { $slavepath{$i,$j}= &gl("spath"); } + } else { + # File not found - remove + &pr("Alternative for $name points to $version - which wasn't found. Removing from list of alternatives."); + &gl("priority"); + for ($j=0; $j<=$#slavenames; $j++) { + &gl("spath"); + } + } } close(AF); $dataread=1; diff --git a/scripts/update-rc.d.8 b/scripts/update-rc.d.8 index 480c86d0..ba7909a3 100644 --- a/scripts/update-rc.d.8 +++ b/scripts/update-rc.d.8 @@ -137,6 +137,15 @@ Any files in the directories that are not symbolic links to the script .BI /etc/init.d/ name will be left untouched. +.SH OPTIONS +.TP +.I -n +Don't do anything, just show what we would do. +.TP +.I -f +Force removal of symlinks even if +.BI /etc/init.d/ name +still exists. .SH EXAMPLES Insert links using the defaults: .nf -- 2.39.5