Просмотр исходного кода

1.4.1.1 changes by Wichert Akkerman

Guy Maor лет назад: 27
Родитель
Сommit
635b978983

+ 1 - 0
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 <file>.gz if <file> can't be found ?

+ 1 - 1
debian/50dpkg-dev.el

@@ -4,5 +4,5 @@
 ;; Copyright (C) 1997, Klee Dienes <klee@mit.edu>
 ;; 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)

+ 30 - 0
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
+    <vincent@waw.com> 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 <wakkerma@debian.org>  Mon,  1 Feb 1999 00:44:01 +0100
+
 dpkg (1.4.1) unstable; urgency=low
 
   * Maintainer release by IWJ.

+ 1 - 1
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.

+ 4 - 2
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) \

+ 1 - 1
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)

+ 2 - 2
doc/manuals-version

@@ -1,2 +1,2 @@
-<!entity manuals-version "">
-<!entity dpkg-version "1.4.1">
+<!entity manuals-version "1.4.1.1">
+<!entity dpkg-version "1.4.1.1">

+ 4 - 1
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)

+ 1 - 1
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++;
 }

+ 2 - 0
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]"));

+ 8 - 1
main/main.c

@@ -73,6 +73,7 @@ Usage: \n\
   dpkg -l|--list [<pattern> ...]          list packages concisely\n\
   dpkg -S|--search <pattern> ...          find package(s) owning file(s)\n\
   dpkg -C|--audit                         check for broken package(s)\n\
+  dpkg --abort-after <n>                  abort after encountering <n> 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-<thing>,<thing>,... | --no-force-<thing>,...\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                 },

+ 1 - 0
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;

+ 1 - 1
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`
 

+ 22 - 38
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 <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\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 <dir> ...\n"
@@ -1927,24 +1927,8 @@ msgid ""
 "  dpkg -l|--list [<pattern> ...]          list packages concisely\n"
 "  dpkg -S|--search <pattern> ...          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 <a> <rel> <b>   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 <n>                  abort after encountering <n> "
+"errors\n"
 msgstr ""
 "Usage: \n"
 "  dpkg -i|--install      <.deb file name> ... | -R|--recursive <dir> ...\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-<thing>,<thing>,... | --no-force-<thing>,...\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"
 

+ 22 - 38
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 <clebars@debian.org>\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 <dir> ...\n"
@@ -2069,24 +2069,8 @@ msgid ""
 "  dpkg -l|--list [<pattern> ...]          list packages concisely\n"
 "  dpkg -S|--search <pattern> ...          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 <a> <rel> <b>   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 <n>                  abort after encountering <n> "
+"errors\n"
 msgstr ""
 "Syntaxe: \n"
 "  dpkg -i|--install      <nom fichier .deb> ... | -R|--recursive <rép> ...\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-<thing>,<thing>,... | --no-force-<thing>,...\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"
 

+ 2 - 2
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 (<SV>) {
@@ -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: $!");
         }
     }

+ 1 - 0
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++) {

+ 1 - 1
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(<FL>) {
-    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;

+ 9 - 0
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;

+ 9 - 0
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