Browse Source

Merge branch 'sid' (through tag '1.15.8.4')

Conflicts:
	debian/changelog
	scripts/po/de.po
Guillem Jover 16 years ago
parent
commit
b4513f1449
96 changed files with 9420 additions and 8709 deletions
  1. 28 0
      debian/changelog
  2. 1 1
      dselect/po/bs.po
  3. 1 1
      dselect/po/ca.po
  4. 1 1
      dselect/po/cs.po
  5. 1 1
      dselect/po/da.po
  6. 1 1
      dselect/po/de.po
  7. 2 2
      dselect/po/dselect.pot
  8. 1 1
      dselect/po/el.po
  9. 1 1
      dselect/po/es.po
  10. 1 1
      dselect/po/et.po
  11. 1 1
      dselect/po/eu.po
  12. 1 1
      dselect/po/fr.po
  13. 1 1
      dselect/po/gl.po
  14. 1 1
      dselect/po/hu.po
  15. 1 1
      dselect/po/id.po
  16. 1 1
      dselect/po/it.po
  17. 1 1
      dselect/po/ja.po
  18. 1 1
      dselect/po/ko.po
  19. 1 1
      dselect/po/nb.po
  20. 1 1
      dselect/po/nl.po
  21. 1 1
      dselect/po/nn.po
  22. 1 1
      dselect/po/pl.po
  23. 1 1
      dselect/po/pt.po
  24. 1 1
      dselect/po/pt_BR.po
  25. 1 1
      dselect/po/ro.po
  26. 1 1
      dselect/po/ru.po
  27. 1 1
      dselect/po/sk.po
  28. 1 1
      dselect/po/sv.po
  29. 1 1
      dselect/po/tl.po
  30. 1 1
      dselect/po/vi.po
  31. 1 1
      dselect/po/zh_CN.po
  32. 1 1
      dselect/po/zh_TW.po
  33. 5 3
      lib/dpkg/dbmodify.c
  34. 4 1
      lib/dpkg/dpkg-db.h
  35. 8 19
      lib/dpkg/fields.c
  36. 4 1
      lib/dpkg/parse.c
  37. 4 0
      lib/dpkg/parsedump.h
  38. 76 2
      lib/dpkg/parsehelp.c
  39. 4 0
      man/Makefile.am
  40. 225 210
      po/ast.po
  41. 216 206
      po/bs.po
  42. 223 209
      po/ca.po
  43. 225 210
      po/cs.po
  44. 223 209
      po/da.po
  45. 225 210
      po/de.po
  46. 217 207
      po/dpkg.pot
  47. 223 209
      po/dz.po
  48. 223 209
      po/el.po
  49. 225 210
      po/eo.po
  50. 223 209
      po/es.po
  51. 223 208
      po/et.po
  52. 225 210
      po/eu.po
  53. 225 210
      po/fr.po
  54. 223 209
      po/gl.po
  55. 223 209
      po/hu.po
  56. 223 209
      po/id.po
  57. 225 210
      po/it.po
  58. 223 209
      po/ja.po
  59. 223 209
      po/km.po
  60. 223 209
      po/ko.po
  61. 223 212
      po/ku.po
  62. 223 209
      po/lt.po
  63. 223 209
      po/mr.po
  64. 223 209
      po/nb.po
  65. 223 209
      po/ne.po
  66. 223 209
      po/nl.po
  67. 223 209
      po/nn.po
  68. 221 210
      po/pa.po
  69. 225 210
      po/pl.po
  70. 223 209
      po/pt.po
  71. 223 209
      po/pt_BR.po
  72. 223 209
      po/ro.po
  73. 225 210
      po/ru.po
  74. 225 210
      po/sk.po
  75. 225 210
      po/sv.po
  76. 223 209
      po/th.po
  77. 223 209
      po/tl.po
  78. 223 209
      po/vi.po
  79. 225 210
      po/zh_CN.po
  80. 223 209
      po/zh_TW.po
  81. 19 6
      scripts/Dpkg/Shlibs/Objdump.pm
  82. 5 6
      scripts/po/ca.po
  83. 6 7
      scripts/po/de.po
  84. 6 7
      scripts/po/dpkg-dev.pot
  85. 5 6
      scripts/po/es.po
  86. 5 6
      scripts/po/fr.po
  87. 5 6
      scripts/po/pl.po
  88. 5 6
      scripts/po/ru.po
  89. 5 6
      scripts/po/sv.po
  90. 4 0
      src/cleanup.c
  91. 2 2
      src/statcmd.c
  92. 1 1
      src/statdb.c
  93. 2 1
      src/update.c
  94. 1 0
      utils/Makefile.am
  95. 14 2
      utils/t/100_update_alternatives.t
  96. 18 10
      utils/update-alternatives.c

+ 28 - 0
debian/changelog

@@ -11,6 +11,34 @@ dpkg (1.15.9) UNRELEASED; urgency=low
 
 
  -- Guillem Jover <guillem@debian.org>  Thu, 29 Jul 2010 11:00:22 +0200
  -- Guillem Jover <guillem@debian.org>  Thu, 29 Jul 2010 11:00:22 +0200
 
 
+dpkg (1.15.8.4) unstable; urgency=low
+
+  [ Guillem Jover ]
+  * Fix use after free segfault on update-alternatives --remove-all.
+    Closes: #591653, #591654
+  * Always print a massage on warning when parsing control files.
+  * On database parsing only warn on bogus versions previously accepted,
+    the other instances will keep producing errors, to avoid newly
+    introduced bogosity. Closes: #590885, #590896, #591692, #591885
+  * Fix compilation on Solaris and Darwin:
+    - Link update-alternatives against libintl if libc does not have i18n
+      support.
+    - Include <limits.h> for _POSIX_MAX_PATH in update-alternatives.
+    Thanks to Fabian Groffen <grobian@gentoo.org>.
+
+  [ Raphaël Hertzog ]
+  * Fix make -C man install so that it actually finds the manual pages
+    to install. Closes: #591588
+  * When analyzing the ELF format of a binary in dpkg-shlibdeps, fallback on
+    usual objdump when the cross objdump failed. Closes: #591522
+
+  [ Sven Joachim ]
+  * Ensure removal of leftover backup .dpkg-tmp files after unpacking
+    failures, when the backup is still a hard link to the original file.
+    Closes: #591993
+
+ -- Guillem Jover <guillem@debian.org>  Fri, 13 Aug 2010 06:02:10 +0200
+
 dpkg (1.15.8.3) unstable; urgency=low
 dpkg (1.15.8.3) unstable; urgency=low
 
 
   [ Raphaël Hertzog ]
   [ Raphaël Hertzog ]

+ 1 - 1
dselect/po/bs.po

@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 msgstr ""
 "Project-Id-Version: dpkg 1.13\n"
 "Project-Id-Version: dpkg 1.13\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
-"POT-Creation-Date: 2010-07-29 10:31+0200\n"
+"POT-Creation-Date: 2010-08-13 06:12+0200\n"
 "PO-Revision-Date: 2006-02-17 08:55+0200\n"
 "PO-Revision-Date: 2006-02-17 08:55+0200\n"
 "Last-Translator: Safir Šećerović <sapphire@linux.org.ba>\n"
 "Last-Translator: Safir Šećerović <sapphire@linux.org.ba>\n"
 "Language-Team: Bosnian <lokal@linux.org.ba>\n"
 "Language-Team: Bosnian <lokal@linux.org.ba>\n"

+ 1 - 1
dselect/po/ca.po

@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 msgstr ""
 "Project-Id-Version: dpkg 1.15.6\n"
 "Project-Id-Version: dpkg 1.15.6\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
-"POT-Creation-Date: 2010-07-29 10:31+0200\n"
+"POT-Creation-Date: 2010-08-13 06:12+0200\n"
 "PO-Revision-Date: 2010-03-11 03:15+0100\n"
 "PO-Revision-Date: 2010-03-11 03:15+0100\n"
 "Last-Translator: Jordi Mallach <jordi@debian.org>\n"
 "Last-Translator: Jordi Mallach <jordi@debian.org>\n"
 "Language-Team: Catalan <debian-l10n-catalan@lists.debian.org>\n"
 "Language-Team: Catalan <debian-l10n-catalan@lists.debian.org>\n"

+ 1 - 1
dselect/po/cs.po

@@ -10,7 +10,7 @@ msgid ""
 msgstr ""
 msgstr ""
 "Project-Id-Version: dpkg\n"
 "Project-Id-Version: dpkg\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
-"POT-Creation-Date: 2010-07-29 10:31+0200\n"
+"POT-Creation-Date: 2010-08-13 06:12+0200\n"
 "PO-Revision-Date: 2009-09-11 20:35+0200\n"
 "PO-Revision-Date: 2009-09-11 20:35+0200\n"
 "Last-Translator: Miroslav Kure <kurem@debian.cz>\n"
 "Last-Translator: Miroslav Kure <kurem@debian.cz>\n"
 "Language-Team: Czech <debian-l10n-czech@lists.debian.org>\n"
 "Language-Team: Czech <debian-l10n-czech@lists.debian.org>\n"

+ 1 - 1
dselect/po/da.po

@@ -9,7 +9,7 @@ msgid ""
 msgstr ""
 msgstr ""
 "Project-Id-Version: dpkg_1.10.19_da\n"
 "Project-Id-Version: dpkg_1.10.19_da\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
-"POT-Creation-Date: 2010-07-29 10:31+0200\n"
+"POT-Creation-Date: 2010-08-13 06:12+0200\n"
 "PO-Revision-Date: 2006-10-06 16:32+0200\n"
 "PO-Revision-Date: 2006-10-06 16:32+0200\n"
 "Last-Translator: Claus Hindsgaul <claus.hindsgaul@gmail.com>\n"
 "Last-Translator: Claus Hindsgaul <claus.hindsgaul@gmail.com>\n"
 "Language-Team: Danish\n"
 "Language-Team: Danish\n"

+ 1 - 1
dselect/po/de.po

@@ -10,7 +10,7 @@ msgid ""
 msgstr ""
 msgstr ""
 "Project-Id-Version: Debian dpkg 1.15.6.1\n"
 "Project-Id-Version: Debian dpkg 1.15.6.1\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
-"POT-Creation-Date: 2010-07-29 10:31+0200\n"
+"POT-Creation-Date: 2010-08-13 06:12+0200\n"
 "PO-Revision-Date: 2010-03-31 18:55+0200\n"
 "PO-Revision-Date: 2010-03-31 18:55+0200\n"
 "Last-Translator: Sven Joachim <svenjoac@gmx.de>\n"
 "Last-Translator: Sven Joachim <svenjoac@gmx.de>\n"
 "Language-Team: German <debian-l10n-german@lists.debian.org>\n"
 "Language-Team: German <debian-l10n-german@lists.debian.org>\n"

+ 2 - 2
dselect/po/dselect.pot

@@ -6,9 +6,9 @@
 #, fuzzy
 #, fuzzy
 msgid ""
 msgid ""
 msgstr ""
 msgstr ""
-"Project-Id-Version: dpkg 1.15.7.2-214-g8b511-dirty\n"
+"Project-Id-Version: dpkg 1.15.8.4\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
-"POT-Creation-Date: 2010-07-29 10:31+0200\n"
+"POT-Creation-Date: 2010-08-13 06:12+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"

+ 1 - 1
dselect/po/el.po

@@ -13,7 +13,7 @@ msgid ""
 msgstr ""
 msgstr ""
 "Project-Id-Version: dpkg_po_el\n"
 "Project-Id-Version: dpkg_po_el\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
-"POT-Creation-Date: 2010-07-29 10:31+0200\n"
+"POT-Creation-Date: 2010-08-13 06:12+0200\n"
 "PO-Revision-Date: 2006-02-17 08:56+0200\n"
 "PO-Revision-Date: 2006-02-17 08:56+0200\n"
 "Last-Translator: quad-nrg.net <galaxico@quad-nrg.net>\n"
 "Last-Translator: quad-nrg.net <galaxico@quad-nrg.net>\n"
 "Language-Team: Greek <debian-l10n-greek@lists.debian.org>\n"
 "Language-Team: Greek <debian-l10n-greek@lists.debian.org>\n"

+ 1 - 1
dselect/po/es.po

@@ -10,7 +10,7 @@ msgid ""
 msgstr ""
 msgstr ""
 "Project-Id-Version: Debian dpkg 1.10.18\n"
 "Project-Id-Version: Debian dpkg 1.10.18\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
-"POT-Creation-Date: 2010-07-29 10:31+0200\n"
+"POT-Creation-Date: 2010-08-13 06:12+0200\n"
 "PO-Revision-Date: 2010-03-07 09:18+0100\n"
 "PO-Revision-Date: 2010-03-07 09:18+0100\n"
 "Last-Translator: Javier Fernández-Sanguino <jfs@debian.org>\n"
 "Last-Translator: Javier Fernández-Sanguino <jfs@debian.org>\n"
 "Language-Team: Spanish <debian-l10n-spanish@lists.debian.org>\n"
 "Language-Team: Spanish <debian-l10n-spanish@lists.debian.org>\n"

+ 1 - 1
dselect/po/et.po

@@ -10,7 +10,7 @@ msgid ""
 msgstr ""
 msgstr ""
 "Project-Id-Version: dselect 1.14.5\n"
 "Project-Id-Version: dselect 1.14.5\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
-"POT-Creation-Date: 2010-07-29 10:31+0200\n"
+"POT-Creation-Date: 2010-08-13 06:12+0200\n"
 "PO-Revision-Date: 2007-07-13 08:22+0300\n"
 "PO-Revision-Date: 2007-07-13 08:22+0300\n"
 "Last-Translator: Ivar Smolin <okul@linux.ee>\n"
 "Last-Translator: Ivar Smolin <okul@linux.ee>\n"
 "Language-Team: Estonian <et@li.org>\n"
 "Language-Team: Estonian <et@li.org>\n"

+ 1 - 1
dselect/po/eu.po

@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 msgstr ""
 "Project-Id-Version: eu\n"
 "Project-Id-Version: eu\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
-"POT-Creation-Date: 2010-07-29 10:31+0200\n"
+"POT-Creation-Date: 2010-08-13 06:12+0200\n"
 "PO-Revision-Date: 2009-01-05 16:29+0100\n"
 "PO-Revision-Date: 2009-01-05 16:29+0100\n"
 "Last-Translator: Piarres Beobide <pi@beobide.net>\n"
 "Last-Translator: Piarres Beobide <pi@beobide.net>\n"
 "Language-Team: Euskara <debian-l10n-basque@lists.debian.org>\n"
 "Language-Team: Euskara <debian-l10n-basque@lists.debian.org>\n"

+ 1 - 1
dselect/po/fr.po

@@ -50,7 +50,7 @@ msgid ""
 msgstr ""
 msgstr ""
 "Project-Id-Version: \n"
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
-"POT-Creation-Date: 2010-07-29 10:31+0200\n"
+"POT-Creation-Date: 2010-08-13 06:12+0200\n"
 "PO-Revision-Date: 2010-03-12 07:16+0100\n"
 "PO-Revision-Date: 2010-03-12 07:16+0100\n"
 "Last-Translator: Christian Perrier <bubulle@debian.org>\n"
 "Last-Translator: Christian Perrier <bubulle@debian.org>\n"
 "Language-Team: fr <debian-l10n-french@lists.debian.org>\n"
 "Language-Team: fr <debian-l10n-french@lists.debian.org>\n"

+ 1 - 1
dselect/po/gl.po

@@ -9,7 +9,7 @@ msgid ""
 msgstr ""
 msgstr ""
 "Project-Id-Version: dselect_gl\n"
 "Project-Id-Version: dselect_gl\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
-"POT-Creation-Date: 2010-07-29 10:31+0200\n"
+"POT-Creation-Date: 2010-08-13 06:12+0200\n"
 "PO-Revision-Date: 2008-12-27 15:56+0100\n"
 "PO-Revision-Date: 2008-12-27 15:56+0100\n"
 "Last-Translator: mvillarino <mvillarino@users.sourceforge.net>\n"
 "Last-Translator: mvillarino <mvillarino@users.sourceforge.net>\n"
 "Language-Team: galician <proxecto@trasno.net>\n"
 "Language-Team: galician <proxecto@trasno.net>\n"

+ 1 - 1
dselect/po/hu.po

@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 msgstr ""
 "Project-Id-Version: \n"
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
-"POT-Creation-Date: 2010-07-29 10:31+0200\n"
+"POT-Creation-Date: 2010-08-13 06:12+0200\n"
 "PO-Revision-Date: 2006-10-06 03:48+0100\n"
 "PO-Revision-Date: 2006-10-06 03:48+0100\n"
 "Last-Translator: SZERVÁC Attila <sas@321.hu>\n"
 "Last-Translator: SZERVÁC Attila <sas@321.hu>\n"
 "Language-Team: Hungarian\n"
 "Language-Team: Hungarian\n"

+ 1 - 1
dselect/po/id.po

@@ -9,7 +9,7 @@ msgid ""
 msgstr ""
 msgstr ""
 "Project-Id-Version: dpkg 1.13\n"
 "Project-Id-Version: dpkg 1.13\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
-"POT-Creation-Date: 2010-07-29 10:31+0200\n"
+"POT-Creation-Date: 2010-08-13 06:12+0200\n"
 "PO-Revision-Date: 2006-10-06 20:20+0700\n"
 "PO-Revision-Date: 2006-10-06 20:20+0700\n"
 "Last-Translator: Arief S Fitrianto <arief@gurame.fisika.ui.ac.id>\n"
 "Last-Translator: Arief S Fitrianto <arief@gurame.fisika.ui.ac.id>\n"
 "Language-Team: Debian Indonesia L10N Team <debian-l10n-id@gurame.fisika.ui."
 "Language-Team: Debian Indonesia L10N Team <debian-l10n-id@gurame.fisika.ui."

+ 1 - 1
dselect/po/it.po

@@ -43,7 +43,7 @@ msgid ""
 msgstr ""
 msgstr ""
 "Project-Id-Version: dpkg 1.10.22\n"
 "Project-Id-Version: dpkg 1.10.22\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
-"POT-Creation-Date: 2010-07-29 10:31+0200\n"
+"POT-Creation-Date: 2010-08-13 06:12+0200\n"
 "PO-Revision-Date: 2006-10-06 22:01+0200\n"
 "PO-Revision-Date: 2006-10-06 22:01+0200\n"
 "Last-Translator: Stefano Canepa <sc@linux.it>\n"
 "Last-Translator: Stefano Canepa <sc@linux.it>\n"
 "Language-Team: italian <debian-l10n-italian@debian.org>\n"
 "Language-Team: italian <debian-l10n-italian@debian.org>\n"

+ 1 - 1
dselect/po/ja.po

@@ -19,7 +19,7 @@ msgid ""
 msgstr ""
 msgstr ""
 "Project-Id-Version: dpkg 1.13\n"
 "Project-Id-Version: dpkg 1.13\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
-"POT-Creation-Date: 2010-07-29 10:31+0200\n"
+"POT-Creation-Date: 2010-08-13 06:12+0200\n"
 "PO-Revision-Date: 2006-10-06 20:05+0900\n"
 "PO-Revision-Date: 2006-10-06 20:05+0900\n"
 "Last-Translator: Kenshi Muto <kmuto@debian.org>\n"
 "Last-Translator: Kenshi Muto <kmuto@debian.org>\n"
 "Language-Team: Debian Japanease List <debian-japanese@lists.debian.org>\n"
 "Language-Team: Debian Japanease List <debian-japanese@lists.debian.org>\n"

+ 1 - 1
dselect/po/ko.po

@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 msgstr ""
 "Project-Id-Version: dpkg\n"
 "Project-Id-Version: dpkg\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
-"POT-Creation-Date: 2010-07-29 10:31+0200\n"
+"POT-Creation-Date: 2010-08-13 06:12+0200\n"
 "PO-Revision-Date: 2007-09-16 22:55-0400\n"
 "PO-Revision-Date: 2007-09-16 22:55-0400\n"
 "Last-Translator: Sunjae Park <darehanl@gmail.com>\n"
 "Last-Translator: Sunjae Park <darehanl@gmail.com>\n"
 "Language-Team: Korean <debian-l10n-korean@lists.debian.org>\n"
 "Language-Team: Korean <debian-l10n-korean@lists.debian.org>\n"

+ 1 - 1
dselect/po/nb.po

@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 msgstr ""
 "Project-Id-Version: dselect\n"
 "Project-Id-Version: dselect\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
-"POT-Creation-Date: 2010-07-29 10:31+0200\n"
+"POT-Creation-Date: 2010-08-13 06:12+0200\n"
 "PO-Revision-Date: 2009-02-01 20:24+0200\n"
 "PO-Revision-Date: 2009-02-01 20:24+0200\n"
 "Last-Translator: Hans Fredrik Nordhaug <hans@nordhaug.priv.no>\n"
 "Last-Translator: Hans Fredrik Nordhaug <hans@nordhaug.priv.no>\n"
 "Language-Team: Norwegian Bokmål <i18n-nb@lister.ping.ui.no>\n"
 "Language-Team: Norwegian Bokmål <i18n-nb@lister.ping.ui.no>\n"

+ 1 - 1
dselect/po/nl.po

@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 msgstr ""
 "Project-Id-Version: dpkg 1.9.4\n"
 "Project-Id-Version: dpkg 1.9.4\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
-"POT-Creation-Date: 2010-07-29 10:31+0200\n"
+"POT-Creation-Date: 2010-08-13 06:12+0200\n"
 "PO-Revision-Date: 2008-05-05 13:20+0100\n"
 "PO-Revision-Date: 2008-05-05 13:20+0100\n"
 "Last-Translator: Bart Cornelis <cobaco@skolelinux.no>\n"
 "Last-Translator: Bart Cornelis <cobaco@skolelinux.no>\n"
 "Language-Team: Dutch <debian-l10n-dutch@debian.org>\n"
 "Language-Team: Dutch <debian-l10n-dutch@debian.org>\n"

+ 1 - 1
dselect/po/nn.po

@@ -10,7 +10,7 @@ msgid ""
 msgstr ""
 msgstr ""
 "Project-Id-Version: debconf_nn\n"
 "Project-Id-Version: debconf_nn\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
-"POT-Creation-Date: 2010-07-29 10:31+0200\n"
+"POT-Creation-Date: 2010-08-13 06:12+0200\n"
 "PO-Revision-Date: 2006-02-17 08:57+0200\n"
 "PO-Revision-Date: 2006-02-17 08:57+0200\n"
 "Last-Translator: Håvard Korsvoll <korsvoll@skulelinux.no>\n"
 "Last-Translator: Håvard Korsvoll <korsvoll@skulelinux.no>\n"
 "Language-Team: Norwegian nynorsk <i18n-nn@lister.ping.uio.no>\n"
 "Language-Team: Norwegian nynorsk <i18n-nn@lister.ping.uio.no>\n"

+ 1 - 1
dselect/po/pl.po

@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 msgstr ""
 "Project-Id-Version: dpkg 1.15.4\n"
 "Project-Id-Version: dpkg 1.15.4\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
-"POT-Creation-Date: 2010-07-29 10:31+0200\n"
+"POT-Creation-Date: 2010-08-13 06:12+0200\n"
 "PO-Revision-Date: 2009-09-27 02:41+0100\n"
 "PO-Revision-Date: 2009-09-27 02:41+0100\n"
 "Last-Translator: Wiktor Wandachowicz <siryes@gmail.com>\n"
 "Last-Translator: Wiktor Wandachowicz <siryes@gmail.com>\n"
 "Language-Team: Polish <debian-l10n-polish@lists.debian.org>\n"
 "Language-Team: Polish <debian-l10n-polish@lists.debian.org>\n"

+ 1 - 1
dselect/po/pt.po

@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 msgstr ""
 "Project-Id-Version: dselect\n"
 "Project-Id-Version: dselect\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
-"POT-Creation-Date: 2010-07-29 10:31+0200\n"
+"POT-Creation-Date: 2010-08-13 06:12+0200\n"
 "PO-Revision-Date: 2008-12-27 16:05+0000\n"
 "PO-Revision-Date: 2008-12-27 16:05+0000\n"
 "Last-Translator: Miguel Figueiredo <elmig@debianpt.org>\n"
 "Last-Translator: Miguel Figueiredo <elmig@debianpt.org>\n"
 "Language-Team: Portuguese <traduz@debianpt.org>\n"
 "Language-Team: Portuguese <traduz@debianpt.org>\n"

+ 1 - 1
dselect/po/pt_BR.po

@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 msgstr ""
 "Project-Id-Version: dpkg 1.13\n"
 "Project-Id-Version: dpkg 1.13\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
-"POT-Creation-Date: 2010-07-29 10:31+0200\n"
+"POT-Creation-Date: 2010-08-13 06:12+0200\n"
 "PO-Revision-Date: 2008-06-09 02:53-0300\n"
 "PO-Revision-Date: 2008-06-09 02:53-0300\n"
 "Last-Translator: Felipe Augusto van de Wiel <faw@debian.org>\n"
 "Last-Translator: Felipe Augusto van de Wiel <faw@debian.org>\n"
 "Language-Team: Brazilian Portuguese <debian-l10n-portuguese@lists.debian."
 "Language-Team: Brazilian Portuguese <debian-l10n-portuguese@lists.debian."

+ 1 - 1
dselect/po/ro.po

@@ -18,7 +18,7 @@ msgid ""
 msgstr ""
 msgstr ""
 "Project-Id-Version: ro\n"
 "Project-Id-Version: ro\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
-"POT-Creation-Date: 2010-07-29 10:31+0200\n"
+"POT-Creation-Date: 2010-08-13 06:12+0200\n"
 "PO-Revision-Date: 2008-06-28 19:11+0300\n"
 "PO-Revision-Date: 2008-06-28 19:11+0300\n"
 "Last-Translator: Eddy Petrișor <eddy.petrisor@gmail.com>\n"
 "Last-Translator: Eddy Petrișor <eddy.petrisor@gmail.com>\n"
 "Language-Team: Romanian <debian-l10n-romanian@lists.debian.org>\n"
 "Language-Team: Romanian <debian-l10n-romanian@lists.debian.org>\n"

+ 1 - 1
dselect/po/ru.po

@@ -9,7 +9,7 @@ msgid ""
 msgstr ""
 msgstr ""
 "Project-Id-Version: dpkg 1.15.7.1\n"
 "Project-Id-Version: dpkg 1.15.7.1\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
-"POT-Creation-Date: 2010-07-29 10:31+0200\n"
+"POT-Creation-Date: 2010-08-13 06:12+0200\n"
 "PO-Revision-Date: 2010-04-25 22:37+0400\n"
 "PO-Revision-Date: 2010-04-25 22:37+0400\n"
 "Last-Translator: Yuri Kozlov <yuray@komyakino.ru>\n"
 "Last-Translator: Yuri Kozlov <yuray@komyakino.ru>\n"
 "Language-Team: Russian <debian-l10n-russian@lists.debian.org>\n"
 "Language-Team: Russian <debian-l10n-russian@lists.debian.org>\n"

+ 1 - 1
dselect/po/sk.po

@@ -10,7 +10,7 @@ msgid ""
 msgstr ""
 msgstr ""
 "Project-Id-Version: dpkg 1.13\n"
 "Project-Id-Version: dpkg 1.13\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
-"POT-Creation-Date: 2010-07-29 10:31+0200\n"
+"POT-Creation-Date: 2010-08-13 06:12+0200\n"
 "PO-Revision-Date: 2009-07-20 17:32+0100\n"
 "PO-Revision-Date: 2009-07-20 17:32+0100\n"
 "Last-Translator: Ivan Masár <helix84@centrum.sk>\n"
 "Last-Translator: Ivan Masár <helix84@centrum.sk>\n"
 "Language-Team: Slovak <sk-i18n@lists.linux.sk>\n"
 "Language-Team: Slovak <sk-i18n@lists.linux.sk>\n"

+ 1 - 1
dselect/po/sv.po

@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 msgstr ""
 "Project-Id-Version: dselect\n"
 "Project-Id-Version: dselect\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
-"POT-Creation-Date: 2010-07-29 10:31+0200\n"
+"POT-Creation-Date: 2010-08-13 06:12+0200\n"
 "PO-Revision-Date: 2010-03-08 13:37+0100\n"
 "PO-Revision-Date: 2010-03-08 13:37+0100\n"
 "Last-Translator: Peter Krefting <peterk@debian.org>\n"
 "Last-Translator: Peter Krefting <peterk@debian.org>\n"
 "Language-Team: Swedish <debian-l10n-swedish@lists.debian.org>\n"
 "Language-Team: Swedish <debian-l10n-swedish@lists.debian.org>\n"

+ 1 - 1
dselect/po/tl.po

@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 msgstr ""
 "Project-Id-Version: dpkg 1.13\n"
 "Project-Id-Version: dpkg 1.13\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
-"POT-Creation-Date: 2010-07-29 10:31+0200\n"
+"POT-Creation-Date: 2010-08-13 06:12+0200\n"
 "PO-Revision-Date: 2006-02-17 08:58+0200\n"
 "PO-Revision-Date: 2006-02-17 08:58+0200\n"
 "Last-Translator: Eric Pareja <xenos@upm.edu.ph>\n"
 "Last-Translator: Eric Pareja <xenos@upm.edu.ph>\n"
 "Language-Team: Tagalog <debian-tl@banwa.upm.edu.ph>\n"
 "Language-Team: Tagalog <debian-tl@banwa.upm.edu.ph>\n"

+ 1 - 1
dselect/po/vi.po

@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 msgstr ""
 "Project-Id-Version: dselect\n"
 "Project-Id-Version: dselect\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
-"POT-Creation-Date: 2010-07-29 10:31+0200\n"
+"POT-Creation-Date: 2010-08-13 06:12+0200\n"
 "PO-Revision-Date: 2006-10-09 20:37+0930\n"
 "PO-Revision-Date: 2006-10-09 20:37+0930\n"
 "Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n"
 "Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n"
 "Language-Team: Vietnamese <vi-VN@googlegroups.com>\n"
 "Language-Team: Vietnamese <vi-VN@googlegroups.com>\n"

+ 1 - 1
dselect/po/zh_CN.po

@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 msgstr ""
 "Project-Id-Version: dpkg 1.13\n"
 "Project-Id-Version: dpkg 1.13\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
-"POT-Creation-Date: 2010-07-29 10:31+0200\n"
+"POT-Creation-Date: 2010-08-13 06:12+0200\n"
 "PO-Revision-Date: 2006-05-06 20:11+0800\n"
 "PO-Revision-Date: 2006-05-06 20:11+0800\n"
 "Last-Translator: Kov Chai <tchaikov@sjtu.edu.cn>\n"
 "Last-Translator: Kov Chai <tchaikov@sjtu.edu.cn>\n"
 "Language-Team: Debian Chinese [GB] <debian-chinese-gb@lists.debian.org>\n"
 "Language-Team: Debian Chinese [GB] <debian-chinese-gb@lists.debian.org>\n"

+ 1 - 1
dselect/po/zh_TW.po

@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 msgstr ""
 "Project-Id-Version: dpkg 1.13\n"
 "Project-Id-Version: dpkg 1.13\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
-"POT-Creation-Date: 2010-07-29 10:31+0200\n"
+"POT-Creation-Date: 2010-08-13 06:12+0200\n"
 "PO-Revision-Date: 2006-02-17 08:58+0200\n"
 "PO-Revision-Date: 2006-02-17 08:58+0200\n"
 "Last-Translator: Asho Yeh <asho@debian.org.tw>\n"
 "Last-Translator: Asho Yeh <asho@debian.org.tw>\n"
 "Language-Team: Chinese (traditional) <zh-l10n@linux.org.tw>\n"
 "Language-Team: Chinese (traditional) <zh-l10n@linux.org.tw>\n"

+ 5 - 3
lib/dpkg/dbmodify.c

@@ -75,7 +75,8 @@ static void cleanupdates(void) {
   struct dirent **cdlist;
   struct dirent **cdlist;
   int cdn, i;
   int cdn, i;
 
 
-  parsedb(statusfile, pdb_weakclassification, NULL,NULL,NULL);
+  parsedb(statusfile, pdb_lax_parser | pdb_weakclassification,
+          NULL, NULL, NULL);
 
 
   *updatefnrest = '\0';
   *updatefnrest = '\0';
   updateslength= -1;
   updateslength= -1;
@@ -86,7 +87,8 @@ static void cleanupdates(void) {
     
     
     for (i=0; i<cdn; i++) {
     for (i=0; i<cdn; i++) {
       strcpy(updatefnrest, cdlist[i]->d_name);
       strcpy(updatefnrest, cdlist[i]->d_name);
-      parsedb(updatefnbuf, pdb_weakclassification, NULL,NULL,NULL);
+      parsedb(updatefnbuf, pdb_lax_parser | pdb_weakclassification,
+              NULL, NULL, NULL);
       if (cstatus < msdbrw_write) free(cdlist[i]);
       if (cstatus < msdbrw_write) free(cdlist[i]);
     }
     }
 
 
@@ -254,7 +256,7 @@ modstatdb_init(const char *admindir, enum modstatdb_rw readwritereq)
     cleanupdates();
     cleanupdates();
     if(!(cflags & msdbrw_noavail))
     if(!(cflags & msdbrw_noavail))
     parsedb(availablefile,
     parsedb(availablefile,
-            pdb_recordavailable|pdb_rejectstatus,
+            pdb_recordavailable | pdb_rejectstatus | pdb_lax_parser,
             NULL,NULL,NULL);
             NULL,NULL,NULL);
   }
   }
 
 

+ 4 - 1
lib/dpkg/dpkg-db.h

@@ -234,7 +234,10 @@ enum parsedbflags {
   pdb_rejectstatus      =002, /* Throw up an error if `Status' encountered             */
   pdb_rejectstatus      =002, /* Throw up an error if `Status' encountered             */
   pdb_weakclassification=004, /* Ignore priority/section info if we already have any   */
   pdb_weakclassification=004, /* Ignore priority/section info if we already have any   */
   pdb_ignorefiles       =010, /* Ignore files info if we already have them             */
   pdb_ignorefiles       =010, /* Ignore files info if we already have them             */
-  pdb_ignoreolder       =020  /* Ignore packages with older versions already read      */
+  /* Ignore packages with older versions already read. */
+  pdb_ignoreolder       =020,
+  /* Perform laxer parsing, used to transition to stricter parsing. */
+  pdb_lax_parser        =040,
 };
 };
 
 
 const char *illegal_packagename(const char *p, const char **ep);
 const char *illegal_packagename(const char *p, const char **ep);

+ 8 - 19
lib/dpkg/fields.c

@@ -178,12 +178,8 @@ void f_status(struct pkginfo *pigp, struct pkginfoperfile *pifp,
 void f_version(struct pkginfo *pigp, struct pkginfoperfile *pifp,
 void f_version(struct pkginfo *pigp, struct pkginfoperfile *pifp,
                struct parsedb_state *ps,
                struct parsedb_state *ps,
                const char *value, const struct fieldinfo *fip) {
                const char *value, const struct fieldinfo *fip) {
-  const char *emsg;
-  
-  emsg= parseversion(&pifp->version,value);
-  if (emsg)
-    parse_error(ps, pigp,
-                _("error in Version string `%.250s': %.250s"), value, emsg);
+  parse_db_version(ps, pigp, &pifp->version, value,
+                   _("error in Version string '%.250s'"), value);
 }  
 }  
 
 
 void f_revision(struct pkginfo *pigp, struct pkginfoperfile *pifp,
 void f_revision(struct pkginfo *pigp, struct pkginfoperfile *pifp,
@@ -205,19 +201,15 @@ void f_revision(struct pkginfo *pigp, struct pkginfoperfile *pifp,
 void f_configversion(struct pkginfo *pigp, struct pkginfoperfile *pifp,
 void f_configversion(struct pkginfo *pigp, struct pkginfoperfile *pifp,
                      struct parsedb_state *ps,
                      struct parsedb_state *ps,
                      const char *value, const struct fieldinfo *fip) {
                      const char *value, const struct fieldinfo *fip) {
-  const char *emsg;
-  
   if (ps->flags & pdb_rejectstatus)
   if (ps->flags & pdb_rejectstatus)
     parse_error(ps, pigp,
     parse_error(ps, pigp,
                 _("value for `config-version' field not allowed in this context"));
                 _("value for `config-version' field not allowed in this context"));
   if (ps->flags & pdb_recordavailable)
   if (ps->flags & pdb_recordavailable)
     return;
     return;
 
 
-  emsg= parseversion(&pigp->configversion,value);
-  if (emsg)
-    parse_error(ps, pigp,
-                _("error in Config-Version string `%.250s': %.250s"),
-                value, emsg);
+  parse_db_version(ps, pigp, &pigp->configversion, value,
+                   _("error in Config-Version string '%.250s'"), value);
+
 }
 }
 
 
 static void conffvalue_lastword(const char *value, const char *from,
 static void conffvalue_lastword(const char *value, const char *from,
@@ -426,12 +418,9 @@ void f_dependency(struct pkginfo *pigp, struct pkginfoperfile *pifp,
         varbufreset(&version);
         varbufreset(&version);
         varbufaddbuf(&version, versionstart, versionlength);
         varbufaddbuf(&version, versionstart, versionlength);
         varbufaddc(&version, '\0');
         varbufaddc(&version, '\0');
-        emsg = parseversion(&dop->version, version.buf);
-        if (emsg)
-          parse_error(ps, pigp,
-                      _("`%s' field, reference to `%.255s': "
-                        "error in version: %.255s"),
-                      fip->name, depname.buf, emsg);
+        parse_db_version(ps, pigp, &dop->version, version.buf,
+                         _("'%s' field, reference to '%.255s': "
+                           "error in version"), fip->name, depname.buf);
         p++; while (isspace(*p)) p++;
         p++; while (isspace(*p)) p++;
       } else {
       } else {
         dop->verrel= dvr_none;
         dop->verrel= dvr_none;

+ 4 - 1
lib/dpkg/parse.c

@@ -106,7 +106,10 @@ int parsedb(const char *filename, enum parsedbflags flags,
   ps.filename = filename;
   ps.filename = filename;
   ps.flags = flags;
   ps.flags = flags;
   ps.lno = 0;
   ps.lno = 0;
-  ps.warnto = warnto;
+  if (warnto == NULL)
+    ps.warnto = stderr;
+  else
+    ps.warnto = warnto;
   ps.warncount = 0;
   ps.warncount = 0;
 
 
   newpifp= (flags & pdb_recordavailable) ? &newpig.available : &newpig.installed;
   newpifp= (flags & pdb_recordavailable) ? &newpig.available : &newpig.installed;

+ 4 - 0
lib/dpkg/parsedump.h

@@ -65,6 +65,10 @@ struct fieldinfo {
   size_t integer;
   size_t integer;
 };
 };
 
 
+void parse_db_version(struct parsedb_state *ps, const struct pkginfo *pkg,
+                      struct versionrevision *version, const char *value,
+                      const char *fmt, ...) DPKG_ATTR_PRINTF(5);
+
 void parse_error(struct parsedb_state *ps, const struct pkginfo *pigp,
 void parse_error(struct parsedb_state *ps, const struct pkginfo *pigp,
                  const char *fmt, ...) DPKG_ATTR_NORET DPKG_ATTR_PRINTF(3);
                  const char *fmt, ...) DPKG_ATTR_NORET DPKG_ATTR_PRINTF(3);
 void parse_warn(struct parsedb_state *ps, const struct pkginfo *pigp,
 void parse_warn(struct parsedb_state *ps, const struct pkginfo *pigp,

+ 76 - 2
lib/dpkg/parsehelp.c

@@ -209,7 +209,9 @@ const char *versiondescribe
   return vb->buf;
   return vb->buf;
 }
 }
 
 
-const char *parseversion(struct versionrevision *rversion, const char *string) {
+static const char *
+parseversion_lax(struct versionrevision *rversion, const char *string)
+{
   char *hyphen, *colon, *eepochcolon;
   char *hyphen, *colon, *eepochcolon;
   const char *end, *ptr;
   const char *end, *ptr;
   unsigned long epoch;
   unsigned long epoch;
@@ -246,7 +248,24 @@ const char *parseversion(struct versionrevision *rversion, const char *string) {
     *hyphen++ = '\0';
     *hyphen++ = '\0';
   rversion->revision= hyphen ? hyphen : "";
   rversion->revision= hyphen ? hyphen : "";
 
 
-  /* Check for invalid chars in version and revision. */
+  return NULL;
+}
+
+/**
+ * Check for invalid syntax in version structure.
+ *
+ * The rest of the syntax has been already checked in parseversion_lax(). So
+ * we only do the stricter checks here.
+ *
+ * @param rversion The version to verify.
+ *
+ * @return An error string, or NULL if eveyrthing was ok.
+ */
+static const char *
+version_strict_check(struct versionrevision *rversion)
+{
+  const char *ptr;
+
   /* XXX: Would be faster to use something like cisversion and cisrevision. */
   /* XXX: Would be faster to use something like cisversion and cisrevision. */
   for (ptr = rversion->version; *ptr; ptr++) {
   for (ptr = rversion->version; *ptr; ptr++) {
     if (!cisdigit(*ptr) && !cisalpha(*ptr) && strchr(".-+~:", *ptr) == NULL)
     if (!cisdigit(*ptr) && !cisalpha(*ptr) && strchr(".-+~:", *ptr) == NULL)
@@ -260,6 +279,61 @@ const char *parseversion(struct versionrevision *rversion, const char *string) {
   return NULL;
   return NULL;
 }
 }
 
 
+const char *
+parseversion(struct versionrevision *rversion, const char *string)
+{
+  const char *emsg;
+
+  emsg = parseversion_lax(rversion, string);
+  if (emsg)
+    return emsg;
+
+  return version_strict_check(rversion);
+}
+
+/**
+ * Parse a version string coming from a database file.
+ *
+ * It parses a version string, and prints a warning or an error depending
+ * on the parse options.
+ *
+ * @param ps The parsedb state.
+ * @param pkg The package being parsed.
+ * @param version The version to parse into.
+ * @param value The version string to parse from.
+ * @param fmt The error format string.
+ */
+void
+parse_db_version(struct parsedb_state *ps, const struct pkginfo *pkg,
+                 struct versionrevision *version, const char *value,
+                 const char *fmt, ...)
+{
+  const char *msg;
+  bool warn_msg = false;
+
+  msg = parseversion_lax(version, value);
+  if (msg == NULL) {
+    msg = version_strict_check(version);
+    if (ps->flags & pdb_lax_parser)
+      warn_msg = true;
+  }
+
+  if (msg) {
+    va_list args;
+    char buf[1000];
+
+    va_start(args, fmt);
+    vsnprintf(buf, sizeof(buf), fmt, args);
+
+    if (warn_msg)
+      parse_warn(ps, pkg, "%s: %.250s", buf, msg);
+    else
+      parse_error(ps, pkg, "%s: %.250s", buf, msg);
+
+    va_end(args);
+  }
+}
+
 void
 void
 parse_must_have_field(struct parsedb_state *ps,
 parse_must_have_field(struct parsedb_state *ps,
                       const struct pkginfo *pigp,
                       const struct pkginfo *pigp,

+ 4 - 0
man/Makefile.am

@@ -50,6 +50,8 @@ install-data-local-yes:
 		for trans in $(dist_man_MANS); do \
 		for trans in $(dist_man_MANS); do \
 			if [ -f $(CURDIR)/$$lang/$$trans ]; then \
 			if [ -f $(CURDIR)/$$lang/$$trans ]; then \
 				files="$$files $(CURDIR)/$$lang/$$trans"; \
 				files="$$files $(CURDIR)/$$lang/$$trans"; \
+			elif [ -f $(srcdir)/$$lang/$$trans ]; then \
+				files="$$files $(srcdir)/$$lang/$$trans"; \
 			fi; \
 			fi; \
 		done; \
 		done; \
 		$(MAKE) install-man \
 		$(MAKE) install-man \
@@ -67,6 +69,8 @@ uninstall-local-yes:
 		for trans in $(dist_man_MANS); do \
 		for trans in $(dist_man_MANS); do \
 			if [ -f $(CURDIR)/$$lang/$$trans ]; then \
 			if [ -f $(CURDIR)/$$lang/$$trans ]; then \
 				files="$$files $(CURDIR)/$$lang/$$trans"; \
 				files="$$files $(CURDIR)/$$lang/$$trans"; \
+			elif [ -f $(srcdir)/$$lang/$$trans ]; then \
+				files="$$files $(srcdir)/$$lang/$$trans"; \
 			fi; \
 			fi; \
 		done; \
 		done; \
 		$(MAKE) uninstall-man \
 		$(MAKE) uninstall-man \

File diff suppressed because it is too large
+ 225 - 210
po/ast.po


File diff suppressed because it is too large
+ 216 - 206
po/bs.po


File diff suppressed because it is too large
+ 223 - 209
po/ca.po


File diff suppressed because it is too large
+ 225 - 210
po/cs.po


File diff suppressed because it is too large
+ 223 - 209
po/da.po


File diff suppressed because it is too large
+ 225 - 210
po/de.po


File diff suppressed because it is too large
+ 217 - 207
po/dpkg.pot


File diff suppressed because it is too large
+ 223 - 209
po/dz.po


File diff suppressed because it is too large
+ 223 - 209
po/el.po


File diff suppressed because it is too large
+ 225 - 210
po/eo.po


File diff suppressed because it is too large
+ 223 - 209
po/es.po


File diff suppressed because it is too large
+ 223 - 208
po/et.po


File diff suppressed because it is too large
+ 225 - 210
po/eu.po


File diff suppressed because it is too large
+ 225 - 210
po/fr.po


File diff suppressed because it is too large
+ 223 - 209
po/gl.po


File diff suppressed because it is too large
+ 223 - 209
po/hu.po


File diff suppressed because it is too large
+ 223 - 209
po/id.po


File diff suppressed because it is too large
+ 225 - 210
po/it.po


File diff suppressed because it is too large
+ 223 - 209
po/ja.po


File diff suppressed because it is too large
+ 223 - 209
po/km.po


File diff suppressed because it is too large
+ 223 - 209
po/ko.po


File diff suppressed because it is too large
+ 223 - 212
po/ku.po


File diff suppressed because it is too large
+ 223 - 209
po/lt.po


File diff suppressed because it is too large
+ 223 - 209
po/mr.po


File diff suppressed because it is too large
+ 223 - 209
po/nb.po


File diff suppressed because it is too large
+ 223 - 209
po/ne.po


File diff suppressed because it is too large
+ 223 - 209
po/nl.po


File diff suppressed because it is too large
+ 223 - 209
po/nn.po


File diff suppressed because it is too large
+ 221 - 210
po/pa.po


File diff suppressed because it is too large
+ 225 - 210
po/pl.po


File diff suppressed because it is too large
+ 223 - 209
po/pt.po


File diff suppressed because it is too large
+ 223 - 209
po/pt_BR.po


File diff suppressed because it is too large
+ 223 - 209
po/ro.po


File diff suppressed because it is too large
+ 225 - 210
po/ru.po


File diff suppressed because it is too large
+ 225 - 210
po/sk.po


File diff suppressed because it is too large
+ 225 - 210
po/sv.po


File diff suppressed because it is too large
+ 223 - 209
po/th.po


File diff suppressed because it is too large
+ 223 - 209
po/tl.po


File diff suppressed because it is too large
+ 223 - 209
po/vi.po


File diff suppressed because it is too large
+ 225 - 210
po/zh_CN.po


File diff suppressed because it is too large
+ 223 - 209
po/zh_TW.po


+ 19 - 6
scripts/Dpkg/Shlibs/Objdump.pm

@@ -22,6 +22,7 @@ use Dpkg::Gettext;
 use Dpkg::ErrorHandling;
 use Dpkg::ErrorHandling;
 use Dpkg::Path qw(find_command);
 use Dpkg::Path qw(find_command);
 use Dpkg::Arch qw(debarch_to_gnutriplet get_build_arch get_host_arch);
 use Dpkg::Arch qw(debarch_to_gnutriplet get_build_arch get_host_arch);
+use Dpkg::IPC;
 
 
 our $VERSION = "0.01";
 our $VERSION = "0.01";
 
 
@@ -89,17 +90,29 @@ sub has_object {
 	if (exists $format{$file}) {
 	if (exists $format{$file}) {
 	    return $format{$file};
 	    return $format{$file};
 	} else {
 	} else {
-	    local $ENV{LC_ALL} = "C";
-	    open(P, "-|", $OBJDUMP, "-a", "--", $file)
-		|| syserr(_g("cannot fork for %s"), $OBJDUMP);
-	    while (<P>) {
+	    my ($output, %opts, $pid, $res);
+	    if ($OBJDUMP ne "objdump") {
+		$opts{"error_to_file"} = "/dev/null";
+	    }
+	    $pid = spawn(exec => [ $OBJDUMP, "-a", "--", $file ],
+			 env => { "LC_ALL" => "C" },
+			 to_pipe => \$output, %opts);
+	    while (<$output>) {
 		chomp;
 		chomp;
 		if (/^\s*\S+:\s*file\s+format\s+(\S+)\s*$/) {
 		if (/^\s*\S+:\s*file\s+format\s+(\S+)\s*$/) {
 		    $format{$file} = $1;
 		    $format{$file} = $1;
-		    return $format{$file};
+		    $res = $format{$file};
+		    last;
 		}
 		}
 	    }
 	    }
-	    close(P) or subprocerr($OBJDUMP);
+	    close($output);
+	    wait_child($pid, nocheck => 1);
+	    if ($?) {
+		subprocerr("objdump") if $OBJDUMP eq "objdump";
+		local $OBJDUMP = "objdump";
+		$res = get_format($file);
+	    }
+	    return $res;
 	}
 	}
     }
     }
 }
 }

+ 5 - 6
scripts/po/ca.po

@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 msgstr ""
 "Project-Id-Version: dpkg 1.15.6\n"
 "Project-Id-Version: dpkg 1.15.6\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
-"POT-Creation-Date: 2010-07-29 10:31+0200\n"
+"POT-Creation-Date: 2010-08-13 06:13+0200\n"
 "PO-Revision-Date: 2010-03-11 03:04+0100\n"
 "PO-Revision-Date: 2010-03-11 03:04+0100\n"
 "Last-Translator: Jordi Mallach <jordi@debian.org>\n"
 "Last-Translator: Jordi Mallach <jordi@debian.org>\n"
 "Language-Team: Catalan <debian-l10n-catalan@lists.debian.org>\n"
 "Language-Team: Catalan <debian-l10n-catalan@lists.debian.org>\n"
@@ -699,8 +699,7 @@ msgstr ""
 
 
 #: scripts/dpkg-gencontrol.pl:300 scripts/dpkg-scansources.pl:313
 #: scripts/dpkg-gencontrol.pl:300 scripts/dpkg-scansources.pl:313
 #: scripts/dpkg-shlibdeps.pl:819 scripts/Dpkg/Changelog/Parse.pm:138
 #: scripts/dpkg-shlibdeps.pl:819 scripts/Dpkg/Changelog/Parse.pm:138
-#: scripts/Dpkg/IPC.pm:229 scripts/Dpkg/Shlibs/Objdump.pm:94
-#: scripts/Dpkg/Shlibs/Objdump.pm:168
+#: scripts/Dpkg/IPC.pm:229 scripts/Dpkg/Shlibs/Objdump.pm:181
 #, fuzzy, perl-format
 #, fuzzy, perl-format
 msgid "cannot fork for %s"
 msgid "cannot fork for %s"
 msgstr "no es pot combinar -b o -B amb -S"
 msgstr "no es pot combinar -b o -B amb -S"
@@ -1424,7 +1423,7 @@ msgstr ""
 
 
 #: scripts/dpkg-source.pl:309 scripts/Dpkg/BuildFlags.pm:190
 #: scripts/dpkg-source.pl:309 scripts/Dpkg/BuildFlags.pm:190
 #: scripts/Dpkg/Compression/FileHandle.pm:401
 #: scripts/Dpkg/Compression/FileHandle.pm:401
-#: scripts/Dpkg/Interface/Storable.pm:87 scripts/Dpkg/Shlibs/Objdump.pm:109
+#: scripts/Dpkg/Interface/Storable.pm:87 scripts/Dpkg/Shlibs/Objdump.pm:122
 #: scripts/Dpkg/Source/Package/V2.pm:355 scripts/Dpkg/Source/Package/V2.pm:496
 #: scripts/Dpkg/Source/Package/V2.pm:355 scripts/Dpkg/Source/Package/V2.pm:496
 #: scripts/Dpkg/Source/Package/V3/quilt.pm:111
 #: scripts/Dpkg/Source/Package/V3/quilt.pm:111
 #: scripts/Dpkg/Source/Package/V3/quilt.pm:272
 #: scripts/Dpkg/Source/Package/V3/quilt.pm:272
@@ -2061,12 +2060,12 @@ msgstr[1] ""
 msgid "unable to execute c++filt"
 msgid "unable to execute c++filt"
 msgstr ""
 msgstr ""
 
 
-#: scripts/Dpkg/Shlibs/Objdump.pm:209
+#: scripts/Dpkg/Shlibs/Objdump.pm:222
 #, perl-format
 #, perl-format
 msgid "Couldn't parse dynamic relocation record: %s"
 msgid "Couldn't parse dynamic relocation record: %s"
 msgstr ""
 msgstr ""
 
 
-#: scripts/Dpkg/Shlibs/Objdump.pm:326
+#: scripts/Dpkg/Shlibs/Objdump.pm:339
 #, perl-format
 #, perl-format
 msgid "Couldn't parse dynamic symbol definition: %s"
 msgid "Couldn't parse dynamic symbol definition: %s"
 msgstr ""
 msgstr ""

+ 6 - 7
scripts/po/de.po

@@ -6,8 +6,8 @@ msgid ""
 msgstr ""
 msgstr ""
 "Project-Id-Version: dpkg-scripts\n"
 "Project-Id-Version: dpkg-scripts\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
-"POT-Creation-Date: 2010-07-29 16:36+0000\n"
-"PO-Revision-Date: 2010-07-29 18:49+0200\n"
+"POT-Creation-Date: 2010-08-13 06:13+0200\n"
+"PO-Revision-Date: 2010-08-13 06:45+0200\n"
 "Last-Translator: Helge Kreutzmann <debian@helgefjell.de>\n"
 "Last-Translator: Helge Kreutzmann <debian@helgefjell.de>\n"
 "Language-Team: de <debian-l10n-german@lists.debian.org>\n"
 "Language-Team: de <debian-l10n-german@lists.debian.org>\n"
 "Language: de\n"
 "Language: de\n"
@@ -887,8 +887,7 @@ msgstr "%s Paket mit udeb-spezifischem Feld %s"
 
 
 #: scripts/dpkg-gencontrol.pl:300 scripts/dpkg-scansources.pl:313
 #: scripts/dpkg-gencontrol.pl:300 scripts/dpkg-scansources.pl:313
 #: scripts/dpkg-shlibdeps.pl:819 scripts/Dpkg/Changelog/Parse.pm:138
 #: scripts/dpkg-shlibdeps.pl:819 scripts/Dpkg/Changelog/Parse.pm:138
-#: scripts/Dpkg/IPC.pm:229 scripts/Dpkg/Shlibs/Objdump.pm:94
-#: scripts/Dpkg/Shlibs/Objdump.pm:168
+#: scripts/Dpkg/IPC.pm:229 scripts/Dpkg/Shlibs/Objdump.pm:181
 #, perl-format
 #, perl-format
 msgid "cannot fork for %s"
 msgid "cannot fork for %s"
 msgstr "fork kann für %s nicht ausgeführt werden"
 msgstr "fork kann für %s nicht ausgeführt werden"
@@ -1791,7 +1790,7 @@ msgstr ""
 
 
 #: scripts/dpkg-source.pl:309 scripts/Dpkg/BuildFlags.pm:190
 #: scripts/dpkg-source.pl:309 scripts/Dpkg/BuildFlags.pm:190
 #: scripts/Dpkg/Compression/FileHandle.pm:401
 #: scripts/Dpkg/Compression/FileHandle.pm:401
-#: scripts/Dpkg/Interface/Storable.pm:87 scripts/Dpkg/Shlibs/Objdump.pm:109
+#: scripts/Dpkg/Interface/Storable.pm:87 scripts/Dpkg/Shlibs/Objdump.pm:122
 #: scripts/Dpkg/Source/Package/V2.pm:355 scripts/Dpkg/Source/Package/V2.pm:496
 #: scripts/Dpkg/Source/Package/V2.pm:355 scripts/Dpkg/Source/Package/V2.pm:496
 #: scripts/Dpkg/Source/Package/V3/quilt.pm:111
 #: scripts/Dpkg/Source/Package/V3/quilt.pm:111
 #: scripts/Dpkg/Source/Package/V3/quilt.pm:272
 #: scripts/Dpkg/Source/Package/V3/quilt.pm:272
@@ -2508,12 +2507,12 @@ msgstr[1] "%s waren nicht innerhalb von %d Sekunden beendet"
 msgid "unable to execute c++filt"
 msgid "unable to execute c++filt"
 msgstr "c++filt konnte nicht ausgeführt werden"
 msgstr "c++filt konnte nicht ausgeführt werden"
 
 
-#: scripts/Dpkg/Shlibs/Objdump.pm:209
+#: scripts/Dpkg/Shlibs/Objdump.pm:222
 #, perl-format
 #, perl-format
 msgid "Couldn't parse dynamic relocation record: %s"
 msgid "Couldn't parse dynamic relocation record: %s"
 msgstr "Dynamischer Relozierungs-Eintrag konnte nicht ausgewertet werden: %s"
 msgstr "Dynamischer Relozierungs-Eintrag konnte nicht ausgewertet werden: %s"
 
 
-#: scripts/Dpkg/Shlibs/Objdump.pm:326
+#: scripts/Dpkg/Shlibs/Objdump.pm:339
 #, perl-format
 #, perl-format
 msgid "Couldn't parse dynamic symbol definition: %s"
 msgid "Couldn't parse dynamic symbol definition: %s"
 msgstr "Definition der dynamischen Symbole konnte nicht ausgewertet werden: %s"
 msgstr "Definition der dynamischen Symbole konnte nicht ausgewertet werden: %s"

+ 6 - 7
scripts/po/dpkg-dev.pot

@@ -6,9 +6,9 @@
 #, fuzzy
 #, fuzzy
 msgid ""
 msgid ""
 msgstr ""
 msgstr ""
-"Project-Id-Version: dpkg 1.15.7.2-214-g8b511-dirty\n"
+"Project-Id-Version: dpkg 1.15.8.4\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
-"POT-Creation-Date: 2010-07-29 10:31+0200\n"
+"POT-Creation-Date: 2010-08-13 06:13+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -685,8 +685,7 @@ msgstr ""
 
 
 #: scripts/dpkg-gencontrol.pl:300 scripts/dpkg-scansources.pl:313
 #: scripts/dpkg-gencontrol.pl:300 scripts/dpkg-scansources.pl:313
 #: scripts/dpkg-shlibdeps.pl:819 scripts/Dpkg/Changelog/Parse.pm:138
 #: scripts/dpkg-shlibdeps.pl:819 scripts/Dpkg/Changelog/Parse.pm:138
-#: scripts/Dpkg/IPC.pm:229 scripts/Dpkg/Shlibs/Objdump.pm:94
-#: scripts/Dpkg/Shlibs/Objdump.pm:168
+#: scripts/Dpkg/IPC.pm:229 scripts/Dpkg/Shlibs/Objdump.pm:181
 #, perl-format
 #, perl-format
 msgid "cannot fork for %s"
 msgid "cannot fork for %s"
 msgstr ""
 msgstr ""
@@ -1401,7 +1400,7 @@ msgstr ""
 
 
 #: scripts/dpkg-source.pl:309 scripts/Dpkg/BuildFlags.pm:190
 #: scripts/dpkg-source.pl:309 scripts/Dpkg/BuildFlags.pm:190
 #: scripts/Dpkg/Compression/FileHandle.pm:401
 #: scripts/Dpkg/Compression/FileHandle.pm:401
-#: scripts/Dpkg/Interface/Storable.pm:87 scripts/Dpkg/Shlibs/Objdump.pm:109
+#: scripts/Dpkg/Interface/Storable.pm:87 scripts/Dpkg/Shlibs/Objdump.pm:122
 #: scripts/Dpkg/Source/Package/V2.pm:355 scripts/Dpkg/Source/Package/V2.pm:496
 #: scripts/Dpkg/Source/Package/V2.pm:355 scripts/Dpkg/Source/Package/V2.pm:496
 #: scripts/Dpkg/Source/Package/V3/quilt.pm:111
 #: scripts/Dpkg/Source/Package/V3/quilt.pm:111
 #: scripts/Dpkg/Source/Package/V3/quilt.pm:272
 #: scripts/Dpkg/Source/Package/V3/quilt.pm:272
@@ -2028,12 +2027,12 @@ msgstr[1] ""
 msgid "unable to execute c++filt"
 msgid "unable to execute c++filt"
 msgstr ""
 msgstr ""
 
 
-#: scripts/Dpkg/Shlibs/Objdump.pm:209
+#: scripts/Dpkg/Shlibs/Objdump.pm:222
 #, perl-format
 #, perl-format
 msgid "Couldn't parse dynamic relocation record: %s"
 msgid "Couldn't parse dynamic relocation record: %s"
 msgstr ""
 msgstr ""
 
 
-#: scripts/Dpkg/Shlibs/Objdump.pm:326
+#: scripts/Dpkg/Shlibs/Objdump.pm:339
 #, perl-format
 #, perl-format
 msgid "Couldn't parse dynamic symbol definition: %s"
 msgid "Couldn't parse dynamic symbol definition: %s"
 msgstr ""
 msgstr ""

+ 5 - 6
scripts/po/es.po

@@ -24,7 +24,7 @@ msgid ""
 msgstr ""
 msgstr ""
 "Project-Id-Version: dpkg 1.15.7.2-51-g174ea\n"
 "Project-Id-Version: dpkg 1.15.7.2-51-g174ea\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
-"POT-Creation-Date: 2010-07-29 10:31+0200\n"
+"POT-Creation-Date: 2010-08-13 06:13+0200\n"
 "PO-Revision-Date: 2010-07-01 16:22+0200\n"
 "PO-Revision-Date: 2010-07-01 16:22+0200\n"
 "Last-Translator: Omar Campagne <ocampagne@gmail.com>\n"
 "Last-Translator: Omar Campagne <ocampagne@gmail.com>\n"
 "Language-Team: Spanish pootle.locamotion.org team\n"
 "Language-Team: Spanish pootle.locamotion.org team\n"
@@ -1009,8 +1009,7 @@ msgstr "paquete %s con campo específico de udeb «%s»"
 
 
 #: scripts/dpkg-gencontrol.pl:300 scripts/dpkg-scansources.pl:313
 #: scripts/dpkg-gencontrol.pl:300 scripts/dpkg-scansources.pl:313
 #: scripts/dpkg-shlibdeps.pl:819 scripts/Dpkg/Changelog/Parse.pm:138
 #: scripts/dpkg-shlibdeps.pl:819 scripts/Dpkg/Changelog/Parse.pm:138
-#: scripts/Dpkg/IPC.pm:229 scripts/Dpkg/Shlibs/Objdump.pm:94
-#: scripts/Dpkg/Shlibs/Objdump.pm:168
+#: scripts/Dpkg/IPC.pm:229 scripts/Dpkg/Shlibs/Objdump.pm:181
 #, perl-format
 #, perl-format
 msgid "cannot fork for %s"
 msgid "cannot fork for %s"
 msgstr "no se puede crear un proceso hijo para %s"
 msgstr "no se puede crear un proceso hijo para %s"
@@ -1940,7 +1939,7 @@ msgstr ""
 
 
 #: scripts/dpkg-source.pl:309 scripts/Dpkg/BuildFlags.pm:190
 #: scripts/dpkg-source.pl:309 scripts/Dpkg/BuildFlags.pm:190
 #: scripts/Dpkg/Compression/FileHandle.pm:401
 #: scripts/Dpkg/Compression/FileHandle.pm:401
-#: scripts/Dpkg/Interface/Storable.pm:87 scripts/Dpkg/Shlibs/Objdump.pm:109
+#: scripts/Dpkg/Interface/Storable.pm:87 scripts/Dpkg/Shlibs/Objdump.pm:122
 #: scripts/Dpkg/Source/Package/V2.pm:355 scripts/Dpkg/Source/Package/V2.pm:496
 #: scripts/Dpkg/Source/Package/V2.pm:355 scripts/Dpkg/Source/Package/V2.pm:496
 #: scripts/Dpkg/Source/Package/V3/quilt.pm:111
 #: scripts/Dpkg/Source/Package/V3/quilt.pm:111
 #: scripts/Dpkg/Source/Package/V3/quilt.pm:272
 #: scripts/Dpkg/Source/Package/V3/quilt.pm:272
@@ -2672,12 +2671,12 @@ msgstr[1] "%s no se completó en %d segundos"
 msgid "unable to execute c++filt"
 msgid "unable to execute c++filt"
 msgstr "no se pudo ejecutar «c++filt»"
 msgstr "no se pudo ejecutar «c++filt»"
 
 
-#: scripts/Dpkg/Shlibs/Objdump.pm:209
+#: scripts/Dpkg/Shlibs/Objdump.pm:222
 #, perl-format
 #, perl-format
 msgid "Couldn't parse dynamic relocation record: %s"
 msgid "Couldn't parse dynamic relocation record: %s"
 msgstr "No se pudo analizar el registro de reubicación dinámico: %s"
 msgstr "No se pudo analizar el registro de reubicación dinámico: %s"
 
 
-#: scripts/Dpkg/Shlibs/Objdump.pm:326
+#: scripts/Dpkg/Shlibs/Objdump.pm:339
 #, perl-format
 #, perl-format
 msgid "Couldn't parse dynamic symbol definition: %s"
 msgid "Couldn't parse dynamic symbol definition: %s"
 msgstr "No se pudo analizar la definición de símbolo dinámico: %s"
 msgstr "No se pudo analizar la definición de símbolo dinámico: %s"

+ 5 - 6
scripts/po/fr.po

@@ -9,7 +9,7 @@ msgid ""
 msgstr ""
 msgstr ""
 "Project-Id-Version: fr\n"
 "Project-Id-Version: fr\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
-"POT-Creation-Date: 2010-07-29 10:31+0200\n"
+"POT-Creation-Date: 2010-08-13 06:13+0200\n"
 "PO-Revision-Date: 2010-04-26 18:42+0200\n"
 "PO-Revision-Date: 2010-04-26 18:42+0200\n"
 "Last-Translator: Christian Perrier <bubulle@debian.org>\n"
 "Last-Translator: Christian Perrier <bubulle@debian.org>\n"
 "Language-Team: fr <debian-l10n-french@lists.debian.org>\n"
 "Language-Team: fr <debian-l10n-french@lists.debian.org>\n"
@@ -995,8 +995,7 @@ msgstr "paquet %s avec champ spécifique udeb %s"
 
 
 #: scripts/dpkg-gencontrol.pl:300 scripts/dpkg-scansources.pl:313
 #: scripts/dpkg-gencontrol.pl:300 scripts/dpkg-scansources.pl:313
 #: scripts/dpkg-shlibdeps.pl:819 scripts/Dpkg/Changelog/Parse.pm:138
 #: scripts/dpkg-shlibdeps.pl:819 scripts/Dpkg/Changelog/Parse.pm:138
-#: scripts/Dpkg/IPC.pm:229 scripts/Dpkg/Shlibs/Objdump.pm:94
-#: scripts/Dpkg/Shlibs/Objdump.pm:168
+#: scripts/Dpkg/IPC.pm:229 scripts/Dpkg/Shlibs/Objdump.pm:181
 #, perl-format
 #, perl-format
 msgid "cannot fork for %s"
 msgid "cannot fork for %s"
 msgstr "fork impossible pour %s"
 msgstr "fork impossible pour %s"
@@ -1928,7 +1927,7 @@ msgstr ""
 
 
 #: scripts/dpkg-source.pl:309 scripts/Dpkg/BuildFlags.pm:190
 #: scripts/dpkg-source.pl:309 scripts/Dpkg/BuildFlags.pm:190
 #: scripts/Dpkg/Compression/FileHandle.pm:401
 #: scripts/Dpkg/Compression/FileHandle.pm:401
-#: scripts/Dpkg/Interface/Storable.pm:87 scripts/Dpkg/Shlibs/Objdump.pm:109
+#: scripts/Dpkg/Interface/Storable.pm:87 scripts/Dpkg/Shlibs/Objdump.pm:122
 #: scripts/Dpkg/Source/Package/V2.pm:355 scripts/Dpkg/Source/Package/V2.pm:496
 #: scripts/Dpkg/Source/Package/V2.pm:355 scripts/Dpkg/Source/Package/V2.pm:496
 #: scripts/Dpkg/Source/Package/V3/quilt.pm:111
 #: scripts/Dpkg/Source/Package/V3/quilt.pm:111
 #: scripts/Dpkg/Source/Package/V3/quilt.pm:272
 #: scripts/Dpkg/Source/Package/V3/quilt.pm:272
@@ -2664,12 +2663,12 @@ msgstr[1] "%s ne s'est pas terminé en %d secondes"
 msgid "unable to execute c++filt"
 msgid "unable to execute c++filt"
 msgstr "impossible d'exécuter c++filt"
 msgstr "impossible d'exécuter c++filt"
 
 
-#: scripts/Dpkg/Shlibs/Objdump.pm:209
+#: scripts/Dpkg/Shlibs/Objdump.pm:222
 #, perl-format
 #, perl-format
 msgid "Couldn't parse dynamic relocation record: %s"
 msgid "Couldn't parse dynamic relocation record: %s"
 msgstr "Impossible d'analyser l'enregistrement d'allocation dynamique : %s"
 msgstr "Impossible d'analyser l'enregistrement d'allocation dynamique : %s"
 
 
-#: scripts/Dpkg/Shlibs/Objdump.pm:326
+#: scripts/Dpkg/Shlibs/Objdump.pm:339
 #, perl-format
 #, perl-format
 msgid "Couldn't parse dynamic symbol definition: %s"
 msgid "Couldn't parse dynamic symbol definition: %s"
 msgstr "Impossible d'analyser la définition de symboles dynamique : %s"
 msgstr "Impossible d'analyser la définition de symboles dynamique : %s"

+ 5 - 6
scripts/po/pl.po

@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 msgstr ""
 "Project-Id-Version: dpkg 1.15.4\n"
 "Project-Id-Version: dpkg 1.15.4\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
-"POT-Creation-Date: 2010-07-29 10:31+0200\n"
+"POT-Creation-Date: 2010-08-13 06:13+0200\n"
 "PO-Revision-Date: 2010-01-03 16:42+0100\n"
 "PO-Revision-Date: 2010-01-03 16:42+0100\n"
 "Last-Translator: Wiktor Wandachowicz <siryes@gmail.com>\n"
 "Last-Translator: Wiktor Wandachowicz <siryes@gmail.com>\n"
 "Language-Team: Polish <debian-l10n-polish@lists.debian.org>\n"
 "Language-Team: Polish <debian-l10n-polish@lists.debian.org>\n"
@@ -866,8 +866,7 @@ msgstr "pakiet %s zawierający pole %s specyficzne dla udeb"
 
 
 #: scripts/dpkg-gencontrol.pl:300 scripts/dpkg-scansources.pl:313
 #: scripts/dpkg-gencontrol.pl:300 scripts/dpkg-scansources.pl:313
 #: scripts/dpkg-shlibdeps.pl:819 scripts/Dpkg/Changelog/Parse.pm:138
 #: scripts/dpkg-shlibdeps.pl:819 scripts/Dpkg/Changelog/Parse.pm:138
-#: scripts/Dpkg/IPC.pm:229 scripts/Dpkg/Shlibs/Objdump.pm:94
-#: scripts/Dpkg/Shlibs/Objdump.pm:168
+#: scripts/Dpkg/IPC.pm:229 scripts/Dpkg/Shlibs/Objdump.pm:181
 #, perl-format
 #, perl-format
 msgid "cannot fork for %s"
 msgid "cannot fork for %s"
 msgstr "nie można wykonać funkcji fork dla %s"
 msgstr "nie można wykonać funkcji fork dla %s"
@@ -1762,7 +1761,7 @@ msgstr ""
 
 
 #: scripts/dpkg-source.pl:309 scripts/Dpkg/BuildFlags.pm:190
 #: scripts/dpkg-source.pl:309 scripts/Dpkg/BuildFlags.pm:190
 #: scripts/Dpkg/Compression/FileHandle.pm:401
 #: scripts/Dpkg/Compression/FileHandle.pm:401
-#: scripts/Dpkg/Interface/Storable.pm:87 scripts/Dpkg/Shlibs/Objdump.pm:109
+#: scripts/Dpkg/Interface/Storable.pm:87 scripts/Dpkg/Shlibs/Objdump.pm:122
 #: scripts/Dpkg/Source/Package/V2.pm:355 scripts/Dpkg/Source/Package/V2.pm:496
 #: scripts/Dpkg/Source/Package/V2.pm:355 scripts/Dpkg/Source/Package/V2.pm:496
 #: scripts/Dpkg/Source/Package/V3/quilt.pm:111
 #: scripts/Dpkg/Source/Package/V3/quilt.pm:111
 #: scripts/Dpkg/Source/Package/V3/quilt.pm:272
 #: scripts/Dpkg/Source/Package/V3/quilt.pm:272
@@ -2487,12 +2486,12 @@ msgstr[2] "%s nie zakończył się w %d sekund"
 msgid "unable to execute c++filt"
 msgid "unable to execute c++filt"
 msgstr "nie można otworzyć cputable"
 msgstr "nie można otworzyć cputable"
 
 
-#: scripts/Dpkg/Shlibs/Objdump.pm:209
+#: scripts/Dpkg/Shlibs/Objdump.pm:222
 #, perl-format
 #, perl-format
 msgid "Couldn't parse dynamic relocation record: %s"
 msgid "Couldn't parse dynamic relocation record: %s"
 msgstr "Nie można przetworzyć rekordu dynamicznej relokacji: %s"
 msgstr "Nie można przetworzyć rekordu dynamicznej relokacji: %s"
 
 
-#: scripts/Dpkg/Shlibs/Objdump.pm:326
+#: scripts/Dpkg/Shlibs/Objdump.pm:339
 #, perl-format
 #, perl-format
 msgid "Couldn't parse dynamic symbol definition: %s"
 msgid "Couldn't parse dynamic symbol definition: %s"
 msgstr "Nie można przetworzyć definicji symboli dynamicznych: %s"
 msgstr "Nie można przetworzyć definicji symboli dynamicznych: %s"

+ 5 - 6
scripts/po/ru.po

@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 msgstr ""
 "Project-Id-Version: dpkg 1.15.7.1\n"
 "Project-Id-Version: dpkg 1.15.7.1\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
-"POT-Creation-Date: 2010-07-29 10:31+0200\n"
+"POT-Creation-Date: 2010-08-13 06:13+0200\n"
 "PO-Revision-Date: 2010-04-25 22:37+0400\n"
 "PO-Revision-Date: 2010-04-25 22:37+0400\n"
 "Last-Translator: Yuri Kozlov <yuray@komyakino.ru>\n"
 "Last-Translator: Yuri Kozlov <yuray@komyakino.ru>\n"
 "Language-Team: Russian <debian-l10n-russian@lists.debian.org>\n"
 "Language-Team: Russian <debian-l10n-russian@lists.debian.org>\n"
@@ -962,8 +962,7 @@ msgstr "пакет %s со специальным udeb-полем %s"
 
 
 #: scripts/dpkg-gencontrol.pl:300 scripts/dpkg-scansources.pl:313
 #: scripts/dpkg-gencontrol.pl:300 scripts/dpkg-scansources.pl:313
 #: scripts/dpkg-shlibdeps.pl:819 scripts/Dpkg/Changelog/Parse.pm:138
 #: scripts/dpkg-shlibdeps.pl:819 scripts/Dpkg/Changelog/Parse.pm:138
-#: scripts/Dpkg/IPC.pm:229 scripts/Dpkg/Shlibs/Objdump.pm:94
-#: scripts/Dpkg/Shlibs/Objdump.pm:168
+#: scripts/Dpkg/IPC.pm:229 scripts/Dpkg/Shlibs/Objdump.pm:181
 #, perl-format
 #, perl-format
 msgid "cannot fork for %s"
 msgid "cannot fork for %s"
 msgstr "не удалось выполнить fork для %s"
 msgstr "не удалось выполнить fork для %s"
@@ -1865,7 +1864,7 @@ msgstr ""
 
 
 #: scripts/dpkg-source.pl:309 scripts/Dpkg/BuildFlags.pm:190
 #: scripts/dpkg-source.pl:309 scripts/Dpkg/BuildFlags.pm:190
 #: scripts/Dpkg/Compression/FileHandle.pm:401
 #: scripts/Dpkg/Compression/FileHandle.pm:401
-#: scripts/Dpkg/Interface/Storable.pm:87 scripts/Dpkg/Shlibs/Objdump.pm:109
+#: scripts/Dpkg/Interface/Storable.pm:87 scripts/Dpkg/Shlibs/Objdump.pm:122
 #: scripts/Dpkg/Source/Package/V2.pm:355 scripts/Dpkg/Source/Package/V2.pm:496
 #: scripts/Dpkg/Source/Package/V2.pm:355 scripts/Dpkg/Source/Package/V2.pm:496
 #: scripts/Dpkg/Source/Package/V3/quilt.pm:111
 #: scripts/Dpkg/Source/Package/V3/quilt.pm:111
 #: scripts/Dpkg/Source/Package/V3/quilt.pm:272
 #: scripts/Dpkg/Source/Package/V3/quilt.pm:272
@@ -2575,12 +2574,12 @@ msgstr[2] "%s не завершится за %d секунд"
 msgid "unable to execute c++filt"
 msgid "unable to execute c++filt"
 msgstr "невозможно выполнить c++filt"
 msgstr "невозможно выполнить c++filt"
 
 
-#: scripts/Dpkg/Shlibs/Objdump.pm:209
+#: scripts/Dpkg/Shlibs/Objdump.pm:222
 #, perl-format
 #, perl-format
 msgid "Couldn't parse dynamic relocation record: %s"
 msgid "Couldn't parse dynamic relocation record: %s"
 msgstr "Не удалось проанализировать запись динамического перераспределения: %s"
 msgstr "Не удалось проанализировать запись динамического перераспределения: %s"
 
 
-#: scripts/Dpkg/Shlibs/Objdump.pm:326
+#: scripts/Dpkg/Shlibs/Objdump.pm:339
 #, perl-format
 #, perl-format
 msgid "Couldn't parse dynamic symbol definition: %s"
 msgid "Couldn't parse dynamic symbol definition: %s"
 msgstr "Не удалось проанализировать определение динамического символа: %s"
 msgstr "Не удалось проанализировать определение динамического символа: %s"

+ 5 - 6
scripts/po/sv.po

@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 msgstr ""
 "Project-Id-Version: dpkg 1.15.8\n"
 "Project-Id-Version: dpkg 1.15.8\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
 "Report-Msgid-Bugs-To: debian-dpkg@lists.debian.org\n"
-"POT-Creation-Date: 2010-07-29 10:31+0200\n"
+"POT-Creation-Date: 2010-08-13 06:13+0200\n"
 "PO-Revision-Date: 2010-07-27 08:51+0100\n"
 "PO-Revision-Date: 2010-07-27 08:51+0100\n"
 "Last-Translator: Peter Krefting <peterk@debian.org>\n"
 "Last-Translator: Peter Krefting <peterk@debian.org>\n"
 "Language-Team: Swedish <debian-l10n-swedish@lists.debian.org>\n"
 "Language-Team: Swedish <debian-l10n-swedish@lists.debian.org>\n"
@@ -921,8 +921,7 @@ msgstr "%s-paket med udeb-specifikt fält %s"
 
 
 #: scripts/dpkg-gencontrol.pl:300 scripts/dpkg-scansources.pl:313
 #: scripts/dpkg-gencontrol.pl:300 scripts/dpkg-scansources.pl:313
 #: scripts/dpkg-shlibdeps.pl:819 scripts/Dpkg/Changelog/Parse.pm:138
 #: scripts/dpkg-shlibdeps.pl:819 scripts/Dpkg/Changelog/Parse.pm:138
-#: scripts/Dpkg/IPC.pm:229 scripts/Dpkg/Shlibs/Objdump.pm:94
-#: scripts/Dpkg/Shlibs/Objdump.pm:168
+#: scripts/Dpkg/IPC.pm:229 scripts/Dpkg/Shlibs/Objdump.pm:181
 #, perl-format
 #, perl-format
 msgid "cannot fork for %s"
 msgid "cannot fork for %s"
 msgstr "kan inte grena för %s"
 msgstr "kan inte grena för %s"
@@ -1798,7 +1797,7 @@ msgstr "arkitektur %s tillåts inte ensamt (listan för paketet %s är \"%s\")"
 
 
 #: scripts/dpkg-source.pl:309 scripts/Dpkg/BuildFlags.pm:190
 #: scripts/dpkg-source.pl:309 scripts/Dpkg/BuildFlags.pm:190
 #: scripts/Dpkg/Compression/FileHandle.pm:401
 #: scripts/Dpkg/Compression/FileHandle.pm:401
-#: scripts/Dpkg/Interface/Storable.pm:87 scripts/Dpkg/Shlibs/Objdump.pm:109
+#: scripts/Dpkg/Interface/Storable.pm:87 scripts/Dpkg/Shlibs/Objdump.pm:122
 #: scripts/Dpkg/Source/Package/V2.pm:355 scripts/Dpkg/Source/Package/V2.pm:496
 #: scripts/Dpkg/Source/Package/V2.pm:355 scripts/Dpkg/Source/Package/V2.pm:496
 #: scripts/Dpkg/Source/Package/V3/quilt.pm:111
 #: scripts/Dpkg/Source/Package/V3/quilt.pm:111
 #: scripts/Dpkg/Source/Package/V3/quilt.pm:272
 #: scripts/Dpkg/Source/Package/V3/quilt.pm:272
@@ -2502,12 +2501,12 @@ msgstr[1] "%s blev inte färdigt på %d sekunder"
 msgid "unable to execute c++filt"
 msgid "unable to execute c++filt"
 msgstr "kan inte exekvera c++filt"
 msgstr "kan inte exekvera c++filt"
 
 
-#: scripts/Dpkg/Shlibs/Objdump.pm:209
+#: scripts/Dpkg/Shlibs/Objdump.pm:222
 #, perl-format
 #, perl-format
 msgid "Couldn't parse dynamic relocation record: %s"
 msgid "Couldn't parse dynamic relocation record: %s"
 msgstr "Kunde inte tolka dynamisk relokeringspost: %s"
 msgstr "Kunde inte tolka dynamisk relokeringspost: %s"
 
 
-#: scripts/Dpkg/Shlibs/Objdump.pm:326
+#: scripts/Dpkg/Shlibs/Objdump.pm:339
 #, perl-format
 #, perl-format
 msgid "Couldn't parse dynamic symbol definition: %s"
 msgid "Couldn't parse dynamic symbol definition: %s"
 msgstr "Kunde inte tolka definition av dynamisk symbol: %s"
 msgstr "Kunde inte tolka definition av dynamisk symbol: %s"

+ 4 - 0
src/cleanup.c

@@ -90,6 +90,10 @@ void cu_installnew(int argc, void **argv) {
     /* Either we can do an atomic restore, or we've made room: */
     /* Either we can do an atomic restore, or we've made room: */
     if (rename(fnametmpvb.buf,fnamevb.buf))
     if (rename(fnametmpvb.buf,fnamevb.buf))
       ohshite(_("unable to restore backup version of `%.250s'"),namenode->name);
       ohshite(_("unable to restore backup version of `%.250s'"),namenode->name);
+    /* If <foo>.dpkg-tmp was still a hard link to <foo>, then the atomic
+     * rename did nothing, so we make sure to remove the backup. */
+    else if (unlink(fnametmpvb.buf) && errno != ENOENT)
+      ohshite(_("unable to remove backup copy of '%.250s'"), namenode->name);
   } else if (namenode->flags & fnnf_placed_on_disk) {
   } else if (namenode->flags & fnnf_placed_on_disk) {
     debug(dbg_eachfiledetail,"cu_installnew removing new file");
     debug(dbg_eachfiledetail,"cu_installnew removing new file");
     if (unlinkorrmdir(fnamevb.buf) && errno != ENOENT && errno != ENOTDIR)
     if (unlinkorrmdir(fnamevb.buf) && errno != ENOENT && errno != ENOTDIR)

+ 2 - 2
src/statcmd.c

@@ -1,5 +1,5 @@
 /*
 /*
- * dpkg-statoverrides - override ownership and mode of files
+ * dpkg-statoverride - override ownership and mode of files
  *
  *
  * Copyright © 2000, 2001 Wichert Akkerman <wakkerma@debian.org>
  * Copyright © 2000, 2001 Wichert Akkerman <wakkerma@debian.org>
  * Copyright © 2006-2009 Guillem Jover <guillem@debian.org>
  * Copyright © 2006-2009 Guillem Jover <guillem@debian.org>
@@ -48,7 +48,7 @@
 #include "main.h"
 #include "main.h"
 #include "filesdb.h"
 #include "filesdb.h"
 
 
-const char thisname[] = "dpkg-statoverrides";
+const char thisname[] = "dpkg-statoverride";
 const char printforhelp[] = N_("Use --help for help about querying packages.");
 const char printforhelp[] = N_("Use --help for help about querying packages.");
 
 
 static void DPKG_ATTR_NORET
 static void DPKG_ATTR_NORET

+ 1 - 1
src/statdb.c

@@ -212,7 +212,7 @@ ensure_statoverrides(void)
 
 
 		fnn = findnamenode(thisline, 0);
 		fnn = findnamenode(thisline, 0);
 		if (fnn->statoverride)
 		if (fnn->statoverride)
-			ohshit(_("multiple statusoverides present for file '%.250s'"),
+			ohshit(_("multiple statusoverrides present for file '%.250s'"),
 			       thisline);
 			       thisline);
 		fnn->statoverride = fso;
 		fnn->statoverride = fso;
 
 

+ 2 - 1
src/update.c

@@ -79,7 +79,8 @@ void updateavailable(const char *const *argv) {
   varbufaddc(&vb,0);
   varbufaddc(&vb,0);
 
 
   if (cipaction->arg == act_avmerge)
   if (cipaction->arg == act_avmerge)
-    parsedb(vb.buf, pdb_recordavailable | pdb_rejectstatus, NULL, NULL, NULL);
+    parsedb(vb.buf, pdb_recordavailable | pdb_rejectstatus | pdb_lax_parser,
+            NULL, NULL, NULL);
 
 
   if (cipaction->arg != act_avclear)
   if (cipaction->arg != act_avclear)
     count += parsedb(sourcefile,
     count += parsedb(sourcefile,

+ 1 - 0
utils/Makefile.am

@@ -25,6 +25,7 @@ update_alternatives_SOURCES = \
 
 
 update_alternatives_LDADD = \
 update_alternatives_LDADD = \
 	../lib/compat/libcompat.a \
 	../lib/compat/libcompat.a \
+	$(LIBINTL) \
 	$(UA_LIBS)
 	$(UA_LIBS)
 
 
 sbin_PROGRAMS =
 sbin_PROGRAMS =

+ 14 - 2
utils/t/100_update_alternatives.t

@@ -80,8 +80,8 @@ my @choices = (
     },
     },
 );
 );
 my $nb_slaves = 4;
 my $nb_slaves = 4;
-plan tests => (4 * ($nb_slaves + 1) + 2) * 24 # number of check_choices
-		+ 65;			      # rest
+plan tests => (4 * ($nb_slaves + 1) + 2) * 25 # number of check_choices
+		+ 69;			      # rest
 
 
 sub cleanup {
 sub cleanup {
     system("rm -rf $tmpdir && mkdir -p $admindir && mkdir -p $altdir");
     system("rm -rf $tmpdir && mkdir -p $admindir && mkdir -p $altdir");
@@ -123,6 +123,12 @@ sub remove_choice {
     call_ua(\@params, %opts);
     call_ua(\@params, %opts);
 }
 }
 
 
+sub remove_all_choices {
+    my (%opts) = @_;
+    my @params = ("--remove-all", $main_name);
+    call_ua(\@params, %opts);
+}
+
 sub set_choice {
 sub set_choice {
     my ($id, %opts) = @_;
     my ($id, %opts) = @_;
     my $alt = $choices[$id];
     my $alt = $choices[$id];
@@ -295,6 +301,12 @@ set_choice(1);
 check_choice(1, "manual", "single manual choice");
 check_choice(1, "manual", "single manual choice");
 remove_choice(1);
 remove_choice(1);
 check_choice(undef, "", "removal single manual");
 check_choice(undef, "", "removal single manual");
+# test --remove-all
+install_choice(0);
+install_choice(1);
+install_choice(2);
+remove_all_choices(test_id => "remove all");
+check_choice(undef, "", "no alternative left");
 # check auto-recovery of user mistakes (#100135)
 # check auto-recovery of user mistakes (#100135)
 install_choice(1);
 install_choice(1);
 ok(unlink("$bindir/generic-test"), "failed removal");
 ok(unlink("$bindir/generic-test"), "failed removal");

+ 18 - 10
utils/update-alternatives.c

@@ -41,6 +41,7 @@
 #include <assert.h>
 #include <assert.h>
 #include <locale.h>
 #include <locale.h>
 #include <ctype.h>
 #include <ctype.h>
+#include <limits.h>
 
 
 #include <dpkg/macros.h>
 #include <dpkg/macros.h>
 #include <dpkg/i18n.h>
 #include <dpkg/i18n.h>
@@ -667,11 +668,25 @@ alternative_new(const char *name)
 	return alt;
 	return alt;
 }
 }
 
 
+static void
+alternative_choices_free(struct alternative *a)
+{
+	struct fileset *fs;
+
+	if (a->choices)
+		a->modified = true;
+
+	while (a->choices) {
+		fs = a->choices;
+		a->choices = fs->next;
+		fileset_free(fs);
+	}
+}
+
 static void
 static void
 alternative_reset(struct alternative *alt)
 alternative_reset(struct alternative *alt)
 {
 {
 	struct slave_link *slave;
 	struct slave_link *slave;
-	struct fileset *fs;
 	struct commit_operation *commit_op;
 	struct commit_operation *commit_op;
 
 
 	free(alt->master_link);
 	free(alt->master_link);
@@ -681,11 +696,7 @@ alternative_reset(struct alternative *alt)
 		alt->slaves = slave->next;
 		alt->slaves = slave->next;
 		slave_link_free(slave);
 		slave_link_free(slave);
 	}
 	}
-	while (alt->choices) {
-		fs = alt->choices;
-		alt->choices = fs->next;
-		fileset_free(fs);
-	}
+	alternative_choices_free(alt);
 	while (alt->commit_ops) {
 	while (alt->commit_ops) {
 		commit_op = alt->commit_ops;
 		commit_op = alt->commit_ops;
 		alt->commit_ops = commit_op->next;
 		alt->commit_ops = commit_op->next;
@@ -2351,10 +2362,7 @@ main(int argc, char **argv)
 				new_choice = best->master_file;
 				new_choice = best->master_file;
 		}
 		}
 	} else if (strcmp(action, "remove-all") == 0) {
 	} else if (strcmp(action, "remove-all") == 0) {
-		struct fileset *fs;
-
-		for (fs = a->choices; fs; fs = fs->next)
-			alternative_remove_choice(a, fs->master_file);
+		alternative_choices_free(a);
 	} else if (strcmp(action, "install") == 0) {
 	} else if (strcmp(action, "install") == 0) {
 		if (a->master_link) {
 		if (a->master_link) {
 			/* Alternative already exists, check if anything got
 			/* Alternative already exists, check if anything got