]> err.no Git - dpkg/commitdiff
dpkg 1.4.1
authorGuy Maor <maor@debian.org>
Fri, 29 Jan 1999 08:53:59 +0000 (08:53 +0000)
committerGuy Maor <maor@debian.org>
Fri, 29 Jan 1999 08:53:59 +0000 (08:53 +0000)
209 files changed:
.cvsignore [new file with mode: 0644]
COPYING
ChangeLog [new file with mode: 0644]
INSTALL
Makefile.am [new file with mode: 0644]
Makefile.in [deleted file]
NEWS [deleted file]
acconfig.h
archtable
attic/README [moved from README with 100% similarity]
attic/dpkg-deb/dpkg-deb.8-vuori [moved from dpkg-deb/dpkg-deb.8-vuori with 100% similarity]
attic/dpkg/dpkg.8-null [moved from main/dpkg.8-null with 100% similarity]
attic/dpkg/junk [moved from main/junk with 100% similarity]
attic/dpkg/lib.pl [moved from scripts/lib.pl with 100% similarity]
attic/dpkg/perl-dpkg.pl [moved from scripts/perl-dpkg.pl with 100% similarity]
attic/dselect/dselect.junk [moved from dselect/junk with 100% similarity]
attic/dselect/kt.c [moved from dselect/kt.c with 100% similarity]
attic/scripts/debian-changelog-mode.el [new file with mode: 0644]
attic/scripts/start-stop-daemon.pl [moved from scripts/start-stop-daemon.pl with 100% similarity]
attic/scripts/update-rc.d.sh [moved from scripts/update-rc.d.sh with 99% similarity]
attic/split/magic [moved from split/magic with 100% similarity]
attic/split/mkdeb.sh [moved from dpkg-deb/mkdeb.sh with 100% similarity]
attic/split/old-mksplit.sh [moved from split/old-mksplit.sh with 100% similarity]
attic/split/split.junk [moved from split/junk with 100% similarity]
automake/dpkg.m4 [new file with mode: 0644]
automake/tl_canon.m4 [new file with mode: 0644]
automake/tools.m4 [new file with mode: 0644]
config.h.bot
config.h.in [deleted file]
configure [deleted file]
configure.in
debian/.cvsignore [new file with mode: 0644]
debian/50dpkg-dev.el [new file with mode: 0644]
debian/README.compile [new file with mode: 0644]
debian/changelog
debian/control
debian/copyright
debian/postinst
debian/preinst
debian/rules
debian/shlibs [new file with mode: 0644]
debian/shlibs.default.i386
debian/shlibs.default.m68k [deleted symlink]
debian/shlibs.local [new file with mode: 0644]
debian/substvars [deleted file]
doc/ChangeLog [new file with mode: 0644]
doc/Makefile.am [new file with mode: 0644]
doc/Makefile.in [deleted file]
doc/changelog
doc/deb-old.5
doc/developer-keys.pgp [deleted file]
doc/internals.sgml [new file with mode: 0644]
doc/lout.li [deleted file]
doc/manuals-version
doc/obsolete/dependency-ordering.txt [deleted file]
doc/obsolete/descriptions.txt [deleted file]
doc/obsolete/disappear-replace.txt [deleted file]
doc/obsolete/diversions.txt [moved from doc/obsolete/diversions.text with 100% similarity]
doc/obsolete/dpkg.texi [deleted file]
doc/obsolete/dselect-methods.txt [deleted file]
doc/obsolete/essential-flag.txt [deleted file]
doc/obsolete/maintainer-script-args.txt [deleted file]
doc/obsolete/version-ordering.txt [deleted file]
doc/obsolete/virtual-dependencies.txt [deleted file]
doc/policy.sgml [deleted file]
doc/programmer.sgml [deleted file]
doc/texinfo.debian_mapping [new file with mode: 0644]
doc/texinfo.dtd [new file with mode: 0644]
doc/texinfo.texi_mapping [new file with mode: 0644]
dpkg-deb/.cvsignore [new file with mode: 0644]
dpkg-deb/Makefile.am [new file with mode: 0644]
dpkg-deb/Makefile.in [deleted file]
dpkg-deb/build.c
dpkg-deb/debugmake [deleted file]
dpkg-deb/extract.c
dpkg-deb/info.c
dpkg-deb/main.c
dselect/.cvsignore [new file with mode: 0644]
dselect/Makefile.am [new file with mode: 0644]
dselect/Makefile.in [deleted file]
dselect/basecmds.cc
dselect/baselist.cc
dselect/basetop.cc
dselect/bindings.cc
dselect/curkeys.cc
dselect/debugmake [deleted file]
dselect/dselect.h
dselect/kt.cc [deleted file]
dselect/main.cc
dselect/methkeys.cc
dselect/methlist.cc
dselect/method.cc
dselect/methparse.cc
dselect/mkcurkeys.pl
dselect/mkhelpmsgs.pl
dselect/pkgcmds.cc
dselect/pkgdepcon.cc
dselect/pkgdisplay.cc
dselect/pkginfo.cc
dselect/pkgkeys.cc
dselect/pkglist.cc
dselect/pkgsublist.cc
dselect/pkgtop.cc
dselect/rp [deleted file]
include/.cvsignore [new file with mode: 0644]
include/Makefile.am [new file with mode: 0644]
include/Makefile.in [deleted file]
include/dpkg-db.h
include/dpkg.h.in [moved from include/dpkg.h with 92% similarity]
insert-version.pl [deleted file]
install.sh [deleted file]
lib/.cvsignore [new file with mode: 0644]
lib/Makefile.am [new file with mode: 0644]
lib/Makefile.in [deleted file]
lib/compat.c
lib/database.c
lib/dbmodify.c
lib/debugmake [deleted file]
lib/dump.c
lib/ehandle.c
lib/fields.c
lib/lock.c
lib/mlib.c
lib/myopt.c
lib/nfmalloc.c
lib/parse.c
lib/parsehelp.c
lib/showcright.c
lib/star.c
lib/tarfn.c
lib/varbuf.c
lib/vercmp.c
main/.cvsignore [new file with mode: 0644]
main/Makefile.am [new file with mode: 0644]
main/Makefile.in [deleted file]
main/archives.c
main/cleanup.c
main/configure.c
main/debugmake [deleted file]
main/depcon.c
main/dpkg.8
main/enquiry.c
main/errors.c
main/filesdb.c
main/help.c
main/main.c
main/main.h
main/packages.c
main/processarc.c
main/remove.c
main/select.c
main/update.c
md5sum/.cvsignore [new file with mode: 0644]
md5sum/Makefile.am [new file with mode: 0644]
md5sum/Makefile.in [deleted file]
md5sum/md5sum.c
methods/.cvsignore [new file with mode: 0644]
methods/Makefile.am [new file with mode: 0644]
methods/Makefile.in [deleted file]
methods/disk.install
methods/disk.setup
methods/disk.update
methods/hd.setup [changed mode: 0755->0644]
methods/hd.unpack [changed mode: 0755->0644]
methods/hd.update [changed mode: 0755->0644]
mkinstalldirs [deleted file]
po/.cvsignore [new file with mode: 0644]
po/ChangeLog [new file with mode: 0644]
po/POTFILES [new file with mode: 0644]
po/POTFILES.in [new file with mode: 0644]
po/en.po [new file with mode: 0644]
po/fr.po [new file with mode: 0644]
scripts/.cvsignore [new file with mode: 0644]
scripts/822-date.pl [changed mode: 0644->0755]
scripts/Makefile.am [new file with mode: 0644]
scripts/Makefile.in [deleted file]
scripts/cl-debian.pl [changed mode: 0644->0755]
scripts/cleanup-info.pl [changed mode: 0644->0755]
scripts/controllib.pl [changed mode: 0644->0755]
scripts/debian-changelog-mode.el
scripts/dpkg-buildpackage.sh
scripts/dpkg-distaddfile.pl [changed mode: 0644->0755]
scripts/dpkg-divert.pl [changed mode: 0644->0755]
scripts/dpkg-genchanges.pl [changed mode: 0644->0755]
scripts/dpkg-gencontrol.pl [changed mode: 0644->0755]
scripts/dpkg-name.sh [changed mode: 0644->0755]
scripts/dpkg-parsechangelog.pl [changed mode: 0644->0755]
scripts/dpkg-shlibdeps.pl [changed mode: 0644->0755]
scripts/dpkg-source.1
scripts/dpkg-source.pl [changed mode: 0644->0755]
scripts/install-info.pl
scripts/start-stop-daemon.8
scripts/start-stop-daemon.c [new file with mode: 0644]
scripts/update-alternatives.8
scripts/update-alternatives.pl
scripts/update-rc.d.8
scripts/update-rc.d.new-pl [deleted file]
scripts/update-rc.d.pl
split/.cvsignore [new file with mode: 0644]
split/Makefile.am [new file with mode: 0644]
split/Makefile.in [deleted file]
split/debugmake [deleted file]
split/info.c
split/join.c
split/main.c
split/mksplit [deleted file]
split/queue.c
split/split.c
version.h [deleted file]

diff --git a/.cvsignore b/.cvsignore
new file mode 100644 (file)
index 0000000..e8523c7
--- /dev/null
@@ -0,0 +1,15 @@
+ABOUT-NLS
+Makefile.in
+aclocal.m4
+config.guess
+config.h.in
+config.sub
+configure
+install-sh
+ltconfig
+ltmain.sh
+missing
+mkinstalldirs
+stamp-h.in
+intl
+config.log
diff --git a/COPYING b/COPYING
index e77696ae8ddfea61c8da89bcfa4494707d67cad2..a43ea2126fb6b114bff5f8e003ee118e045dacf1 100644 (file)
--- a/COPYING
+++ b/COPYING
@@ -279,7 +279,7 @@ POSSIBILITY OF SUCH DAMAGES.
 
                     END OF TERMS AND CONDITIONS
 \f
-           How to Apply These Terms to Your New Programs
+       Appendix: How to Apply These Terms to Your New Programs
 
   If you develop a new program, and you want it to be of the greatest
 possible use to the public, the best way to achieve this is to make it
diff --git a/ChangeLog b/ChangeLog
new file mode 100644 (file)
index 0000000..c3d7e4b
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,2251 @@
+dpkg (1.4.0.31) unstable; urgency=low
+
+  * dpkg/processarc.c: Make newfileslist static like the other arguments
+    for register_cleanup's cu_* functions.
+  * N-th fix for controllib.pl (simulate old behavior by trying stdin,
+    stdout, and stderr for getlogin()).
+  * Enable --force-overwrite for slink release, and comment where to do
+    so (dpkg/main.c).
+  * Recompile against ncurses4.
+
+ -- Daniel Jacobowitz <dan@debian.org>  Thu, 22 Oct 1998 17:37:23 -0400
+
+dpkg (1.4.0.30) unstable; urgency=low
+
+  * dpkg-dev isn't allowed to have a Recommends: debian-keyring (as that's
+    in contrib), so it's now lowered to a Suggests: . Thanks to James Troup
+    for pointing this out. 
+
+ -- J.H.M. Dassen (Ray) <jdassen@wi.LeidenUniv.nl>  Sat, 26 Sep 1998 13:59:23 +0200
+
+dpkg (1.4.0.29) unstable; urgency=low
+
+  * For now, prefer PGP over GPG.
+
+ -- J.H.M. Dassen (Ray) <jdassen@wi.LeidenUniv.nl>  Tue, 22 Sep 1998 09:38:09 +0200
+
+dpkg (1.4.0.28) unstable; urgency=low
+
+  * Added gpg (GNU Privacy Guard) support:
+    * scripts/buildpackage.sh: default to GPG (unless no GPG, but only a PGP
+      secret key file is found), as GPG, unlike PGP, is DFSG-free.
+    * Updated dpkg-source(1), and added gpg(1) and pgp(1) to the SEE ALSO
+      section.
+    * Worked around broken textmode implementation in GPG.
+    * dpkg-dev now Suggests: gnupg .
+  * No longer includes developer-keys.pgp . Instead, dpkg now Suggests: and
+    dpkg-dev now Recommends: developer-keyring.
+  * Compiled with latest libstdc++ (2.9).
+
+ -- J.H.M. Dassen (Ray) <jdassen@wi.LeidenUniv.nl>  Mon, 21 Sep 1998 13:17:14 +0200
+
+dpkg (1.4.0.27) unstable; urgency=low
+
+  * REALLY fixed dpkg-dev, and new attempt to placate installer on internals.
+
+ -- Daniel Jacobowitz <dan@debian.org>  Fri, 27 Jul 1998 15:58:04 -0400
+
+dpkg (1.4.0.26.0.1) unstable; urgency=low
+
+  * Binary-only upload for x86 and fixed dpkg-dev
+
+ -- Daniel Jacobowitz <dan@debian.org>  Fri, 24 Jul 1998 15:58:04 -0400
+
+dpkg (1.4.0.26) unstable; urgency=low
+
+  * Non-maintainer upload.
+
+  * Make --root work with maintainer scripts (Patch by Scott Barker,
+    bugs #4863 and #3170).
+  * Fix $(lispdir) bug if compiling without emacs (noticed by Joey Hess).
+
+ -- Daniel Jacobowitz <dan@debian.org>  Thu, 23 Jul 1998 12:02:04 -0400
+
+dpkg (1.4.0.25) unstable; urgency=low
+
+  * Non-maintainer upload.
+  
+  * Add the requested -nc option to dpkg-buildpackage (Do
+    not clean source tree, useful in debugging cycles).
+  * controllib.pl: Again by popular acclamation, fix the getlogin() warnings.
+    I redirected STDERR onto fd 0 before calling getlogin().
+  * tools.m4: Fix display of whether c++ works.
+  * dpkg-deb/extract.c: glibc 2.1 and some kernels want to make
+    fflush() move the current fpos.  Until someone can fix that,
+    protect with seek.
+  * Add an extra 0, to dselect/{pkg,meth}keys.cc so it compiles again.
+  * Start using lchown() if available.
+  * Really fix #20353. (aclocal.m4 was the wrong place; that's a generated
+    file.  The correct place is in tl_canon.m4.)
+
+ -- Daniel Jacobowitz <dan@debian.org>  Tue, 21 Jul 1998 03:14:14 -0400
+
+dpkg (1.4.0.24) unstable; urgency=low
+
+  * Non-maintainer upload.
+
+  * dpkg/main.c: Turn --force-overwrite off as default.
+  * dpkg/main.c: don't list --force-overwrite as default in --force-help,
+    noticed by Peter Weiss <Peter.Weiss@Informatik.Uni-Oldenburg.DE> and
+    others. [#23542, part of #17409].
+  * dpkg/dpkg.8: replaced with a newer version from Jim Van Zandt
+    <jrv@vanzandt.mv.com>. [#21061]
+
+  * dpkg-deb/build.c (do_build): add missing \n and improve error message
+    when conffile name is too long. [#7057]
+
+  * scripts/update-alternatives.8: replaced with better man page from
+    Charles Briscoe-Smith <cpb4@ukc.ac.uk>. [#17283]
+  * scripts/dpkg-source.1: corrected logic error in documentation for
+    dpkg-gencontrol's -p option, as noticed by Oliver Elphick
+    <olly@linda.lfix.co.uk>. [#14655]
+  * scripts/controllib.pl (findarch): correct typo in error message,
+    noticed by Yann Dirson <ydirson@a2points.com>. [#22106]
+  * scripts/dpkg-buildpackage.sh: fix typo s/source version/source
+    maintainer/, noticed by Joey Hess <joey@kite.ml.org>, Adam P. Harris
+    <apharris@onshore.com> and others. [#10175, #15559]
+  * scripts/dpkg-genchanges.pl: applied patch from Roman Hodek
+    <Roman.Hodek@informatik.uni-erlangen.de> which solves problems with
+    architecture specific packages in mostly architecture independent
+    multi-binary source packages. [#14341, #20192].
+
+  * doc/Makefile.am: remove any reference to the packaging manual, as it is
+    now provided by the separate "packaging-manual" package.
+  * doc/packaging.sgml: removed.
+  * doc/developer-keys.pgp: updated to the current debian keyring.
+
+  * aclocal.m4: applied patch from Joel Klecker <jk@espy.org> to handle
+    egcs' --print-libgcc-file-name output. [#20353]
+  
+  * debian/copyright: correct FSF address.
+  * debian/rules: add code from lesstif's debian/rules to make libtool
+    less of a fool (i.e. not use -rpath and to link shared libraries
+    against libraries it depends on).  Code by Richard Braakman
+    <dark@xs4all.nl> and Yann Dirson <dirson@debian.org>.
+  * debian/rules: remove all reference to the packaging manual as it is
+    now provided by the seperate "packaging-manual" package. [#21581,
+    #21186, #22698, #23342]
+  * debian/rules: link dpkg-divert.1.gz to undocumented.7.gz as the lack
+    of a real manpage has been reported in #11093.
+  * debian/README.compile: removed gawk and bogus comment about gettext
+    being in experimental, as reported by Santiago Vila <sanvila@unex.es>
+    [#23344].  Added libpaperg (debiandoc2ps needs paperconf).
+  * debian/shlibs.default.i386: updated for glibc, reported by Herbert Xu
+    <herbert@gondor.apana.org.au>. [#13140]
+  * debian/control (dpkg-dev): depend on perl as POSIX (not a part of
+    perl-base) is needed by most of the perl dpkg-* scripts, noticed by
+    Joel Klecker <jk@espy.org>. [#22115]
+
+ -- James Troup <jjtroup@comp.brad.ac.uk>  Wed, 24 Jun 1998 14:38:52 +0200
+
+dpkg (1.4.0.23.2) frozen unstable; urgency=low
+
+  * Non-maintainer upload.
+  * dpkg/main.c: Turn --force-overwrite back on as default.
+
+ -- James Troup <jjtroup@comp.brad.ac.uk>  Tue, 23 Jun 1998 22:19:26 +0200
+
+dpkg (1.4.0.23.1) frozen unstable; urgency=low
+
+  * No real changes, only a new version code to make this go to frozen too.
+
+ -- Nils Rennebarth <nils@debian.org>  Wed, 10 Jun 1998 17:29:58 +0200
+
+dpkg (1.4.0.23) frozen unstable; urgency=low
+
+  * Non-maintainer bug-fix release
+  * Update the disk method to the hamm directory structure (Bug#21000)
+
+ -- Nils Rennebarth <nils@debian.org>  Sun,  7 Jun 1998 19:14:51 +0200
+
+dpkg (1.4.0.22) frozen unstable; urgency=medium
+
+  * Non-maintainer bug-fix release
+  * Install main changelog file as `changelog.gz' instead of
+    `changelog.dpkg.gz' (Debian Policy, section 5.8) (Bug#6052,15157)
+  * Avoid use of /tmp/*.$$ in preinst and postinst (Bug#19712)
+  * Make sure diversions file is always created with mode 0644 (Bug#19494)
+  * When removing a file, chmod it to 000 if it's a char or block
+    device or remove its s[ug]id bits, if any (Bug#6006)
+  * Minor fixes in the programmer's manual (Bug#6206)
+  * Always create readable status and available files
+    (Bug#9869,11887,14636,15786,19146)
+  * Make dpkg-gencontrol honour -DArchtecture=xxxx (Bug#9893)
+  * Allow different archs for the same binary in debian/files (Bug#9894)
+  * Added workaround in /usr/lib/dpkg/methods/disk/setup
+    to avoid bash warning (Bug#10111,10131)
+  * Recognize old .deb packages with other locales (Bug#12232)
+  * Added `SHELL=bash' to debian/rules: it uses bash-specific structs
+  * Move some files from dpkg to dpkg-dev (part of Bug#13295)
+  * Minor fix in packaging manual regarding to Standards-Version (Bug#14696)
+  * Fixed --altdir and --admindir in update-alternatives (Bug#15332)
+  * Strip /usr/lib/libdpkg* (Bug#15671)
+  * dpkg: send output of --help, --force-help and -Dhelp to stdout
+    (Bug#16051,18574)
+  * send correct signals with start-stop-daemon (Bug#17258)
+  * Make `dpkg-divert --test --remove' work as expected (Bug#19531)
+  * Determine properly the architecture if gcc is egcs (Bug#20353)
+
+ -- Juan Cespedes <cespedes@debian.org>  Sun,  5 Apr 1998 17:37:01 +0200
+
+dpkg (1.4.0.21) unstable; urgency=low
+
+  * Non-maintainer release to include a new update-rc.d
+  * Fixed date on files in the archive from 2017 and 2018 by running
+    touch foo; find . -newer foo | xargs -r touch; rm foo
+  * Changed start-stop-deamon message "No <program> found; none killed." to
+    "No <program> found running; none killed."
+
+ -- Miquel van Smoorenburg <miquels@cistron.nl>  Thu,  5 Mar 1998 14:19:46 +0100
+
+dpkg (1.4.0.20) unstable; urgency=low
+
+  * Disabled --force-overwrites.
+  * Removed core file from source
+
+ -- Michael Alan Dorman <mdorman@debian.org>  Tue,  9 Jan 2018 03:34:28 -0500
+
+dpkg (1.4.0.19) unstable; urgency=low
+
+  * Changed methods/disk.setup to use output of
+    'dpkg --print-installation-architecture' instead of hard-coded 
+    '1386' (fixes #10995).
+  * Patched dpkg-source to properly quote metacharacters in strings 
+    before using them in pattern-matching expressions (fixes #10811).
+  * Fixed several documentation typos (fixes #10764).
+  * dpkg-source now works around 100-character filename limitation of cpio
+    (fixes #10400).
+  * dpkg-source now properly handles '\ no newline in source' message from
+    patch (fixes #5041).
+  
+ -- Klee Dienes <klee@debian.org>  Sun, 13 Jul 1997 19:28:22 -0700
+
+dpkg (1.4.0.18) unstable; urgency=low
+
+  * dpkg-source now uses new -z option to GNU patch (still needs to be
+    changed to detect and use old version as well) (fixes #9904, #10005, #10007).
+  * Added i686 to archtable.
+  * shlibs.default now uses xlib6 instead of elf-x11r6lib (fixes #9926).
+  * debian-changelog-mode now uses interruptible completing type-in fields
+    instead of the previous 'select-a-letter method'.  I consider this
+    better and more standard than the previous way, but I'd welcome
+    opinions to the contrary.  Consider this a 'probationary' change for
+    now (fixes #9873, #9874).
+
+ -- Klee Dienes <klee@debian.org>  Sun, 25 May 1997 09:56:08 -0400
+
+dpkg (1.4.0.17) unstable; urgency=low
+
+  * All of the dpkg binaries (but not dpkg-dev or dselect) now speak
+    french, thanks to patches from Christophe Le Bars <clebars@teaser.fr>
+  * Fix leading spaces before day in 822-date.
+  * Changes from Tom Lees <tom@lpsg.demon.co.uk> to better support
+    building on non-Debian systems; minor Makefile fixes.
+  * Added 'ppc powerpc powerpc' to archtable.
+  * Changed documentation paper size to US/Letter instead of A4 (A4
+    may be better, but it's easier to print US/Letter on A4 than it is 
+    to print A4 on US/Letter).
+  
+ -- Klee Dienes <klee@debian.org>  Tue,  13 May 1997 15:24:31 -0400
+
+dpkg (1.4.0.16) experimental; urgency=low
+
+  * Added generated sources to GNU-format source archive so it no longer
+    requires perl to build.
+
+ -- Klee Dienes <klee@debian.org>  Sat, 10 May 1997 17:34:29 -0400
+
+dpkg (1.4.0.15) experimental; urgency=low
+
+  * Changed dpkg-genchanges to check for ($arch == $substvar{'Arch'}), not
+    ($arch ne 'all') (fixes #9688).
+  * Fixed bug in start-stop-daemon.c (was using optarg after argument
+    parsing was over) (fixes #9597, #9603, #9364).
+  * Provide 50dpkg-dev.el for xemacs as well as emacs.
+  * Explicitly provide path for debian-changelog-mode in 50dpkg-dev to use
+    .el file as workaround until xemacs can read emacs19 .elc files.
+  * Pass top_distdir explicitly to 'make dist' to accomodate bug in
+    automake_1.1o-1.
+  * Fix debian/build to make html documentation without including
+    directories in tar archives (fixes #9348).
+  
+ -- Klee Dienes <klee@debian.org>  Fri,  9 May 1997 13:17:18 -0400
+
+dpkg (1.4.0.14) experimental; urgency=low
+
+  * Fixed buglet in install-info.pl (fixes #9438).
+  * Re-write of update-rc.d.pl, primarily by Miquel van Smoorenburg
+    <miquels@cistron.nl> (fixes #9434, #9436).
+  * Renamed "dpkg Programmer's Manual" to "dpkg Internals Manual".
+  
+ -- Klee Dienes <klee@debian.org>  Tue,  6 May 1997 22:01:07 -0400
+
+dpkg (1.4.0.13) experimental; urgency=low
+
+  * Fix to start-stop-daemon so that it still takes numeric arguments (had
+    been broken in 1.4.0.12) (fixes #9598).
+  * Fix 822-date to sanity-check localtime() output (seconds must be the
+    same as GMT).
+  * Patch from Guy Maor <maor@ece.utexas.edu> to dpkg-source.pl to support
+    pristine (MD5-equivalent) upstream sources.
+  * Patch from Michael Alan Dorman <mdorman@calder.med.miami.edu> to
+    update-rc.d.pl to fix handling multiple start/stop entries on a single
+    line.
+  * Several fixes to dpkg-genchanges to support -B option (added in
+    1.4.0.12) (fixes #9340).
+  * Handle errors from 822-date in debian-changelog-mode.el.
+  * Changed cl-debian.pl to correctly handle extra whitespace in changelog
+    datestamps.
+
+ -- Klee Dienes <klee@debian.org>  Mon,  5 May 1997 18:12:43 -0400
+
+dpkg (1.4.0.12) experimental; urgency=low
+
+  * Re-wrote 822-date for clarity and to support timezone offsets >= 12h
+    (New Zealand in DST is +1300, for example) (fixes #7130).
+  * Patch from Juergen Menden <menden@morgana.camelot.de> to support
+    archdependent-only builds (fixes #8912, #9245, #5359).
+  * Fix archtable entry for powerpc (fixes #8794).
+  * Strip /sbin/* and /usr/sbin/* in debian/rules (fixes #8853).
+  * Moved start-stop-daemon to /sbin (fixes #8669).
+  * Set sharedstatedir and localstatedir for $(MAKE) install in
+    debian/rules (fixes #8852).
+  * Fixes for update-rc.d(8) from Jim Van Zandt <jrv@vanzandt.mv.com>
+    (fixes #8576).
+  * No longer do variable substitutions when generating change file (fixes
+    #5862).
+  * Support symbolic signal names in start-stop-daemon (fixes #7715).
+  * Add autoload for debian-changelog-mode to /etc/emacs/site-start.d
+    (fixes #4519, #5841).
+  * Add recommendation for gcc and make in dpkg-dev (gcc is needed for dpkg
+    --print-architecture, used by dpkg-gencontrol; make is needed for any
+    debian/rules file) (fixes #8470).
+  * Minor changes to packaging manual section on source package
+    conversion (fixes #6801).
+  * Renamed "programmer's manual" to 'packaging manual'.
+  * Start of new "programmer's manual" containing information on dpkg
+    internals and build information.  This manual uses the new
+    TeXinfo-SGML format, currently included in doc/.
+  * dselect/pkgdepcon.cc now checks for debug not NULL, not just depdebug.
+  * Changed makefiles to support building outside of source directory.
+  * Include GNU-format source distribution with other non-debian packages.
+
+ -- Klee Dienes <klee@debian.org>  Sun,  4 May 1997 11:08:19 -0500
+
+dpkg (1.4.0.11) experimental; urgency=low
+
+  * Patches for alpha and libc6 from Michael Alan Dorman
+    <mdorman@calder.med.miami.edu>.
+  * Fixed minor problems in dpkg-shlibdeps regular expressions for libc6.
+  * Fix regex to detect directory creation in dpkg-source.pl.
+  * Minor changes for automake-1.1n.
+
+ -- Klee Dienes <klee@debian.org>  Sun, 23 Mar 1997 18:09:33 -0500
+
+dpkg (1.4.0.10) unstable; urgency=medium
+
+  * Fixed bug in controllib.pl (@fowner was entire passwd entry,
+    not just [uid, gid] as it should have been).
+
+ -- Klee Dienes <klee@debian.org>  Thu, 20 Mar 1997 13:06:52 -0500
+
+dpkg (1.4.0.9) unstable; urgency=low
+
+  * Check fputs() return values for (ret >= 0), not (ret != 0) (fixes #7522).
+  * dpkg-shlibdeps no longer gives error for Java and statically linked
+    binaries (fixes #4988).
+  * Change 'details of the old format' to 'details of the new format' in
+    deb-old.5 (fixes #7605).
+  * dpkg-source -b now warns (was previously silent) if maintainer changes
+    create new subdirectories.  dpkg-source -x now warns (previously gave
+    error) if maintainer changes create new subdirectories (partially
+    fixes #6866, #6671, #5045, #6482).    
+  * Added manual page for start-stop-daemon (8). 
+  * Added C version of start-stop-daemon by 
+    Marek Michalkiewicz <marekm@i17linuxb.ists.pwr.wroc.pl> (fixes #1670).
+  * Converted to use GNU automake for the build process by Tom Lees 
+    <tom@lpsg.demon.co.uk>.<
+  * Preliminary support for dpkg functions as a shared library (now
+    provides libdpkg.so, but much work needs to be done in better
+    segregating and defining the interface).
+  * Preliminary internationalization support by Galen Hazelwood
+    <galenh@debian.org>.  Only the library, dpkg-deb, md5sum, and dpkg
+    have been converted so far.  No translations have yet been
+    constructed.
+  * Handle 'libc.so.6 => /lib/libc.so.6 (0x40010000)' format from libc6
+    ldd (fixes #7603, #7926, #8688, #9179, #9134, #8516).
+  * Removed policy.sgml (it has been moved to the debian-policy package).
+  * Include patch from Darren Stalder <torin@daft.com> for
+    dpkg-buildpackage to choose PGP key based on Maintainer: field of 
+    package being built (or -m<maintainer> option, if present) (fixes 
+    #7898).
+  * Changed controllib.pl to use $ENV{LOGNAME}, getlogin(), and $<
+    (in that order) to determine the intended ownership of 
+    debian/{files,substvars},  (fixes #7324, #6823, #5659, #5965, #5929,
+    #9239, #5366).
+  * Don't sign .dsc file in dpkg-buildpackage if building a binary-only
+    release (fixes #7260).
+  * Updated developer-keys.pgp to latest revision (fixes #6134).
+  
+ -- Klee Dienes <klee@debian.org>  Mon, 17 Mar 1997 16:11:24 -0500
+
+dpkg (1.4.0.8) unstable; urgency=medium
+
+  * Corrected update-rc.d for bash 2.0
+  * Updated developer-keys.pgp from
+    http://www.iki.fi/liw/debian/debian-keyring.tar.gz
+
+ -- Guy Maor <maor@ece.utexas.edu>  Mon, 3 Feb 1997 04:05:01 -0600
+
+dpkg (1.4.0.7) stable unstable; urgency=HIGH
+
+  * Fixed --assert-support-predepends failing between unpack & configure.
+  * Added --assert-working-epoch option.
+
+ -- Guy Maor <maor@ece.utexas.edu>  Sat, 25 Jan 1997 23:02:11 -0600
+
+dpkg (1.4.0.6) stable unstable; urgency=high
+
+  * Patched lib/vercmp.c to hopefully fix dselect epoch processing
+    (Bug#6204), (Bug#4590).
+  * Patched scripts/dpkg-buildpackage, scripts/dpkg-genchanges,
+    scripts/dpkg-gencontrol for epoch processing, courtesy of Loic Prylli 
+    <lprylli@graville.fdn.fr> (Bug#6138, Bug#5225).
+  * Patched dpkg-genchanges to actually honor the -u switch to specify
+    directory (Bug#5564).
+  * Applied patch to main/archive.c to correct problems setting set[gu]id
+    binaries, courtesy of Herbert Xu <herbert@greathan.apana.org.au>
+    (Bug#5479). 
+  * Applied patch to dpkg-source to correct debian-only package names,
+    courtesy of Guy Maor <maor@ece.utexas.edu> (Bug#5355).
+
+ -- Michael Alan Dorman <mdorman@calder.med.miami.edu>  Thu, 2 Jan 1997 11:36:09 -0500
+
+dpkg (1.4.0.5) stable frozen unstable; urgency=medium
+
+  * Distribution for frozen too.
+
+ -- Heiko Schlittermann <heiko@lotte.sax.de>  Thu, 5 Dec 1996 09:13:42 +0100
+
+dpkg (1.4.0.4) stable unstable; urgency=medium
+
+  * Bug2962 fixed: patch from Ian Jackson applied
+    (cursor keys won't work after search)
+  * Manuals 2.1.2.2
+
+ -- Heiko Schlittermann <heiko@lotte.sax.de>  Fri, 15 Nov 1996 20:21:18 +0100
+
+dpkg (1.4.0.3) unstable; urgency=medium
+
+  * dpkg-source -x: created bad permissions (set x-bit for
+    all files pointed to by a symlink)
+
+ -- Heiko Schlittermann <heiko@lotte.sax.de>  Fri, 18 Oct 1996 18:32:06 +0200
+
+dpkg (1.4.0.2) unstable; urgency=medium
+
+  * dpkg-buildpackage.sh: reverted the quoting change -- (you
+    should use super, sudo, realy, but not su.  Or write a wrapper
+    around su)
+  * dpkg-buildpackge.sh: passing -m, -C, -v options to dpkg-genchanges
+    more the way Ian likes ;-)
+  * dpkg-source.pl: new function deoctify() as replacement for eval()
+    (turn \ddd into the corresponding character) [rem: probably better
+    solution would be to convert cpios output names into complete \ddd 
+    representation as well tars output names] 
+  * dpkg-source.pl: fixed 2 typos in failure message on creating 
+    $origtargz.tmp-nest.
+  * main/main.c: typo `tread' -> `treat'
+  * main/enquiry.c: fixed the ignorance for some relations in --compare-versions
+  * main/enquiry.c: missing version is now handled as described in `dpkg --help'
+    (or at least as I understood `dpkg --help' PLEASE TRY IT)
+  * lib/parsehelp.c: fixed parsing of epoch information
+
+ -- Heiko Schlittermann <heiko@lotte.sax.de>  Sun, 6 Oct 1996 23:27:47 +0200
+
+dpkg (1.4.0.1) unstable; urgency=medium
+
+  * dpkg-source: doesn't get screwed up from hardlinks
+    in the archive now
+  * dpkg-source: doesn't get screwed up from `unprintable' characters
+    in file names (e.g. from the kbd package) 
+  * controllib.pl: $varlistvile -> $varlistfile (thanx Karl Sackett)
+  * dpkg-buildpackge: quoting for $rootcommand (thanx  Michael Meskes)
+    and `eval' as default $rootcommand
+  * dpkg-*, controllib.pl: created debian/files and debian/substvars
+    are chown'ed to `getlogin()' and its group
+  * doc/: mv changed to mv -f
+  * dpkg-buildpackage: added an option -a for overriding the
+    architecture in the changes _file_name_
+  * dpkg-buildpackage: pass -m* -v* .. options to dpgk-genchangelog
+  * dpkg-name moved to dpkg-dev
+
+ -- Heiko Schlittermann <heiko@lotte.sax.de>  Sat, 21 Sep 1996 22:06:01 +0200
+
+dpkg (1.4.0) unstable; urgency=low (HIGH for new source format)
+
+  * Corrected buffer overrun when dpkg-deb generates filename.  (Bug#4467.)
+  * dpkg-shlibdeps works with DEBIAN/shlibs (thanks Heiko Schlittermann).
+  * Added libm.so.5 to shlibs.default for i386/m68k.
+
+  * Split binary package into two: dpkg and dpkg-dev.
+  * dpkg-source(1) documents mode and ownership setting during extraction.
+
+  * dpkg-scanpackages moved to /usr/bin.
+  * Include /usr/bin/dpkg-deb, not dpkg-deb.dist; don't rename in scripts.
+  * Copyright file changed slightly.
+  * debian-changelog-mode uses magic key substitution strings.  (Bug#4419.)
+  * Changed email address in control file to <ian@chiark.greenend.org.uk>.
+  * Manuals and own Standards-Version: updated to 2.1.1.0.
+
+ -- Ian Jackson <ian@chiark.greenend.org.uk>  Thu, 12 Sep 1996 01:13:33 +0100
+
+dpkg (1.3.14) unstable; urgency=low
+
+  * dpkg-buildpackage new -tc (clean source tree) option.
+
+  * Formatted documentation removed by `make clean' and so not in source.
+  * Manuals and own Standards-Version: updated to 2.1.0.0.
+  * Distribute {policy,programmer}.{html.tar,ps}.gz with each upload.
+
+ -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Sun, 1 Sep 1996 20:43:40 +0100
+
+dpkg (1.3.13) unstable; urgency=low (HIGH for building new src X programs)
+
+  * X shared libraries added to shlibs.default (=> `elf-x11r6lib').
+  * dpkg-source tar invocation fixed so that TAPE env var doesn't break it.
+  * dpkg-source copes better with missing final newline messages from diff.
+
+  * dpkg-buildpackage usage message fixed: -si is the default.  (Bug#4350.)
+  * dpkg-source error message about src dir mismatch typo fixed.  (Bug#4349.)
+
+  * dpkg-source(1) has suggestions for dpkg-buildpackage -r option.
+  * dpkg-source change date fixed.  (Bug#4351.)
+  * More developers' keys.
+  * Manual updates, own Standards-Version updated.
+
+ -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Sat, 31 Aug 1996 20:08:18 +0100
+
+dpkg (1.3.12) unstable; urgency=medium
+
+  * dpkg prints old version number when upgrading.  (Bug#4340.)
+  * dpkg-deb tries to detect and flag corruption by ASCII download.
+
+  * dpkg-genchanges and dpkg-buildpackage say what source is included.
+
+  * dpkg-buildpackage passes +clearsig=on to PGP (or pgpcommand).  (Bug#4342.)
+
+  * dpkg-source prints better error for cpio not honouring -0t.
+  * control file Suggests cpio >= 2.4.2, rather than just cpio.
+
+ -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Fri, 30 Aug 1996 15:31:51 +0100
+
+dpkg (1.3.11) unstable; urgency=low
+
+  * EBUSY when dpkg removes a directory is only a warning.
+
+  * dpkg-genchanges generates sensible warning (not confusing error
+    about mismatch) for missing Section/Priority in binary packages.
+
+  * Added dpkg --print-gnu-build-architecture option.
+  * shlibs.default for m68k provided, as a copy of i386 version.
+
+ -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Thu, 29 Aug 1996 14:05:02 +0100
+
+dpkg (1.3.10) unstable; urgency=medium
+
+  * dpkg-source(1) manpage alias symlinks are not dangling.
+  * dselect selects things by default if they are installed.
+  * Added `pentium' as alias for `i386' architecture.
+  * Added `Suggests: cpio, patch' and explanatory text to Description.
+    (Bugs #4262, #4263.)
+
+  * More developers' PGP keys.
+  * Manual updates, new source format released.
+
+ -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Mon, 26 Aug 1996 14:30:44 +0100
+
+dpkg (1.3.9) unstable; urgency=low (high for new source format)
+
+  * dpkg --get-selections and --set-selections added.
+  * New dpkg --force-not-root flag.
+
+  * Don't replace directory with another package's file.  (Bug#4202.)
+
+  * All manpages now installed compressed.
+  * Copyright file moved to /usr/doc/dpkg/copyright.
+  * Standards-Version updated (0.2.1.1).
+
+ -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Sat, 24 Aug 1996 19:09:30 +0100
+
+dpkg (1.3.8) unstable; urgency=low (high for new source format)
+
+  * dpkg-buildpackage -sa, -si options work correctly.
+
+  * update-rc.d(8) updated to reflect design and reality.
+  * Programmers' and policy manual updates.
+
+ -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Fri, 23 Aug 1996 12:48:26 +0100
+
+dpkg (1.3.7) unstable; urgency=low (medium for source pkg docs)
+
+  * dselect +/-/_/= on lines for all broken, new, local or whatever
+    packages do not affect _all_ packages.  (Bug#4129.)
+
+  * Support for diff-only uploads in source packaging tools.
+  * dpkg-genchanges -d<descripfile> option renamed to -C.
+  * dpkg-buildpackage understands -m, -v, -C (for dpkg-genchanges).
+  * Support for debian/shlibs.local added to dpkg-shlibdeps.
+  * Shared library files' search order defined in dpkg-source(1), and
+    relevant files added to the FILES section.
+
+  * Programmers' manual describes source packaging tools.
+  * Policy manual mentions shared library control area file.
+  * dpkg-source manpage includes dpkg-shlibdeps in title line.
+  * Manuals have changelog and automatic version numbering.
+  * changelogs (for dpkg and for manuals) installed.
+  * binary target split into binary-arch and binary-indep in manual.
+  * Manpages should be compressed.
+  * Copyright file is moved to /usr/doc/<package>/copyright.
+  * Changelogs must be installed in /usr/doc/<package>.
+  
+  * dpkg-deb(8) moved to dpkg-deb(1).
+
+  * binary target split into binary-arch and binary-indep in source.
+  * changelog entry for 1.2.14 copied from that (forked) release.
+
+ -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Thu, 22 Aug 1996 15:36:12 +0100
+
+dpkg (1.3.6) experimental; urgency=low (HIGH for new source format)
+
+  * dpkg-source now has broken argument unparsing for tar.  (Bug#4195.)
+
+  * dpkg-gencontrol writes to debian/tmp/DEBIAN/control by default.
+  * dpkg-shlibdeps script added.
+
+  * Back to old sh update-rc.d, and removed manpage, because new Perl
+    version and the manpage have different syntax and semantics.
+  * update-rc.d prints usage message for missing terminal `.'.  (Bug#4122.)
+
+  * Use rm -rf instead of just rm -r in dpkg-deb --info &c.  (Bug#4200.)
+
+  * Added support for Installed-Size to dpkg-gencontrol, and documented.
+  * Source packaging substitution variables and name syntax rationalised.
+  * dpkg-source scripts' usage messages improved slightly.
+  * dpkg-source works with non-empty second (orig dir) argument.
+
+  * Added rationale for copyright policy to manual.
+  * More developers' PGP keys.
+  * Control database handling cleanups (usu. Source field blanked).
+
+ -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Tue, 20 Aug 1996 15:39:58 +0100
+
+dpkg (1.3.5) experimental; urgency=low (high for debian-changelog-mode)
+
+  * 822-date script included.  (Bug#4136.)
+  * debian-changelog-add-version works on empty file.
+  * debian-changelog-mode mode-help works properly.
+
+  * dpkg-source tells patch not to make numbered backups.  (Bug#4135.)
+
+  * More developers' PGP keys.
+  * Paragraph on uucp -a and -g options removed from policy manual.
+
+ -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Wed, 14 Aug 1996 14:46:47 +0100
+
+dpkg (1.3.4) experimental; urgency=low
+
+  * Removed debugging output from dpkg-source -x.  Oops.
+  * Removed section on source package permissions from policy manual -
+    dpkg-source now sorts these out.
+
+ -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Sun, 11 Aug 1996 13:25:44 +0100
+
+dpkg (1.3.3) experimental; urgency=low
+
+  * Programmers' & policy manuals in source tree; HTML in /usr/doc/dpkg.
+  * Old guidelines.info and text files in /usr/doc/dpkg removed.
+
+  * dpkg-source sets permissions on extracted debianised source tree
+    and does not copy ownerships out of archive even if running as root.
+
+  * Emacs mode `dpkg changelog' renamed to `Debian changelog'.
+  * Default changelog format renamed from `dpkg' to `debian'.
+
+  * debian-changelog-mode sets fill-prefix correctly.
+  * debian-changelog-mode urgencies except HIGH lowercase by default.
+  * debian-changelog-mode displays keymap in doc string and so mode help.
+
+  * More maintainers' PGP keys.
+
+  * Remove built changelog parsers with `clean' target in source.
+
+ -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Sat, 10 Aug 1996 23:35:51 +0100
+
+dpkg (1.3.2) experimental; urgency=LOW (MEDIUM for dpkg-source)
+
+  * Faster update-rc.d written in Perl by Miquel van Smoorenburg.
+  * install-info --test doesn't lock dir.  (Bug#3992, thanks Darren).
+
+  * dpkg-source doesn't break in the presence of any symlinks.
+
+  * More developers' keys added to doc/developer-keys.pgp.
+  * Install developers' keys in /usr/doc/dpkg/developer-keys.pgp.
+  * dpkg-source documents undefined substvar behaviour.
+  * minor debian/rules cleanups.
+
+ -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Sat, 10 Aug 1996 02:13:47 +0100
+
+dpkg (1.3.1) experimental; urgency=LOW
+
+  * manpage for dpkg-source et al now available.
+  * dpkg-changelog-mode.el installed in site-lisp, but still no autoload.
+
+  * dpkg-source prints correct string for not-understood tar -vvt output.
+  * dpkg-source parsing of tar -vvt output made more robust.
+
+  * dpkg-buildpackage prints usage message on usage error.
+  * dpkg-gencontrol can print usage message.
+  * -T<varlistfile> option added to dpkg-source.
+  * Description of -f<fileslistfile> corrected in dpkg-distaddfile usage.
+  * -m<maintainer> synopsis changed in dpkg-genchanges usage.
+  * debian/substvars may now contain blank lines.
+
+ -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Thu, 8 Aug 1996 02:36:04 +0100
+
+dpkg (1.3.0) experimental; urgency=LOW
+
+  * dpkg can install named pipes.
+  * dpkg-deb supports directory for destination, generates filename.
+  * dpkg-{source,gencontrol,genchanges,parsechangelog,buildpackage},
+    dpkg-distaddfile scripts to support new source package format.
+  * a.out build no longer supported.
+  * Changed to new source package format.
+
+ -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Tue, 6 Aug 1996 02:31:52 +0100
+
+
+dpkg (1.2.14) stable unstable; urgency=MEDIUM
+
+  * dselect +/-/_/= on lines for all broken, new, local or whatever
+    packages do not affect _all_ packages.  (Bug#4129.)
+
+  * NOTE - THE HISTORY FORKS HERE.  1.2.14's change appears in 1.3.7.
+
+ -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Thu, 22 Aug 1996 00:39:52 +0100
+
+
+dpkg (1.2.13) unstable; urgency=LOW
+
+  * dpkg --search produces correct output for diversions.
+  * dpkg-name remove unnecessary arch missing warning.  (Bug#3482.)
+
+  * dpkg-deb --build warns about uppercase chars in package name.
+
+  * dpkg-scanpackages error messages updated and manpage provided
+    (thanks to Michael Shields).
+  * dpkg-scanpackages warns about spurious entries in override file.
+  * dpkg-scanpackages `noverride' renamed to `override' everywhere.
+  * dpkg-scanpackages field ordering to put Architecture higher.
+  * dpkg-scanpackages field names capitalised appropriately.
+  * dpkg-scanpackages invokes find with -follow.  (Bug#3956.)
+
+  * guidelines say #!/usr/bin/perl everywhere, not #!/bin/perl.
+  * Many developers' PGP keys added.
+
+  * configure script uses ${CC} instead of $(CC) (again :-/).
+  * developers' keys included in dpkg source tree and /usr/doc.
+  * configure remade using autoconf 2.10-3 (was 2.4-1).
+
+ -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Thu, 1 Aug 1996 02:46:34 +0100
+
+dpkg (1.2.12); priority=LOW
+
+  * dpkg --search and --list understand and comment on diversions.
+  * dpkg-divert displays diversions more intelligibly.
+
+  * Guidelines are somewhat clearer about descriptions.
+  * deb(5) describes new format; old moved to deb-old(5).  (Bug#3435.)
+  * deb-control(5) carries a warning about being out of date.
+
+  * Added 1996 to dselect version/copyright.
+
+ -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Thu, 4 Jul 1996 15:04:49 +0100
+
+dpkg (1.2.11); priority=MEDIUM
+
+  * dselect had dependency bug if installed package newer than avail.
+  * Added `replaces' to dselect's list of package relationship strings.
+
+ -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Mon, 1 Jul 1996 02:51:11 +0100
+
+dpkg (1.2.10); priority=MEDIUM
+
+  * Fixed bug in old-style version/revision number parsing.  (Bug#3440.)
+
+ -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Sat, 29 Jun 1996 03:32:45 +0100
+
+dpkg (1.2.9); priority=MEDIUM
+
+  * Fixed status database updates reading bug.
+  * `Setting up' message includes version number.
+  * `existence check' message changed to say `cannot access archive'.
+
+ -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Thu, 27 Jun 1996 13:39:36 +0100
+
+dpkg (1.2.8); priority=LOW
+
+  * dpkg --record-avail puts data in Size field.
+  * strip / for rmdir(2) in cleanup to work around kernel bug.  (Bug#3275.)
+  * dpkg-split --msdos no longer allows `-' and other chars in filenames.
+
+  * manual dpkg-split(8) written.
+  * dpkg-split minor typo in --auto usage error message fixed.
+  * dpkg-deb(8) very minor cosmetic fix to --build option.
+
+ -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Tue, 25 Jun 1996 03:00:14 +0100
+
+dpkg (1.2.7); priority=LOW
+
+  * dpkg-scanpackages syntax errors fixed.
+
+ -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Fri, 21 Jun 1996 04:10:38 +0100
+
+dpkg (1.2.6); priority=MEDIUM
+
+  * NFS, CDROM and partition dselect methods include mountpoint
+    in paths given to dpkg in [I]install, so they should now work.
+
+  * Removed some leftover files from source tree.
+
+ -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Wed, 12 Jun 1996 14:35:19 +0100
+
+dpkg (1.2.5); priority=MEDIUM
+
+  * Allow, but do not create, packages in half-installed state
+    with no version number.  (Aargh.)
+
+ -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Mon, 10 Jun 1996 04:55:43 +0100
+
+dpkg (1.2.4); priority=MEDIUM
+
+  * New dpkg-name from Erick (<pkg>_<version>_<arch>.deb convention).
+  * Disappeared packages can't own conffiles any more !  (Bug#3214.)
+  * install-info creates Miscellaneous sections with a newline
+    following the heading.  (Bug#3218.)
+  * cleanup-info script installed in /usr/sbin; called as appropriate
+    by postinst.  Thanks to Kim-Minh Kaplan.  (Bug#3125.)
+  * Allow superseded Essential packages to be purged after they've
+    been removed (clear the Essential flag on removal, and ignore it
+    on packages that are in stat_configfiles).
+
+  * dselect disk methods understand `y' as well as `yes' for using
+    development tree.
+  * dselect doesn't make packages appear as `new' again if update
+    of available packages fails.
+  * dselect places method selection cursor over option last selected.
+
+  * dpkg-scanpackages doesn't die when repeated packages are found.
+  * dpkg-scanpackages allows many old maintainers (`//'-separated).
+
+  * `Version' field is now mandatory (some operations already
+    wouldn't work right anyway if it was't there).
+
+  * update-rc.d(8) now says you must remove the script.  (Bug#3215.)
+  * dpkg --force-help says that --force-overwrite is on by default.
+  * dpkg-deb manpage rewritten.
+  * debian.README (= /usr/doc/copyright/dpkg) edited slightly.
+
+  * Some database parsing grunge removed (pdb_preferversion, &c).
+  * Source tree doc/sgml contains some embryonic manuals.
+  * Leftover files in lib directory in source tree deleted.
+
+ -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Mon, 10 Jun 1996 03:52:01 +0100
+
+dpkg (1.2.3); priority=HIGH
+
+  * install-info doesn't replicate section headings (Bug#3125, #2973).
+  * New dpkg-name manpage broken off from script (oops!).
+  * dselect help screens made consistent with new strings, flags, &c.
+  * dselect error flag column labelled E (Error), not H (Hold).
+  * `Escape' no longer bound to `exit list without saving' in dselect.
+
+ -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Tue, 28 May 1996 02:14:57 +0100
+
+dpkg (1.2.2); priority=MEDIUM
+
+  * Fixed dselect coredump found by Erick Branderhorst (thanks).
+  * Sort obsolete removed packages separately, not under Available.
+
+ -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Thu, 23 May 1996 21:31:05 +0100
+
+dpkg (1.2.1); priority=MEDIUM
+
+  * `=' key in dselect really does `hold' rather than `unhold'.
+  * dselect dependency processing now interacts better with `hold'.
+  * dselect `I' key (not `i') modifies display of the info window.
+  * dselect shows unavailable packages as being unavailable.
+  * dselect main menu headings and many other strings changed to try to
+    discourage people from deselecting every package and using [R]emove.
+    Notably, `select' changed to `mark' throughout.
+
+  * dselect disk methods now print a few fewer double slashes.
+  * dselect disk access methods will offer to use dpkg --record-avail
+    to scan the available packages, if no Packages file is found.
+
+  * New dpkg --compare-versions option, for the benefit of scripts &c.
+  * New dpkg --clear-avail option forgets all available packages info.
+  * New dpkg --print-avail option, prints `available' data (from Packages, &c).
+  * dpkg usage message is more informative, but no longer fits on screen.
+  * dpkg --avail option renamed --record-avail.
+
+  * Latest dpkg-name from Erick Branderhorst.
+  * dpkg-scanpackages has more sensible problem reporting.
+  * postinst configure now gets null argument (not <unknown> or <none>)
+    when there is no previously configured version.
+
+  * Guidelines say that postinst configure is given previous version.
+  * Guidelines don't refer to maintainer-script-args.txt in main text.
+  * Guidelines (Texinfo source) uploaded separately.
+
+  * Own version of strcpy (used for debugging) removed.
+  * Interface to access methods document in source (doc/dselect-methods.txt).
+  * debian.buildscript moves changes file into parent directory.
+
+ -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Wed, 22 May 1996 01:26:31 +0100
+
+dpkg (1.2.0); priority=MEDIUM
+
+  * dselect can sort packages by available and installed states, and
+    display their version numbers.  (Use O, o and V.)
+  * Hold is properly integrated as a real `wanted state', rather than
+    a separate flag.
+  * Epochs in version numbers implemented, using the syntax
+    <epoch>:<version>-<revision>.  (Epoch not usually displayed.)
+  * dselect disk method is architecture-independent (uses dpkg's
+    installation architecture, and looks in the right part of the tree).
+
+  * dselect disk method doesn't try to satisfy the predependencies of
+    packages which are on hold.
+  * Fixed conflict-related assertion failure.  (Bug#2784.)
+  * conffiles do not cause file conflicts if the conflicting package
+    is in the `configuration only' state.  (Bug#2720.)
+  * Fixed messages where available version number was reported as installed
+    version in conflict and dependency messages.  (Bug#2654, Bug#2974.)
+
+  * New format .deb files are default even for a.out compiles (but
+    a.out version of dpkg is in old format).
+  * Characters @:= (at colon equals) in package names now strictly
+    forbidden everywhere (_ is still allowed in existing packages).
+  * New dpkg --print-installation-architecture option prints installation
+    architecture (compiled in), rather than build architecture (determined
+    from gcc -print-libgcc-file-name).
+
+  * Version messages show whether compiled a.out or ELF (i386 only).
+  * Fixed missing space in version syntax error messages.
+  * Manpage dpkg.8 installed with warning about inaccuracy.
+
+  * Guidelines don't say to stop and restart daemons in runlevels 2345;
+    instead they say to start in 2345 and stop in 016.
+  * Guidelines and version messages say just Debian Linux.
+  * Guidelines typo fix `"stop2' => `"stop"'.  (Bug#2867.)
+
+  * doc/Makefile.in clean properly deletes various guidelines.info* files.
+
+ -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Thu, 16 May 1996 00:01:21 +0100
+
+dpkg (1.1.6); priority=MEDIUM
+
+  * Check virtual dependencies when removing (ouch! - thanks SDE.)
+  * Fixed bug in internal database validity management that could
+    make dselect and dpkg dump core.  (Bug#2613.)
+  * Fixed two coredumping bugs when using local diversions.  (Bug#2804.)
+  * Fixed disappearance of overwritten packages.  (Bug#2696.)
+  * install-info won't modify dir file before start of menu.
+  * install-info will create Miscellaneous heading if no sections yet.
+
+  * Only alphanums and +-. allowed in package names - enforced by
+    dpkg-deb --build and documented in Guidelines.
+  * dselect doesn't display packages unless they are installed, selected
+    or available.
+  * dselect doesn't show spurious section and priority headings.
+  * dselect has a few extra keybindings (from Lee Olds).
+  * --force message changed to `--force enabled' so that default is OK.
+
+  * dpkg-name now includes architecture component in .deb filename,
+    and translates - in package name to _.
+  * .deb file has architecture component in filename.
+
+  * Guidelines changed to say Pre-Depends is for experts only.
+  * Guidelines say to provide a unidiff (-u) rather than an old context diff.
+  * Guidelines say 755 root.root for shared libraries.
+
+ -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Wed, 1 May 1996 00:47:22 +0100
+
+dpkg (1.1.5); priority=MEDIUM (HIGH for diversions users)
+
+  * Fixed coredump when using diversions.  (Bug#2603.)
+  * Fixed typo in dpkg-divert which could lose diversions.  (Bug#2662.)
+
+  * --force-overwrite is the default.
+  * diversions.text provides better examples.
+
+ -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Wed, 10 Apr 1996 13:59:30 +0100
+
+dpkg (1.1.4); priority=MEDIUM
+
+  * Allow overwriting of conflicting packages being removed.  (Bug#2614.)
+
+  * a.out control file says Pre-Depends: libc4 | libc.  (Bug#2640.)
+  * ELF control file and libc dependencies changed to use finalised scheme.
+  * ELF control file and libc dependencies for i386 only.  (Bug#2617.)
+
+  * Guidelines say use only released libraries and compilers.
+  * Install wishlist as /usr/doc/dpkg/WISHLIST.
+  * Remove spurious entries for Guidelines in info dir file.
+
+  * dpkg-deb --build checks permissions on control (DEBIAN) directory.
+
+  * Spaces in control file fields not copied by dpkg-split.  (Bug#2633.)
+  * Spaces in split file part control data ignore.  (Bug#2633.)
+
+  * Portability fixes, including patch from Richard Kettlewell.
+  * Fixed minor configure.in bug causing mangled GCC -W options.
+
+ -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Thu, 4 Apr 1996 01:58:40 +0100
+
+dpkg (1.1.3); priority=LOW
+
+  * dselect disk methods support Pre-Depends installation ordering.
+  * When dpkg fails and --auto-deconfigure would help it says so.
+  * dpkg --search output lists several packages with same file on one line.
+  * Improved dpkg usage message somewhat.
+
+  * dpkg-deb --build checks permissions and types of maintainer scripts.
+  * dpkg-deb --build treats misspecified conffiles as error, not warning.
+  * dpkg --print-architecture prints compiler's architecture while
+    dpkg --version (&c) print system's arch (this to help cross-compiling).
+  * More minor guidelines changes, including dir entry fixup.
+
+  * configure script caches more values.
+  * Changed maintainer email address to ian@chiark.chu.cam.ac.uk.
+
+ -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Sat, 16 Mar 1996 19:18:08 +0000
+
+dpkg (1.1.2); priority=LOW
+
+  * Packaging guidelines installed properly (and as guidelines
+    rather than debian-guidelines).
+  * ELF version has more checks to stop you wrecking your dpkg installation.
+  * dselect disk methods now look for a `local' tree as well, for
+    people who want locally-available software of various kinds.
+  * dpkg-divert has debugging message removed.
+  * Minor guidelines changes.
+
+  * Various makefile cleanups, mainly to do with ELF vs. a.out support.
+  * debian.rules cleans out ~ files itself, as well as calling make clean.
+  * debian.rules names .nondebbin.tar.gz file ELF too, if appropriate.
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Thu, 14 Mar 1996 03:38:29 +0000
+
+dpkg (1.1.1elf); priority=LOW
+
+  * Added /usr/lib/dpkg/elf-executables-ok and elf-in-kernel.
+  * Replaces field now allows automatic removal of conflicting packages.
+  * Replaces field now required to overwrite other packages' files.
+  * Architecture field, and dpkg --print-architecture, supported.
+  * build new format archives by default when compiled with ELF compiler.
+
+  * symlinks are now installed atomically (good for shared libraries).
+  * create /var/lib/dpkg/diversions in postinst if necessary (Bug#2465.)
+  * Pre-Depends now correctly fails if package never configured.
+  * dselect disk methods mount with -o nosuid,nodev.
+  * update-rc.d defaults doesn't add both K and S in any one runlevel;
+    dpkg postinst fixes up this situation if it sees it.
+
+  * Assorted fixups to the Guidelines, which are now in one piece.
+  * dpkg --list prints version string in one piece.
+  * dpkg-scanpackages doesn't produce notice on output with list of
+    packages with Section and/or Priority control file fields.
+
+  * control file and debian.rules work both for ELF and non-ELF compiles.
+  * most files compiled with -O2 (-O3 only for some critical files) -
+    this fixes ELF build.
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Mon, 11 Mar 1996 04:25:28 +0000
+
+dpkg (1.1.0); priority=LOW
+
+  * dpkg supports Pre-Depends.
+  * postinst script gets most-recently-configured version as $2.
+
+  * lib/tarfn.c #includes <errno.h> (portability fix).
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Sun, 11 Feb 1996 21:07:03 +0000
+
+dpkg (1.0.17); priority=LOW
+
+  * dpkg --recursive follows symlinks (useful for devel tree).
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Sat, 10 Feb 1996 15:58:46 +0000
+
+dpkg (1.0.16); priority=LOW
+
+  * dpkg-deb much faster reading new format archives.  (Bug#2256.)
+  * Developers' documentation in /usr/doc/dpkg/, /usr/info/.
+
+  * Fixed typo in control file Description.
+
+  * configure script tries to improve matters wrt sysinfo.
+  * any debian-tmp.deb is deleted by `./debian.rules clean'.
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Sun, 4 Feb 1996 15:51:59 +0000
+
+dpkg (1.0.15); priority=LOW
+
+  * dselect disk methods should never unmount things they didn't mount.
+  * debian.README aka /usr/doc/copyright updated.
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Tue, 30 Jan 1996 15:05:39 +0000
+
+dpkg (1.0.14); priority=MEDIUM
+
+  * fixed file descriptor leak in dpkg introduced in 1.0.11.
+  * included dpkg-name in this package (conflicts with dpkg-name).
+
+  * redraw in dselect main menu changed to use clearok (like in lists).
+  * sa_restorer in struct sigaction no longer used (portability fix).
+  * removed Guidelines from source package.
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Tue, 30 Jan 1996 02:52:29 +0000
+
+dpkg (1.0.13); priority=MEDIUM
+
+  * dselect partition and mounted methods work again.
+  * dpkg-deb --no-act in usage message.
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Fri, 26 Jan 1996 18:37:03 +0000
+
+dpkg (1.0.12); priority=MEDIUM (HIGH for users of 1.0.11)
+
+  * Fixed frequent dpkg coredump introduced in 1.0.11.  (Bug#2219.)
+  * dpkg-deb ensures version numbers start with alphanumerics.
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Wed, 24 Jan 1996 00:42:31 +0000
+
+dpkg (1.0.11); priority=MEDIUM
+
+  * corrected potentially serious problem with dpkg low-memory in-core
+    files database.
+  * dpkg-split --msdos puts output files in right directory.  (Bug#2165.)
+
+  * diversions implemented - see `dpkg-divert --help'.
+
+  * dselect shows and uses (for dependencies) currently installed
+    version of a package if that is more recent.
+  * dpkg --force-... options are in separate help screen.
+  * better error messages for corrupted .deb archives.  (Bug#2178.)
+  * dselect NFS method will unmount correct copy of NFS area if mounted
+    twice.
+
+  * removes some ELF compilation warnings.
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Fri, 19 Jan 1996 02:41:46 +0000
+
+dpkg (1.0.10); priority=MEDIUM
+
+  * dpkg-deb option parsing unmuddled (-I option was removed
+    in 1.0.9 and broke dpkg-deb).  (Bug#2124.)
+
+  * dpkg-split will work when ELF `ar' is installed, and is faster.
+
+  * nfs dselect method now available.
+  * disk methods don't prompt spuriously for Packages files.
+  * cdrom+harddisk methods can find Packages files.
+
+  * dpkg-scanpackages (creates Packages files) now in /usr/sbin.
+
+  * various changes to help compilation of dpkg-deb, dpkg-split
+    and md5sum on non-Debian systems.
+  * <sys/fcntl.h> replaced by <fcntl.h> throughout.
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Sun, 14 Jan 1996 02:55:19 +0000
+
+dpkg (1.0.9); priority=MEDIUM
+
+  * dselect uninitialised variable coredump fixed (thanks Carl).
+
+  * version numbers printed by --version fixed.  (Bug#2115.)
+  * disk method problem with missing Packages files fixed.  (Bug#2114.)
+  * dependency version relationships now <= >= << >> =.  (Bug#2060.)
+
+  * install-info is in /usr/sbin, not /usr/bin.  (Bug#1924.)
+  * dpkg regards Revision field as obsolete.
+
+  * <asm/unistd.h> changed to <linux/unistd.h> (for m68k port).
+  * scripts/Makefile.in `clean' target deletes scripts.
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Thu, 11 Jan 1996 20:51:20 +0000
+
+dpkg (1.0.8); priority=LOW
+
+  * update-alternatives slightly more helpful message.  (Bug#1975.)
+  * cosmetic improvements to disk installation method.  (Bug#1970,1956.)
+  * mounted filesystem and unmounted partition separate methods.  (Bug#1957.)
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Tue, 12 Dec 1995 04:07:47 +0000
+
+dpkg (1.0.7); priority=MEDIUM (HIGH to upgrade syslogd)
+
+  * dselect harddisk/CDROM method script handles multiple package
+    areas.
+  * Everything has a manpage, though many are very unhelpful indeed.
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Thu, 30 Nov 1995 03:59:14 +0000
+
+dpkg (1.0.6); priority=MEDIUM (HIGH to upgrade syslogd)
+
+  * conffiles can now be taken over properly from one package by
+    another which replaces it.  (Bug#1482.)
+  * dpkg will not deconfigure essential packages when --auto-deconfigure
+    is set (this bug was fairly unlikely ever to be exercised).
+
+  * dpkg checks for the presence of certain important programs on the PATH.
+  * dselect is now more informative when a dependency is missing, saying
+    "<package> does not appear to be available".  (Bug#1642, 1705).
+
+  * `make distclean' fixed; config.* &c removed from source archive.
+  * lib/lock.c now uses fcntl rather than flock, for better portability.
+
+  * `Package_Revision: 0' removed from control file.
+  * Some inaccuracies and bad formatting in various messages corrected.
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Tue, 21 Nov 1995 20:15:18 +0000
+
+dpkg (1.0.5); priority=LOW
+
+  * dpkg-split allows some space for the header.  (Bug#1649.)
+  * dpkg-split now has --msdos option for 8.3 filenames.
+  * dpkg-split --join &c will not complain about trailing garbage.
+
+  * dselect & dpkg will no longer ignore SIGHUP will running subprocesses.
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Fri, 13 Oct 1995 13:59:51 +0100
+
+dpkg (1.0.4); priority=MEDIUM (HIGH for dselect users with 1.0.3)
+
+  * fixed bug which prevented dselect from displaying the bottom line of
+    any listing screen.  This was introduced in 1.0.3, sorry !
+
+  * a conffile will never cause a prompt if the package maintainer
+    distributes a file identical to the user's, even if the file has
+    been edited by both the user and the maintainer or is a
+    newly-registered conffile.  (Bug#1639.)
+
+  * dselect disk/cdrom method script says where to get Packages file.
+  * dselect help has better descriptions of the functions of Return and Q.
+
+  * postinst now warns about some problems with /usr/lib/dpkg/methods/hd.
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Thu, 12 Oct 1995 01:45:38 +0100
+
+dpkg (1.0.3); priority=MEDIUM
+
+  * dselect: fixed segfault when doing some multiple (de)selections.
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Tue, 10 Oct 1995 03:21:12 +0100
+
+dpkg (1.0.2); priority=MEDIUM
+
+  * problem with screen refresh after `o' (change order) corrected.
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Mon, 9 Oct 1995 13:11:04 +0100
+
+dpkg (1.0.1); priority=LOW
+
+  * much better dpkg performance on low-memory systems.
+  * start-stop-daemon --name should now work. (oops!)
+  * fixed typo which could turn into memory overwriting bug sometime.
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Sun, 8 Oct 1995 20:12:29 +0100
+
+dpkg (1.0.0); priority=LOW
+
+  * Version 1.0.0: dpkg is no longer beta.
+
+  * tar extractor no longer looks up an empty string using getgrnam
+    (this causes the libc to coredump when using NIS).
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Sun, 1 Oct 1995 13:07:36 +0100
+
+dpkg (0.93.80); priority=LOW
+
+  * dselect help screen intro changed to remove `much' before `help'.
+
+  * update-alternatives.pl contains hardcoded ENOENT value, instead
+    of requiring POSIX.pm to be present.
+
+  * Makefiles changed to strip when installing instead of when building.
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Sat, 30 Sep 1995 01:44:12 +0100
+
+dpkg (0.93.79) BETA; priority=LOW
+
+  * DPKG_NO_TSTP environment variable which stops dpkg sending the
+    process group a SIGTSTP (Bug#1496).
+  * End key should work in dselect lists (Bug#1501).
+  * various message typos (missing \n's) fixed (Bug#1504).
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Fri, 29 Sep 1995 03:27:01 +0100
+
+dpkg (0.93.78) BETA; priority=LOW
+
+  * dselect keystrokes help file typo fix.
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Thu, 28 Sep 1995 20:31:02 +0100
+
+dpkg (0.93.77) BETA; priority=MEDIUM
+
+  * dpkg --remove --pending will purge things when appropriate.
+
+  * fixed failure to null-terminate dpkg conflict problem messages.
+  * fixed bug in formatting of dependency version problem messages.
+
+  * Conffiles resolution prompt for new conffile: typo fixed.
+  * Changed dpkg usage error to suggest `-Dhelp' instead of `--Dhelp'.
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Wed, 20 Sep 1995 23:44:35 +0100
+
+dpkg (0.93.76) BETA; priority=MEDIUM
+
+  * dpkg --auto-deconfigure option (used automatically by dselect) allows
+    `important' packages which many others depend on to be split.
+  * dpkg should no longer fail an assertion during complicated
+    multiple configurations involving packages which are on hold.
+
+  * update-alternatives supports negative priorities.
+  * /etc/alternatives is included in the .deb archive.
+
+  * Package priorities changed: Required (Req), Important (Imp), Standard (Std),
+    Optional (Opt) and Extra (Xtr).  For backward compatibility Base is an
+    alias for Required, and Recommended is kept as a level just below Standard.
+
+  * dselect shows introductory help screen when entering package lists (both
+    main and recursive).
+  * dselect help messages made more friendly.
+  * dselect package list `quit, confirm, and check dependencies' key is
+    now Return rather than lowercase `q'; likewise method list `select this
+    one and configure it' key.
+  * dselect selects packages with priority `standard' or better by default.
+  * dselect `v=verbose' becomes `v=terse' when in verbose mode.
+
+  * hard disk method unmounts /var/lib/dpkg/methods/mnt on failure.
+  * disk methods' install message uses `stty' to find out what the
+    interrupt character is, and uses that in the prompt (rather than ^C).
+  * dpkg now tolerates ^Z characters in Packages files.
+  * harddisk method doesn't display extra slash when updating packages file.
+  * harddisk method burbles less if it doesn't have a good default.
+
+  * dpkg-deb now supports new flexible format, but old format still default.
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Wed, 20 Sep 1995 02:49:41 +0100
+
+dpkg (0.93.75) BETA; priority=MEDIUM
+
+  * dselect no longer segfaults when you try to modify the last item.
+
+  * dselect Makefile compiles with -g, and links without -s, but installs
+    with -s, so that built source directory has debugabble binary.
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Tue, 12 Sep 1995 02:59:29 +0100
+
+dpkg (0.93.74) BETA; priority=LOW
+
+  * dpkg-split implemented and installed in /usr/bin/dpkg-split.
+    (NB this is not compatible with Carl Streeter's old dpkg-split script.)
+  * dpkg uses dpkg-split.
+  * floppy disk method available - NB this is a first attempt only.
+
+  * hard disk method uses --merge-avail rather than --update-avail.
+  * installation by default of `standard' packages removed again.
+    (I don't think this is the right place to do this.)
+  * update-alternatives --remove correctly deletes all slave links;
+    minor cosmetic improvements.
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Mon, 11 Sep 1995 02:06:05 +0100
+
+dpkg (0.93.73) BETA; priority=LOW
+
+  * dselect multi-package selection now done by `divider' lines
+    actually in the package list, rather than horizontal highlight
+    movement.
+  * dselect help available, and keybindings rationalised.
+
+  * postinst removes /usr/lib/dpkg/methods/hd if upgrading from
+    0.93.42.3 or earlier.
+  * `hold' flag changed to be settable by the user only, and
+    made orthogonal to the `reinstallation required' flag.
+  * dpkg will install by default any packages with priority of
+    `standard' or better unless they're explictly deselected.
+
+  * dselect dependency/conflict resolution will suggest marking absent
+    packages for `purge' rather than `deinstall'.
+  * disk method script produces message about invoking dpkg.
+  * dpkg produces warning, not error, when it gets EPERM trying to
+    remove a directory belonging to a package being removed.
+  * dpkg, dpkg-deb usage error reporting improved.
+  * dselect detects too-dumb terminals and stops.
+  * dpkg-deb(8) updated a little (thanks to Bill Mitchell).
+
+  * dselect debugmake script uses -O0.
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Sun, 10 Sep 1995 12:23:05 +0100
+
+dpkg (0.93.72) BETA; priority=MEDIUM
+
+  * /usr/sbin/update-alternatives added.
+
+  * New names for certain control file fields (old names work
+    as aliases): Optional -> Suggests, Recommended -> Recommends,
+    Class -> Priority.
+     
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Sun, 3 Sep 1995 16:37:41 +0100
+
+dpkg (0.93.71) BETA; priority=LOW
+
+  * dpkg doesn't silently overwrite `new' conffiles (Bug#1283).
+  * case now not significant in Essential, Status and Class (Bug#1280).
+  * dselect checks method scripts for execute, not for write.
+
+  * spelling fixes in lib/dbmodify.c and dselect/helpmsgs.src.
+
+  * dselect `clean' target deletes helpmsgs.cc and helpmsgs.cc.new.
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Thu, 31 Aug 1995 13:56:08 +0100
+
+dpkg (0.93.70) BETA; priority=MEDIUM
+
+  * dselect unmounted harddisk method has many silly bugs fixed.
+
+  * dpkg --root option restored (was removed by mistake in 0.93.68).
+  * minor cosmetic change to dselect subprocess failure message.
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Wed, 9 Aug 1995 22:18:55 +0100
+
+dpkg (0.93.69) BETA; priority=MEDIUM
+
+  * dpkg --configure and --remove should work properly when
+    they have to defer processing (this tends to happen when many
+    packages are processed at once).  (Bug#1209.)
+
+  * dpkg --configure and --remove work better when `processing'
+    several related packages with --no-act.
+
+  * dpkg --auto is now two options, --pending or -a (for configure,
+    remove, &c) and --recursive or -R (for install, unpack, &c).
+
+  * dpkg debug options in usage message, and values available (-Dh).
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Wed, 9 Aug 1995 22:18:55 +0100
+
+dpkg (0.93.68) BETA; priority=MEDIUM
+
+  * dpkg won't get an internal error if you try to use the default
+    conffiles response (ie, if you just hit return).  (Bug#1208.)
+
+  * dselect hard disk and CD-ROM methods - the real thing, but ALPHA.
+
+  * dselect allows you to go straight to `update' or `install' if
+    you have already set up an access method.
+  * new dpkg options --yet-to-unpack, --merge-avail and --update-avail.
+  * dpkg -G is an abbreviation for dpkg --refuse-downgrade.
+  * dpkg -R alias for --root withdrawn, pending reuse with different meaning.
+  * dpkg --help message rationalised somewhat.
+
+  * Obsolete `examples' and `dpkg-split' directories removed from
+    source tree.  The `hello' package is a better example.
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Mon, 7 Aug 1995 02:16:25 +0100
+
+dpkg (0.93.67) BETA; priority=LOW for C dpkg alpha testers, HIGH for others
+
+  * dpkg no longer statically linked and -g.
+  * calls to abort() changed to print string, file and line number first.
+  * removed unused variable from dpkg source.
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Fri, 4 Aug 1995 01:39:52 +0100
+
+dpkg (0.93.66) ALPHA; priority=MEDIUM
+
+  * dpkg will correctly remove overwritten files from the lists of
+    the package(s) that used to contain them.
+
+  * dpkg --purge is now an action, rather than a modifier for --remove,
+    and the -P alias for it is withdrawn.
+
+  * dpkg --unpack/--install filenames in messages are now more sensible
+    about when to use .../ (show as many trailing components as possible
+    in 40 characters, or the whole path if that the last component is
+    longer than that).
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Thu, 3 Aug 1995 02:11:03 +0100
+
+dpkg (0.93.65) ALPHA; priority=MEDIUM
+
+  * dpkg --remove should, when a package being removed is depended-on
+    by another that is also queued for removal, defer the depended-on
+    package rather than aborting it.  (Bug#1188.)
+
+  * dpkg will not attempt to configure or remove a package more than
+    once in the same run.  (Bug#1169.)
+
+  * dpkg cosmetic fix to dependency problems message (this bug
+    hasn't been triggered to my knowledge).
+
+  * perl-dpkg no longer installed in /usr/bin.
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Wed, 2 Aug 1995 13:02:58 +0100
+
+dpkg (0.93.64) ALPHA; priority=MEDIUM
+
+  * dpkg marks a package as no longer `to be configured in this run'
+    when an error occurs, so that other packages which depend on it
+    will fail (rather than causing a loop and an assertion failure,
+     packages.c:166: failed assertion `dependtry <= 4').
+
+  * dselect initial selection granularity is single-package.
+  * dpkg --no-also-select option renamed to --selected-only (old option
+    still accepted, but no longer in --help).  Changed -N to -O.
+
+  * dselect `update' option changed to `install' (and other options
+    renamed too).  NB: old access methods will not work, because
+    the `update' script should now be an `install' script.
+
+  * dselect `installation methods' renamed to `access methods'.
+  * dpkg --skip-same-version and --refuse-downgrade produce friendlier
+    messages when they skip packages.
+  * --licence option now properly mentioned in all programs' --version
+    messages.
+
+  * bad fix for ELF compile problem involving myopt.h removed (compile
+    problem turned out to be a GCC bug.)
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Tue, 1 Aug 1995 03:03:58 +0100
+
+dpkg (0.93.63) ALPHA; priority=LOW
+
+  * preinst works around shell bug/misfeature involving `trap'.
+
+  * dpkg --skip-same-version doesn't skip packages which have
+    an error flag set or which aren't in a standard `installed' state.
+
+  * dpkg --search now does a substring search if the string doesn't
+    start with a wildcard character (*, [ or ?) or slash.
+
+  * problem with C/C++ linkage of stuff in "myopt.h" fixed, to help
+    with compiling with GCC 2.7.0.
+
+  * dselect Makefile.in `clean' deletes curkeys.inc &c, so that they are
+    not shipped in the distribution source and will be rebuilt on the
+    target system.
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Thu, 27 Jul 1995 13:38:47 +0100
+
+dpkg (0.93.62) ALPHA; priority=HIGH
+
+  * dpkg purges leftover control scripts from /var/lib/dpkg/tmp.ci,
+    rather than associating them with the wrong package.  (Bug#1101.)
+
+  * dpkg won't `disappear' packages containing no files or directories,
+    nor a package required for depends/recommended.  (Bug#1128.)
+
+  * dpkg follows directory symlinks.  (Bug#1125.)
+
+  * dselect fixups for ELF/GCC2.7.0 compilation.
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Fri, 21 Jul 1995 21:43:41 +0100
+
+dpkg (0.93.61) ALPHA; priority=LOW
+
+  * dselect keybindings and status characters and descriptions changed
+    (in pursuance of Bug#1037, user interface problems, still open.)
+
+  * Some cleanups to fix mistakes discovered by ELF-GCC 2.7.0, and fixup
+    for newer C++ draft standard (`for' variable declaration scope change).
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Tue, 18 Jul 1995 01:42:51 +0100
+
+dpkg (0.93.60) ALPHA; priority=HIGH
+
+  * dpkg doesn't think packages have `disappeared' if you install
+    several packages at once.  (later reported as Bug#1132.)
+
+  * usage error messages tidied up.
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Sun, 16 Jul 1995 17:56:56 +0100
+
+dpkg (0.93.59) ALPHA; priority=HIGH
+
+  * dpkg doesn't break maintainer scripts &c if package `foo' exists
+    when processing package `foobar'.  (Related to Bug#1101.)
+
+  * dpkg implements `disappear' functionality.
+  * dpkg/dselect remove dead entries from /var/lib/dpkg/status.
+
+  * dpkg --list now sorted correctly and output somewhat improved.
+  * some debugging messages moved from dbg_stupidlyverbose to dbg_scripts.
+  * dpkg prints `Removing foo' message even if foo is not configured.
+  * dpkg only prints `serious warning: files list file ... missing'
+    once for each package.
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Sun, 16 Jul 1995 02:32:11 +0100
+
+dpkg (0.93.58) ALPHA; priority=HIGH
+
+  * dpkg should write out status even for packages which it has only
+    encountered in the `available' file so far.
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Fri, 14 Jul 1995 20:19:21 +0100
+
+dpkg (0.93.57) ALPHA; priority=LOW
+
+  * dpkg does chroot when running maintainer scripts (--instdir
+    should work right now, though I haven't been able to test it).
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Fri, 14 Jul 1995 01:32:30 +0100
+
+dpkg (0.93.56) ALPHA; priority=HIGH
+
+  * dpkg can now overwrite symlinks to directories, and will
+    do correct handling of symlinks to plain files.
+  * dpkg should not replace any directory with a symlink.
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Thu, 13 Jul 1995 02:43:36 +0100
+
+dpkg (0.93.55) ALPHA; priority=MEDIUM
+
+  * dpkg can now extract hardlinks.
+  * dpkg configuration/removal works in the presence of dependency cycles.
+  * dpkg should no longer fail an assertion at processarc.c:193.
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Wed, 12 Jul 1995 01:34:44 +0100
+
+dpkg (0.93.54) ALPHA; priority=MEDIUM
+
+  * dpkg and dselect no longer throw away all Class and Section
+    information in /var/lib/dpkg/available.  (Oops.)
+  * dpkg --refuse-<something> now works (this broke some dselect
+    method scripts' attempts to use --refuse-downgrade).
+  * dpkg --audit and --list implemented.
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Mon, 10 Jul 1995 00:35:13 +0100
+
+dpkg (0.93.53) ALPHA; priority=LOW
+
+  * dpkg --install/--unpack only skips on-hold packages with --auto.
+  * dpkg doesn't fclose() the --fsys-tarfile pipe twice.
+  * dpkg error handling and reporting cleaned up.
+  * dpkg now lists any failed packages/files just before exiting.
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Sun, 9 Jul 1995 16:31:36 +0100
+
+dpkg (0.93.52) ALPHA; priority=MEDIUM
+
+  * dpkg won't segfault due to missing (Package_)Revision fields.
+  * dpkg --search works.
+  * dpkg will set execute permissions on scripts if necessary.
+  * dpkg prints filenames in --unpack and --install.
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Sat, 8 Jul 1995 12:41:39 +0100
+
+dpkg (0.93.51) ALPHA; priority=HIGH
+
+  * dpkg --status and --listfiles now work.
+
+  * dpkg --remove --auto won't try to remove everything (!)
+  * dpkg --unpack doesn't coredump after unpacking the first package.
+  * dpkg won't fail an assertion if it bombs out of --configure
+    or --remove because of too many errors.
+
+  * Support for `Essential' in dpkg (not yet in dselect).
+  * `available' (Packages) file class and section override those
+    from package control files.
+  * `Essential: yes' added to control file.
+
+  * Locking strategy changed, now uses flock (no more stale locks).
+  * preinst now more helpful about conffiles upgrade problem.
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Sat, 8 Jul 1995 01:15:26 +0100
+
+dpkg (0.93.50) ALPHA
+
+  * C dpkg now in service.
+
+  * dselect now installs in /usr/bin instead of /usr/sbin.
+  * Improved `explanation of display' help and changed HSOC to EIOW.
+  * dselect goes back to top of info display when you move the
+    highlight.
+
+  * Added <sys/types.h> to md5sum/md5.c, for the benefit of FreeBSD.
+  * --admindir doesn't append `var/lib/dpkg' to its argument.
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Fri, 19 May 1995 21:03:08 +0100
+
+dpkg (0.93.42.3) BETA; priority=LOW
+
+  * Rebuilt using ncurses 1.9.2c-0.
+  * Silenced `subcritical error' message if errno == ENOENT.
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Mon, 12 Jun 1995 13:09:24 +0100
+
+dpkg (0.93.42.2) BETA; priority=HIGH
+
+  * install-info --remove properly removes multi-line entries.
+  * Slightly changed ^L redraw code in dselect package list.
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Sat, 10 Jun 1995 14:06:01 +0100
+
+dpkg (0.93.42.1) BETA; priority=HIGH esp. for new installations
+
+  * update-rc.d default no longer adds K entries in runlevels 2345.
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Tue, 6 Jun 1995 18:56:23 +0100
+
+dpkg (0.93.42) BETA; priority=LOW; HIGH for dselect users
+
+  * Fix unitialised variable reference bug in dselect (#890).
+  * Fix problem with wordwrapping package and method descriptions.
+  * Create /var/lib/dpkg/methods/mnt.
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Fri, 19 May 1995 21:03:08 +0100
+
+dpkg (0.93.41) BETA; priority=LOW
+
+  * Create /var/lib/dpkg/methods.
+  * dpkg.pl noisily ignores --skip-same-version rather than barfing.
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Tue, 16 May 1995 13:28:27 +0100
+
+dpkg (0.93.40) BETA; priority=LOW
+
+  * dselect's subprogram failure message made to stand out more.
+
+  * When switching out of curses, always move the cursor to the
+    bottom right corner of the screen.
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Tue, 16 May 1995 01:03:38 +0100
+
+dpkg (0.93.39) BETA; priority=LOW
+
+  * dselect can now:
+    - allow you to select and configure an installation method;
+    - invoke installation method scripts to update the available file
+      and unpack packages;
+    - invoke dpkg to configure and remove packages.
+    There are no installation methods available yet.
+
+  * Search feature in dselect works (it was purely an ncurses bug).
+
+  * dpkg-*.nondebbin.tar.gz now available (built by debian.rules).
+
+  * The target directory for dpkg-deb --extract (also available as
+    dpkg --extract) is no longer optional.  dpkg-deb suggests the use
+    of dpkg --install if you omit it.
+
+  * Added <errno.h> to lib/lock.c and fixed ref. to `byte' in
+    md5sum/md5.c, for portability to Solaris 2.
+
+  * Rebuilt `configure' and `config.h.in' using autoconf 2.3.
+  * Revised function attribute support checking in configure script.
+  * Removed obsolete `dselect.pl' from scripts directory.
+  * New option --licence on all the C programs.
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Sun, 14 May 1995 18:05:38 +0100
+
+dpkg (0.93.38) BETA; priority=MEDIUM
+
+  * Version number comparisons (in dpkg and dselect) now >= <=
+    as documented (Bug#831; thanks to Christian Linhart).
+
+  * dselect now has a non-superuser readonly mode.
+  * dselect doesn't pop up unsatisfied `Optional's when quitting.
+  * `unable to delete saved old file' message fixed dpkg_tmp to dpkg-tmp.
+
+  * Made dpkg convert `revision' to `package_revision' when reading
+    (eg) the `status' file.  libdpkg.a has `revision' as a synonym
+    for `package_revision' and writes the former.
+
+  * Major improvements and many changes to C option parsing, database
+    management, error handling, Makefiles &c to support dpkg.
+  * dpkg-deb should now work if sizeof(void*) < sizeof(void(*)()).
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Mon, 24 Apr 1995 12:34:39 +0100
+
+dpkg (0.93.37) BETA; priority=LOW (MEDIUM for dselect users)
+
+  * Fixed segfault if no description available (Bug#735);
+    thanks to Peter Tobias for the bug report.
+  * Fixed other assorted minor bugs in description displays.
+
+  * Changed dpkg-deb --info short option from -i to -I, to make
+    it unique across dpkg and dpkg-deb (-i still works with
+    dpkg-deb for backwards compatibility).
+
+  * Produce more sensible error when main package list is empty.
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Fri, 7 Apr 1995 02:24:55 +0100
+
+dpkg (0.93.36) BETA; priority=LOW (MEDIUM for dselect users)
+
+  * All the C code (including dselect) updated to support `provides'
+    (virtual packages).
+  * Revamped dselect's related package selection/deselection
+    algorithms.
+  * Everything can now handle arbitrary `class' values (as well
+    as the predefined ones which we understand and can interpret).
+  * Fixed bug that prevented display update when moving down a small
+    recursive package list in dselect.
+  * Column heading characters corrected from `SHOC' to `HSOC'.
+
+ -- Ian Jackson <iwj10@cus.cam.ac.uk>  Thu, 6 Apr 1995 12:48:13 +0100
+
+dpkg (0.93.35) BETA; priority=MEDIUM
+
+ * Preserve ownerships and permissions on configuration files.
+ * Fix bug in conffile updating that could leave a hardlink
+   <foo>.dpkg-new to the conffile <foo>.
+
+ * Improved dselect's package list help messages.
+ * Highlight now moves on after (de)selecting just one package.
+ * Better algorithm for scrolling up/down when moving highlight.
+ * Fixed bug in display of `preformatted' extended Description lines.
+   (dselect is still ALPHA, but is fairly stable.)
+
+ * Improved dpkg's message when configuring a package that doesn't
+   exist, and when selecting or skipping a package that isn't
+   currently selected (during unpack processing).
+
+ * Description in control file expanded.
+
+ * Scroll back to top when changing what is in the `info' area.
+
+dpkg (0.93.34) BETA; priority=LOW (HIGH for dselect users)
+
+ * dselect: Fixed bug which caused a coredump if you exited the
+   package list if you'd made any changes.  Ouch !
+
+ * dselect: Improved selection algorithm to show fewer extraneous
+   packages; improved display for unavailable packages.
+
+ * dpkg: Improved progress messages during unpacking somewhat.
+
+dpkg (0.93.33) BETA; priority=LOW (HIGH for dselect users)
+
+ * dselect now has a main menu.
+
+ * Fixed nasty uninitialised data bug in dselect.
+
+ * dselect now locks and unlocks the packages database.
+
+Mon, 27 Mar 1995 03:30:51 BST  Ian Jackson <iwj10@cus.cam.ac.uk>
+
+       * dpkg (0.93.32): Alpha dselect released and installed in
+                         /usr/sbin/dselect.
+       * dpkg (0.93.32): Many portability enhancements: should now
+                         compile using GCC 2.6.3, and dpkg-deb should
+                         compile better on non-Linux systems.
+       * dpkg (0.93.32): dpkg will not loop if its stdin disappears
+                         and it needs to prompt.
+       * dpkg (0.93.32): Fixed removal dependency error to show
+                         correct package (Bug #648).
+       * dpkg (0.93.32): Tidied up copyright notices.
+       * dpkg (0.93.32): First draft of update-rc.d manpage, not yet
+                         installed in /usr/man.
+       * dpkg (0.93.32): Changes to top-level Makefile.in to improve
+                         error trapping.
+       * dpkg (0.93.32): Improved Makefile `clean' and `distclean'
+                         targets.
+       * dpkg (0.93.32): Deleted irrelevant `t.c' from lib and
+                         dselect directories.
+       * dpkg (0.93.32): Added vercmp.c with version comparison code.
+       * dpkg (0.93.32): varbufextend message changed - varbufs not
+                         just for input buffers.
+       * dpkg (0.93.32): varbuf has C++ member functions in header
+                         #ifdef __cplusplus.
+
+Changes in dpkg 0.93.31:
+
+* start-stop-daemon --pidfile now works (Bug#571).
+* Fixed dependency processing bugs which could require a rerun of
+  dpkg --configure (Bug#566).
+* Fixed garbage output for `language' of control file in dpkg-deb --info.
+
+Changes in dpkg 0.93.30:
+
+* Added /usr/sbin/start-stop-daemon.
+
+Changes in dpkg 0.93.29:
+
+* Made postinst scripts really be run when dpkg --purge used.
+* Added new --force-extractfail option - VERY DANGEROUS.
+
+Changes in dpkg 0.93.28:
+
+* Removed undef of 0x_p21 in read_database_file, which caused the
+  the whole status database to become trashed when any update files
+  were read.
+* Make infinite-loop prevention and cycle detection work.
+* Made findbreakcycle work (ie, break properly when cycle detected).
+* New script, update-rc.d, to update links /etc/rc?.d/[KS]??*.
+* dpkg.pl now sets the umask to 022.
+* Cosmetic error message fix to dpkg-deb.
+* Deleted OLD directory altogether.
+* Improved error-trapping in top-level Makefile loops.
+
+Changes in dpkg 0.93.27:
+
+* Make version number specifications in Depends &c work.
+* Added AC_PROG_CXX to autoconf.in for dselect.
+* Changed myopt.h not to have cipaction field in cmdinfo (this was
+  specially for dpkg-deb) - now we have a generic void*.
+* Renamed `class' member of `pkginfoperfile' to `clas' [sic].
+* Much work in `dselect' subdirectory.
+* Deleted executables, objects and libraries from OLD tree !
+* Minor changes to various copyright notices and top-of-file comments.
+* Don't install nasty Perl dselectish thing as /usr/bin/dselect.
+
+Changes in dpkg 0.93.26:
+
+* Added --no-also-select instead of not auto-selecting on --unpack
+  but doing so on --install; removed --force-unpack-any.
+
+Changes in dpkg 0.93.25:
+
+* Fixed duplicate output (failure to flush before fork) bug.
+* More clarification of md5sum.c copyright.
+* Corrected typo in ChangeLog in 0.93.24 source package.
+
+Changes in dpkg 0.93.24:
+
+* dpkg could copy conffiles info from one package to another.  Aargh.
+  Bug #426.
+* dpkg failed to initialise status if you tried to remove or
+  configure a nonexistent package.  Bug #419.
+* install-info now handles START-INFO-DIR-ENTRY entries like:
+   * Gdb::                         The GNU debugger.
+  Previously it would only accept (Bug #407):
+   * Gdb: (gdb).                   The GNU debugger.
+* When installing a new foo.info[.gz], install-info now replaces
+   * Foo: (foo.info).              The Gnoo Foo.
+  as well as just * Foo: (foo). ...
+* Moved option parsing out of dpkg-deb into libdpkg.
+* Assorted minor source code rearrangements.
+* Fixed assorted copyright notices, clarified md5sum copyright.
+* Corrected typo in 0.93.23 source package's ChangeLog.
+
+Changes in dpkg 0.93.23:
+
+* `dpkg-deb' --build now does a syntax check on the control file.
+* `dselect' is now no longer called `debian', spurious copy removed
+  from package top-level source directory.
+* C control information parsing complete and somewhat tested.
+* Moved `global' include files into $(srcdir)/include from ../lib,
+  added some files to the lib Makefile, and arranged for pop_cleanup().
+
+Changes in dpkg 0.93.22:
+
+* Fixed bug which caused dpkg to see failures of md5sum where there
+  were none (would also have caused dpkg to miss a real failure).
+* Fixed failure to update some `status' database fields.
+
+Changes in dpkg 0.93.21:
+
+* Fixed error-handling bug which could corrupt database.
+
+Changes in dpkg 0.93.20:
+
+* Fixed bug which ran old (/var/adm/dpkg) postinst scripts.
+* Fixed dpkg usage message which claimed -i => both --install & --info.
+* Use Colin Plumb's MD5 code - faster, and better copyright.
+* Manpages: dpkg-deb(8), deb-control(5), deb(5) - thanks to Raul
+  Deluth Miller.  Also, an xfig picture of some C program innards.
+
+Changes in dpkg 0.93.19:
+
+* Don't delete the `list' file from the dpkg database.
+* Fixed various bugs in the conffile handling.
+* Conffiles that are symlinks will now be treated as if the
+  `dereferenced' name of the file was listed in conffiles.  This means
+  that /etc/foo -> /usr/etc/foo will cause all conffile updates of
+  /etc/foo to create /usr/etc/foo.dpkg-tmp &c instead.  However, the
+  link will be removed if --purge is used to delete all the conffiles.
+* When doing a new installation, or when updating a conffile that
+  wasn't listed as a conffile in the old version of the package, don't
+  do any prompting but just install the version from the archive.
+* Corrected error message if exec of dpkg --vextract failed
+  and --instroot or --root specified.
+* Added new --force-unpack-any option.
+* Extra newline after --status output.
+* Added -W options to CFLAGS.
+* Fixed mistake in previous ChangeLog entry.
+
+Changes in dpkg 0.93.18:
+
+* Fixed invocation of dpkg-deb --vextract if --root or --instdir
+  not specified.
+* Create /var/lib/dpkg/updates.
+
+Changes in dpkg 0.93.17:
+
+* install-info --remove exits with status 0 if it doesn't find the
+  thing to remove, instead of status 1.
+* Error handling functions have __attribute__((format...)) if GCC.
+* push_cleanup its arg takes void **argv instead of char **argv.
+* Top-level Makefile.in has set -e before `for' loops.
+* dpkg-deb --info not-an-existing-file produces fewer error messages.
+
+Changes in dpkg 0.93.16:
+
+* Made --root= option really extract to $instroot instead of `/'.
+* install-info clears the 0444 bits in its umask.
+* Fixed a few database handling bugs which cause dpkg always to fail,
+  and usually to corrupt the status database in various ways.
+* dpkg-deb completely rewritten, now doesn't tinker with
+  /var/{adm,lib}/dpkg.  Should be faster.
+* Directory structure and Makefiles in source package reorganised.
+
+Changes in dpkg 0.93.15:
+
+* Added `debian' (dselect), still very primitive.
+* Database format changed, and moved from /var/adm to /var/lib.
+* Added dpkg --avail mode, --list, --status and --search.
+* Set of dpkg => dpkg-deb pass-through operations changed (but
+  dpkg-deb not yet updated).
+* Added --root, --admindir and --instdir, as well as --isok &c.
+* Moved much stuff into /usr/lib/dpkg-lib.pl, rewritten status
+  database handling.
+* Put packages in `purge' state even if `deinstall' requested if
+  they have no postrm and no conffiles.
+* Version number comparisons fixed.
+* insert-version.pl now installes lib.pl filename too.
+* Strip trailing slashes when reading files from file lists.
+
+Changes in dpkg 0.93.14:
+
+* Fixed parsing of DEPENDS &c fields with trailing whitespace.
+* postinst now fixes up broken ispell.control file.
+* Cyclic dependency/multiple package removal processing: don't consider
+  packages we've just removed when looking for a reason not to go ahead.
+* Added call to postinst with `purge' argument for expunging old
+  configuration etc. that aren't listed in conffiles.
+
+Changes in dpkg 0.93.13:
+
+* sub S_ISREG defined in dpkg.pl.
+* Checking of DEPENDS &c fields was too lax, causing an internal error
+  if you fed it certain kinds of broken control file.
+* Fixed misleading message from bogus installationstatus call.
+* New -u and -U options to dpkg-deb which don't unpack the /DEBIAN
+  directory, and use these in dpkg.pl; clean up /DEBIAN in postinst.
+
+Changes in dpkg 0.93.12:
+
+* No longer needs *.ph files, since these appear to be broken.
+* Postinst fixes up *.control files with curly brackets.
+* embryo of dselect.
+
+Changes in dpkg 0.93.11:
+
+* New --ignore-depends option.
+* This ChangeLog changed format here.
+
+Wed Nov 30 15:38:21 GMT 1994  Ian Jackson  <iwj10@cus.cam.ac.uk>
+
+       * dpkg 0.93.11 released.
+
+       * conffile updating fixed.
+
+       * Message `updgrade' in dpkg changed to `replace'.
+
+       * install-info now copes with multi-line entries.
+
+       * version numbers now done automatically in dpkg and install-info.
+
+       * more debugging around conffiles updates.
+
+       * *.hash files not deleted so soon.
+
+       * adds brand new packages to status array so we can install them.
+
+       * postinst does h2ph for {sys,linux}/{stat,types}.ph if required.
+
+Mon Nov 28 02:00:13 GMT 1994  Ian Jackson  <iwj10@cus.cam.ac.uk>
+
+        * dpkg 0.93.10 released.
+
+        * dpkg.pl completely rewritten.
+
+        * dpkg-deb: removed dabase-processing and --install option.
+
+        * Makefiles reworked, debian.rules added.
+
+        * Don't install anything in /usr/doc/examples.
+
+        * dpkg-*.deb contains /usr/bin/dpkg-deb.dist, fixed up by postinst.
+
+Thu Oct 20 13:22:20 1994  Ian Murdock  (imurdock@debra.debian.org)
+
+        * dpkg 0.93.9 released.
+
+        * dpkg.pl: Use $argument, not $package, with `--build'.
+        Make sure that saved postinst scripts are executable.
+
+Tue Oct 18 09:40:57 1994  Ian Murdock  (imurdock@debra.debian.org)
+
+        * dpkg 0.93.8 released.
+
+        * deb/remove.c (pkg_remove): Do not report an error from rmdir ()
+        when `errno' is ENOTEMPTY (Directory not empty), because in this
+        case we have found the highest-level directory in the package and
+        are ready to exit the loop (i.e., it is a normal occurrence).
+
+Mon Oct 17 10:44:32 1994  Ian Murdock  (imurdock@debra.debian.org)
+
+        * Makefile.in: Adapted all Makefiles to the GNU Coding Standards.
+
+        * deb/remove.c (pkg_remove): Make sure that parent directories are
+        removed LAST!  This will result in complete removal of packages
+        when --remove is called.  dpkg 0.93.7 (and earlier) had problems
+        with this because it tried to remove directories in order, which
+        will work most of the time, but not necessarily all of the time.
+
+        * deb/list.c (pkg_list): Output is sorted by package name.
+
+Tue Oct  4 12:27:10 1994  Ian Murdock  (imurdock@debra.debian.org)
+
+        * deb/contents.c (pkg_contents): When a list file cannot be
+        opened, silently fail and let the front-end explain the problem.
+
+        * deb/util.c (return_info): When a control file cannot be opened,
+        silently fail and let the front-end explain the problem.
+
+        * deb/search.c (pkg_search): Exit 0 if the regular expression is
+        matched and 1 if it is not.
+
+Mon Oct  3 18:38:53 1994  Ian Murdock  (imurdock@debra.debian.org)
+
+        * dpkg.pl: New file.  Replaces dpkg.sh.
+
+        * deb/Makefile.in: Renamed `dpkg-util.deb' to `dpkg-deb'.
+
+        * deb/build.c (pkg_build): `--build' is less verbose, instead
+        letting the front-end add verbosity where appropriate.
+
+        * deb/install.c (pkg_install): Ditto.
+
+        * deb/remove.c (pkg_remove): Ditto.
+
+        * deb/search.c (pkg_search): Ditto.
+
+        * deb/describe.c (pkg_describe): `--describe' is less verbose,
+        instead letting the front-end add verbosity where appropriate.
+        The ``Description:'' label has been removed.
+
+        * deb/version.c (pkg_version): `--version' is less verbose,
+        instead letting the front-end add verbosity where appropriate.
+        The ``Version:'' label has been removed, as has the maintainer
+        information.
+
+Mon Sep 12 14:22:04 1994  Ian Murdock  (imurdock@debra.debian.org)
+
+        * deb/version.c (pkg_version): `--version' now reports the
+        version number of dpkg if no argument is specified.
+
+Thu Sep  1 13:31:37 1994  Ian Murdock  (imurdock@debra.debian.org)
+
+        * dpkg 0.93.7 released.
+
+        * deb/build.c (pkg_build): check status and exit if non-zero.
+
+        * deb/contents.c (pkg_contents): ditto.
+
+        * deb/install.c (archive_extract): ditto.
+
+Thu Sep  1 13:20:08 1994  Ian Murdock  (imurdock@debra.debian.org)
+
+        * deb/version.c (pkg_version): indent to the same point as
+        pkg_describe.
+
+Thu Sep  1 12:21:11 1994  Ian Murdock  (imurdock@debra.debian.org)
+
+        * Makefile.in (dist): added debian.rules binary, source and
+        dist targets to make final distribution easier to make.
+        (install): install programs to /usr/bin.
+
+        * deb/Makefile.in (install): install programs to /usr/bin.
+
+        * deb/list.c (pkg_list): enforce a maximum limit of ten characters
+        for the package name in the output.
+        (pkg_list): left-justify the version number to make it easier for
+        the front-end to parse the output.
+        (pkg_list): replace first '\n' character in packages[n].description
+        with '\0'.
+
+        * deb/install.c (archive_extract): use the `p' option to `tar' to
+        ensure that permissions are preserved.
+
+Sat Aug 27 09:53:37 1994  Ian Murdock  (imurdock@debra.debian.org)
+
+        * dpkg 0.93.6 released.
+
+        * deb/util.c (return_info): only unlink CONTROL if ARCHIVE_FLAG is
+        true!
+
+Fri Aug 26 15:38:22 1994  Ian Murdock  (imurdock@debra.debian.org)
+
+        * dpkg 0.93.5 released.
+
+        * deb/contents.c (pkg_contents): merged function archive_contents
+        into function pkg_contents.
+
+        * deb/contents.c (pkg_contents): use lstat (rather than stat) so
+        that symbolic links are recognized.
+        (pkg_contents): print the usual `<path> -> <link_to>' now that we
+        recognize symbolic links.
+
+        * deb/util.c (return_info): create a FIFO to pipe the needed
+        information to the ``formatter'' rather than creating a directory
+        in /tmp for the package information, which is what we used to do.
+
+Thu Aug 25 11:46:27 1994  Ian Murdock  (imurdock@debra.debian.org)
+
+        * lib/fake-ls.c (mk_date_string): return a pointer to malloc'ed
+        area.
+        (mk_mode_string): ditto.
+
+        * dpkg.sh: make sure the control information is extracted to a
+        uniquely-named temporary directory during package installation.
+
+        * dpkg.sh: execute the pre- and post-removal scripts during
+        package removal.
+
+        * dpkg.sh: exit immediately if dpkg-util.deb reports failure.
+
+        * deb/install.c (pkg_control): make sure that `package' exists and
+        is a Debian archive before doing anything.
+
+        * deb/install.c (pkg_extract): make sure that `package' exists and
+        is a Debian archive before doing anything.
+
+        * deb/install.c (pkg_install): unlink `extract_output' when done.
+
+        * deb/remove.c (pkg_remove): use lstat (rather than stat) so that
+        --remove does not get confused and think that a symbolic link to a
+        directory is actually a directory, which results in the symbolic
+        link never being removed at all.
+
+ChangeLog begins Thu Aug 25 11:46:27 1994 for dpkg 0.93.5.
+
+Local variables:
+mode: debian-changelog
+End:
diff --git a/INSTALL b/INSTALL
index 8a7d026f7000483e4abb9bf44fae0730891f661b..3b50ea95726f7ecc22188d5b672d3d06d2170da4 100644 (file)
--- a/INSTALL
+++ b/INSTALL
-   This is a generic INSTALL file for utilities distributions.
-If this package does not come with, e.g., installable documentation or
-data files, please ignore the references to them below.
+Basic Installation
+==================
+
+   These are generic installation instructions.
 
    The `configure' shell script attempts to guess correct values for
-various system-dependent variables used during compilation, and
-creates the Makefile(s) (one in each subdirectory of the source
-directory).  In some packages it creates a C header file containing
-system-dependent definitions.  It also creates a file `config.status'
-that you can run in the future to recreate the current configuration.
+various system-dependent variables used during compilation.  It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions.  Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, a file
+`config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file `config.log' containing compiler output
+(useful mainly for debugging `configure').
+
+   If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release.  If at some point `config.cache'
+contains results you don't want to keep, you may remove or edit it.
+
+   The file `configure.in' is used to create `configure' by a program
+called `autoconf'.  You only need `configure.in' if you want to change
+it or regenerate `configure' using a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+  1. `cd' to the directory containing the package's source code and type
+     `./configure' to configure the package for your system.  If you're
+     using `csh' on an old version of System V, you might need to type
+     `sh ./configure' instead to prevent `csh' from trying to execute
+     `configure' itself.
+
+     Running `configure' takes a while.  While running, it prints some
+     messages telling which features it is checking for.
+
+  2. Type `make' to compile the package.
+
+  3. Optionally, type `make check' to run any self-tests that come with
+     the package.
 
-To compile this package:
+  4. Type `make install' to install the programs and any data files and
+     documentation.
 
-1.  Configure the package for your system.
+  5. You can remove the program binaries and object files from the
+     source code directory by typing `make clean'.  To also remove the
+     files that `configure' created (so you can compile the package for
+     a different kind of computer), type `make distclean'.  There is
+     also a `make maintainer-clean' target, but that is intended mainly
+     for the package's developers.  If you use it, you may have to get
+     all sorts of other programs in order to regenerate files that came
+     with the distribution.
 
-   Normally, you just `cd' to the directory containing the package's
-source code and type `./configure'.  If you're using `csh' on an old
-version of System V, you might need to type `sh configure' instead to
-prevent `csh' from trying to execute `configure' itself.
+Compilers and Options
+=====================
 
-   Running `configure' takes awhile.  While it is running, it
-prints some messages that tell what it is doing.  If you don't want to
-see any messages, run `configure' with its standard output redirected
-to `/dev/null'; for example, `./configure >/dev/null'.
+   Some systems require unusual options for compilation or linking that
+the `configure' script does not know about.  You can give `configure'
+initial values for variables by setting them in the environment.  Using
+a Bourne-compatible shell, you can do that on the command line like
+this:
+     CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
 
-   To compile the package in a different directory from the one
-containing the source code, you must use a version of `make' that
+Or on systems that have the `env' program, you can do it like this:
+     env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+
+Compiling For Multiple Architectures
+====================================
+
+   You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory.  To do this, you must use a version of `make' that
 supports the `VPATH' variable, such as GNU `make'.  `cd' to the
 directory where you want the object files and executables to go and run
 the `configure' script.  `configure' automatically checks for the
-source code in the directory that `configure' is in and in `..'.  If
-for some reason `configure' is not in the source code directory that
-you are configuring, then it will report that it can't find the source
-code.  In that case, run `configure' with the option `--srcdir=DIR',
-where DIR is the directory that contains the source code.
+source code in the directory that `configure' is in and in `..'.
+
+   If you have to use a `make' that does not supports the `VPATH'
+variable, you have to compile the package for one architecture at a time
+in the source code directory.  After you have installed the package for
+one architecture, use `make distclean' before reconfiguring for another
+architecture.
+
+Installation Names
+==================
 
    By default, `make install' will install the package's files in
 `/usr/local/bin', `/usr/local/man', etc.  You can specify an
 installation prefix other than `/usr/local' by giving `configure' the
-option `--prefix=PATH'.  Alternately, you can do so by consistently
-giving a value for the `prefix' variable when you run `make', e.g.,
-     make prefix=/usr/gnu
-     make prefix=/usr/gnu install
+option `--prefix=PATH'.
 
    You can specify separate installation prefixes for
 architecture-specific files and architecture-independent files.  If you
-give `configure' the option `--exec-prefix=PATH' or set the `make'
-variable `exec_prefix' to PATH, the package will use PATH as the prefix
-for installing programs and libraries.  Data files and documentation
-will still use the regular prefix.  Normally, all files are installed
-using the same prefix.
-
-   Some packages pay attention to `--with-PACKAGE' options to
-`configure', where PACKAGE is something like `gnu-as' or `x' (for the
-X Window System).  They may also pay attention to `--enable-FEATURE'
-options, where FEATURE indicates an optional part of the package.  The
-README should mention any `--with-' and `--enable-' options that the
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+   If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+   Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System).  The
+`README' should mention any `--enable-' and `--with-' options that the
 package recognizes.
 
-   `configure' also recognizes the following options:
+   For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+   There may be some features `configure' can not figure out
+automatically, but needs to determine by the type of host the package
+will run on.  Usually `configure' can figure that out, but if it prints
+a message saying it can not guess the host type, give it the
+`--host=TYPE' option.  TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name with three fields:
+     CPU-COMPANY-SYSTEM
+
+See the file `config.sub' for the possible values of each field.  If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the host type.
+
+   If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system they will
+produce code for and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+Sharing Defaults
+================
+
+   If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists.  Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Operation Controls
+==================
+
+   `configure' recognizes the following options to control how it
+operates.
+
+`--cache-file=FILE'
+     Use and save the results of the tests in FILE instead of
+     `./config.cache'.  Set FILE to `/dev/null' to disable caching, for
+     debugging `configure'.
 
 `--help'
      Print a summary of the options to `configure', and exit.
 
 `--quiet'
 `--silent'
+`-q'
      Do not print messages saying which checks are being made.
 
-`--verbose'
-     Print the results of the checks.
+`--srcdir=DIR'
+     Look for the package's source code in directory DIR.  Usually
+     `configure' can determine that directory automatically.
 
 `--version'
      Print the version of Autoconf used to generate the `configure'
      script, and exit.
 
-`--x-includes=DIR'
-     X include files are in DIR.
-
-`--x-libraries=DIR'
-     X library files are in DIR.
-
-   `configure' also accepts and ignores some other options.
-
-   On systems that require unusual options for compilation or linking
-that the package's `configure' script does not know about, you can give
-`configure' initial values for variables by setting them in the
-environment.  In Bourne-compatible shells, you can do that on the
-command line like this:
-
-     CC='gcc -traditional' LIBS=-lposix ./configure
+`configure' also accepts some other, not widely useful, options.
 
-On systems that have the `env' program, you can do it like this:
-
-     env CC='gcc -traditional' LIBS=-lposix ./configure
-
-   Here are the `make' variables that you might want to override with
-environment variables when running `configure'.
-
-   For these variables, any value given in the environment overrides the
-value that `configure' would choose:
-
- - Variable: CC
-     C compiler program.  The default is `cc'.
-
- - Variable: INSTALL
-     Program to use to install files.  The default is `install' if you
-     have it, `cp' otherwise.
-
-   For these variables, any value given in the environment is added to
-the value that `configure' chooses:
-
- - Variable: DEFS
-     Configuration options, in the form `-Dfoo -Dbar...'.  Do not use
-     this variable in packages that create a configuration header file.
-
- - Variable: LIBS
-     Libraries to link with, in the form `-lfoo -lbar...'.
-
-   If you need to do unusual things to compile the package, we encourage
-you to figure out how `configure' could check whether to do them, and
-mail diffs or instructions to the address given in the README so we
-can include them in the next release.
-
-2.  Type `make' to compile the package.  If you want, you can override
-the `make' variables CFLAGS and LDFLAGS like this:
-
-       make CFLAGS=-O2 LDFLAGS=-s
-
-3.  If the package comes with self-tests and you want to run them,
-type `make check'.  If you're not sure whether there are any, try it;
-if `make' responds with something like
-       make: *** No way to make target `check'.  Stop.
-then the package does not come with self-tests.
-
-4.  Type `make install' to install programs, data files, and
-documentation.
-
-5.  You can remove the program binaries and object files from the
-source directory by typing `make clean'.  To also remove the
-Makefile(s), the header file containing system-dependent definitions
-(if the package uses one), and `config.status' (all the files that
-`configure' created), type `make distclean'.
-
-   The file `configure.in' is used to create `configure' by a program
-called `autoconf'.  You only need it if you want to regenerate
-`configure' using a newer version of `autoconf'.
diff --git a/Makefile.am b/Makefile.am
new file mode 100644 (file)
index 0000000..d717590
--- /dev/null
@@ -0,0 +1,76 @@
+## Process this file with automake to produce a Makefile.in
+
+AUTOMAKE_OPTIONS       = 1.1 foreign
+
+if HAVE_CPLUSPLUS
+CPPSUBDIRS             = dselect methods
+else
+CPPSUBDIRS             =
+endif
+
+SUBDIRS                        = po intl include lib main dpkg-deb split \
+                         md5sum scripts $(CPPSUBDIRS) doc
+
+## Directory definitions
+
+pkglocalstatedir       = $(sharedstatedir)/@PACKAGE@
+pkglibdir              = $(libdir)/@PACKAGE@
+
+docdir                 = $(prefix)/doc
+pkgdocdir              = $(docdir)/@PACKAGE@
+
+## Various options
+
+CFLAGS                 = @CFLAGS@ @CWARNS@ -g $(XCFLAGS)
+OPTCFLAGS              = @OPTCFLAGS@ @CWARNS@ -g $(XCFLAGS)
+LDFLAGS                        = @LDFLAGS@ $(XLDFLAGS)
+LIBS                   = @LIBS@ $(XLIBS)
+
+export CFLAGS OPTCFLAGS LDFLAGS LIBS
+
+## Automake variables
+
+# Can set this to "build" (wrapper found in debmake)
+DEBIAN_BUILD           = dpkg-buildpackage
+
+# May want to add -a<arch>?
+DEBIAN_FLAGS           =
+
+BUILT_SOURCES          = version.h config.h
+EXTRA_DIST             = archtable COPYING INSTALL 
+
+CLEANFILES             = version.h.new
+DISTCLEANFILES         = version.h config.h
+MAINTAINERCLEANFILES   = libtool
+
+DISTDEBFILES           = 50dpkg-dev.el changelog control copyright \
+                         dev-README postinst preinst prerm rules \
+                         shlibs shlibs.default.i386 shlibs.local
+
+MAINTCLEANFILES                = Makefile.in aclocal.m4 config.guess \
+                         config.h.in config.sub configure install-sh \
+                         ltconfig ltmain.sh mkinstalldirs ABOUT-NLS \
+                         po/Makefile.in.in po/stamp-cat-id po/cat-id-tbl.c \
+                         po/dpkg.pot stamp-h.in missing
+## Rules
+
+.PHONY: install-data-local uninstall-local dist-hook maintainer-clean-local
+
+uninstall-local:
+       -for d in $(pkglocalstatedir) $(pkglibdir) $(pkgdocdir); do \
+               [ -e $$d ] && rmdir $$d; \
+       done
+
+dist-hook:
+       $(mkinstalldirs) $(distdir)/debian
+       set -e; for i in $(DISTDEBFILES); do \
+               cp -p $(srcdir)/debian/$$i $(distdir)/debian/; \
+       done
+       $(mkinstalldirs) $(distdir)/automake
+       cp -dp $(top_srcdir)/automake/[a-z]* $(distdir)/automake/
+
+maintainer-clean-local:
+       -cd $(srcdir) && rm -f $(MAINTCLEANFILES)
+       -$(RM) -r $(srcdir)/intl
+
+## End of file.
diff --git a/Makefile.in b/Makefile.in
deleted file mode 100644 (file)
index b69f3fc..0000000
+++ /dev/null
@@ -1,134 +0,0 @@
-# Copyright (C) 1994 Ian Murdock <imurdock@debian.org>
-# Copyright (C) 1994,1995 Ian Jackson <iwj10@cus.cam.ac.uk>
-#
-#   This is free software; you can redistribute it and/or modify
-#   it under the terms of the GNU General Public License as
-#   published by the Free Software Foundation; either version 2,
-#   or (at your option) any later version.
-#
-#   This is distributed in the hope that it will be useful, but
-#   WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#   GNU General Public License for more details.
-#
-#   You should have received a copy of the GNU General Public
-#   License along with dpkg; if not, write to the Free Software
-#   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-srcdir = @srcdir@
-VPATH = @srcdir@
-
-prefix = @prefix@
-exec_prefix = $(prefix)
-docdir = $(prefix)/doc
-devdocdir = $(docdir)/dpkg
-copyingfile = $(docdir)/dpkg/copyright
-infodir = $(prefix)/info
-bindir = $(exec_prefix)/bin
-sbindir = $(exec_prefix)/sbin
-libdir = $(prefix)/lib
-dpkglibdir = $(libdir)/dpkg
-methodsdir = $(dpkglibdir)/methods
-parsechangelogdir = $(dpkglibdir)/parsechangelog
-elispdir = $(libdir)/emacs/site-lisp
-datadir = /var/lib/dpkg
-methodsdatadir = $(datadir)/methods
-methodsmnt = $(datadir)/methods/mnt
-pinfodir = $(datadir)/info
-pupdatesdir = $(datadir)/updates
-altsdatadir = $(datadir)/alternatives
-partsdir = $(datadir)/parts
-mandir = $(prefix)/man
-man1dir = $(mandir)/man1
-man5dir = $(mandir)/man5
-man8dir = $(mandir)/man8
-man1 = 1
-man5 = 5
-man8 = 8
-etcdir= /etc
-altsetcdir = $(etcdir)/alternatives
-
-BOURNESHELL = /bin/sh
-
-INSTALL = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_DATA = @INSTALL_DATA@
-
-CC = @CC@
-
-CFLAGS = @CFLAGS@ @CWARNS@ $(XCFLAGS)
-LDFLAGS = $(XLDFLAGS)
-ALL_CFLAGS = -I../include -I.. @DEFS@ $(CFLAGS)
-
-SUBDIRS = lib main dpkg-deb split md5sum scripts doc include dselect methods
-PORTABLEDIRS = lib dpkg-deb split md5sum
-
-.SUFFIXES:     .c .o
-
-.c.o:
-               $(CC) $(ALL_CFLAGS) -c $<
-
-all:           version
-               set -e; for d in $(SUBDIRS) ; do \
-                       cd $$d ; \
-                       $(MAKE) 'CC=$(CC)' 'LDFLAGS=$(LDFLAGS)' 'XLIBS=$(XLIBS)'; \
-                       cd .. ; \
-               done
-
-install:       all
-               $(BOURNESHELL) $(srcdir)/mkinstalldirs $(bindir) $(sbindir) \
-                       $(man1dir) $(man5dir) $(man8dir) $(devdocdir) $(infodir) \
-                       $(libdir) $(dpkglibdir) $(methodsdir) $(parsechangelogdir) \
-                       $(elispdir) $(datadir) $(pinfodir) $(pupdatesdir) \
-                       $(methodsdatadir) $(methodsmnt) $(altsdatadir) \
-                       $(altsetcdir) $(partsdir)
-               set -e; for d in $(SUBDIRS) ; do \
-                       cd $$d ; \
-                       $(MAKE) 'CC=$(CC)' 'LDFLAGS=$(LDFLAGS)' 'XLIBS=$(XLIBS)' \
-                               install ; \
-                       cd .. ; \
-               done
-               $(INSTALL_DATA) COPYING $(copyingfile)
-
-portable:      version
-               set -e; for d in lib dpkg-deb split md5sum ; do \
-                       cd $$d ; \
-                       $(MAKE) 'CC=$(CC)' 'LDFLAGS=$(LDFLAGS)' 'XLIBS=$(XLIBS)' ; \
-                       cd .. ; \
-               done
-
-install-portable: portable
-               $(BOURNESHELL) $(srcdir)/mkinstalldirs $(bindir) \
-                       $(man1dir) $(man8dir) $(libdir) $(dpkglibdir)
-               set -e; for d in $(PORTABLEDIRS) ; do \
-                       cd $$d ; \
-                       $(MAKE) 'CC=$(CC)' 'LDFLAGS=$(LDFLAGS)' 'XLIBS=$(XLIBS)' \
-                               install ; \
-                       cd .. ; \
-               done
-#              $(INSTALL_DATA) COPYING $(copyingfile)
-
-autoconf:
-               autoheader
-               autoconf
-
-clean:
-               set -e; for d in $(SUBDIRS) ; do \
-                       cd $$d ; \
-                       $(MAKE) clean ; \
-                       cd .. ; \
-               done
-               rm -f core version.h.new
-
-distclean:     clean
-               set -e; for d in $(SUBDIRS) ; do \
-                       cd $$d ; \
-                       $(MAKE) distclean ; \
-                       cd .. ; \
-               done
-               rm -f Makefile *.orig *~ *.~* ./#*#
-               rm -f config.h config.status install config.cache config.log
-
-version:
-               perl insert-version.pl <version.h >version.h.new
-               cmp -s version.h.new version.h || mv version.h.new version.h
diff --git a/NEWS b/NEWS
deleted file mode 100644 (file)
index 865bad7..0000000
--- a/NEWS
+++ /dev/null
@@ -1,72 +0,0 @@
-(-*- indented-text -*-)
-\f
-
-CHANGES SINCE dpkg 0.93.7:
-
- * a Perl-based front-end with many new features has replaced dpkg.sh.
-   The new features are detailed below.  dpkg.pl is not finished,
-   however, as it does not yet support CONFLICTS, DEPENDS, OPTIONAL,
-   or RECOMMENDED.  All of the above will be supported in Debian 0.93.
-
-   In addition, it does not yet support PARTS, but that may wait until
-   Debian 0.94.  (In the meantime, we can create disk-sized packages by
-   hand.)
-
-   dpkg.pl has been constructed from code originally by Matt Welsh,
-   with additions by Carl Streeter, Ian Murdock, and Ian Jackson.
-
-New features in dpkg.pl:
-
- * dpkg.pl can now manipulate many packages at a time; dpkg.sh could
-   only manipulate one package at a time.
-
- * dpkg.pl supports pre-installation, post-installation, pre-removal,
-   and post-removal scripts.  During batch installation,
-   post-installation scripts are executed after all packages have
-   been installed.  (dpkg.sh supported all of the above except the
-   batch installation feature, because dpkg.sh did not itself support
-   batch installation.)
-
- * dpkg.pl now supports the upgrading of packages.  A newer version of
-   a package, when released, can be obtained and installed normally on
-   the system to replace an older, previously installed version of it,
-   all with a minimum of manuals steps.
-
-   During the installation process, dpkg.pl determines whether or not
-   a version of the package is currently installed on the system.  If
-   it is, it determines whether it is an older version than the
-   package being installed (in which case we are ``upgrading'', and
-   the installation proceeds after saving the configuration files and
-   removing the older version), or whether it is the same or a newer
-   version than the package being installed (in which case we are, for
-   whatever reason, attempting to install a package twice or
-   ``downgrading'', and dpkg.pl asks for confirmation).
-
- * dpkg.pl now supports automatic and intelligent configuration file
-   updates during the upgrade process.  During a package upgrade, it
-   determines when a configuration file has changed since the last
-   installation and, for those that have, prompts the user whether to
-   keep the older or newer configuration file, providing them with
-   default responses.
-
-New features in dpkg-deb:
-
- * dpkg-util.deb has been renamed to dpkg-deb, for brevity.
-
- * dpkg-deb is much less verbose, and in most cases it says nothing
-   unless an error has occurred.  The front-end is expected to provide
-   the necessary verbosity when appropriate.
-
- * `dpkg-deb --describe' now outputs the description only, without the
-   ``Description:'' label.
-
- * `dpkg-deb --list' output is now sorted by package name.
-
- * `dpkg-deb --remove' bug fix: in dpkg 0.93.7 (or earlier), some
-   directories did not get properly removed.  This has been fixed.
-
- * `dpkg-deb --version' now outputs the version information only,
-   without the `Version:'' label, and without maintainer information.
-
- * `dpkg-deb --version' now provides the version of dpkg if no
-   argument is specified.
index 5efaeeac98cbcfa0c28f19ac043929c07cfb3cb8..6c897b9c49ea839297ef7ac476ccd6769f8785d0 100644 (file)
@@ -1,5 +1,11 @@
 /* Additional tests: */
 
+/* The name of the package being compiled */
+#define PACKAGE ""
+
+/* The version of the package */
+#define VERSION ""
+
 /* Define if inline functions a la GCC are available.  */
 #undef HAVE_INLINE
 
 
 /* Set this string to append something to the version number. */
 #define ARCHBINFMT ""
+
+/* Define to the name of the distribution.  */
+#undef PACKAGE
+
+/* Define to 1 if NLS is requested.  */
+#undef ENABLE_NLS
+
+/* Define as 1 if you have catgets and don't want to use GNU gettext.  */
+#undef HAVE_CATGETS
+
+/* Define as 1 if you have gettext and don't want to use GNU gettext.  */
+#undef HAVE_GETTEXT
+
+/* Define if your locale.h file contains LC_MESSAGES.  */
+#undef HAVE_LC_MESSAGES
+
+/* Define as 1 if you have the stpcpy function.  */
+#undef HAVE_STPCPY
index ffeb55480a097e7d5d977befab6cea07d53a7f84..fca9e306e4e7ef79bc813a232a7dac60d8a07466 100644 (file)
--- a/archtable
+++ b/archtable
 i386   i386    i486
 i486   i386    i486
 i586   i386    i486
+i686   i386    i486
 pentium        i386    i486
 sparc  sparc   sparc
 alpha  alpha   alpha
 m68k   m68k    m68k
 arm    arm     arm
-ppc    ppc     ppc
+ppc    powerpc powerpc
+powerpc        powerpc powerpc
similarity index 100%
rename from README
rename to attic/README
similarity index 100%
rename from main/dpkg.8-null
rename to attic/dpkg/dpkg.8-null
similarity index 100%
rename from main/junk
rename to attic/dpkg/junk
similarity index 100%
rename from scripts/lib.pl
rename to attic/dpkg/lib.pl
similarity index 100%
rename from scripts/perl-dpkg.pl
rename to attic/dpkg/perl-dpkg.pl
similarity index 100%
rename from dselect/junk
rename to attic/dselect/dselect.junk
similarity index 100%
rename from dselect/kt.c
rename to attic/dselect/kt.c
diff --git a/attic/scripts/debian-changelog-mode.el b/attic/scripts/debian-changelog-mode.el
new file mode 100644 (file)
index 0000000..aecfd09
--- /dev/null
@@ -0,0 +1,48 @@
+(defvar debian-changelog-urgencies
+  '((?l."low") (?m."medium") (?h."HIGH"))
+  "alist of keystrokes vs. urgency values for debian-changelog-urgency \\[debian-changelog-urgency].")
+
+(defvar debian-changelog-distributions
+  '((?s."stable") (?u."unstable") (?c."contrib") (?n."non-free") (?e."experimental"))
+  "alist of keystrokes vs. distribution values for debian-changelog-distribution \\[debian-changelog-distribution].")
+
+(defun debian-changelog-headervalue (arg re alist)
+  (let (a b v k
+        (lineend (save-excursion (end-of-line) (point))))
+    (save-excursion
+      (goto-char (point-min))
+      (re-search-forward re lineend)
+      (setq a (match-beginning 1)
+            b (match-end 1))
+      (goto-char a)
+      (if arg nil
+        (message (mapconcat
+                  (function (lambda (x) (format "%c:%s" (car x) (cdr x))))
+                  alist " "))
+        (while (not v)
+          (setq k (read-char))
+          (setq v (assoc k alist))))
+      (delete-region a b)
+      (if arg nil (insert (cdr v))))
+    (if arg (goto-char a))))
+
+(defun debian-changelog-distribution (arg)
+  "Without argument, prompt for a key for a new distribution value (using
+debian-changelog-distributions).  With argument, delete the current distribution
+and position the cursor to type a new one."
+  (interactive "P")
+  (debian-changelog-headervalue
+   arg
+   ") \\(.*\\)\\;"
+   debian-changelog-distributions))
+
+(defun debian-changelog-urgency (arg)
+  "Without argument, prompt for a key for a new urgency value (using
+debian-changelog-urgencies).  With argument, delete the current urgency
+and position the cursor to type a new one."
+  (interactive "P")
+  (debian-changelog-headervalue
+   arg
+   "\\;[^\n]* urgency=\\(\\sw+\\)"
+   debian-changelog-urgencies))
+
similarity index 99%
rename from scripts/update-rc.d.sh
rename to attic/scripts/update-rc.d.sh
index bc51d150010080ea729e69c604e64d0c91527e33..4d569ccf993f56dcff70b08454e45233f57d793d 100755 (executable)
@@ -20,7 +20,7 @@ usage () { echo >&2 "\
 update-rc.d: error: $1.
 usage: update-rc.d <basename> remove
        update-rc.d <basename> defaults [<cn> | <scn> <kcn>]
-       update-rc.d <basename> start|stop <cn> <r> <r> .  ..."; exit 1 }
+       update-rc.d <basename> start|stop <cn> <r> <r> .  ..."; exit 1; }
 
 getinode () {
        inode="`ls -Li1 \"$1\" | sed -e 's/^ *//; s/ .*//'`"
similarity index 100%
rename from split/magic
rename to attic/split/magic
similarity index 100%
rename from dpkg-deb/mkdeb.sh
rename to attic/split/mkdeb.sh
similarity index 100%
rename from split/junk
rename to attic/split/split.junk
diff --git a/automake/dpkg.m4 b/automake/dpkg.m4
new file mode 100644 (file)
index 0000000..f514644
--- /dev/null
@@ -0,0 +1,44 @@
+dnl Moved from configure.in, modified to use AC_DEFUN
+dnl -- Tom Lees <tom@lpsg.demon.co.uk>
+
+dnl DPKG_CACHED_TRY_COMPILE(<description>,<cachevar>,<include>,<program>,<ifyes>,<ifno>)
+AC_DEFUN(DPKG_CACHED_TRY_COMPILE,[
+ AC_MSG_CHECKING($1)
+ AC_CACHE_VAL($2,[
+  AC_TRY_COMPILE([$3],[$4],[$2=yes],[$2=no])
+ ])
+ if test "x$$2" = xyes; then
+  true
+  $5
+ else
+  true
+  $6
+ fi
+])
+
+dnl DPKG_C_GCC_TRY_WARNS(<warnings>,<cachevar>)
+AC_DEFUN(DPKG_C_GCC_TRY_WARNS,[
+ AC_MSG_CHECKING([GCC warning flag(s) $1])
+ if test "${GCC-no}" = yes
+ then
+  AC_CACHE_VAL($2,[
+   oldcflags="${CFLAGS-}"
+   CFLAGS="${CFLAGS-} ${CWARNS} $1 -Werror"
+   AC_TRY_COMPILE([
+#include <string.h>
+#include <stdio.h>
+],[
+    strcmp("a","b"); fprintf(stdout,"test ok\n");
+], [$2=yes], [$2=no])
+   CFLAGS="${oldcflags}"])
+  if test "x$$2" = xyes; then
+   CWARNS="${CWARNS} $1"
+   AC_MSG_RESULT(ok)
+  else
+   $2=''
+   AC_MSG_RESULT(no)
+  fi
+ else
+  AC_MSG_RESULT(no, not using GCC)
+ fi
+])
diff --git a/automake/tl_canon.m4 b/automake/tl_canon.m4
new file mode 100644 (file)
index 0000000..d8511e4
--- /dev/null
@@ -0,0 +1,209 @@
+# Our own versions of the other canonicalizing stuff
+
+dnl replace AC_CANONICAL_xxx
+
+undefine([AC_CANONICAL_HOST])
+define([AC_CANONICAL_HOST], [tl_CANONICAL_HOST])
+undefine([AC_CANONICAL_BUILD])
+define([AC_CANONICAL_BUILD], [tl_CANONICAL_BUILD])
+undefine([AC_CANONICAL_TARGET])
+define([AC_CANONICAL_TARGET], [tl_CANONICAL_TARGET])
+undefine([AC_CANONICAL_SYSTEM])
+define([AC_CANONICAL_SYSTEM], [tl_CANONICAL_SYSTEM])
+
+dnl Canonicalize the host, target, and build system types.
+AC_DEFUN(tl_CANONICAL_SYSTEM,
+[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
+AC_PROVIDE([AC_CANONICAL_SYSTEM])dnl
+AC_BEFORE([$0], [AC_ARG_PROGRAM])
+# Do some error checking and defaulting for the host and target type.
+# The inputs are:
+#    configure --host=HOST --target=TARGET --build=BUILD NONOPT
+#
+# The rules are:
+# 1. You are not allowed to specify --host, --target, and nonopt at the
+#    same time.
+# 2. Host defaults to nonopt.
+# 3. If nonopt is not specified, then host defaults to the current host,
+#    as determined by config.guess.
+# 4. Target and build default to nonopt.
+# 5. If nonopt is not specified, then target and build default to host.
+
+# The aliases save the names the user supplied, while $host etc.
+# will get canonicalized.
+case $host---$target---$nonopt in
+NONE---*---* | *---NONE---* | *---*---NONE) ;;
+*) AC_MSG_ERROR(can only configure for one host and one target at a time) ;;
+esac
+
+tl_CANONICAL_HOST
+tl_CANONICAL_TARGET
+tl_CANONICAL_BUILD
+test "$host_alias" != "$target_alias" &&
+  test "$program_prefix$program_suffix$program_transform_name" = \
+    NONENONEs,x,x, &&
+  program_prefix=${target_alias}-
+AC_CHECK_TOOL_PREFIX
+])
+
+dnl Subroutines of tl_CANONICAL_SYSTEM.
+
+AC_DEFUN(tl_CANONICAL_HOST,
+[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
+AC_PROVIDE([AC_CANONICAL_HOST])dnl
+
+# Make sure we can run config.sub.
+if $ac_config_sub sun4 >/dev/null 2>&1; then :
+else AC_MSG_ERROR(can not run $ac_config_sub)
+fi
+
+AC_MSG_CHECKING(host system type)
+
+dnl Set host_alias.
+
+if test "${GCC-no}" = "yes"; then
+changequote(, )dnl
+  libgcc="`${CC} --print-libgcc-file-name`"
+  host_alias="`echo ${libgcc} |
+       sed -e 's,^.*/gcc-lib/,,; s,/libgcc\.a$,,; s,/egcs-,/,; s,/[0-9.][0-9.]*$,,'`"
+  case ${host_alias} in
+   *-linux{,elf,aout})
+    host_alias="`echo ${host_alias} | sed 's/\([^-]*\)-linux.*/\1/'`"
+changequote([, ])dnl
+    if ar p "${libgcc}" __main.o 2>/dev/null | file - 2>/dev/null | grep ELF >/dev/null; then
+      host_alias="${host_alias}-linux"
+    else
+      host_alias="${host_alias}-linuxaout"
+    fi ;;
+  esac
+else
+  host_alias=$host
+  case "$host_alias" in
+  NONE)
+    case "$nonopt" in
+    NONE)
+      if host_alias=`$ac_config_guess`; then host_guessed=y
+      else AC_MSG_ERROR(can not guess host type; you must specify one)
+      fi ;;
+    *) host_alias=$nonopt ;;
+    esac ;;
+  esac
+fi
+
+dnl Set the other host vars.
+changequote(<<, >>)dnl
+host=`$ac_config_sub $host_alias`
+host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+changequote([, ])dnl
+AC_MSG_RESULT($host)
+AC_SUBST(host)dnl
+AC_SUBST(host_alias)dnl
+AC_SUBST(host_cpu)dnl
+AC_SUBST(host_vendor)dnl
+AC_SUBST(host_os)dnl
+])
+
+dnl Internal use only.
+AC_DEFUN(tl_CANONICAL_TARGET,
+[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_PROVIDE([AC_CANONICAL_TARGET])dnl
+AC_MSG_CHECKING(target system type)
+
+dnl Set target_alias.
+target_alias=$target
+case "$target_alias" in
+NONE)
+  case $nonopt in
+  NONE)
+  target_cpu="`dpkg --print-architecture`"
+  if test "$target_cpu" = ""; then
+   target_alias=$host_alias
+  else
+   target_alias="`echo ${host_alias} | sed 's/[^-]*-/${target_cpu}-/'`"
+  fi
+  ;;
+  *) target_alias=$nonopt ;;
+  esac ;;
+esac
+
+dnl Set the other target vars.
+if test $target_alias = $host_alias; then
+  target=$host
+  target_cpu=$host_cpu
+  target_vendor=$host_vendor
+  target_os=$host_os
+elif test $target_alias = "$build_alias"; then
+  target=$build
+  target_cpu=$build_cpu
+  target_vendor=$build_vendor
+  target_os=$build_os
+else
+changequote(<<, >>)dnl
+  target=`$ac_config_sub $target_alias`
+  target_cpu=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+  target_vendor=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+  target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+changequote([, ])dnl
+fi
+AC_MSG_RESULT($target)
+AC_SUBST(target)dnl
+AC_SUBST(target_alias)dnl
+AC_SUBST(target_cpu)dnl
+AC_SUBST(target_vendor)dnl
+AC_SUBST(target_os)dnl
+])
+
+AC_DEFUN(tl_CANONICAL_BUILD,
+[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_PROVIDE([AC_CANONICAL_BUILD])dnl
+
+# Make sure we can run config.sub.
+#if $ac_config_sub sun4 >/dev/null 2>&1; then :
+#else AC_MSG_ERROR(can not run $ac_config_sub)
+#fi
+
+AC_MSG_CHECKING(build system type)
+
+dnl Set build_alias.
+build_alias=$build
+case "$build_alias" in
+NONE)
+  case $nonopt in
+  NONE)
+    if test "$host_guessed" = "y"; then
+      build_alias=$host_alias
+    else
+      if build_alias=`$ac_config_guess`; then :
+      else build_alias=$host_alias
+      fi
+    fi ;;
+  *) build_alias=$nonopt ;;
+  esac ;;
+esac
+
+dnl Set the other build vars.
+if test $build_alias = $host_alias; then
+  build=$host
+  build_cpu=$host_cpu
+  build_vendor=$host_vendor
+  build_os=$host_os
+else
+changequote(<<, >>)dnl
+  build=`$ac_config_sub $build_alias`
+  build_cpu=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+  build_vendor=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+  build_os=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+changequote([, ])dnl
+fi
+AC_MSG_RESULT($build)
+AC_SUBST(build)dnl
+AC_SUBST(build_alias)dnl
+AC_SUBST(build_cpu)dnl
+AC_SUBST(build_vendor)dnl
+AC_SUBST(build_os)dnl
+])
diff --git a/automake/tools.m4 b/automake/tools.m4
new file mode 100644 (file)
index 0000000..65574d6
--- /dev/null
@@ -0,0 +1,231 @@
+# tl_CHECK_TOOL_PREFIX will work _BEFORE_ AC_CANONICAL_HOST, etc., has been
+# called. It should be called again after these have been called.
+#
+# Basically we want to check if the host alias specified by the user is
+# different from the build alias. The rules work like this:-
+#
+# If host is not specified, it defaults to NONOPT
+# If build is not specified, it defaults to NONOPT
+# If nonopt is not specified, we guess all other values
+
+dnl Replace AC_CHECK_TOOL_PREFIX
+undefine([AC_CHECK_TOOL_PREFIX])
+define([AC_CHECK_TOOL_PREFIX], [tl_CHECK_TOOL_PREFIX])
+
+AC_DEFUN(tl_CHECK_TOOL_PREFIX,
+[AC_PROVIDE([AC_CHECK_TOOL_PREFIX])
+AC_BEFORE([AC_CANONICAL_HOST])
+AC_BEFORE([AC_CANONICAL_BUILD])
+dnl Quick check
+if test "$host_alias" = ""; then
+  if test $host = NONE -a $build != NONE; then
+    thost=$nonopt
+  else
+    thost=$host
+  fi
+
+  if test $thost != $build -a $thost != NONE; then
+    ac_tool_prefix=${thost}-
+    ac_tool_dir=${thost}
+  else
+    ac_tool_prefix=
+    ac_tool_dir=
+  fi
+else
+  if test $host != $build; then
+    ac_tool_prefix=${host_alias}-
+    ac_tool_dir=${host_alias}
+  else
+    ac_tool_prefix=
+    ac_tool_dir=
+  fi
+fi
+])
+
+dnl replacement for AC_CHECK_TOOL
+undefine([AC_CHECK_TOOL])
+define([AC_CHECK_TOOL], [tl_CHECK_TOOL($1, $2, $3, $4)])
+
+dnl tl_CHECK_TOOL - AC_CHECK_TOOL, with a couple of extra checks
+dnl tl_CHECK_TOOL(VARIABLE, PROG-TO-CHECK-FOR[, VALUE-IF-NOT-FOUND [, PATH
+dnl [, REJECT]])
+AC_DEFUN(tl_CHECK_TOOL,
+[AC_REQUIRE([AC_CHECK_TOOL_PREFIX])
+AC_CHECK_PROG($1, ${ac_tool_prefix}$2, ${ac_tool_prefix}$2,
+             ifelse([$3], , [$2], ), $4, $5)
+if test "$ac_tool_dir" != ""; then
+  if test -z "$ac_cv_prog_$1" -a "$5" != "/usr/${ac_tool_dir}/bin/$2" -a \
+       "$5" != "/usr/local/${ac_tool_dir}/bin/$2"; then
+    if test -f /usr/${ac_tool_dir}/bin/$2; then $1="/usr/${ac_tool_dir}/bin/$2"
+    elif test -f /usr/local/${ac_tool_dir}/bin/$2; then $1="/usr/local/${ac_tool_dir}/bin/$2"
+    fi
+  fi
+fi
+ifelse([$3], , , [
+if test -z "$ac_cv_prog_$1"; then
+if test -n "$ac_tool_prefix"; then
+  AC_CHECK_PROG($1, $2, $2, $3, $4, $5)
+else
+  $1="$3"
+fi
+fi])
+])
+
+dnl tl_CHECK_TOOLS -
+dnl  do a tl_CHECK_TOOL for multiple tools (like AC_CHECK_PROGS)
+dnl tl_CHECK_TOOLS(VARIABLE, PROGS-TO-CHECK-FOR [, VALUE-IF-NOT-FOUND
+dnl               [, PATH]])
+AC_DEFUN(tl_CHECK_TOOLS,
+[for ac_tool in $2
+do
+tl_CHECK_TOOL($1, [$]ac_tool, [$]ac_tool, , $4)
+test -n "[$]$1" && break
+done
+ifelse([$3], , , [test -n "[$]$1" || $1="$3"
+])])
+
+dnl replace AC_PROG_CC and AC_PROG_CXX
+undefine([AC_PROG_CC])
+define([AC_PROG_CC], [tl_PROG_CC])
+undefine([AC_PROG_CXX])
+define([AC_PROG_CXX], [tl_PROG_CXX])
+
+dnl tl_PROG_CC, tl_PROG_CXX - same as old AC_PROG_CC and AC_PROG_CXX, but
+dnl use AC_CHECK_TOOL/tl_CHECK_TOOLS instead of AC_CHECK_PROG, etc.
+AC_DEFUN(tl_PROG_CC,
+[AC_BEFORE([$0], [AC_PROG_CPP])dnl
+AC_PROVIDE([AC_PROG_CC])dnl
+tl_CHECK_TOOL(CC, gcc, gcc)
+if test -z "$CC"; then
+  AC_CHECK_TOOL(CC, cc, cc, , , /usr/ucb/cc)
+  test -z "$CC" && AC_MSG_ERROR([no acceptable cc found in \$PATH])
+fi
+if test -n "$ac_tool_prefix" -a "`echo $CC | grep '$ac_tool_prefix'`" = "" \
+       -a "`echo $CC | grep -- '-b'`" = ""; then
+  if $CC -v 2>&1 | grep -q gcc; then
+    AC_CACHE_CHECK([if $CC -b${ac_tool_dir} works], tl_cv_prog_cc_bhost,[
+    old_cc="${CC}"
+    CC="${CC} -b${ac_tool_dir}"
+    AC_LANG_SAVE
+    AC_LANG_C
+    AC_TRY_COMPILER([main(){return(0);}], tl_cv_prog_cc_bhost, ac_cv_prog_cc_cross)
+    AC_LANG_RESTORE])
+    if test $tl_cv_prog_cc_bhost = "yes"; then
+      ac_cv_prog_cc_works=yes
+      cctest=yes
+    else
+      CC="${old_cc}"
+    fi
+  fi
+fi
+
+if test "$cctest" != "yes"; then
+  tl_PROG_CC_WORKS
+fi
+AC_PROG_CC_GNU
+
+if test $ac_cv_prog_gcc = yes; then
+  GCC=yes
+dnl Check whether -g works, even if CFLAGS is set, in case the package
+dnl plays around with CFLAGS (such as to build both debugging and
+dnl normal versions of a library), tasteless as that idea is.
+  ac_test_CFLAGS="${CFLAGS+set}"
+  ac_save_CFLAGS="$CFLAGS"
+  CFLAGS=
+  AC_PROG_CC_G
+  if test "$ac_test_CFLAGS" = set; then
+    CFLAGS="$ac_save_CFLAGS"
+  elif test $ac_cv_prog_cc_g = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-O2"
+  fi
+else
+  GCC=
+  test "${CFLAGS+set}" = set || CFLAGS="-g"
+fi
+])
+
+AC_DEFUN(tl_PROG_CXX,
+[AC_BEFORE([$0], [AC_PROG_CXXCPP])dnl
+AC_PROVIDE([AC_PROG_CXX])dnl
+tl_CHECK_TOOLS(CXX, $CCC c++ g++ gcc CC cxx cc++, gcc)
+if test -n "$CXX"; then
+  if test -n "$ac_tool_prefix" -a "`echo $CXX | grep '$ac_tool_prefix'`" = "" \
+       -a "`echo $CXX | grep -- '-b'`" = ""; then
+    if $CXX -v 2>&1 | grep -q gcc; then
+      AC_CACHE_CHECK([if $CXX -b${ac_tool_dir} works], tl_cv_prog_cxx_bhost,[
+      old_cxx="${CXX}"
+      CXX="${CXX} -b${ac_tool_dir}"
+      AC_LANG_SAVE
+      AC_LANG_CPLUSPLUS
+      AC_TRY_COMPILER([main(){return(0);}], tl_cv_prog_cxx_bhost, ac_cv_prog_cxx_cross)
+      AC_LANG_RESTORE])
+      if test $tl_cv_prog_cxx_bhost = "yes"; then
+       ac_cv_prog_cxx_works=yes
+       cxxtest=yes
+      else
+       CXX="${old_cxx}"
+      fi
+    fi
+  fi
+  
+  if test "$cxxtest" != "yes"; then
+    tl_PROG_CXX_WORKS
+  fi
+  AC_PROG_CXX_GNU
+  
+  if test $ac_cv_prog_gxx = yes; then
+    GXX=yes
+dnl Check whether -g works, even if CXXFLAGS is set, in case the package
+dnl plays around with CXXFLAGS (such as to build both debugging and
+dnl normal versions of a library), tasteless as that idea is.
+    ac_test_CXXFLAGS="${CXXFLAGS+set}"
+    ac_save_CXXFLAGS="$CXXFLAGS"
+    CXXFLAGS=
+    AC_PROG_CXX_G
+    if test "$ac_test_CXXFLAGS" = set; then
+      CXXFLAGS="$ac_save_CXXFLAGS"
+    elif test $ac_cv_prog_cxx_g = yes; then
+      CXXFLAGS="-g -O2"
+    else
+      CXXFLAGS="-O2"
+    fi
+  else
+    GXX=
+    test "${CXXFLAGS+set}" = set || CXXFLAGS="-g"
+  fi
+fi
+])
+
+AC_DEFUN(tl_PROG_CC_WORKS,
+[AC_PROVIDE(AC_PROG_CC_WORKS)
+AC_CACHE_CHECK([whether the C compiler ($CC $CFLAGS $LDFLAGS) works],
+       ac_cv_prog_cc_works, [
+AC_LANG_SAVE
+AC_LANG_C
+AC_TRY_COMPILER([main(){return(0);}], ac_cv_prog_cc_works, ac_cv_prog_cc_cross)
+AC_LANG_RESTORE
+if test $ac_cv_prog_cc_works = no; then
+  AC_MSG_ERROR([installation or configuration problem: C compiler cannot create executables.])
+fi])
+AC_MSG_CHECKING([whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler])
+AC_MSG_RESULT($ac_cv_prog_cc_cross)
+cross_compiling=$ac_cv_prog_cc_cross
+])
+
+AC_DEFUN(tl_PROG_CXX_WORKS,
+[AC_PROVIDE(AC_PROG_CXX_WORKS)
+AC_CACHE_CHECK([whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works],
+       ac_cv_prog_cxx_works, [
+AC_LANG_SAVE
+AC_LANG_CPLUSPLUS
+AC_TRY_COMPILER([main(){return(0);}], ac_cv_prog_cxx_works, ac_cv_prog_cxx_cross)
+AC_LANG_RESTORE
+if test $ac_cv_prog_cxx_works = no; then
+  AC_MSG_ERROR([installation or configuration problem: C++ compiler cannot create executables.])
+fi])
+AC_MSG_CHECKING([whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler])
+AC_MSG_RESULT($ac_cv_prog_cxx_cross)
+cross_compiling=$ac_cv_prog_cxx_cross
+])
index 06751db0926d137ff835066014810208f32e6b16..c62fdbd62666a9251eb00fa3ddaf2dbb8456f41d 100644 (file)
 #ifndef ATTRNORETURN
 #ifdef HAVE_GNUC25_NORETURN
 #define ATTRNORETURN noreturn
-#else
+#else /* ! HAVE_GNUC25_NORETURN */
 #define ATTRNORETURN
-#endif
-#endif
+#endif /* HAVE_GNUC25_NORETURN */
+#endif /* ATTRNORETURN */
+
 #ifndef NONRETURNING
 #define NONRETURNING FUNCATTR((ATTRNORETURN))
-#endif
+#endif /* NONRETURNING */
 
 /* Combination of both the above. */
 #ifndef NONRETURNPRINTFFORMAT
diff --git a/config.h.in b/config.h.in
deleted file mode 100644 (file)
index 92b42a7..0000000
+++ /dev/null
@@ -1,218 +0,0 @@
-/* config.h.in.  Generated automatically from configure.in by autoheader.  */
-
-/* Define to empty if the keyword does not work.  */
-#undef const
-
-/* Define if you don't have vprintf but do have _doprnt.  */
-#undef HAVE_DOPRNT
-
-/* Define if you have the vprintf function.  */
-#undef HAVE_VPRINTF
-
-/* Define to `int' if <sys/types.h> doesn't define.  */
-#undef mode_t
-
-/* Define to `int' if <sys/types.h> doesn't define.  */
-#undef pid_t
-
-/* Define to `unsigned' if <sys/types.h> doesn't define.  */
-#undef size_t
-
-/* Define if you have the ANSI C header files.  */
-#undef STDC_HEADERS
-
-/* Define if your processor stores words with the most significant
-   byte first (like Motorola and SPARC, unlike Intel and VAX).  */
-#undef WORDS_BIGENDIAN
-
-/* Define if inline functions a la GCC are available.  */
-#undef HAVE_INLINE
-
-/* Define if sysinfo is available.  */
-#undef HAVE_SYSINFO
-
-/* Define if __NR_sysinfo is available.  */
-#undef HAVE_NRSYSINFO
-
-/* Define if inline functions a la GCC are available.  */
-#undef HAVE_ALPHASORT_DECLARATION
-
-/* Define if function attributes a la GCC 2.5 and higher are available.  */
-#undef HAVE_GNUC25_ATTRIB
-
-/* Define if constant functions a la GCC 2.5 and higher are available.  */
-#undef HAVE_GNUC25_CONST
-
-/* Define if nonreturning functions a la GCC 2.5 and higher are available.  */
-#undef HAVE_GNUC25_NORETURN
-
-/* Define if printf-format argument lists a la GCC are available.  */
-#undef HAVE_GNUC25_PRINTFFORMAT
-
-/* Set this to the canonical Debian architecture string for this CPU type. */
-#undef ARCHITECTURE
-
-/* Set this to 1 to build new archives by default. */
-#define BUILDOLDPKGFORMAT 0
-
-/* Set this string to append something to the version number. */
-#define ARCHBINFMT ""
-
-/* The number of bytes in a unsigned int.  */
-#undef SIZEOF_UNSIGNED_INT
-
-/* The number of bytes in a unsigned long.  */
-#undef SIZEOF_UNSIGNED_LONG
-
-/* Define if you have the alphasort function.  */
-#undef HAVE_ALPHASORT
-
-/* Define if you have the scandir function.  */
-#undef HAVE_SCANDIR
-
-/* Define if you have the strerror function.  */
-#undef HAVE_STRERROR
-
-/* Define if you have the strsignal function.  */
-#undef HAVE_STRSIGNAL
-
-/* Define if you have the strtoul function.  */
-#undef HAVE_STRTOUL
-
-/* Define if you have the unsetenv function.  */
-#undef HAVE_UNSETENV
-
-/* Define if you have the vsnprintf function.  */
-#undef HAVE_VSNPRINTF
-
-/* Define if you have the <sys/cdefs.h> header file.  */
-#undef HAVE_SYS_CDEFS_H
-
-/* These are from config.h.bot, pasted onto the end of config.h.in. */
-
-#ifdef HAVE_SYS_CDEFS_H
-#include <sys/cdefs.h>
-#endif
-
-/* Use the definitions: */
-
-/* Give us an unsigned 32-bit data type. */
-#if SIZEOF_UNSIGNED_LONG==4
-#define UWORD32 unsigned long
-#elif SIZEOF_UNSIGNED_INT==4
-#define UWORD32 unsigned int
-#else
-#error I do not know what to use for a UWORD32.
-#endif
-
-/* The maximum length of a #! interpreter displayed by dpkg-deb. */
-#ifdef PATH_MAX
-#define INTERPRETER_MAX PATH_MAX
-#else
-#define INTERPRETER_MAX 1024
-#endif
-
-/* GNU C attributes. */
-#ifndef FUNCATTR
-#ifdef HAVE_GNUC25_ATTRIB
-#define FUNCATTR(x) __attribute__(x)
-#else
-#define FUNCATTR(x)
-#endif
-#endif
-
-/* GNU C printf formats, or null. */
-#ifndef ATTRPRINTF
-#ifdef HAVE_GNUC25_PRINTFFORMAT
-#define ATTRPRINTF(si,tc) format(printf,si,tc)
-#else
-#define ATTRPRINTF(si,tc)
-#endif
-#endif
-#ifndef PRINTFFORMAT
-#define PRINTFFORMAT(si,tc) FUNCATTR((ATTRPRINTF(si,tc)))
-#endif
-
-/* GNU C nonreturning functions, or null. */
-#ifndef ATTRNORETURN
-#ifdef HAVE_GNUC25_NORETURN
-#define ATTRNORETURN noreturn
-#else
-#define ATTRNORETURN
-#endif
-#endif
-#ifndef NONRETURNING
-#define NONRETURNING FUNCATTR((ATTRNORETURN))
-#endif
-
-/* Combination of both the above. */
-#ifndef NONRETURNPRINTFFORMAT
-#define NONRETURNPRINTFFORMAT(si,tc) FUNCATTR((ATTRPRINTF(si,tc),ATTRNORETURN))
-#endif
-
-/* GNU C constant functions, or null. */
-#ifndef ATTRCONST
-#ifdef HAVE_GNUC25_CONST
-#define ATTRCONST const
-#else
-#define ATTRCONST
-#endif
-#endif
-#ifndef CONSTANT
-#define CONSTANT FUNCATTR((ATTRCONST))
-#endif
-
-/* Declare strerror if we don't have it already. */
-#ifndef HAVE_STRERROR
-const char *strerror(int);
-#endif
-
-/* Declare strsignal if we don't have it already. */
-#ifndef HAVE_STRSIGNAL
-const char *strsignal(int);
-#endif
-
-/* Declare scandir if we don't have it already. */
-#ifndef HAVE_SCANDIR
-struct dirent;
-int scandir(const char *dir, struct dirent ***namelist,
-            int (*select)(const struct dirent *),
-            int (*compar)(const void*, const void*));
-#endif
-
-/* Declare alphasort if we don't have it already. */
-#if !defined(HAVE_ALPHASORT) || !defined(HAVE_ALPHASORT_DECLARATION)
-struct dirent;
-int alphasort(const struct dirent *a, const struct dirent *b);
-#endif
-
-/* Declare unsetenv if we don't have it already. */
-#ifndef HAVE_UNSETENV
-void unsetenv(const char *x);
-#endif
-
-/* Define strtoul if we don't have it already. */
-#ifndef HAVE_STRTOUL
-#define strtoul strtol
-#endif
-
-/* Sort out sysinfo */
-#if !defined(HAVE_SYSINFO) && defined(HAVE_NRSYSINFO)
-#include <linux/sys.h>
-#include <linux/kernel.h>
-#include <linux/unistd.h>
-static inline _syscall1(int,sysinfo,struct sysinfo*,info)
-#endif
-
-/* Define WCOREDUMP if we don't have it already - coredumps won't be
- * detected, though.
- */
-#ifndef WCOREDUMP
-#define WCOREDUMP(x) 0
-#endif
-
-/* Set BUILDOLDPKGFORMAT to 1 to build old-format archives by default.
- */
-#ifndef BUILDOLDPKGFORMAT
-#define BUILDOLDPKGFORMAT 0
-#endif
diff --git a/configure b/configure
deleted file mode 100755 (executable)
index 0b3d8fb..0000000
--- a/configure
+++ /dev/null
@@ -1,2533 +0,0 @@
-#! /bin/sh
-
-# Guess values for system-dependent variables and create Makefiles.
-# Generated automatically using autoconf version 2.10 
-# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
-#
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
-
-# Defaults:
-ac_help=
-ac_default_prefix=/usr/local
-# Any additions from configure.in:
-ac_default_prefix=/usr
-ac_help="$ac_help
-  --with-arch=value       set/override (Debian) architecture value"
-ac_help="$ac_help
-  --with-newdeb           make dpkg-deb default to new archives"
-ac_help="$ac_help
-  --with-olddeb           make dpkg-deb default to old archives"
-
-# Initialize some variables set by options.
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-build=NONE
-cache_file=./config.cache
-exec_prefix=NONE
-host=NONE
-no_create=
-nonopt=NONE
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-target=NONE
-verbose=
-x_includes=NONE
-x_libraries=NONE
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datadir='${prefix}/share'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-libdir='${exec_prefix}/lib'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-infodir='${prefix}/info'
-mandir='${prefix}/man'
-
-# Initialize some other variables.
-subdirs=
-MFLAGS= MAKEFLAGS=
-
-ac_prev=
-for ac_option
-do
-
-  # If the previous option needs an argument, assign it.
-  if test -n "$ac_prev"; then
-    eval "$ac_prev=\$ac_option"
-    ac_prev=
-    continue
-  fi
-
-  case "$ac_option" in
-  -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
-  *) ac_optarg= ;;
-  esac
-
-  # Accept the important Cygnus configure options, so we can diagnose typos.
-
-  case "$ac_option" in
-
-  -bindir | --bindir | --bindi | --bind | --bin | --bi)
-    ac_prev=bindir ;;
-  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
-    bindir="$ac_optarg" ;;
-
-  -build | --build | --buil | --bui | --bu)
-    ac_prev=build ;;
-  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
-    build="$ac_optarg" ;;
-
-  -cache-file | --cache-file | --cache-fil | --cache-fi \
-  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
-    ac_prev=cache_file ;;
-  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
-  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
-    cache_file="$ac_optarg" ;;
-
-  -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
-    ac_prev=datadir ;;
-  -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
-  | --da=*)
-    datadir="$ac_optarg" ;;
-
-  -disable-* | --disable-*)
-    ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
-    # Reject names that are not valid shell variable names.
-    if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then
-      { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
-    fi
-    ac_feature=`echo $ac_feature| sed 's/-/_/g'`
-    eval "enable_${ac_feature}=no" ;;
-
-  -enable-* | --enable-*)
-    ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'`
-    # Reject names that are not valid shell variable names.
-    if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then
-      { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
-    fi
-    ac_feature=`echo $ac_feature| sed 's/-/_/g'`
-    case "$ac_option" in
-      *=*) ;;
-      *) ac_optarg=yes ;;
-    esac
-    eval "enable_${ac_feature}='$ac_optarg'" ;;
-
-  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
-  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
-  | --exec | --exe | --ex)
-    ac_prev=exec_prefix ;;
-  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
-  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
-  | --exec=* | --exe=* | --ex=*)
-    exec_prefix="$ac_optarg" ;;
-
-  -gas | --gas | --ga | --g)
-    # Obsolete; use --with-gas.
-    with_gas=yes ;;
-
-  -help | --help | --hel | --he)
-    # Omit some internal or obsolete options to make the list less imposing.
-    # This message is too long to be a string in the A/UX 3.1 sh.
-    cat << EOF
-Usage: configure [options] [host]
-Options: [defaults in brackets after descriptions]
-Configuration:
-  --cache-file=FILE       cache test results in FILE
-  --help                  print this message
-  --no-create             do not create output files
-  --quiet, --silent       do not print \`checking...' messages
-  --version               print the version of autoconf that created configure
-Directory and file names:
-  --prefix=PREFIX         install architecture-independent files in PREFIX
-                          [$ac_default_prefix]
-  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
-                          [same as prefix]
-  --bindir=DIR            user executables in DIR [EPREFIX/bin]
-  --sbindir=DIR           system admin executables in DIR [EPREFIX/sbin]
-  --libexecdir=DIR        program executables in DIR [EPREFIX/libexec]
-  --datadir=DIR           read-only architecture-independent data in DIR
-                          [PREFIX/share]
-  --sysconfdir=DIR        read-only single-machine data in DIR [PREFIX/etc]
-  --sharedstatedir=DIR    modifiable architecture-independent data in DIR
-                          [PREFIX/com]
-  --localstatedir=DIR     modifiable single-machine data in DIR [PREFIX/var]
-  --libdir=DIR            object code libraries in DIR [EPREFIX/lib]
-  --includedir=DIR        C header files in DIR [PREFIX/include]
-  --oldincludedir=DIR     C header files for non-gcc in DIR [/usr/include]
-  --infodir=DIR           info documentation in DIR [PREFIX/info]
-  --mandir=DIR            man documentation in DIR [PREFIX/man]
-  --srcdir=DIR            find the sources in DIR [configure dir or ..]
-  --program-prefix=PREFIX prepend PREFIX to installed program names
-  --program-suffix=SUFFIX append SUFFIX to installed program names
-  --program-transform-name=PROGRAM
-                          run sed PROGRAM on installed program names
-EOF
-    cat << EOF
-Host type:
-  --build=BUILD           configure for building on BUILD [BUILD=HOST]
-  --host=HOST             configure for HOST [guessed]
-  --target=TARGET         configure for TARGET [TARGET=HOST]
-Features and packages:
-  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
-  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
-  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
-  --x-includes=DIR        X include files are in DIR
-  --x-libraries=DIR       X library files are in DIR
-EOF
-    if test -n "$ac_help"; then
-      echo "--enable and --with options recognized:$ac_help"
-    fi
-    exit 0 ;;
-
-  -host | --host | --hos | --ho)
-    ac_prev=host ;;
-  -host=* | --host=* | --hos=* | --ho=*)
-    host="$ac_optarg" ;;
-
-  -includedir | --includedir | --includedi | --included | --include \
-  | --includ | --inclu | --incl | --inc)
-    ac_prev=includedir ;;
-  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
-  | --includ=* | --inclu=* | --incl=* | --inc=*)
-    includedir="$ac_optarg" ;;
-
-  -infodir | --infodir | --infodi | --infod | --info | --inf)
-    ac_prev=infodir ;;
-  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
-    infodir="$ac_optarg" ;;
-
-  -libdir | --libdir | --libdi | --libd)
-    ac_prev=libdir ;;
-  -libdir=* | --libdir=* | --libdi=* | --libd=*)
-    libdir="$ac_optarg" ;;
-
-  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
-  | --libexe | --libex | --libe)
-    ac_prev=libexecdir ;;
-  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
-  | --libexe=* | --libex=* | --libe=*)
-    libexecdir="$ac_optarg" ;;
-
-  -localstatedir | --localstatedir | --localstatedi | --localstated \
-  | --localstate | --localstat | --localsta | --localst \
-  | --locals | --local | --loca | --loc | --lo)
-    ac_prev=localstatedir ;;
-  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
-  | --localstate=* | --localstat=* | --localsta=* | --localst=* \
-  | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
-    localstatedir="$ac_optarg" ;;
-
-  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
-    ac_prev=mandir ;;
-  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
-    mandir="$ac_optarg" ;;
-
-  -nfp | --nfp | --nf)
-    # Obsolete; use --without-fp.
-    with_fp=no ;;
-
-  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
-  | --no-cr | --no-c)
-    no_create=yes ;;
-
-  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
-  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
-    no_recursion=yes ;;
-
-  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
-  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
-  | --oldin | --oldi | --old | --ol | --o)
-    ac_prev=oldincludedir ;;
-  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
-  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
-  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
-    oldincludedir="$ac_optarg" ;;
-
-  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
-    ac_prev=prefix ;;
-  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
-    prefix="$ac_optarg" ;;
-
-  -program-prefix | --program-prefix | --program-prefi | --program-pref \
-  | --program-pre | --program-pr | --program-p)
-    ac_prev=program_prefix ;;
-  -program-prefix=* | --program-prefix=* | --program-prefi=* \
-  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
-    program_prefix="$ac_optarg" ;;
-
-  -program-suffix | --program-suffix | --program-suffi | --program-suff \
-  | --program-suf | --program-su | --program-s)
-    ac_prev=program_suffix ;;
-  -program-suffix=* | --program-suffix=* | --program-suffi=* \
-  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
-    program_suffix="$ac_optarg" ;;
-
-  -program-transform-name | --program-transform-name \
-  | --program-transform-nam | --program-transform-na \
-  | --program-transform-n | --program-transform- \
-  | --program-transform | --program-transfor \
-  | --program-transfo | --program-transf \
-  | --program-trans | --program-tran \
-  | --progr-tra | --program-tr | --program-t)
-    ac_prev=program_transform_name ;;
-  -program-transform-name=* | --program-transform-name=* \
-  | --program-transform-nam=* | --program-transform-na=* \
-  | --program-transform-n=* | --program-transform-=* \
-  | --program-transform=* | --program-transfor=* \
-  | --program-transfo=* | --program-transf=* \
-  | --program-trans=* | --program-tran=* \
-  | --progr-tra=* | --program-tr=* | --program-t=*)
-    program_transform_name="$ac_optarg" ;;
-
-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-  | -silent | --silent | --silen | --sile | --sil)
-    silent=yes ;;
-
-  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
-    ac_prev=sbindir ;;
-  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
-  | --sbi=* | --sb=*)
-    sbindir="$ac_optarg" ;;
-
-  -sharedstatedir | --sharedstatedir | --sharedstatedi \
-  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
-  | --sharedst | --shareds | --shared | --share | --shar \
-  | --sha | --sh)
-    ac_prev=sharedstatedir ;;
-  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
-  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
-  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
-  | --sha=* | --sh=*)
-    sharedstatedir="$ac_optarg" ;;
-
-  -site | --site | --sit)
-    ac_prev=site ;;
-  -site=* | --site=* | --sit=*)
-    site="$ac_optarg" ;;
-
-  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
-    ac_prev=srcdir ;;
-  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
-    srcdir="$ac_optarg" ;;
-
-  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
-  | --syscon | --sysco | --sysc | --sys | --sy)
-    ac_prev=sysconfdir ;;
-  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
-  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
-    sysconfdir="$ac_optarg" ;;
-
-  -target | --target | --targe | --targ | --tar | --ta | --t)
-    ac_prev=target ;;
-  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
-    target="$ac_optarg" ;;
-
-  -v | -verbose | --verbose | --verbos | --verbo | --verb)
-    verbose=yes ;;
-
-  -version | --version | --versio | --versi | --vers)
-    echo "configure generated by autoconf version 2.10"
-    exit 0 ;;
-
-  -with-* | --with-*)
-    ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`
-    # Reject names that are not valid shell variable names.
-    if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then
-      { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
-    fi
-    ac_package=`echo $ac_package| sed 's/-/_/g'`
-    case "$ac_option" in
-      *=*) ;;
-      *) ac_optarg=yes ;;
-    esac
-    eval "with_${ac_package}='$ac_optarg'" ;;
-
-  -without-* | --without-*)
-    ac_package=`echo $ac_option|sed -e 's/-*without-//'`
-    # Reject names that are not valid shell variable names.
-    if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then
-      { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
-    fi
-    ac_package=`echo $ac_package| sed 's/-/_/g'`
-    eval "with_${ac_package}=no" ;;
-
-  --x)
-    # Obsolete; use --with-x.
-    with_x=yes ;;
-
-  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
-  | --x-incl | --x-inc | --x-in | --x-i)
-    ac_prev=x_includes ;;
-  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
-  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
-    x_includes="$ac_optarg" ;;
-
-  -x-libraries | --x-libraries | --x-librarie | --x-librari \
-  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
-    ac_prev=x_libraries ;;
-  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
-  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
-    x_libraries="$ac_optarg" ;;
-
-  -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; }
-    ;;
-
-  *)
-    if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then
-      echo "configure: warning: $ac_option: invalid host type" 1>&2
-    fi
-    if test "x$nonopt" != xNONE; then
-      { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; }
-    fi
-    nonopt="$ac_option"
-    ;;
-
-  esac
-done
-
-if test -n "$ac_prev"; then
-  { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; }
-fi
-
-trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
-
-# File descriptor usage:
-# 0 standard input
-# 1 file creation
-# 2 errors and warnings
-# 3 some systems may open it to /dev/tty
-# 4 used on the Kubota Titan
-# 6 checking for... messages and results
-# 5 compiler messages saved in config.log
-if test "$silent" = yes; then
-  exec 6>/dev/null
-else
-  exec 6>&1
-fi
-exec 5>./config.log
-
-echo "\
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-" 1>&5
-
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Also quote any args containing shell metacharacters.
-ac_configure_args=
-for ac_arg
-do
-  case "$ac_arg" in
-  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
-  | --no-cr | --no-c) ;;
-  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
-  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
-  *" "*|*"     "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
-  ac_configure_args="$ac_configure_args '$ac_arg'" ;;
-  *) ac_configure_args="$ac_configure_args $ac_arg" ;;
-  esac
-done
-
-# NLS nuisances.
-# Only set LANG and LC_ALL to C if already set.
-# These must not be set unconditionally because not all systems understand
-# e.g. LANG=C (notably SCO).
-if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
-if test "${LANG+set}"   = set; then LANG=C;   export LANG;   fi
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -rf conftest* confdefs.h
-# AIX cpp loses on an empty file, so make sure it contains at least a newline.
-echo > confdefs.h
-
-# A filename unique to this package, relative to the directory that
-# configure is in, which we can look for to find out if srcdir is correct.
-ac_unique_file=include/dpkg.h
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
-  ac_srcdir_defaulted=yes
-  # Try the directory containing this script, then its parent.
-  ac_prog=$0
-  ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
-  test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
-  srcdir=$ac_confdir
-  if test ! -r $srcdir/$ac_unique_file; then
-    srcdir=..
-  fi
-else
-  ac_srcdir_defaulted=no
-fi
-if test ! -r $srcdir/$ac_unique_file; then
-  if test "$ac_srcdir_defaulted" = yes; then
-    { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; }
-  else
-    { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; }
-  fi
-fi
-srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
-
-# Prefer explicitly selected file to automatically selected ones.
-if test -z "$CONFIG_SITE"; then
-  if test "x$prefix" != xNONE; then
-    CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
-  else
-    CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
-  fi
-fi
-for ac_site_file in $CONFIG_SITE; do
-  if test -r "$ac_site_file"; then
-    echo "loading site script $ac_site_file"
-    . "$ac_site_file"
-  fi
-done
-
-if test -r "$cache_file"; then
-  echo "loading cache $cache_file"
-  . $cache_file
-else
-  echo "creating cache $cache_file"
-  > $cache_file
-fi
-
-ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-
-if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
-  # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
-  if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
-    ac_n= ac_c='
-' ac_t='       '
-  else
-    ac_n=-n ac_c= ac_t=
-  fi
-else
-  ac_n= ac_c='\c' ac_t=
-fi
-
-
-
-
-
-
-# Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_CC="gcc"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-fi
-fi
-CC="$ac_cv_prog_CC"
-if test -n "$CC"; then
-  echo "$ac_t""$CC" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-if test -z "$CC"; then
-  # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  ac_prog_rejected=no
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
-        ac_prog_rejected=yes
-       continue
-      fi
-      ac_cv_prog_CC="cc"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-if test $ac_prog_rejected = yes; then
-  # We found a bogon in the path, so make sure we never use it.
-  set dummy $ac_cv_prog_CC
-  shift
-  if test $# -gt 0; then
-    # We chose a different compiler from the bogus one.
-    # However, it has the same basename, so the bogon will be chosen
-    # first if we set CC to just the basename; use the full file name.
-    shift
-    set dummy "$ac_dir/$ac_word" "$@"
-    shift
-    ac_cv_prog_CC="$@"
-  fi
-fi
-fi
-fi
-CC="$ac_cv_prog_CC"
-if test -n "$CC"; then
-  echo "$ac_t""$CC" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-  test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; }
-fi
-
-echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.c <<EOF
-#ifdef __GNUC__
-  yes;
-#endif
-EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:613: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
-  ac_cv_prog_gcc=yes
-else
-  ac_cv_prog_gcc=no
-fi
-fi
-
-echo "$ac_t""$ac_cv_prog_gcc" 1>&6
-if test $ac_cv_prog_gcc = yes; then
-  GCC=yes
-  if test "${CFLAGS+set}" != set; then
-    echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-if eval "test \"`echo '$''{'ac_cv_prog_gcc_g'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  echo 'void f(){}' > conftest.c
-if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
-  ac_cv_prog_gcc_g=yes
-else
-  ac_cv_prog_gcc_g=no
-fi
-rm -f conftest*
-
-fi
-
-echo "$ac_t""$ac_cv_prog_gcc_g" 1>&6
-    if test $ac_cv_prog_gcc_g = yes; then
-      CFLAGS="-g -O"
-    else
-      CFLAGS="-O"
-    fi
-  fi
-else
-  GCC=
-  test "${CFLAGS+set}" = set || CFLAGS="-g"
-fi
-
-for ac_prog in $CCC c++ g++ gcc CC cxx
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$CXX"; then
-  ac_cv_prog_CXX="$CXX" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_CXX="$ac_prog"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-fi
-fi
-CXX="$ac_cv_prog_CXX"
-if test -n "$CXX"; then
-  echo "$ac_t""$CXX" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-test -n "$CXX" && break
-done
-test -n "$CXX" || CXX="gcc"
-
-
-echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6
-if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.C <<EOF
-#ifdef __GNUC__
-  yes;
-#endif
-EOF
-if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:693: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
-  ac_cv_prog_gxx=yes
-else
-  ac_cv_prog_gxx=no
-fi
-fi
-
-echo "$ac_t""$ac_cv_prog_gxx" 1>&6
-if test $ac_cv_prog_gxx = yes; then
-  GXX=yes
-  if test "${CXXFLAGS+set}" != set; then
-    echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6
-if eval "test \"`echo '$''{'ac_cv_prog_gxx_g'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  echo 'void f(){}' > conftest.cc
-if test -z "`${CXX-g++} -g -c conftest.cc 2>&1`"; then
-  ac_cv_prog_gxx_g=yes
-else
-  ac_cv_prog_gxx_g=no
-fi
-rm -f conftest*
-
-fi
-
-echo "$ac_t""$ac_cv_prog_gxx_g" 1>&6
-    if test $ac_cv_prog_gxx_g = yes; then
-      CXXFLAGS="-g -O"
-    else
-      CXXFLAGS="-O"
-    fi
-  fi
-else
-  GXX=
-  test "${CXXFLAGS+set}" = set || CXXFLAGS="-g"
-fi
-
-
-dpkg_archset=''
-# Check whether --with-arch or --without-arch was given.
-if test "${with_arch+set}" = set; then
-  withval="$with_arch"
-  
- if test "x$with_arch" = x; then
-  { echo "configure: error: --with-arch requires an architecture name" 1>&2; exit 1; }
- fi
- dpkg_archset="${with_arch}"
-
-else
-  
- echo $ac_n "checking system architecture""... $ac_c" 1>&6
- dpkg_archwhy=''
- if eval "test \"`echo '$''{'dpkg_cv_arch'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  
-  dpkg_arch="`dpkg --print-architecture 2>/dev/null`"
-  if test "x$dpkg_arch" != x; then
-   dpkg_archwhy="  (obtained from dpkg)"
-  elif test "${GCC-no}" = yes; then
-   dpkg_arch="`${CC} --print-libgcc-file-name |
-       sed -e 's,^.*/gcc-lib/,,; s,/libgcc\.a$,,; s,/[0-9.][0-9.]*$,,; s/-.*$//'`"
-   if test "x`echo \"$dpkg_arch\" | tr -d a-z0-9-`" != x -o "x$dpkg_arch" = x
-   then
-    dpkg_arch=""
-    dpkg_archwhy=" (bad output from --print-libgcc-file-name)"
-   else
-    dpkg_arch2="`awk '$1 == "'$dpkg_arch'" { print $2 }' $srcdir/archtable`"
-    if test "x$dpkg_arch2" = "x$dpkg_arch"; then
-     dpkg_archwhy=" (obtained from gcc)"
-    elif test "x$dpkg_arch2" != x; then
-     dpkg_archwhy=" (from gcc, canonical form of $dpkg_arch)"
-     dpkg_arch="$dpkg_arch2"
-    else
-     dpkg_archwhy=" (from gcc, but not in archtable)"
-    fi
-   fi
-  else
-   dpkg_archwhy=''
-  fi
-  dpkg_cv_arch="$dpkg_arch"
-fi
-
- if test "x$dpkg_cv_arch" != x; then
-  echo "$ac_t"""$dpkg_cv_arch$dpkg_archwhy"" 1>&6
-  dpkg_archset="${dpkg_cv_arch}"
- else
-  echo "$ac_t"""failed$dpkg_archwhy"" 1>&6
- fi
-
-fi
-
-if test "x$dpkg_archset" != x
-then
- cat >> confdefs.h <<EOF
-#define ARCHITECTURE "${dpkg_cv_arch}"
-EOF
-
-fi
-
-if test "x${dpkg_archset}" = xi386; then
- echo $ac_n "checking for i386 system/binary format""... $ac_c" 1>&6
- dpkg_libgcc="`$CC --print-libgcc-file-name 2>/dev/null`"
- case "$dpkg_libgcc" in
-  *-linux*)
-   if ar p "$dpkg_libgcc" __main.o 2>/dev/null | file - 2>/dev/null | grep ELF >/dev/null; then
-    echo "$ac_t""Linux ELF" 1>&6
-    dpkg_cc_binfmt=elf
-   else
-    echo "$ac_t""Linux a.out" 1>&6
-    dpkg_cc_binfmt=a.out
-   fi
-   cat >> confdefs.h <<EOF
-#define ARCHBINFMT " $dpkg_cc_binfmt"
-EOF
-
-  ;;
-  *)
-   echo "$ac_t""non-Linux" 1>&6
-  ;;
- esac
-fi
-
-# Check whether --with-newdeb or --without-newdeb was given.
-if test "${with_newdeb+set}" = set; then
-  withval="$with_newdeb"
-  cat >> confdefs.h <<\EOF
-#define BUILDOLDPKGFORMAT 0
-EOF
-
-fi
-
-# Check whether --with-olddeb or --without-olddeb was given.
-if test "${with_olddeb+set}" = set; then
-  withval="$with_olddeb"
-  cat >> confdefs.h <<\EOF
-#define BUILDOLDPKGFORMAT 1
-EOF
-
-fi
-
-
-echo $ac_n "checking for /usr/bin/perl""... $ac_c" 1>&6
-if test -f /usr/bin/perl
-then
-       echo "$ac_t""yes" 1>&6
-       perlpath=/usr/bin/perl
-       
-else
-       echo "$ac_t""no" 1>&6
-       # Extract the first word of "perl", so it can be a program name with args.
-set dummy perl; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-if eval "test \"`echo '$''{'ac_cv_path_perlpath'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  case "$perlpath" in
-  /*)
-  ac_cv_path_perlpath="$perlpath" # Let the user override the test with a path.
-  ;;
-  *)
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_path_perlpath="$ac_dir/$ac_word"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-  ;;
-esac
-fi
-perlpath="$ac_cv_path_perlpath"
-if test -n "$perlpath"; then
-  echo "$ac_t""$perlpath" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-fi
-
-echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
-  CPP=
-fi
-if test -z "$CPP"; then
-if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-    # This must be in double quotes, not single quotes, because CPP may get
-  # substituted into the Makefile and "${CC-cc}" will confuse make.
-  CPP="${CC-cc} -E"
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp.
-  cat > conftest.$ac_ext <<EOF
-#line 891 "configure"
-#include "confdefs.h"
-#include <assert.h>
-Syntax Error
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:897: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out`
-if test -z "$ac_err"; then
-  :
-else
-  echo "$ac_err" >&5
-  rm -rf conftest*
-  CPP="${CC-cc} -E -traditional-cpp"
-  cat > conftest.$ac_ext <<EOF
-#line 906 "configure"
-#include "confdefs.h"
-#include <assert.h>
-Syntax Error
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:912: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out`
-if test -z "$ac_err"; then
-  :
-else
-  echo "$ac_err" >&5
-  rm -rf conftest*
-  CPP=/lib/cpp
-fi
-rm -f conftest*
-fi
-rm -f conftest*
-  ac_cv_prog_CPP="$CPP"
-fi
-  CPP="$ac_cv_prog_CPP"
-else
-  ac_cv_prog_CPP="$CPP"
-fi
-echo "$ac_t""$CPP" 1>&6
-
-# If we cannot run a trivial program, we must be cross compiling.
-echo $ac_n "checking whether cross-compiling""... $ac_c" 1>&6
-if eval "test \"`echo '$''{'ac_cv_c_cross'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test "$cross_compiling" = yes; then
-  ac_cv_c_cross=yes
-else
-cat > conftest.$ac_ext <<EOF
-#line 941 "configure"
-#include "confdefs.h"
-main(){return(0);}
-EOF
-{ (eval echo configure:945: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }
-if test -s conftest && (./conftest; exit) 2>/dev/null; then
-  ac_cv_c_cross=no
-else
-  ac_cv_c_cross=yes
-fi
-fi
-rm -fr conftest*
-fi
-
-echo "$ac_t""$ac_cv_c_cross" 1>&6
-cross_compiling=$ac_cv_c_cross
-
-echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 963 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:971: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out`
-if test -z "$ac_err"; then
-  rm -rf conftest*
-  ac_cv_header_stdc=yes
-else
-  echo "$ac_err" >&5
-  rm -rf conftest*
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-if test $ac_cv_header_stdc = yes; then
-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-cat > conftest.$ac_ext <<EOF
-#line 986 "configure"
-#include "confdefs.h"
-#include <string.h>
-EOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  egrep "memchr" >/dev/null 2>&1; then
-  :
-else
-  rm -rf conftest*
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-cat > conftest.$ac_ext <<EOF
-#line 1004 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-EOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  egrep "free" >/dev/null 2>&1; then
-  :
-else
-  rm -rf conftest*
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-if test "$cross_compiling" = yes; then
-  :
-else
-cat > conftest.$ac_ext <<EOF
-#line 1025 "configure"
-#include "confdefs.h"
-#include <ctype.h>
-#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int main () { int i; for (i = 0; i < 256; i++)
-if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
-exit (0); }
-
-EOF
-{ (eval echo configure:1036: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }
-if test -s conftest && (./conftest; exit) 2>/dev/null; then
-  :
-else
-  ac_cv_header_stdc=no
-fi
-fi
-rm -fr conftest*
-fi
-fi
-
-echo "$ac_t""$ac_cv_header_stdc" 1>&6
-if test $ac_cv_header_stdc = yes; then
-  cat >> confdefs.h <<\EOF
-#define STDC_HEADERS 1
-EOF
-
-fi
-
-ac_aux_dir=
-for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
-  if test -f $ac_dir/install-sh; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install-sh -c"
-    break
-  elif test -f $ac_dir/install.sh; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install.sh -c"
-    break
-  fi
-done
-if test -z "$ac_aux_dir"; then
-  { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; }
-fi
-ac_config_guess=$ac_aux_dir/config.guess
-ac_config_sub=$ac_aux_dir/config.sub
-ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
-
-# Find a good install program.  We prefer a C program (faster),
-# so one script is as good as another.  But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# ./install, which can be erroneously created by make from ./install.sh.
-echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-if test -z "$INSTALL"; then
-if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-    IFS="${IFS=        }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
-    # Account for people who put trailing slashes in PATH elements.
-    case "$ac_dir/" in
-    /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;;
-    *)
-      # OSF1 and SCO ODT 3.0 have their own names for install.
-      for ac_prog in ginstall installbsd scoinst install; do
-        if test -f $ac_dir/$ac_prog; then
-         if test $ac_prog = install &&
-            grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
-           # AIX install.  It has an incompatible calling convention.
-           # OSF/1 installbsd also uses dspmsg, but is usable.
-           :
-         else
-           ac_cv_path_install="$ac_dir/$ac_prog -c"
-           break 2
-         fi
-       fi
-      done
-      ;;
-    esac
-  done
-  IFS="$ac_save_ifs"
-
-fi
-  if test "${ac_cv_path_install+set}" = set; then
-    INSTALL="$ac_cv_path_install"
-  else
-    # As a last resort, use the slow shell script.  We don't cache a
-    # path for INSTALL within a source directory, because that will
-    # break other packages using the cache if that directory is
-    # removed, or if the path is relative.
-    INSTALL="$ac_install_sh"
-  fi
-fi
-echo "$ac_t""$INSTALL" 1>&6
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-# Extract the first word of "ranlib", so it can be a program name with args.
-set dummy ranlib; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$RANLIB"; then
-  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_RANLIB="ranlib"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-  test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":"
-fi
-fi
-RANLIB="$ac_cv_prog_RANLIB"
-if test -n "$RANLIB"; then
-  echo "$ac_t""$RANLIB" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-echo $ac_n "checking for mode_t""... $ac_c" 1>&6
-if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 1166 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#if STDC_HEADERS
-#include <stdlib.h>
-#endif
-EOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  egrep "mode_t" >/dev/null 2>&1; then
-  rm -rf conftest*
-  ac_cv_type_mode_t=yes
-else
-  rm -rf conftest*
-  ac_cv_type_mode_t=no
-fi
-rm -f conftest*
-
-fi
-echo "$ac_t""$ac_cv_type_mode_t" 1>&6
-if test $ac_cv_type_mode_t = no; then
-  cat >> confdefs.h <<\EOF
-#define mode_t int
-EOF
-
-fi
-
-echo $ac_n "checking for pid_t""... $ac_c" 1>&6
-if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 1197 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#if STDC_HEADERS
-#include <stdlib.h>
-#endif
-EOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  egrep "pid_t" >/dev/null 2>&1; then
-  rm -rf conftest*
-  ac_cv_type_pid_t=yes
-else
-  rm -rf conftest*
-  ac_cv_type_pid_t=no
-fi
-rm -f conftest*
-
-fi
-echo "$ac_t""$ac_cv_type_pid_t" 1>&6
-if test $ac_cv_type_pid_t = no; then
-  cat >> confdefs.h <<\EOF
-#define pid_t int
-EOF
-
-fi
-
-echo $ac_n "checking for size_t""... $ac_c" 1>&6
-if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 1228 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#if STDC_HEADERS
-#include <stdlib.h>
-#endif
-EOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  egrep "size_t" >/dev/null 2>&1; then
-  rm -rf conftest*
-  ac_cv_type_size_t=yes
-else
-  rm -rf conftest*
-  ac_cv_type_size_t=no
-fi
-rm -f conftest*
-
-fi
-echo "$ac_t""$ac_cv_type_size_t" 1>&6
-if test $ac_cv_type_size_t = no; then
-  cat >> confdefs.h <<\EOF
-#define size_t unsigned
-EOF
-
-fi
-
-echo $ac_n "checking for vprintf""... $ac_c" 1>&6
-if eval "test \"`echo '$''{'ac_cv_func_vprintf'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 1259 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char vprintf(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char vprintf();
-
-int main() { return 0; }
-int t() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_vprintf) || defined (__stub___vprintf)
-choke me
-#else
-vprintf();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:1283: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
-  rm -rf conftest*
-  eval "ac_cv_func_vprintf=yes"
-else
-  rm -rf conftest*
-  eval "ac_cv_func_vprintf=no"
-fi
-rm -f conftest*
-
-fi
-if eval "test \"`echo '$ac_cv_func_'vprintf`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  cat >> confdefs.h <<\EOF
-#define HAVE_VPRINTF 1
-EOF
-
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-if test "$ac_cv_func_vprintf" != yes; then
-echo $ac_n "checking for _doprnt""... $ac_c" 1>&6
-if eval "test \"`echo '$''{'ac_cv_func__doprnt'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 1309 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char _doprnt(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char _doprnt();
-
-int main() { return 0; }
-int t() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub__doprnt) || defined (__stub____doprnt)
-choke me
-#else
-_doprnt();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:1333: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
-  rm -rf conftest*
-  eval "ac_cv_func__doprnt=yes"
-else
-  rm -rf conftest*
-  eval "ac_cv_func__doprnt=no"
-fi
-rm -f conftest*
-
-fi
-if eval "test \"`echo '$ac_cv_func_'_doprnt`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  cat >> confdefs.h <<\EOF
-#define HAVE_DOPRNT 1
-EOF
-
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-fi
-
-echo $ac_n "checking for working const""... $ac_c" 1>&6
-if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 1360 "configure"
-#include "confdefs.h"
-
-int main() { return 0; }
-int t() {
-
-/* Ultrix mips cc rejects this.  */
-typedef int charset[2]; const charset x;
-/* SunOS 4.1.1 cc rejects this.  */
-char const *const *ccp;
-char **p;
-/* NEC SVR4.0.2 mips cc rejects this.  */
-struct point {int x, y;};
-static struct point const zero = {0,0};
-/* AIX XL C 1.02.0.0 rejects this.
-   It does not let you subtract one const X* pointer from another in an arm
-   of an if-expression whose if-part is not a constant expression */
-const char *g = "string";
-ccp = &g + (g ? g-g : 0);
-/* HPUX 7.0 cc rejects these. */
-++ccp;
-p = (char**) ccp;
-ccp = (char const *const *) p;
-{ /* SCO 3.2v4 cc rejects this.  */
-  char *t;
-  char const *s = 0 ? (char *) 0 : (char const *) 0;
-
-  *t++ = 0;
-}
-{ /* Someone thinks the Sun supposedly-ANSI compiler will reject this.  */
-  int x[] = {25, 17};
-  const int *foo = &x[0];
-  ++foo;
-}
-{ /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
-  typedef const int *iptr;
-  iptr p = 0;
-  ++p;
-}
-{ /* AIX XL C 1.02.0.0 rejects this saying
-     "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
-  struct s { int j; const int *ap[3]; };
-  struct s *b; b->j = 5;
-}
-{ /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
-  const int foo = 10;
-}
-
-; return 0; }
-EOF
-if { (eval echo configure:1410: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-  ac_cv_c_const=yes
-else
-  rm -rf conftest*
-  ac_cv_c_const=no
-fi
-rm -f conftest*
-
-fi
-
-echo "$ac_t""$ac_cv_c_const" 1>&6
-if test $ac_cv_c_const = no; then
-  cat >> confdefs.h <<\EOF
-#define const 
-EOF
-
-fi
-
-echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6
-if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  ac_cv_c_bigendian=unknown
-# See if sys/param.h defines the BYTE_ORDER macro.
-cat > conftest.$ac_ext <<EOF
-#line 1436 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#include <sys/param.h>
-int main() { return 0; }
-int t() {
-
-#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN
- bogus endian macros
-#endif
-; return 0; }
-EOF
-if { (eval echo configure:1448: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-  # It does; now see whether it defined to BIG_ENDIAN or not.
-cat > conftest.$ac_ext <<EOF
-#line 1452 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#include <sys/param.h>
-int main() { return 0; }
-int t() {
-
-#if BYTE_ORDER != BIG_ENDIAN
- not big endian
-#endif
-; return 0; }
-EOF
-if { (eval echo configure:1464: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-  ac_cv_c_bigendian=yes
-else
-  rm -rf conftest*
-  ac_cv_c_bigendian=no
-fi
-rm -f conftest*
-
-fi
-rm -f conftest*
-
-if test $ac_cv_c_bigendian = unknown; then
-if test "$cross_compiling" = yes; then
-    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-else
-cat > conftest.$ac_ext <<EOF
-#line 1481 "configure"
-#include "confdefs.h"
-main () {
-  /* Are we little or big endian?  From Harbison&Steele.  */
-  union
-  {
-    long l;
-    char c[sizeof (long)];
-  } u;
-  u.l = 1;
-  exit (u.c[sizeof (long) - 1] == 1);
-}
-EOF
-{ (eval echo configure:1494: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }
-if test -s conftest && (./conftest; exit) 2>/dev/null; then
-  ac_cv_c_bigendian=no
-else
-  ac_cv_c_bigendian=yes
-fi
-fi
-rm -fr conftest*
-fi
-fi
-
-echo "$ac_t""$ac_cv_c_bigendian" 1>&6
-if test $ac_cv_c_bigendian = yes; then
-  cat >> confdefs.h <<\EOF
-#define WORDS_BIGENDIAN 1
-EOF
-
-fi
-
-echo $ac_n "checking size of unsigned long""... $ac_c" 1>&6
-if eval "test \"`echo '$''{'ac_cv_sizeof_unsigned_long'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test "$cross_compiling" = yes; then
-    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-else
-cat > conftest.$ac_ext <<EOF
-#line 1521 "configure"
-#include "confdefs.h"
-#include <stdio.h>
-main()
-{
-  FILE *f=fopen("conftestval", "w");
-  if (!f) exit(1);
-  fprintf(f, "%d\n", sizeof(unsigned long));
-  exit(0);
-}
-EOF
-{ (eval echo configure:1532: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }
-if test -s conftest && (./conftest; exit) 2>/dev/null; then
-  ac_cv_sizeof_unsigned_long=`cat conftestval`
-else
-  ac_cv_sizeof_unsigned_long=0
-fi
-fi
-rm -fr conftest*
-fi
-echo "$ac_t""$ac_cv_sizeof_unsigned_long" 1>&6
-cat >> confdefs.h <<EOF
-#define SIZEOF_UNSIGNED_LONG $ac_cv_sizeof_unsigned_long
-EOF
-
-
-echo $ac_n "checking size of unsigned int""... $ac_c" 1>&6
-if eval "test \"`echo '$''{'ac_cv_sizeof_unsigned_int'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test "$cross_compiling" = yes; then
-    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-else
-cat > conftest.$ac_ext <<EOF
-#line 1555 "configure"
-#include "confdefs.h"
-#include <stdio.h>
-main()
-{
-  FILE *f=fopen("conftestval", "w");
-  if (!f) exit(1);
-  fprintf(f, "%d\n", sizeof(unsigned int));
-  exit(0);
-}
-EOF
-{ (eval echo configure:1566: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }
-if test -s conftest && (./conftest; exit) 2>/dev/null; then
-  ac_cv_sizeof_unsigned_int=`cat conftestval`
-else
-  ac_cv_sizeof_unsigned_int=0
-fi
-fi
-rm -fr conftest*
-fi
-echo "$ac_t""$ac_cv_sizeof_unsigned_int" 1>&6
-cat >> confdefs.h <<EOF
-#define SIZEOF_UNSIGNED_INT $ac_cv_sizeof_unsigned_int
-EOF
-
-
-for ac_func in unsetenv alphasort scandir strerror strsignal strtoul vsnprintf
-do
-echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 1588 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char $ac_func();
-
-int main() { return 0; }
-int t() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-$ac_func();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:1612: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=yes"
-else
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=no"
-fi
-rm -f conftest*
-
-fi
-if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_func 1
-EOF
-else
-  echo "$ac_t""no" 1>&6
-fi
-done
-
-for ac_hdr in sys/cdefs.h
-do
-ac_safe=`echo "$ac_hdr" | tr './\055' '___'`
-echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 1642 "configure"
-#include "confdefs.h"
-#include <$ac_hdr>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1647: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out`
-if test -z "$ac_err"; then
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=yes"
-else
-  echo "$ac_err" >&5
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_hdr=HAVE_`echo $ac_hdr | tr 'abcdefghijklmnopqrstuvwxyz./\055' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ___'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_hdr 1
-EOF
-else
-  echo "$ac_t""no" 1>&6
-fi
-done
-
-
-echo $ac_n "checking for sysinfo""... $ac_c" 1>&6
-if eval "test \"`echo '$''{'ac_cv_func_sysinfo'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 1677 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char sysinfo(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char sysinfo();
-
-int main() { return 0; }
-int t() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_sysinfo) || defined (__stub___sysinfo)
-choke me
-#else
-sysinfo();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:1701: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
-  rm -rf conftest*
-  eval "ac_cv_func_sysinfo=yes"
-else
-  rm -rf conftest*
-  eval "ac_cv_func_sysinfo=no"
-fi
-rm -f conftest*
-
-fi
-if eval "test \"`echo '$ac_cv_func_'sysinfo`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  cat >> confdefs.h <<\EOF
-#define HAVE_SYSINFO 1
-EOF
-
-else
-  echo "$ac_t""no" 1>&6
-echo $ac_n "checking __NR_sysinfo""... $ac_c" 1>&6
-  cat > conftest.$ac_ext <<EOF
-#line 1721 "configure"
-#include "confdefs.h"
-
-#include <linux/sys.h>
-#include <linux/kernel.h>
-#include <linux/unistd.h>
-#ifdef __NR_sysinfo
- yes
-#endif
-
-EOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  egrep "yes" >/dev/null 2>&1; then
-  rm -rf conftest*
-  echo "$ac_t""yes; tsk tsk - get your libc fixed." 1>&6
-    cat >> confdefs.h <<\EOF
-#define HAVE_NRSYSINFO 1
-EOF
-
-else
-  rm -rf conftest*
-  echo "$ac_t""no" 1>&6
-    echo "configure: warning: sysinfo missing; compilation of dpkg proper may fail." 1>&2
-fi
-rm -f conftest*
-
-fi
-
-
-
-if test "${GCC-no}" = yes; then
- CFLAGS=-O2; OPTCFLAGS=-O3
-else
- CFLAGS=-O
-fi
-
-
-
-
- echo $ac_n "checking your C compiler""... $ac_c" 1>&6
- if eval "test \"`echo '$''{'dpkg_cv_c_works'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  
-  cat > conftest.$ac_ext <<EOF
-#line 1766 "configure"
-#include "confdefs.h"
-#include <string.h>
-int main() { return 0; }
-int t() {
-strcmp("a","b")
-; return 0; }
-EOF
-if { (eval echo configure:1774: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-  dpkg_cv_c_works=yes
-else
-  rm -rf conftest*
-  dpkg_cv_c_works=no
-fi
-rm -f conftest*
-
-fi
-
- if test "x$dpkg_cv_c_works" = xyes; then
-  true
-  echo "$ac_t""works" 1>&6
- else
-  true
-  echo "$ac_t""broken" 1>&6
- { echo "configure: error: C compiler is broken" 1>&2; exit 1; }
- fi
-
-
-
- echo $ac_n "checking alphasort declaration""... $ac_c" 1>&6
- if eval "test \"`echo '$''{'dpkg_cv_header_alphasort'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  
-  cat > conftest.$ac_ext <<EOF
-#line 1803 "configure"
-#include "confdefs.h"
-
-#include <sys/types.h>
-#include <sys/dir.h>
-
-int main() { return 0; }
-int t() {
-alphasort
-; return 0; }
-EOF
-if { (eval echo configure:1814: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-  dpkg_cv_header_alphasort=yes
-else
-  rm -rf conftest*
-  dpkg_cv_header_alphasort=no
-fi
-rm -f conftest*
-
-fi
-
- if test "x$dpkg_cv_header_alphasort" = xyes; then
-  true
-  echo "$ac_t""yes" 1>&6
- cat >> confdefs.h <<\EOF
-#define HAVE_ALPHASORT_DECLARATION 1
-EOF
-
- else
-  true
-  echo "$ac_t""no" 1>&6
- fi
-
-
-
- echo $ac_n "checking inlines""... $ac_c" 1>&6
- if eval "test \"`echo '$''{'dpkg_cv_c_inline'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  
-  cat > conftest.$ac_ext <<EOF
-#line 1846 "configure"
-#include "confdefs.h"
-
-int main() { return 0; }
-int t() {
-} inline int foo (int x) {
-; return 0; }
-EOF
-if { (eval echo configure:1854: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-  dpkg_cv_c_inline=yes
-else
-  rm -rf conftest*
-  dpkg_cv_c_inline=no
-fi
-rm -f conftest*
-
-fi
-
- if test "x$dpkg_cv_c_inline" = xyes; then
-  true
-  echo "$ac_t""yes" 1>&6
- cat >> confdefs.h <<\EOF
-#define HAVE_INLINE 1
-EOF
-
- else
-  true
-  echo "$ac_t""no" 1>&6
- fi
-
-
-
- echo $ac_n "checking __attribute__((,,))""... $ac_c" 1>&6
- if eval "test \"`echo '$''{'dpkg_cv_c_attribute_supported'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  
-  cat > conftest.$ac_ext <<EOF
-#line 1886 "configure"
-#include "confdefs.h"
-
-int main() { return 0; }
-int t() {
-extern int testfunction(int x) __attribute__((,,))
-; return 0; }
-EOF
-if { (eval echo configure:1894: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-  dpkg_cv_c_attribute_supported=yes
-else
-  rm -rf conftest*
-  dpkg_cv_c_attribute_supported=no
-fi
-rm -f conftest*
-
-fi
-
- if test "x$dpkg_cv_c_attribute_supported" = xyes; then
-  true
-  echo "$ac_t""yes" 1>&6
- cat >> confdefs.h <<\EOF
-#define HAVE_GNUC25_ATTRIB 1
-EOF
-
-  
- echo $ac_n "checking __attribute__((noreturn))""... $ac_c" 1>&6
- if eval "test \"`echo '$''{'dpkg_cv_c_attribute_noreturn'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  
-  cat > conftest.$ac_ext <<EOF
-#line 1920 "configure"
-#include "confdefs.h"
-
-int main() { return 0; }
-int t() {
-extern int testfunction(int x) __attribute__((noreturn))
-; return 0; }
-EOF
-if { (eval echo configure:1928: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-  dpkg_cv_c_attribute_noreturn=yes
-else
-  rm -rf conftest*
-  dpkg_cv_c_attribute_noreturn=no
-fi
-rm -f conftest*
-
-fi
-
- if test "x$dpkg_cv_c_attribute_noreturn" = xyes; then
-  true
-  echo "$ac_t""yes" 1>&6
-   cat >> confdefs.h <<\EOF
-#define HAVE_GNUC25_NORETURN 1
-EOF
-
- else
-  true
-  echo "$ac_t""no" 1>&6
- fi
-
-  
- echo $ac_n "checking __attribute__((const))""... $ac_c" 1>&6
- if eval "test \"`echo '$''{'dpkg_cv_c_attribute_const'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  
-  cat > conftest.$ac_ext <<EOF
-#line 1959 "configure"
-#include "confdefs.h"
-
-int main() { return 0; }
-int t() {
-extern int testfunction(int x) __attribute__((const))
-; return 0; }
-EOF
-if { (eval echo configure:1967: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-  dpkg_cv_c_attribute_const=yes
-else
-  rm -rf conftest*
-  dpkg_cv_c_attribute_const=no
-fi
-rm -f conftest*
-
-fi
-
- if test "x$dpkg_cv_c_attribute_const" = xyes; then
-  true
-  echo "$ac_t""yes" 1>&6
-   cat >> confdefs.h <<\EOF
-#define HAVE_GNUC25_CONST 1
-EOF
-
- else
-  true
-  echo "$ac_t""no" 1>&6
- fi
-
-  
- echo $ac_n "checking __attribute__((format...))""... $ac_c" 1>&6
- if eval "test \"`echo '$''{'dpkg_cv_attribute_format'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  
-  cat > conftest.$ac_ext <<EOF
-#line 1998 "configure"
-#include "confdefs.h"
-
-int main() { return 0; }
-int t() {
-extern int testfunction(char *y, ...) __attribute__((format(printf,1,2)))
-; return 0; }
-EOF
-if { (eval echo configure:2006: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-  dpkg_cv_attribute_format=yes
-else
-  rm -rf conftest*
-  dpkg_cv_attribute_format=no
-fi
-rm -f conftest*
-
-fi
-
- if test "x$dpkg_cv_attribute_format" = xyes; then
-  true
-  echo "$ac_t""yes" 1>&6
-   cat >> confdefs.h <<\EOF
-#define HAVE_GNUC25_PRINTFFORMAT 1
-EOF
-
- else
-  true
-  echo "$ac_t""no" 1>&6
- fi
-
- else
-  true
-  echo "$ac_t""no" 1>&6
- fi
-
-
-
-CWARNS=""
-
-
-
-
- echo $ac_n "checking GCC warning flag(s) -Wall -Wno-implicit""... $ac_c" 1>&6
- if test "${GCC-no}" = yes
- then
-  if eval "test \"`echo '$''{'dpkg_cv_c_gcc_warn_all'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  
-   oldcflags="${CFLAGS-}"
-   CFLAGS="${CFLAGS-} ${CWARNS} -Wall -Wno-implicit -Werror"
-   cat > conftest.$ac_ext <<EOF
-#line 2052 "configure"
-#include "confdefs.h"
-
-#include <string.h>
-#include <stdio.h>
-
-int main() { return 0; }
-int t() {
-
-    strcmp("a","b"); fprintf(stdout,"test ok\n");
-
-; return 0; }
-EOF
-if { (eval echo configure:2065: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-  dpkg_cv_c_gcc_warn_all=yes
-else
-  rm -rf conftest*
-  dpkg_cv_c_gcc_warn_all=no
-fi
-rm -f conftest*
-
-   CFLAGS="${oldcflags}"
-fi
-
-  if test "x$dpkg_cv_c_gcc_warn_all" = xyes; then
-   CWARNS="${CWARNS} -Wall -Wno-implicit"
-   echo "$ac_t""ok" 1>&6
-  else
-   dpkg_cv_c_gcc_warn_all=''
-   echo "$ac_t""no" 1>&6
-  fi
- else
-  echo "$ac_t""no" 1>&6
- fi
-
-
- echo $ac_n "checking GCC warning flag(s) -Wwrite-strings""... $ac_c" 1>&6
- if test "${GCC-no}" = yes
- then
-  if eval "test \"`echo '$''{'dpkg_cv_c_gcc_warn_writestrings'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  
-   oldcflags="${CFLAGS-}"
-   CFLAGS="${CFLAGS-} ${CWARNS} -Wwrite-strings -Werror"
-   cat > conftest.$ac_ext <<EOF
-#line 2099 "configure"
-#include "confdefs.h"
-
-#include <string.h>
-#include <stdio.h>
-
-int main() { return 0; }
-int t() {
-
-    strcmp("a","b"); fprintf(stdout,"test ok\n");
-
-; return 0; }
-EOF
-if { (eval echo configure:2112: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-  dpkg_cv_c_gcc_warn_writestrings=yes
-else
-  rm -rf conftest*
-  dpkg_cv_c_gcc_warn_writestrings=no
-fi
-rm -f conftest*
-
-   CFLAGS="${oldcflags}"
-fi
-
-  if test "x$dpkg_cv_c_gcc_warn_writestrings" = xyes; then
-   CWARNS="${CWARNS} -Wwrite-strings"
-   echo "$ac_t""ok" 1>&6
-  else
-   dpkg_cv_c_gcc_warn_writestrings=''
-   echo "$ac_t""no" 1>&6
-  fi
- else
-  echo "$ac_t""no" 1>&6
- fi
-
-
- echo $ac_n "checking GCC warning flag(s) -Wpointer-arith""... $ac_c" 1>&6
- if test "${GCC-no}" = yes
- then
-  if eval "test \"`echo '$''{'dpkg_cv_c_gcc_warn_pointerarith'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  
-   oldcflags="${CFLAGS-}"
-   CFLAGS="${CFLAGS-} ${CWARNS} -Wpointer-arith -Werror"
-   cat > conftest.$ac_ext <<EOF
-#line 2146 "configure"
-#include "confdefs.h"
-
-#include <string.h>
-#include <stdio.h>
-
-int main() { return 0; }
-int t() {
-
-    strcmp("a","b"); fprintf(stdout,"test ok\n");
-
-; return 0; }
-EOF
-if { (eval echo configure:2159: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-  dpkg_cv_c_gcc_warn_pointerarith=yes
-else
-  rm -rf conftest*
-  dpkg_cv_c_gcc_warn_pointerarith=no
-fi
-rm -f conftest*
-
-   CFLAGS="${oldcflags}"
-fi
-
-  if test "x$dpkg_cv_c_gcc_warn_pointerarith" = xyes; then
-   CWARNS="${CWARNS} -Wpointer-arith"
-   echo "$ac_t""ok" 1>&6
-  else
-   dpkg_cv_c_gcc_warn_pointerarith=''
-   echo "$ac_t""no" 1>&6
-  fi
- else
-  echo "$ac_t""no" 1>&6
- fi
-
-
- echo $ac_n "checking GCC warning flag(s) -Wimplicit -Wnested-externs""... $ac_c" 1>&6
- if test "${GCC-no}" = yes
- then
-  if eval "test \"`echo '$''{'dpkg_cv_c_gcc_warn_implicit'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  
-   oldcflags="${CFLAGS-}"
-   CFLAGS="${CFLAGS-} ${CWARNS} -Wimplicit -Wnested-externs -Werror"
-   cat > conftest.$ac_ext <<EOF
-#line 2193 "configure"
-#include "confdefs.h"
-
-#include <string.h>
-#include <stdio.h>
-
-int main() { return 0; }
-int t() {
-
-    strcmp("a","b"); fprintf(stdout,"test ok\n");
-
-; return 0; }
-EOF
-if { (eval echo configure:2206: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-  dpkg_cv_c_gcc_warn_implicit=yes
-else
-  rm -rf conftest*
-  dpkg_cv_c_gcc_warn_implicit=no
-fi
-rm -f conftest*
-
-   CFLAGS="${oldcflags}"
-fi
-
-  if test "x$dpkg_cv_c_gcc_warn_implicit" = xyes; then
-   CWARNS="${CWARNS} -Wimplicit -Wnested-externs"
-   echo "$ac_t""ok" 1>&6
-  else
-   dpkg_cv_c_gcc_warn_implicit=''
-   echo "$ac_t""no" 1>&6
-  fi
- else
-  echo "$ac_t""no" 1>&6
- fi
-
-
-if test "${GCC-no}" = yes; then
- CWARNS="${CWARNS} -Wmissing-prototypes -Wstrict-prototypes"
-fi
-
-trap '' 1 2 15
-cat > confcache <<\EOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs.  It is not useful on other systems.
-# If it contains results you don't want to keep, you may remove or edit it.
-#
-# By default, configure uses ./config.cache as the cache file,
-# creating it if it does not exist already.  You can give configure
-# the --cache-file=FILE option to use a different cache file; that is
-# what configure does when it calls configure scripts in
-# subdirectories, so they share the cache.
-# Giving --cache-file=/dev/null disables caching, for debugging configure.
-# config.status only pays attention to the cache file if you give it the
-# --recheck option to rerun configure.
-#
-EOF
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-(set) 2>&1 |
-  sed -n "s/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=\${\1='\2'}/p" \
-  >> confcache
-if cmp -s $cache_file confcache; then
-  :
-else
-  if test -w $cache_file; then
-    echo "updating cache $cache_file"
-    cat confcache > $cache_file
-  else
-    echo "not updating unwritable cache $cache_file"
-  fi
-fi
-rm -f confcache
-
-trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-# Any assignment to VPATH causes Sun make to only execute
-# the first set of double-colon rules, so remove it if not needed.
-# If there is a colon in the path, we need to keep it.
-if test "x$srcdir" = x.; then
-  ac_vpsub='/^[        ]*VPATH[        ]*=[^:]*$/d'
-fi
-
-trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
-
-DEFS=-DHAVE_CONFIG_H
-
-# Without the "./", some shells look in PATH for config.status.
-: ${CONFIG_STATUS=./config.status}
-
-echo creating $CONFIG_STATUS
-rm -f $CONFIG_STATUS
-cat > $CONFIG_STATUS <<EOF
-#! /bin/sh
-# Generated automatically by configure.
-# Run this file to recreate the current configuration.
-# This directory was configured as follows,
-# on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-#
-# $0 $ac_configure_args
-#
-# Compiler output produced by configure, useful for debugging
-# configure, is in ./config.log if it exists.
-
-ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
-for ac_option
-do
-  case "\$ac_option" in
-  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
-    echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
-    exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
-  -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
-    echo "$CONFIG_STATUS generated by autoconf version 2.10"
-    exit 0 ;;
-  -help | --help | --hel | --he | --h)
-    echo "\$ac_cs_usage"; exit 0 ;;
-  *) echo "\$ac_cs_usage"; exit 1 ;;
-  esac
-done
-
-ac_given_srcdir=$srcdir
-ac_given_INSTALL="$INSTALL"
-
-trap 'rm -fr `echo "Makefile dpkg-deb/Makefile lib/Makefile include/Makefile
-          dselect/Makefile split/Makefile methods/Makefile
-          md5sum/Makefile main/Makefile doc/Makefile scripts/Makefile config.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
-EOF
-cat >> $CONFIG_STATUS <<EOF
-
-# Protect against being on the right side of a sed subst in config.status.
-sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g;
- s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF
-$ac_vpsub
-$extrasub
-s%@CFLAGS@%$CFLAGS%g
-s%@CPPFLAGS@%$CPPFLAGS%g
-s%@CXXFLAGS@%$CXXFLAGS%g
-s%@DEFS@%$DEFS%g
-s%@LDFLAGS@%$LDFLAGS%g
-s%@LIBS@%$LIBS%g
-s%@exec_prefix@%$exec_prefix%g
-s%@prefix@%$prefix%g
-s%@program_transform_name@%$program_transform_name%g
-s%@bindir@%$bindir%g
-s%@sbindir@%$sbindir%g
-s%@libexecdir@%$libexecdir%g
-s%@datadir@%$datadir%g
-s%@sysconfdir@%$sysconfdir%g
-s%@sharedstatedir@%$sharedstatedir%g
-s%@localstatedir@%$localstatedir%g
-s%@libdir@%$libdir%g
-s%@includedir@%$includedir%g
-s%@oldincludedir@%$oldincludedir%g
-s%@infodir@%$infodir%g
-s%@mandir@%$mandir%g
-s%@CC@%$CC%g
-s%@CXX@%$CXX%g
-s%@perlpath@%$perlpath%g
-s%@CPP@%$CPP%g
-s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
-s%@INSTALL_DATA@%$INSTALL_DATA%g
-s%@RANLIB@%$RANLIB%g
-s%@OPTCFLAGS@%$OPTCFLAGS%g
-s%@CWARNS@%$CWARNS%g
-
-CEOF
-EOF
-cat >> $CONFIG_STATUS <<EOF
-
-CONFIG_FILES=\${CONFIG_FILES-"Makefile dpkg-deb/Makefile lib/Makefile include/Makefile
-          dselect/Makefile split/Makefile methods/Makefile
-          md5sum/Makefile main/Makefile doc/Makefile scripts/Makefile"}
-EOF
-cat >> $CONFIG_STATUS <<\EOF
-for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
-  # Support "outfile[:infile]", defaulting infile="outfile.in".
-  case "$ac_file" in
-  *:*) ac_file_in=`echo "$ac_file"|sed 's%.*:%%'`
-       ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
-  *) ac_file_in="${ac_file}.in" ;;
-  esac
-
-  # Adjust relative srcdir, etc. for subdirectories.
-
-  # Remove last slash and all that follows it.  Not all systems have dirname.
-  ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
-  if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
-    # The file is in a subdirectory.
-    test ! -d "$ac_dir" && mkdir "$ac_dir"
-    ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`"
-    # A "../" for each directory in $ac_dir_suffix.
-    ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`
-  else
-    ac_dir_suffix= ac_dots=
-  fi
-
-  case "$ac_given_srcdir" in
-  .)  srcdir=.
-      if test -z "$ac_dots"; then top_srcdir=.
-      else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;;
-  /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;;
-  *) # Relative path.
-    srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"
-    top_srcdir="$ac_dots$ac_given_srcdir" ;;
-  esac
-
-  case "$ac_given_INSTALL" in
-  [/$]*) INSTALL="$ac_given_INSTALL" ;;
-  *) INSTALL="$ac_dots$ac_given_INSTALL" ;;
-  esac
-  echo creating "$ac_file"
-  rm -f "$ac_file"
-  configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
-  case "$ac_file" in
-  *Makefile*) ac_comsub="1i\\
-# $configure_input" ;;
-  *) ac_comsub= ;;
-  esac
-  sed -e "$ac_comsub
-s%@configure_input@%$configure_input%g
-s%@srcdir@%$srcdir%g
-s%@top_srcdir@%$top_srcdir%g
-s%@INSTALL@%$INSTALL%g
-" -f conftest.subs $ac_given_srcdir/$ac_file_in > $ac_file
-fi; done
-rm -f conftest.subs
-
-# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
-# NAME is the cpp macro being defined and VALUE is the value it is being given.
-#
-# ac_d sets the value in "#define NAME VALUE" lines.
-ac_dA='s%^\([  ]*\)#\([        ]*define[       ][      ]*\)'
-ac_dB='\([     ][      ]*\)[^  ]*%\1#\2'
-ac_dC='\3'
-ac_dD='%g'
-# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE".
-ac_uA='s%^\([  ]*\)#\([        ]*\)undef\([    ][      ]*\)'
-ac_uB='\([     ]\)%\1#\2define\3'
-ac_uC=' '
-ac_uD='\4%g'
-# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
-ac_eA='s%^\([  ]*\)#\([        ]*\)undef\([    ][      ]*\)'
-ac_eB='$%\1#\2define\3'
-ac_eC=' '
-ac_eD='%g'
-
-CONFIG_HEADERS=${CONFIG_HEADERS-"config.h"}
-for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then
-  # Support "outfile[:infile]", defaulting infile="outfile.in".
-  case "$ac_file" in
-  *:*) ac_file_in=`echo "$ac_file"|sed 's%.*:%%'`
-       ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
-  *) ac_file_in="${ac_file}.in" ;;
-  esac
-
-  echo creating $ac_file
-
-  rm -f conftest.frag conftest.in conftest.out
-  cp $ac_given_srcdir/$ac_file_in conftest.in
-
-EOF
-
-# Transform confdefs.h into a sed script conftest.vals that substitutes
-# the proper values into config.h.in to produce config.h.  And first:
-# Protect against being on the right side of a sed subst in config.status.
-# Protect against being in an unquoted here document in config.status.
-rm -f conftest.vals
-cat > conftest.hdr <<\EOF
-s/[\\&%]/\\&/g
-s%[\\$`]%\\&%g
-s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp
-s%ac_d%ac_u%gp
-s%ac_u%ac_e%gp
-EOF
-sed -n -f conftest.hdr confdefs.h > conftest.vals
-rm -f conftest.hdr
-
-# This sed command replaces #undef with comments.  This is necessary, for
-# example, in the case of _POSIX_SOURCE, which is predefined and required
-# on some systems where configure will not decide to define it.
-cat >> conftest.vals <<\EOF
-s%^[   ]*#[    ]*undef[        ][      ]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */%
-EOF
-
-# Break up conftest.vals because some shells have a limit on
-# the size of here documents, and old seds have small limits too.
-# Maximum number of lines to put in a single here document.
-ac_max_here_lines=12
-
-rm -f conftest.tail
-while :
-do
-  ac_lines=`grep -c . conftest.vals`
-  # grep -c gives empty output for an empty file on some AIX systems.
-  if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi
-  # Write a limited-size here document to conftest.frag.
-  echo '  cat > conftest.frag <<CEOF' >> $CONFIG_STATUS
-  sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS
-  echo 'CEOF
-  sed -f conftest.frag conftest.in > conftest.out
-  rm -f conftest.in
-  mv conftest.out conftest.in
-' >> $CONFIG_STATUS
-  sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail
-  rm -f conftest.vals
-  mv conftest.tail conftest.vals
-done
-rm -f conftest.vals
-
-cat >> $CONFIG_STATUS <<\EOF
-  rm -f conftest.frag conftest.h
-  echo "/* $ac_file.  Generated automatically by configure.  */" > conftest.h
-  cat conftest.in >> conftest.h
-  rm -f conftest.in
-  if cmp -s $ac_file conftest.h 2>/dev/null; then
-    echo "$ac_file is unchanged"
-    rm -f conftest.h
-  else
-    # Remove last slash and all that follows it.  Not all systems have dirname.
-      ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
-      if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
-      # The file is in a subdirectory.
-      test ! -d "$ac_dir" && mkdir "$ac_dir"
-    fi
-    rm -f $ac_file
-    mv conftest.h $ac_file
-  fi
-fi; done
-
-
-
-exit 0
-EOF
-chmod +x $CONFIG_STATUS
-rm -fr confdefs* $ac_clean_files
-test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
-
index 22921e20db6c4652f620c6c852df8d398b815a6d..fc97395ffbb40bdf2b199640eac69d14be032754 100644 (file)
@@ -1,83 +1,84 @@
 dnl Process this file with autoconf to produce a configure script.
 
-AC_INIT(include/dpkg.h)
-AC_CONFIG_HEADER(config.h)
+AC_PREREQ([2.12])
 
-AC_PREFIX_DEFAULT(/usr)
+AC_INIT(include/dpkg.h.in)
+AM_CONFIG_HEADER(config.h)
+
+tl_CHECK_TOOL_PREFIX
+
+tl_PROG_CC
+tl_CANONICAL_SYSTEM
+tl_CHECK_TOOL_PREFIX
 
-AC_PROG_CC
+tl_PROG_CXX
 AC_PROG_CXX
+AM_CONDITIONAL(HAVE_CPLUSPLUS, [test "$CXX" != ""])
+
+tl_CHECK_TOOL(LD, ld, ld)
+
+AM_INIT_AUTOMAKE(dpkg,[`sed -n '1s/dpkg (\([0-9.]\+\)).*/\1/p' ${srcdir}/debian/changelog`])
+ACLOCAL="$ACLOCAL -I automake"
+AC_MSG_CHECKING(dpkg version)
+AC_MSG_RESULT($VERSION)
+
+AC_PREFIX_DEFAULT(/usr)
 
 dpkg_archset=''
 AC_ARG_WITH(arch,
-[  --with-arch=value       set/override (Debian) architecture value],
+[  --with-arch=value     set/override (Debian) architecture value (deprecated)],
 [
  if test "x$with_arch" = x; then
   AC_MSG_ERROR(--with-arch requires an architecture name)
  fi
  dpkg_archset="${with_arch}"
+ dpkg_tmp="`awk '$1 == "'$target_cpu'" { print $2 }' $srcdir/archtable`"
+ if test "x$dpkg_tmp" = "x"; then
+  AC_MSG_WARN([unable to find specified architecture $dpkg_archset in archtable])
+ elif test "x$dpkg_tmp" != "x$dpkg_archset"; then
+  AC_MSG_WARN([canonical architecture is $dpkg_tmp (from archtable)])
+ fi
 ],[
  AC_MSG_CHECKING(system architecture)
- dpkg_archwhy=''
- AC_CACHE_VAL(dpkg_cv_arch,[
-  dpkg_arch="`dpkg --print-architecture 2>/dev/null`"
-  if test "x$dpkg_arch" != x; then
-   dpkg_archwhy="  (obtained from dpkg)"
-  elif test "${GCC-no}" = yes; then
-changequote(, )dnl
-   dpkg_arch="`${CC} --print-libgcc-file-name |
-       sed -e 's,^.*/gcc-lib/,,; s,/libgcc\.a$,,; s,/[0-9.][0-9.]*$,,; s/-.*$//'`"
-changequote([, ])dnl
-   if test "x`echo \"$dpkg_arch\" | tr -d a-z0-9-`" != x -o "x$dpkg_arch" = x
-   then
-    dpkg_arch=""
-    dpkg_archwhy=" (bad output from --print-libgcc-file-name)"
-   else
-    dpkg_arch2="`awk '$1 == "'$dpkg_arch'" { print $2 }' $srcdir/archtable`"
-    if test "x$dpkg_arch2" = "x$dpkg_arch"; then
-     dpkg_archwhy=" (obtained from gcc)"
-    elif test "x$dpkg_arch2" != x; then
-     dpkg_archwhy=" (from gcc, canonical form of $dpkg_arch)"
-     dpkg_arch="$dpkg_arch2"
-    else
-     dpkg_archwhy=" (from gcc, but not in archtable)"
-    fi
-   fi
-  else
-   dpkg_archwhy=''
-  fi
-  dpkg_cv_arch="$dpkg_arch"
- ])
- if test "x$dpkg_cv_arch" != x; then
-  AC_MSG_RESULT("$dpkg_cv_arch$dpkg_archwhy")
-  dpkg_archset="${dpkg_cv_arch}"
- else
-  AC_MSG_RESULT("failed$dpkg_archwhy")
+ dpkg_archset="`awk '$1 == "'$target_cpu'" { print $2 }' $srcdir/archtable`"
+ # Finish off
+ if test "x$dpkg_archset" = "x"; then
+  AC_MSG_ERROR(failed: use --with-arch= or --target=)
  fi
+ AC_MSG_RESULT($dpkg_archset)
 ])
+
 if test "x$dpkg_archset" != x
 then
- AC_DEFINE_UNQUOTED(ARCHITECTURE, "${dpkg_cv_arch}")
+ AC_DEFINE_UNQUOTED(ARCHITECTURE, "${dpkg_archset}")
 fi
 
 if test "x${dpkg_archset}" = xi386; then
- AC_MSG_CHECKING(for i386 system/binary format)
- dpkg_libgcc="`$CC --print-libgcc-file-name 2>/dev/null`"
- case "$dpkg_libgcc" in
-  *-linux*)
-   if ar p "$dpkg_libgcc" __main.o 2>/dev/null | file - 2>/dev/null | grep ELF >/dev/null; then
-    AC_MSG_RESULT(Linux ELF)
-    dpkg_cc_binfmt=elf
-   else
-    AC_MSG_RESULT(Linux a.out)
-    dpkg_cc_binfmt=a.out
-   fi
-   AC_DEFINE_UNQUOTED(ARCHBINFMT, " $dpkg_cc_binfmt")
-  ;;
+ AC_MSG_CHECKING(target i386 system/binary format)
+ case "${target_os}" in
+  linuxaout|linux-gnuaout)
+   AC_MSG_RESULT(Linux a.out)
+   dpkg_cc_binfmt=a.out
+   ;;
+  
+  linuxcoff|linux-gnucoff)
+   AC_MSG_RESULT(Linux COFF)
+   dpkg_cc_binfmt=coff
+   ;;
+  
+  linux|linuxelf|linux-gnu*)
+   AC_MSG_RESULT(Linux ELF)
+   dpkg_cc_binfmt=elf
+   ;;
+  
   *)
-   AC_MSG_RESULT(non-Linux)
-  ;;
+   AC_MSG_RESULT([other (${target_os})])
+   dpkg_cc_binfmt=""
+   ;;
  esac
+ if test "x$dpkg_cc_binfmt" != "x"; then
+  AC_DEFINE_UNQUOTED(ARCHBINFMT," $dpkg_cc_binfmt")
+ fi
 fi
 
 AC_ARG_WITH(newdeb,
@@ -87,6 +88,15 @@ AC_ARG_WITH(olddeb,
 [  --with-olddeb           make dpkg-deb default to old archives],
 [AC_DEFINE(BUILDOLDPKGFORMAT, 1)])
 
+dnl gettext
+
+ALL_LINGUAS="en fr"
+AM_GNU_GETTEXT
+AC_LINK_FILES($nls_cv_header_libgt, $nls_cv_header_intl)
+AC_OUTPUT_COMMANDS([sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile])
+
+dnl Other stuff
+
 AC_MSG_CHECKING(for /usr/bin/perl)
 if test -f /usr/bin/perl
 then
@@ -100,9 +110,10 @@ fi
 
 AC_STDC_HEADERS
 AC_PROG_INSTALL
-dnl AC_PROGRAM_PATH(GZIP, gzip, )   use these from $PATH
-dnl AC_PROGRAM_PATH(TAR, tar, )     use these from $PATH
-AC_PROG_RANLIB
+AM_PROG_LIBTOOL
+dnl Default in case EMACS == no
+lispdir="\$(datadir)/emacs/site-lisp"
+AM_PATH_LISPDIR
 AC_MODE_T
 AC_PID_T
 AC_SIZE_T
@@ -111,7 +122,7 @@ AC_C_CONST
 AC_C_BIGENDIAN
 AC_CHECK_SIZEOF(unsigned long)
 AC_CHECK_SIZEOF(unsigned int)
-AC_CHECK_FUNCS(unsetenv alphasort scandir strerror strsignal strtoul vsnprintf)
+AC_CHECK_FUNCS(unsetenv alphasort scandir strerror strsignal strtoul vsnprintf lchown)
 AC_CHECK_HEADERS(sys/cdefs.h)
 
 AC_CHECK_FUNC(sysinfo,
@@ -132,26 +143,14 @@ AC_CHECK_FUNC(sysinfo,
 
 AC_SUBST(OPTCFLAGS)
 if test "${GCC-no}" = yes; then
- CFLAGS=-O2; OPTCFLAGS=-O3
+ CFLAGS="-D_REENTRANT -D_GNU_SOURCE -O2"
+ CXXFLAGS="-D_REENTRANT -D_GNU_SOURCE -O2"
+ OPTCFLAGS="-O3"
 else
- CFLAGS=-O
+ CFLAGS="-D_REENTRANT -D_GNU_SOURCE -O"
+ CXXFLAGS="-D_REENTRANT -D_GNU_SOURCE -O"
 fi
 
-dnl DPKG_CACHED_TRY_COMPILE(<description>,<cachevar>,<include>,<program>,<ifyes>,<ifno>)
-define(DPKG_CACHED_TRY_COMPILE,[
- AC_MSG_CHECKING($1)
- AC_CACHE_VAL($2,[
-  AC_TRY_COMPILE([$3],[$4],[$2=yes],[$2=no])
- ])
- if test "x$$2" = xyes; then
-  true
-  $5
- else
-  true
-  $6
- fi
-])
-
 DPKG_CACHED_TRY_COMPILE(your C compiler,dpkg_cv_c_works,
  [#include <string.h>], [strcmp("a","b")],
  AC_MSG_RESULT(works),
@@ -196,33 +195,6 @@ DPKG_CACHED_TRY_COMPILE(__attribute__((,,)),dpkg_cv_c_attribute_supported,,
 AC_SUBST(CWARNS)
 CWARNS=""
 
-dnl DPKG_C_GCC_TRY_WARNS(<warnings>,<cachevar>)
-define(DPKG_C_GCC_TRY_WARNS,[
- AC_MSG_CHECKING([GCC warning flag(s) $1])
- if test "${GCC-no}" = yes
- then
-  AC_CACHE_VAL($2,[
-   oldcflags="${CFLAGS-}"
-   CFLAGS="${CFLAGS-} ${CWARNS} $1 -Werror"
-   AC_TRY_COMPILE([
-#include <string.h>
-#include <stdio.h>
-],[
-    strcmp("a","b"); fprintf(stdout,"test ok\n");
-], [$2=yes], [$2=no])
-   CFLAGS="${oldcflags}"])
-  if test "x$$2" = xyes; then
-   CWARNS="${CWARNS} $1"
-   AC_MSG_RESULT(ok)
-  else
-   $2=''
-   AC_MSG_RESULT(no)
-  fi
- else
-  AC_MSG_RESULT(no, not using GCC)
- fi
-])
-
 DPKG_C_GCC_TRY_WARNS(-Wall -Wno-implicit, dpkg_cv_c_gcc_warn_all)
 DPKG_C_GCC_TRY_WARNS(-Wwrite-strings, dpkg_cv_c_gcc_warn_writestrings)
 DPKG_C_GCC_TRY_WARNS(-Wpointer-arith, dpkg_cv_c_gcc_warn_pointerarith)
@@ -232,6 +204,10 @@ if test "${GCC-no}" = yes; then
  CWARNS="${CWARNS} -Wmissing-prototypes -Wstrict-prototypes"
 fi
 
-AC_OUTPUT(Makefile dpkg-deb/Makefile lib/Makefile include/Makefile
-          dselect/Makefile split/Makefile methods/Makefile
-          md5sum/Makefile main/Makefile doc/Makefile scripts/Makefile)
+echo "#define DPKG_VERSION \"$VERSION\" /* This line modified by configure */" > version.h.new
+cmp -s version.h.new version.h || mv version.h.new version.h
+
+AC_OUTPUT([Makefile intl/Makefile dpkg-deb/Makefile lib/Makefile
+          include/Makefile dselect/Makefile split/Makefile methods/Makefile
+          md5sum/Makefile main/Makefile doc/Makefile scripts/Makefile
+          po/Makefile.in])
diff --git a/debian/.cvsignore b/debian/.cvsignore
new file mode 100644 (file)
index 0000000..9d711a9
--- /dev/null
@@ -0,0 +1,4 @@
+build
+tmp-main
+tmp-dev
+substvars
diff --git a/debian/50dpkg-dev.el b/debian/50dpkg-dev.el
new file mode 100644 (file)
index 0000000..90fd1d3
--- /dev/null
@@ -0,0 +1,8 @@
+;; 
+;; /etc/emacs/site-start.d/50dpkg-dev.el
+;;
+;; 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"
+        "Major mode for editing Debian-style change logs." t)
diff --git a/debian/README.compile b/debian/README.compile
new file mode 100644 (file)
index 0000000..198e2d0
--- /dev/null
@@ -0,0 +1,21 @@
+
+To compile this package you need to have some less-then-standard packages
+installed. Here's a list:
+
+automake
+autoconf
+debiandoc-sgml
+dpkg-perl
+gettext
+libtool
+libpaperg
+lout
+psutils
+sgml-base
+sgml-data
+sgml-tools
+sgmlspm
+sp
+tetex-base
+tetex-bin
+
index c0ccf5fb8db534b4ec7d4e411651557b2df4cad8..c28b80e9b6264a7e8f826d9f8261be030cde4d14 100644 (file)
@@ -1,3 +1,496 @@
+dpkg (1.4.1) unstable; urgency=low
+
+  * Maintainer release by IWJ.
+  * Changed Maintainer: field description.
+  * Various changes to make the damn thing build.
+  * Add .cvsignore files.
+
+ -- Ian Jackson <ian@davenant.greenend.org.uk>  Sun,  1 Nov 1998 17:33:38 +0000
+
+dpkg (1.4.0.31) unstable; urgency=low
+
+  * dpkg/processarc.c: Make newfileslist static like the other arguments
+    for register_cleanup's cu_* functions.
+  * N-th fix for controllib.pl (simulate old behavior by trying stdin,
+    stdout, and stderr for getlogin()).
+  * Enable --force-overwrite for slink release, and comment where to do
+    so (dpkg/main.c).
+  * Recompile against ncurses4.
+
+ -- Daniel Jacobowitz <dan@debian.org>  Thu, 22 Oct 1998 17:37:23 -0400
+
+dpkg (1.4.0.30) unstable; urgency=low
+
+  * dpkg-dev isn't allowed to have a Recommends: debian-keyring (as that's
+    in contrib), so it's now lowered to a Suggests: . Thanks to James Troup
+    for pointing this out. 
+
+ -- J.H.M. Dassen (Ray) <jdassen@wi.LeidenUniv.nl>  Sat, 26 Sep 1998 13:59:23 +0200
+
+dpkg (1.4.0.29) unstable; urgency=low
+
+  * For now, prefer PGP over GPG.
+
+ -- J.H.M. Dassen (Ray) <jdassen@wi.LeidenUniv.nl>  Tue, 22 Sep 1998 09:38:09 +0200
+
+dpkg (1.4.0.28) unstable; urgency=low
+
+  * Added gpg (GNU Privacy Guard) support:
+    * scripts/buildpackage.sh: default to GPG (unless no GPG, but only a PGP
+      secret key file is found), as GPG, unlike PGP, is DFSG-free.
+    * Updated dpkg-source(1), and added gpg(1) and pgp(1) to the SEE ALSO
+      section.
+    * Worked around broken textmode implementation in GPG.
+    * dpkg-dev now Suggests: gnupg .
+  * No longer includes developer-keys.pgp . Instead, dpkg now Suggests: and
+    dpkg-dev now Recommends: developer-keyring.
+  * Compiled with latest libstdc++ (2.9).
+
+ -- J.H.M. Dassen (Ray) <jdassen@wi.LeidenUniv.nl>  Mon, 21 Sep 1998 13:17:14 +0200
+
+dpkg (1.4.0.27) unstable; urgency=low
+
+  * REALLY fixed dpkg-dev, and new attempt to placate installer on internals.
+
+ -- Daniel Jacobowitz <dan@debian.org>  Fri, 27 Jul 1998 15:58:04 -0400
+
+dpkg (1.4.0.26.0.1) unstable; urgency=low
+
+  * Binary-only upload for x86 and fixed dpkg-dev
+
+ -- Daniel Jacobowitz <dan@debian.org>  Fri, 24 Jul 1998 15:58:04 -0400
+
+dpkg (1.4.0.26) unstable; urgency=low
+
+  * Non-maintainer upload.
+
+  * Make --root work with maintainer scripts (Patch by Scott Barker,
+    bugs #4863 and #3170).
+  * Fix $(lispdir) bug if compiling without emacs (noticed by Joey Hess).
+
+ -- Daniel Jacobowitz <dan@debian.org>  Thu, 23 Jul 1998 12:02:04 -0400
+
+dpkg (1.4.0.25) unstable; urgency=low
+
+  * Non-maintainer upload.
+  
+  * Add the requested -nc option to dpkg-buildpackage (Do
+    not clean source tree, useful in debugging cycles).
+  * controllib.pl: Again by popular acclamation, fix the getlogin() warnings.
+    I redirected STDERR onto fd 0 before calling getlogin().
+  * tools.m4: Fix display of whether c++ works.
+  * dpkg-deb/extract.c: glibc 2.1 and some kernels want to make
+    fflush() move the current fpos.  Until someone can fix that,
+    protect with seek.
+  * Add an extra 0, to dselect/{pkg,meth}keys.cc so it compiles again.
+  * Start using lchown() if available.
+  * Really fix #20353. (aclocal.m4 was the wrong place; that's a generated
+    file.  The correct place is in tl_canon.m4.)
+
+ -- Daniel Jacobowitz <dan@debian.org>  Tue, 21 Jul 1998 03:14:14 -0400
+
+dpkg (1.4.0.24) unstable; urgency=low
+
+  * Non-maintainer upload.
+
+  * dpkg/main.c: Turn --force-overwrite off as default.
+  * dpkg/main.c: don't list --force-overwrite as default in --force-help,
+    noticed by Peter Weiss <Peter.Weiss@Informatik.Uni-Oldenburg.DE> and
+    others. [#23542, part of #17409].
+  * dpkg/dpkg.8: replaced with a newer version from Jim Van Zandt
+    <jrv@vanzandt.mv.com>. [#21061]
+
+  * dpkg-deb/build.c (do_build): add missing \n and improve error message
+    when conffile name is too long. [#7057]
+
+  * scripts/update-alternatives.8: replaced with better man page from
+    Charles Briscoe-Smith <cpb4@ukc.ac.uk>. [#17283]
+  * scripts/dpkg-source.1: corrected logic error in documentation for
+    dpkg-gencontrol's -p option, as noticed by Oliver Elphick
+    <olly@linda.lfix.co.uk>. [#14655]
+  * scripts/controllib.pl (findarch): correct typo in error message,
+    noticed by Yann Dirson <ydirson@a2points.com>. [#22106]
+  * scripts/dpkg-buildpackage.sh: fix typo s/source version/source
+    maintainer/, noticed by Joey Hess <joey@kite.ml.org>, Adam P. Harris
+    <apharris@onshore.com> and others. [#10175, #15559]
+  * scripts/dpkg-genchanges.pl: applied patch from Roman Hodek
+    <Roman.Hodek@informatik.uni-erlangen.de> which solves problems with
+    architecture specific packages in mostly architecture independent
+    multi-binary source packages. [#14341, #20192].
+
+  * doc/Makefile.am: remove any reference to the packaging manual, as it is
+    now provided by the separate "packaging-manual" package.
+  * doc/packaging.sgml: removed.
+  * doc/developer-keys.pgp: updated to the current debian keyring.
+
+  * aclocal.m4: applied patch from Joel Klecker <jk@espy.org> to handle
+    egcs' --print-libgcc-file-name output. [#20353]
+  
+  * debian/copyright: correct FSF address.
+  * debian/rules: add code from lesstif's debian/rules to make libtool
+    less of a fool (i.e. not use -rpath and to link shared libraries
+    against libraries it depends on).  Code by Richard Braakman
+    <dark@xs4all.nl> and Yann Dirson <dirson@debian.org>.
+  * debian/rules: remove all reference to the packaging manual as it is
+    now provided by the seperate "packaging-manual" package. [#21581,
+    #21186, #22698, #23342]
+  * debian/rules: link dpkg-divert.1.gz to undocumented.7.gz as the lack
+    of a real manpage has been reported in #11093.
+  * debian/README.compile: removed gawk and bogus comment about gettext
+    being in experimental, as reported by Santiago Vila <sanvila@unex.es>
+    [#23344].  Added libpaperg (debiandoc2ps needs paperconf).
+  * debian/shlibs.default.i386: updated for glibc, reported by Herbert Xu
+    <herbert@gondor.apana.org.au>. [#13140]
+  * debian/control (dpkg-dev): depend on perl as POSIX (not a part of
+    perl-base) is needed by most of the perl dpkg-* scripts, noticed by
+    Joel Klecker <jk@espy.org>. [#22115]
+
+ -- James Troup <jjtroup@comp.brad.ac.uk>  Wed, 24 Jun 1998 14:38:52 +0200
+
+dpkg (1.4.0.23.2) frozen unstable; urgency=low
+
+  * Non-maintainer upload.
+  * dpkg/main.c: Turn --force-overwrite back on as default.
+
+ -- James Troup <jjtroup@comp.brad.ac.uk>  Tue, 23 Jun 1998 22:19:26 +0200
+
+dpkg (1.4.0.23.1) frozen unstable; urgency=low
+
+  * No real changes, only a new version code to make this go to frozen too.
+
+ -- Nils Rennebarth <nils@debian.org>  Wed, 10 Jun 1998 17:29:58 +0200
+
+dpkg (1.4.0.23) frozen unstable; urgency=low
+
+  * Non-maintainer bug-fix release
+  * Update the disk method to the hamm directory structure (Bug#21000)
+
+ -- Nils Rennebarth <nils@debian.org>  Sun,  7 Jun 1998 19:14:51 +0200
+
+dpkg (1.4.0.22) frozen unstable; urgency=medium
+
+  * Non-maintainer bug-fix release
+  * Install main changelog file as `changelog.gz' instead of
+    `changelog.dpkg.gz' (Debian Policy, section 5.8) (Bug#6052,15157)
+  * Avoid use of /tmp/*.$$ in preinst and postinst (Bug#19712)
+  * Make sure diversions file is always created with mode 0644 (Bug#19494)
+  * When removing a file, chmod it to 000 if it's a char or block
+    device or remove its s[ug]id bits, if any (Bug#6006)
+  * Minor fixes in the programmer's manual (Bug#6206)
+  * Always create readable status and available files
+    (Bug#9869,11887,14636,15786,19146)
+  * Make dpkg-gencontrol honour -DArchtecture=xxxx (Bug#9893)
+  * Allow different archs for the same binary in debian/files (Bug#9894)
+  * Added workaround in /usr/lib/dpkg/methods/disk/setup
+    to avoid bash warning (Bug#10111,10131)
+  * Recognize old .deb packages with other locales (Bug#12232)
+  * Added `SHELL=bash' to debian/rules: it uses bash-specific structs
+  * Move some files from dpkg to dpkg-dev (part of Bug#13295)
+  * Minor fix in packaging manual regarding to Standards-Version (Bug#14696)
+  * Fixed --altdir and --admindir in update-alternatives (Bug#15332)
+  * Strip /usr/lib/libdpkg* (Bug#15671)
+  * dpkg: send output of --help, --force-help and -Dhelp to stdout
+    (Bug#16051,18574)
+  * send correct signals with start-stop-daemon (Bug#17258)
+  * Make `dpkg-divert --test --remove' work as expected (Bug#19531)
+  * Determine properly the architecture if gcc is egcs (Bug#20353)
+
+ -- Juan Cespedes <cespedes@debian.org>  Sun,  5 Apr 1998 17:37:01 +0200
+
+dpkg (1.4.0.21) unstable; urgency=low
+
+  * Non-maintainer release to include a new update-rc.d
+  * Fixed date on files in the archive from 2017 and 2018 by running
+    touch foo; find . -newer foo | xargs -r touch; rm foo
+  * Changed start-stop-deamon message "No <program> found; none killed." to
+    "No <program> found running; none killed."
+
+ -- Miquel van Smoorenburg <miquels@cistron.nl>  Thu,  5 Mar 1998 14:19:46 +0100
+
+dpkg (1.4.0.20) unstable; urgency=low
+
+  * Disabled --force-overwrites.
+  * Removed core file from source
+
+ -- Michael Alan Dorman <mdorman@debian.org>  Tue,  9 Jan 2018 03:34:28 -0500
+
+dpkg (1.4.0.19) unstable; urgency=low
+
+  * Changed methods/disk.setup to use output of
+    'dpkg --print-installation-architecture' instead of hard-coded 
+    '1386' (fixes #10995).
+  * Patched dpkg-source to properly quote metacharacters in strings 
+    before using them in pattern-matching expressions (fixes #10811).
+  * Fixed several documentation typos (fixes #10764).
+  * dpkg-source now works around 100-character filename limitation of cpio
+    (fixes #10400).
+  * dpkg-source now properly handles '\ no newline in source' message from
+    patch (fixes #5041).
+  
+ -- Klee Dienes <klee@debian.org>  Sun, 13 Jul 1997 19:28:22 -0700
+
+dpkg (1.4.0.18) unstable; urgency=low
+
+  * dpkg-source now uses new -z option to GNU patch (still needs to be
+    changed to detect and use old version as well) (fixes #9904, #10005, #10007).
+  * Added i686 to archtable.
+  * shlibs.default now uses xlib6 instead of elf-x11r6lib (fixes #9926).
+  * debian-changelog-mode now uses interruptible completing type-in fields
+    instead of the previous 'select-a-letter method'.  I consider this
+    better and more standard than the previous way, but I'd welcome
+    opinions to the contrary.  Consider this a 'probationary' change for
+    now (fixes #9873, #9874).
+
+ -- Klee Dienes <klee@debian.org>  Sun, 25 May 1997 09:56:08 -0400
+
+dpkg (1.4.0.17) unstable; urgency=low
+
+  * All of the dpkg binaries (but not dpkg-dev or dselect) now speak
+    french, thanks to patches from Christophe Le Bars <clebars@teaser.fr>
+  * Fix leading spaces before day in 822-date.
+  * Changes from Tom Lees <tom@lpsg.demon.co.uk> to better support
+    building on non-Debian systems; minor Makefile fixes.
+  * Added 'ppc powerpc powerpc' to archtable.
+  * Changed documentation paper size to US/Letter instead of A4 (A4
+    may be better, but it's easier to print US/Letter on A4 than it is 
+    to print A4 on US/Letter).
+  
+ -- Klee Dienes <klee@debian.org>  Tue,  13 May 1997 15:24:31 -0400
+
+dpkg (1.4.0.16) experimental; urgency=low
+
+  * Added generated sources to GNU-format source archive so it no longer
+    requires perl to build.
+
+ -- Klee Dienes <klee@debian.org>  Sat, 10 May 1997 17:34:29 -0400
+
+dpkg (1.4.0.15) experimental; urgency=low
+
+  * Changed dpkg-genchanges to check for ($arch == $substvar{'Arch'}), not
+    ($arch ne 'all') (fixes #9688).
+  * Fixed bug in start-stop-daemon.c (was using optarg after argument
+    parsing was over) (fixes #9597, #9603, #9364).
+  * Provide 50dpkg-dev.el for xemacs as well as emacs.
+  * Explicitly provide path for debian-changelog-mode in 50dpkg-dev to use
+    .el file as workaround until xemacs can read emacs19 .elc files.
+  * Pass top_distdir explicitly to 'make dist' to accomodate bug in
+    automake_1.1o-1.
+  * Fix debian/build to make html documentation without including
+    directories in tar archives (fixes #9348).
+  
+ -- Klee Dienes <klee@debian.org>  Fri,  9 May 1997 13:17:18 -0400
+
+dpkg (1.4.0.14) experimental; urgency=low
+
+  * Fixed buglet in install-info.pl (fixes #9438).
+  * Re-write of update-rc.d.pl, primarily by Miquel van Smoorenburg
+    <miquels@cistron.nl> (fixes #9434, #9436).
+  * Renamed "dpkg Programmer's Manual" to "dpkg Internals Manual".
+  
+ -- Klee Dienes <klee@debian.org>  Tue,  6 May 1997 22:01:07 -0400
+
+dpkg (1.4.0.13) experimental; urgency=low
+
+  * Fix to start-stop-daemon so that it still takes numeric arguments (had
+    been broken in 1.4.0.12) (fixes #9598).
+  * Fix 822-date to sanity-check localtime() output (seconds must be the
+    same as GMT).
+  * Patch from Guy Maor <maor@ece.utexas.edu> to dpkg-source.pl to support
+    pristine (MD5-equivalent) upstream sources.
+  * Patch from Michael Alan Dorman <mdorman@calder.med.miami.edu> to
+    update-rc.d.pl to fix handling multiple start/stop entries on a single
+    line.
+  * Several fixes to dpkg-genchanges to support -B option (added in
+    1.4.0.12) (fixes #9340).
+  * Handle errors from 822-date in debian-changelog-mode.el.
+  * Changed cl-debian.pl to correctly handle extra whitespace in changelog
+    datestamps.
+
+ -- Klee Dienes <klee@debian.org>  Mon,  5 May 1997 18:12:43 -0400
+
+dpkg (1.4.0.12) experimental; urgency=low
+
+  * Re-wrote 822-date for clarity and to support timezone offsets >= 12h
+    (New Zealand in DST is +1300, for example) (fixes #7130).
+  * Patch from Juergen Menden <menden@morgana.camelot.de> to support
+    archdependent-only builds (fixes #8912, #9245, #5359).
+  * Fix archtable entry for powerpc (fixes #8794).
+  * Strip /sbin/* and /usr/sbin/* in debian/rules (fixes #8853).
+  * Moved start-stop-daemon to /sbin (fixes #8669).
+  * Set sharedstatedir and localstatedir for $(MAKE) install in
+    debian/rules (fixes #8852).
+  * Fixes for update-rc.d(8) from Jim Van Zandt <jrv@vanzandt.mv.com>
+    (fixes #8576).
+  * No longer do variable substitutions when generating change file (fixes
+    #5862).
+  * Support symbolic signal names in start-stop-daemon (fixes #7715).
+  * Add autoload for debian-changelog-mode to /etc/emacs/site-start.d
+    (fixes #4519, #5841).
+  * Add recommendation for gcc and make in dpkg-dev (gcc is needed for dpkg
+    --print-architecture, used by dpkg-gencontrol; make is needed for any
+    debian/rules file) (fixes #8470).
+  * Minor changes to packaging manual section on source package
+    conversion (fixes #6801).
+  * Renamed "programmer's manual" to 'packaging manual'.
+  * Start of new "programmer's manual" containing information on dpkg
+    internals and build information.  This manual uses the new
+    TeXinfo-SGML format, currently included in doc/.
+  * dselect/pkgdepcon.cc now checks for debug not NULL, not just depdebug.
+  * Changed makefiles to support building outside of source directory.
+  * Include GNU-format source distribution with other non-debian packages.
+
+ -- Klee Dienes <klee@debian.org>  Sun,  4 May 1997 11:08:19 -0500
+
+dpkg (1.4.0.11) experimental; urgency=low
+
+  * Patches for alpha and libc6 from Michael Alan Dorman
+    <mdorman@calder.med.miami.edu>.
+  * Fixed minor problems in dpkg-shlibdeps regular expressions for libc6.
+  * Fix regex to detect directory creation in dpkg-source.pl.
+  * Minor changes for automake-1.1n.
+
+ -- Klee Dienes <klee@debian.org>  Sun, 23 Mar 1997 18:09:33 -0500
+
+dpkg (1.4.0.10) unstable; urgency=medium
+
+  * Fixed bug in controllib.pl (@fowner was entire passwd entry,
+    not just [uid, gid] as it should have been).
+
+ -- Klee Dienes <klee@debian.org>  Thu, 20 Mar 1997 13:06:52 -0500
+
+dpkg (1.4.0.9) unstable; urgency=low
+
+  * Check fputs() return values for (ret >= 0), not (ret != 0) (fixes #7522).
+  * dpkg-shlibdeps no longer gives error for Java and statically linked
+    binaries (fixes #4988).
+  * Change 'details of the old format' to 'details of the new format' in
+    deb-old.5 (fixes #7605).
+  * dpkg-source -b now warns (was previously silent) if maintainer changes
+    create new subdirectories.  dpkg-source -x now warns (previously gave
+    error) if maintainer changes create new subdirectories (partially
+    fixes #6866, #6671, #5045, #6482).    
+  * Added manual page for start-stop-daemon (8). 
+  * Added C version of start-stop-daemon by 
+    Marek Michalkiewicz <marekm@i17linuxb.ists.pwr.wroc.pl> (fixes #1670).
+  * Converted to use GNU automake for the build process by Tom Lees 
+    <tom@lpsg.demon.co.uk>.<
+  * Preliminary support for dpkg functions as a shared library (now
+    provides libdpkg.so, but much work needs to be done in better
+    segregating and defining the interface).
+  * Preliminary internationalization support by Galen Hazelwood
+    <galenh@debian.org>.  Only the library, dpkg-deb, md5sum, and dpkg
+    have been converted so far.  No translations have yet been
+    constructed.
+  * Handle 'libc.so.6 => /lib/libc.so.6 (0x40010000)' format from libc6
+    ldd (fixes #7603, #7926, #8688, #9179, #9134, #8516).
+  * Removed policy.sgml (it has been moved to the debian-policy package).
+  * Include patch from Darren Stalder <torin@daft.com> for
+    dpkg-buildpackage to choose PGP key based on Maintainer: field of 
+    package being built (or -m<maintainer> option, if present) (fixes 
+    #7898).
+  * Changed controllib.pl to use $ENV{LOGNAME}, getlogin(), and $<
+    (in that order) to determine the intended ownership of 
+    debian/{files,substvars},  (fixes #7324, #6823, #5659, #5965, #5929,
+    #9239, #5366).
+  * Don't sign .dsc file in dpkg-buildpackage if building a binary-only
+    release (fixes #7260).
+  * Updated developer-keys.pgp to latest revision (fixes #6134).
+  
+ -- Klee Dienes <klee@debian.org>  Mon, 17 Mar 1997 16:11:24 -0500
+
+dpkg (1.4.0.8) unstable; urgency=medium
+
+  * Corrected update-rc.d for bash 2.0
+  * Updated developer-keys.pgp from
+    http://www.iki.fi/liw/debian/debian-keyring.tar.gz
+
+ -- Guy Maor <maor@ece.utexas.edu>  Mon, 3 Feb 1997 04:05:01 -0600
+
+dpkg (1.4.0.7) stable unstable; urgency=HIGH
+
+  * Fixed --assert-support-predepends failing between unpack & configure.
+  * Added --assert-working-epoch option.
+
+ -- Guy Maor <maor@ece.utexas.edu>  Sat, 25 Jan 1997 23:02:11 -0600
+
+dpkg (1.4.0.6) stable unstable; urgency=high
+
+  * Patched lib/vercmp.c to hopefully fix dselect epoch processing
+    (Bug#6204), (Bug#4590).
+  * Patched scripts/dpkg-buildpackage, scripts/dpkg-genchanges,
+    scripts/dpkg-gencontrol for epoch processing, courtesy of Loic Prylli 
+    <lprylli@graville.fdn.fr> (Bug#6138, Bug#5225).
+  * Patched dpkg-genchanges to actually honor the -u switch to specify
+    directory (Bug#5564).
+  * Applied patch to main/archive.c to correct problems setting set[gu]id
+    binaries, courtesy of Herbert Xu <herbert@greathan.apana.org.au>
+    (Bug#5479). 
+  * Applied patch to dpkg-source to correct debian-only package names,
+    courtesy of Guy Maor <maor@ece.utexas.edu> (Bug#5355).
+
+ -- Michael Alan Dorman <mdorman@calder.med.miami.edu>  Thu, 2 Jan 1997 11:36:09 -0500
+
+dpkg (1.4.0.5) stable frozen unstable; urgency=medium
+
+  * Distribution for frozen too.
+
+ -- Heiko Schlittermann <heiko@lotte.sax.de>  Thu, 5 Dec 1996 09:13:42 +0100
+
+dpkg (1.4.0.4) stable unstable; urgency=medium
+
+  * Bug2962 fixed: patch from Ian Jackson applied
+    (cursor keys won't work after search)
+  * Manuals 2.1.2.2
+
+ -- Heiko Schlittermann <heiko@lotte.sax.de>  Fri, 15 Nov 1996 20:21:18 +0100
+
+dpkg (1.4.0.3) unstable; urgency=medium
+
+  * dpkg-source -x: created bad permissions (set x-bit for
+    all files pointed to by a symlink)
+
+ -- Heiko Schlittermann <heiko@lotte.sax.de>  Fri, 18 Oct 1996 18:32:06 +0200
+
+dpkg (1.4.0.2) unstable; urgency=medium
+
+  * dpkg-buildpackage.sh: reverted the quoting change -- (you
+    should use super, sudo, realy, but not su.  Or write a wrapper
+    around su)
+  * dpkg-buildpackge.sh: passing -m, -C, -v options to dpkg-genchanges
+    more the way Ian likes ;-)
+  * dpkg-source.pl: new function deoctify() as replacement for eval()
+    (turn \ddd into the corresponding character) [rem: probably better
+    solution would be to convert cpios output names into complete \ddd 
+    representation as well tars output names] 
+  * dpkg-source.pl: fixed 2 typos in failure message on creating 
+    $origtargz.tmp-nest.
+  * main/main.c: typo `tread' -> `treat'
+  * main/enquiry.c: fixed the ignorance for some relations in --compare-versions
+  * main/enquiry.c: missing version is now handled as described in `dpkg --help'
+    (or at least as I understood `dpkg --help' PLEASE TRY IT)
+  * lib/parsehelp.c: fixed parsing of epoch information
+
+ -- Heiko Schlittermann <heiko@lotte.sax.de>  Sun, 6 Oct 1996 23:27:47 +0200
+
+dpkg (1.4.0.1) unstable; urgency=medium
+
+  * dpkg-source: doesn't get screwed up from hardlinks
+    in the archive now
+  * dpkg-source: doesn't get screwed up from `unprintable' characters
+    in file names (e.g. from the kbd package) 
+  * controllib.pl: $varlistvile -> $varlistfile (thanx Karl Sackett)
+  * dpkg-buildpackge: quoting for $rootcommand (thanx  Michael Meskes)
+    and `eval' as default $rootcommand
+  * dpkg-*, controllib.pl: created debian/files and debian/substvars
+    are chown'ed to `getlogin()' and its group
+  * doc/: mv changed to mv -f
+  * dpkg-buildpackage: added an option -a for overriding the
+    architecture in the changes _file_name_
+  * dpkg-buildpackage: pass -m* -v* .. options to dpgk-genchangelog
+  * dpkg-name moved to dpkg-dev
+
+ -- Heiko Schlittermann <heiko@lotte.sax.de>  Sat, 21 Sep 1996 22:06:01 +0200
+
 dpkg (1.4.0) unstable; urgency=low (HIGH for new source format)
 
   * Corrected buffer overrun when dpkg-deb generates filename.  (Bug#4467.)
@@ -1407,7 +1900,7 @@ Changes in dpkg 0.93.29:
 
 Changes in dpkg 0.93.28:
 
-* Removed undef of %xx_p21 in read_database_file, which caused the
+* Removed undef of 0x_p21 in read_database_file, which caused the
   the whole status database to become trashed when any update files
   were read.
 * Make infinite-loop prevention and cycle detection work.
index fdc01ef706de62ecfd651c3e0eb5e385b50cea7c..8bfcf11403bbfbac522920a0352c0d39b464f767 100644 (file)
@@ -1,13 +1,14 @@
 Source: dpkg
 Section: base
 Priority: required
-Maintainer: Ian Jackson <ian@chiark.greenend.org.uk>
+Maintainer: Ian Jackson and others <dpkg-maint@chiark.greenend.org.uk>
 Standards-Version: 2.1.0.0
 
 Package: dpkg
 Architecture: any
 Essential: yes
 Pre-Depends: ${shlibs:Pre-Depends}
+Suggests: developer-keyring
 Description: Package maintenance system for Debian Linux
  This package contains the programs which handle the installation and
  removal of packages on your system.
@@ -23,7 +24,9 @@ Package: dpkg-dev
 Section: devel
 Priority: important
 Architecture: all
-Recommends: cpio (>= 2.4.2-2), patch
+Depends: perl
+Recommends: cpio (>= 2.4.2-2), patch (>= 2.2-1), gcc, make
+Suggests: gnupg, developer-keyring
 Conflicts: dpkgname
 Replaces: dpkgname, dpkg (<< 1.4.0)
 Description: Package building tools for Debian Linux
index fe0baf1e91cb2f10ea9ddc5b29f2e25f33c5c1ec..37e210560e274256175e5cf9a348ef6e186907c4 100644 (file)
@@ -30,8 +30,8 @@ for more details.
 You should have received a copy of the GNU General Public License with
 your Debian GNU/Linux system, in /usr/doc/copyright/GPL, or with the
 dpkg source package as the file COPYING.  If not, write to the Free
-Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
+Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+02111-1307, USA.
 
 /usr/bin/md5sum is compiled from md5.[ch] (written by Colin Plumb in
 1993 and modified by Ian Jackson in 1995) and md5sum.c (written by
index ff2566925455c93d0ba61d39bb130c99d2288e73..9aeb9b4800e70cdfdbf7f3204dfb9d6e1340aa87 100755 (executable)
@@ -142,13 +142,13 @@ if [ ! -f status ]
 then
        echo 'Adding "status" file to dpkg system database ...'
 
-       rm -f /tmp/dpp.$$ || true
+       rm -f dpp.$$ || true
 
-       ls -1 deb/*.control >/tmp/dpp.$$
+       ls -1 deb/*.control >dpp.$$
        sed -e 's:^deb/::; s:\.control$: Install OK Installed:;' \
-               </tmp/dpp.$$ >status.new
+               <dpp.$$ >status.new
 
-       rm /tmp/dpp.$$
+       rm dpp.$$
        mv status.new status
 fi
 
index b7a3b21bf41988ade1bc7e246c75b0f26b986dd7..94ced19e7cf08c83304643336dbd27c90b1da9fd 100755 (executable)
@@ -3,7 +3,7 @@
 if [ "$1" != "upgrade" ]; then exit 0; fi
 
 set -e
-# i386elf: dpkg --assert-support-predepends
+# i386elf: [ "$2" = "1.4.0.6" ] || dpkg --assert-support-predepends
 
 oldver="$2"
 
@@ -15,21 +15,21 @@ esac
 echo '
 contemplating upgrade of dpkg from pre-0.93.50 version ...'
 
-trap 'es=$?; rm -f /tmp/bp.$$; exit $es' 0
+trap 'es=$?; rm -f /var/lib/dpkg/bp.$$; exit $es' 0
 
 perl -000 -ne 'print $x if m/^Package:\s+(\S+\n)/im &&
                          ($x=$1) ne "dpkg\n" &&
                          m/^Status:.*(unpacked|postinst)/im' \
-       /var/lib/dpkg/status >/tmp/bp.$$
+       /var/lib/dpkg/status >/var/lib/dpkg/bp.$$
 
-if test -s /tmp/bp.$$
+if test -s /var/lib/dpkg/bp.$$
 then
        echo '
 
 WARNING - have you read the release notes for this upgrade ?
 
 The following packages have been unpacked but not yet configured:'
-       echo '' `cat /tmp/bp.$$`
+       echo '' `cat /var/lib/dpkg/bp.$$`
        echo -n '
 If you proceed with the dpkg upgrade with these packages in this state
 you will LOSE ANY CONFIGURATION CHANGES that have been made to their
index 82ab3d3a712105f53653c563cbe82222623ae831..e0a72966f83245b05a0ea951ea20422332a49acb 100755 (executable)
@@ -1,31 +1,84 @@
 #!/usr/bin/make -f
 
-DIR:=$(shell pwd)
+SHELL=bash
+
+.PHONY: clean build binary binary-trees binary-arch binary-indep
+
+BUILD := $(shell pwd)/debian/build
+DIR := $(shell pwd)
 
 arch=$(shell dpkg --print-architecture)
 mcidir=debian/tmp-main/DEBIAN
 
-build:
+
+Makefile.in: Makefile.am
        $(checkdir)
-       ./configure --prefix=/usr
-       $(MAKE)
-       touch build
+       $(RM) config.status
+       mkdir -p automake
+       aclocal -I ./automake
+       autoheader
+       autoconf
+       gettextize --force
+       libtoolize --automake --copy --force
+       $(RM) config.sub config.guess 
+       ln -s /usr/share/automake/config.sub .
+       automake --add-missing
 
-clean:
+$(BUILD)/Makefile: Makefile.in
        $(checkdir)
-       -rm -f build
-       -$(MAKE) -i distclean || $(MAKE) -f Makefile.in -i distclean
-       -rm -rf debian/tmp* *~ *.orig ./#*# tmp.* debian/files*
-       -rm -f config.cache config.status config.h install config.log
-       find -name '*~' -print0 | xargs -r0 rm --
+       $(RM) -r debian/build
+       install -d debian/build
+       cd $(BUILD) && ../../configure \
+               --enable-shared --with-included-gettext \
+               --prefix=/usr \
+               --datadir=/usr/share \
+               --sysconfdir=/etc \
+               --sharedstatedir=/var/lib \
+               --localstatedir=/var/lib
+# libtool -rpath workaround based on a suggestion by Yann Dirson
+# <dirson@debian.org>
+#
+# It is supposed to be inserted in configure.in, but I didn't want
+# to re-run autoconf (since that bloats the Debian diff unnecessarily),
+# so I just patch libtool after running configure.  -- Richard Braakman
+# <dark@xs4all.nl>
+#
+# The version of libtool included with LessTif unfortunately insists on
+# linking with -rpath, i.e. hardwiring locations. This is not desirable.
+#
+# The dummy define is improbable enough not to conflict with anything; it is
+# just here to fool libtool by making it believe it gave some useful info to
+# gcc.
+       sed < $(BUILD)/libtool > $(BUILD)/libtool.foo \
+               's/^hardcode_libdir_flag_spec.*$$/hardcode_libdir_flag_spec=" -D__LIBTOOL_IS_A_FOOL__ "/'
+       mv $(BUILD)/libtool.foo $(BUILD)/libtool
+# More hackery: this will also patch the generated libtool to explicitly
+# link libraries against the libraries they depend on.  (particularly libc)
+       sed < $(BUILD)/libtool > $(BUILD)/libtool.foo '/^archive_cmds="/s/"$$/ \\$$deplibs"/'
+       mv $(BUILD)/libtool.foo $(BUILD)/libtool
+       chmod 755 $(BUILD)/libtool
 
-binary:                binary-arch binary-indep
+clean: $(BUILD)/Makefile
+       $(checkdir)
+       $(MAKE) -C $(BUILD) -i maintainer-clean
+       $(RM) -r debian/{build,files,substvars,tmp*}
+       $(RM) $(BUILD)/dpkg-*.tar.gz
+       $(RM) po/*.gmo
+       $(RM) config.log
+       find . \( -name '*~' -o -name '#*#' \) -print0 | xargs -r0 $(RM) --
 
-binary-trees:  checkroot build
+build: $(BUILD)/Makefile
        $(checkdir)
-       -rm -rf debian/tmp-{main,dev}
+       $(MAKE) -C $(BUILD)
+
+binary: binary-arch binary-indep
+
+binary-trees: build
+       $(checkdir)
+       -$(RM) -r debian/tmp-{main,dev}
        install -d debian/tmp-{main,dev}/{DEBIAN,etc/dpkg,usr/doc/dpkg}
        install -d debian/tmp-dev/usr/{lib/dpkg,doc/dpkg-dev,man/man1,man/man8,sbin,bin}
+       install -d debian/tmp-main/sbin
        set -e; if [ $(arch) = i386 ]; then \
                sed -e 's/^# i386elf: //' <debian/preinst >$(mcidir)/preinst ; \
        else \
@@ -37,65 +90,89 @@ binary-trees:       checkroot build
                        debian/tmp-dev/etc/dpkg/shlibs.default ; \
        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 -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/
        chmod +x $(mcidir)/{postinst,prerm,preinst}
-       $(MAKE) prefix=$(DIR)/debian/tmp-main/usr \
-               datadir=$(DIR)/debian/tmp-main/var/lib/dpkg \
-               etcdir=$(DIR)/debian/tmp-main/etc \
+       $(MAKE) -C $(BUILD) top_distdir=. dist 
+       $(MAKE) -C $(BUILD) \
+               prefix=$(DIR)/debian/tmp-main/usr \
+               sysconfdir=$(DIR)/debian/tmp-main/etc \
+               datadir=$(DIR)/debian/tmp-main/usr/share \
+               sharedstatedir=$(DIR)/debian/tmp-main/var/lib \
+               localstatedir=$(DIR)/debian/tmp-main/var/lib \
                install
-       find debian/tmp-main/usr/man -type f | xargs gzip -9v
+       find debian/tmp-main/usr/man -type f | xargs gzip -9vf
        set -e; for f in dpkg-buildpackage dpkg-gencontrol dpkg-distaddfile \
                  dpkg-parsechangelog dpkg-genchanges dpkg-shlibdeps; do \
                rm debian/tmp-main/usr/man/man1/$$f.1; \
                ln -s dpkg-source.1.gz debian/tmp-main/usr/man/man1/$$f.1.gz ; \
        done
-       gzip -9v debian/tmp-main/usr/doc/dpkg/changelog.*
+       ln -s ../man7/undocumented.7.gz debian/tmp-main/usr/man/man1/dpkg-divert.1.gz
+       gzip -9vf debian/tmp-main/usr/doc/dpkg/changelog*
        cp debian/copyright debian/tmp-main/usr/doc/dpkg/copyright
        cp debian/copyright debian/tmp-dev/usr/doc/dpkg-dev/copyright
        cp debian/dev-README debian/tmp-dev/usr/doc/dpkg-dev/README
-       cp TODO debian/tmp-dev/usr/doc/dpkg/WISHLIST
        set -e; for f in \
- usr/doc/dpkg/{programmer.html,policy.html,developer-keys.pgp,changelog.manuals.gz} \
+ usr/doc/dpkg/{internals.html,changelog.manuals.gz} \
  usr/bin/dpkg-{source,genchanges,gencontrol,shlibdeps,buildpackage,parsechangelog} \
- usr/bin/{dpkg-distaddfile,822-date,dpkg-scanpackages} \
+ usr/bin/{dpkg-distaddfile,822-date,dpkg-scanpackages,dpkg-name} \
  usr/man/man1/dpkg-{source,genchanges,gencontrol,shlibdeps,buildpackage}.1.gz \
- usr/man/man1/{dpkg-parsechangelog,dpkg-distaddfile,822-date}.1.gz \
- usr/man/man5 usr/man/man8/dpkg-scanpackages.8.gz usr/lib/emacs \
+ usr/man/man1/{dpkg-parsechangelog,dpkg-distaddfile,822-date,dpkg-name}.1.gz \
+ usr/man/man5 usr/man/man8/dpkg-scanpackages.8.gz \
  usr/lib/dpkg/parsechangelog usr/lib/dpkg/controllib.pl \
                ; do mv debian/tmp-main/$$f debian/tmp-dev/$$f; done
 
-binary-indep:  checkroot build binary-trees
+binary-indep: binary-trees
        $(checkdir)
        dpkg-gencontrol -pdpkg-dev -Pdebian/tmp-dev
        chown -R root.root debian/tmp-dev
        chmod -R g-ws,a+r,u+w debian/tmp-dev
        dpkg-deb --build debian/tmp-dev ..
-       set -e -x; cd doc; for f in policy programmer; do \
-               debiandoc2ps -pa4 -O $$f.sgml | gzip -9v >../../$$f.ps.gz; \
-               dpkg-distaddfile -f../debian/files $$f.ps.gz byhand -; \
-               GZIP=-9v tar zcf ../../$$f.html.tar.gz $$f.html; \
-               dpkg-distaddfile -f../debian/files $$f.html.tar.gz byhand -; \
+       set -e -x; for f in internals; do \
+               if test -f $(BUILD)/doc/$$f.ps; then \
+                       cp -p $(BUILD)/doc/$$f.ps $(DIR)/..; \
+               elif test -f $(DIR)/doc/$$f.ps; then \
+                       cp -p $(DIR)/doc/$$f.ps $(DIR)/..; \
+               else \
+                       echo "unable to locate $$f.ps"; false; \
+               fi; \
+               gzip -9vf $(DIR)/../$$f.ps; \
+               dpkg-distaddfile -f$(DIR)/debian/files $$f.ps.gz byhand -; \
+               if test -d $(BUILD)/doc/$$f.html; then \
+                       GZIP=-9vf tar -C $(BUILD)/doc -zcf $(DIR)/../$$f.html.tar.gz $$f.html; \
+               elif test -d $(DIR)/doc/$$f.html; then \
+                       GZIP=-9vf tar -C $(DIR)/doc -zcf $(DIR)/../$$f.html.tar.gz $$f.html; \
+               else \
+                       echo "unable to locate $$f.html"; false; \
+               fi; \
+               dpkg-distaddfile -f$(DIR)/debian/files $$f.html.tar.gz byhand -; \
        done
+       set -e; \
+               version=`sed -n 's/^Version: //p' $(DIR)/debian/tmp-dev/DEBIAN/control`; \
+               file=dpkg-$${version}.tar.gz; \
+               cp $(BUILD)/$${file} $(DIR)/..; \
+               dpkg-distaddfile -f$(DIR)/debian/files $${file} byhand -;
 
-binary-arch:   checkroot build binary-trees
-       touch debian/tmp-main/var/lib/dpkg/{status,available}
-       dpkg-shlibdeps -dPre-Depends main/dpkg dselect/dselect
+binary-arch: binary-trees
+       $(checkdir)
+       mv debian/tmp-main/usr/sbin/start-stop-daemon debian/tmp-main/sbin/start-stop-daemon
+       -strip debian/tmp-main/usr/{bin,sbin}/* debian/tmp-main/sbin/*
+       -strip --strip-unneeded debian/tmp-main/usr/lib/libdpkg.so.*
+       -strip --strip-debug debian/tmp-main/usr/lib/libdpkg.a
+       dpkg-shlibdeps -dPre-Depends debian/tmp-main/usr/{bin,sbin}/*
        dpkg-gencontrol -pdpkg -Pdebian/tmp-main
        chown -R root.root debian/tmp-main
        chmod -R g-ws,a+r,u+w debian/tmp-main
-       set -e; cd debian/tmp-main; \
-        version=`sed -n 's/^Version: //p' DEBIAN/control`; \
-        file=dpkg_$${version}_$(arch).nondebbin.tar; \
-        tar cf ../../../$${file} usr var && gzip -9vf ../../../$${file}; \
-        cd ../..; dpkg-distaddfile $${file}.gz byhand -
-       rm debian/tmp-main/var/lib/dpkg/{status,available}
+       set -e; \
+               version=`sed -n 's/^Version: //p' $(DIR)/debian/tmp-main/DEBIAN/control`; \
+               file=dpkg_$${version}_$(arch).nondebbin.tar; \
+               tar -C $(DIR)/debian/tmp-main -cf $(DIR)/../$${file} usr var; \
+               gzip -9vf $(DIR)/../$${file}; \
+               dpkg-distaddfile -f$(DIR)/debian/files $${file}.gz byhand -
        dpkg-deb --build debian/tmp-main ..
 
 define checkdir
-       test -f include/dpkg.h
+       test -f include/dpkg.h.in
 endef
-
-checkroot:
-       $(checkdir)
-       test root = "`whoami`"
-
-.PHONY: binary source diff clean checkroot
diff --git a/debian/shlibs b/debian/shlibs
new file mode 100644 (file)
index 0000000..f06ce99
--- /dev/null
@@ -0,0 +1 @@
+libdpkg 0              dpkg (>= 1.4.0.9)
index 10591b27025450f47f049e3e34544199b3c7ba73..ea52269cbeb1e0ee1b3aad0b4ee56f0e392e7a9e 100644 (file)
@@ -1,14 +1,15 @@
-libc 5         libc5 (>= 5.2.18)
-libm 5         libc5 (>= 5.2.18)
-libncurses 3.0 ncurses3.0
-libICE 6       elf-x11r6lib
-libPEX5        6       elf-x11r6lib
-libSM  6       elf-x11r6lib
-libX11 6       elf-x11r6lib
-libXIE 6       elf-x11r6lib
-libXaw 6       elf-x11r6lib
-libXext        6       elf-x11r6lib
-libXi  6       elf-x11r6lib
-libXmu 6       elf-x11r6lib
-libXt  6       elf-x11r6lib
-libXtst        6       elf-x11r6lib
+libc 6         libc6
+libm 6         libc6
+libncurses 3.4  ncurses3.4
+libICE  6       xlib6g (>= 3.3-5)
+libPEX5 6       xlib6g (>= 3.3-5)
+libSM   6       xlib6g (>= 3.3-5)
+libX11  6       xlib6g (>= 3.3-5)
+libXIE  6       xlib6g (>= 3.3-5)
+libXaw  6       xlib6g (>= 3.3-5)
+libXext 6       xlib6g (>= 3.3-5)
+libXi   6       xlib6g (>= 3.3-5)
+libXmu  6       xlib6g (>= 3.3-5)
+libXt   6       xlib6g (>= 3.3-5)
+libXtst 6       xlib6g (>= 3.3-5)
+libXp   6       xlib6g (>= 3.3-5)
diff --git a/debian/shlibs.default.m68k b/debian/shlibs.default.m68k
deleted file mode 120000 (symlink)
index bd1befd..0000000
+++ /dev/null
@@ -1 +0,0 @@
-shlibs.default.i386
\ No newline at end of file
diff --git a/debian/shlibs.local b/debian/shlibs.local
new file mode 100644 (file)
index 0000000..f1b4623
--- /dev/null
@@ -0,0 +1 @@
+libdpkg 0
diff --git a/debian/substvars b/debian/substvars
deleted file mode 100644 (file)
index 915d7d5..0000000
+++ /dev/null
@@ -1 +0,0 @@
-shlibs:Pre-Depends=libc5 (>= 5.2.18), ncurses3.0
diff --git a/doc/ChangeLog b/doc/ChangeLog
new file mode 100644 (file)
index 0000000..336bc0a
--- /dev/null
@@ -0,0 +1,147 @@
+debian-manuals (2.1.2.2) frozen unstable;
+
+  * Fixed even more typographical and grammatical errors in Policy and 
+  Programmer's manual
+  * Corrected the contact email addresses again.
+  * Added a paragraph to Policy 6.3 on taking over an old package (Guy Maor)
+  * Added a paragraph to Programmer 4.2.14 on listing distributions to load
+  a package into. (Guy Maor)
+  * Further clarification of use of absolute pathnames in scripts in 
+  Programmer 6.1. 
+
+ -- David Morris <bweaver@worf.netins.net>  Tue, 3 Dec 1996 23:28:04 -0600
+
+debian-manuals (2.1.2.1) frozen unstable;
+  
+  * Many editorial and formatting revisions with suggestions from Ian Jackson,
+  Guy Maor and others  
+  * correction of chiark address in Policy 6.2
+  * footnote in Programmers chapter 2 pointing to deb(5) manpage for 
+  description of deb file format.
+  * addition of more dpkg examples in Programmer chapter 2 
+  * Replace paragraph in Policy 4.1 outlining compiling parameters for 
+  shared libraries.
+  * Added paragraph in Programmer 6.1 on paths in maintainer scripts
+  (Bug #2481)
+  * Cleaned up language and formatting of Programmer's 12.2, shlibs
+  * Corrected contact addresses for listmaster and override-change
+
+ -- David Morris <bweaver@worf.netins.net>  Wed, 27 Nov 1996 08:17:16 -0600
+
+debian-manuals (2.1.2.0) frozen unstable;
+
+  * Mostly editorial changes in Policy Manual.
+  * Added summary of distribution criteria to Introduction
+  * Added section headings for copyright criteria
+  * Fixed typos (Bugs #4485, #4622)
+  * Added paragraph in Compilation Options related to use of shared and 
+    static libraries. (Bug #5299)
+  * Paragraph added about where to find PGP and other export restricted 
+    packages in section on Procedure
+  * Change in List administrator and in the contact address for becoming 
+    a package maintainer
+  * A paragraph added related to who to contact for package maintainer changes.
+  * Changed where to send upload announcements: uploads destined for unstable,
+    frozen, or experimental go to debian-devel-changes.
+
+  * Made some mostly editorial changes to Programmers Manual.
+  * Added a recommendation to debmake in Introduction.
+  * A further interpretation of the various Distributions is added with
+    the intent of helping people decide which one to choose. (section 4.2.14)
+  * Section 12 on Shared Libraries expanded with further technical information
+    on various shlib files
+  * Section in 2.2 on format of shlib file moved to new subsection within 12.
+  * Paragraph on adding a symlink without version number added to Shared 
+    Library Section (Guy Maor, Bug #5299)
+
+ -- David Morris <bweaver@worf.netins.net>  Fri, 22 Nov 1996 23:41:39 -0600
+
+debian-manuals (2.1.1.0) unstable;
+
+  * Hard links are forbidden in source packages (they didn't work anyway,
+    and can't easily be made to work reliably).
+  * Do not use dpkg-divert or update-alternatives without consultation.
+
+  * Do not need to declare dependencies on Essential packages.
+  * Restrictions on Pre-Depends stated in policy manual.
+  * debian/substvars file is now almost always auto-generated.
+  * Shared libraries must be installed stripped.
+  * Essential and Pre-Depends put together in policy manual.
+
+  * Explained component-wise (file-wise) vs. package-wise dependencies.
+
+ -- Ian Jackson <ian@chiark.greenend.org.uk>  Thu, 12 Sep 1996 01:00:41 +0100
+
+debian-manuals (2.1.0.0) unstable;
+
+  * Upstream changelog must be installed too (was just recommended).
+
+  * Modification to use dpkg-shlibdeps added to conversion instructions.
+  * Packages which are buggy and orphaned but which are preserved for
+    compatibility go in contrib.
+
+  * Programmers' manual source package section refers to conversion
+    instructions in policy manual.
+  * Make it clear that recommending a non-free or contrib package puts a
+    package in contrib.
+
+ -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Sun, 1 Sep 1996 17:47:18 +0100
+
+debian-manuals (2.0.1.0) unstable;
+
+  * varargs.h and libtermcap are obsolete - use stdarg.h and ncurses.
+  * Shared library link/library ordering corrected (aargh).
+  * When to byte-compile Elisp files.
+  * Missing final newlines not represented by dpkg-source.
+
+  * Must post upload announcements to debian-changes.
+  * Moved some sections into new `configuring and building' chapter.
+  * Typo fixes.
+
+ -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Sat, 31 Aug 1996 20:07:22 +0100
+
+debian-manuals (2.0.0.0) unstable;
+
+  * Footnote added OK'ing copyrights which require name changes.
+  * More detail about changelog format names.
+
+  * Problematic licence restrictions are formatted as lists.
+  * Mentioned 822-date utility as way to generate RFC822 format dates.
+  * Typos corrected.
+  * Released.
+
+ -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Mon, 26 Aug 1996 14:27:34 +0100
+
+debian-manuals (0.2.1.1) unstable;
+
+  * Can't overwrite directories in one package with files in another.
+
+ -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Sat, 24 Aug 1996 18:44:54 +0100
+
+debian-manuals (0.2.1.0) unstable;
+
+  * Policy says when and how to include original source in upload.
+
+  * Need -sa on dpkg-genchanges/dpkg-buildpackage when converting.
+
+  * Use minor patchlevel for meaning changes which don't affect packages.
+  * More verbosity about netiquette.
+  * Reorganised participation and upload policy: merged with mailing lists.
+
+ -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Fri, 23 Aug 1996 12:48:09 +0100
+
+debian-manuals (0.2.0.1) experimental;
+
+  * Said that system administrators' manual does not exist.
+
+ -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Fri, 23 Aug 1996 04:05:36 +0100
+
+debian-manuals (0.2.0.0) experimental;
+
+  * Draft releases.
+
+ -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Wed, 21 Aug 1996 15:07:53 +0100
+
+Local variables:
+mode: debian-changelog
+End:
diff --git a/doc/Makefile.am b/doc/Makefile.am
new file mode 100644 (file)
index 0000000..8c03502
--- /dev/null
@@ -0,0 +1,110 @@
+## Process this file with automake to produce a Makefile.in
+
+AUTOMAKE_OPTIONS       = 1.1 foreign
+
+## Directory definitions
+
+docdir                 = $(prefix)/doc
+pkgdocdir              = $(docdir)/@PACKAGE@
+
+## Automake variables
+
+man_MANS               = deb.5 deb-old.5 deb-control.5
+pkgdoc_DATA            = 
+EXTRA_DIST             = database-structure.fig changelog \
+                         manuals-version \
+                         $(SGMLFILES) $(man_MANS) \
+                         texinfo.dtd \
+                         texinfo.texi_mapping texinfo.debian_mapping
+
+HTMLDOCSTAMPS          = internals.html-stamp
+HTMLDIRS               = internals.html 
+SGMLFILES              = internals.sgml
+HARDCOPY               = internals.ps internals.dvi
+
+CLEANFILES             = $(srcdir)/manuals-version.new
+DISTCLEANFILES         = 
+INFOFILES              = internals.info
+
+## Rules
+
+SUFFIXES               = .html-stamp .sgml .ps .fig .monops
+
+.PHONY: all install-data-local uninstall-local dist-hook clean-local
+
+all: $(HTMLDOCSTAMPS) $(HARDCOPY) $(INFOFILES)
+
+$(srcdir)/manuals-version: $(top_srcdir)/debian/changelog
+       v=`dpkg-parsechangelog -l$< | sed -n 's/^Version: //p'` && \
+       echo "<!entity manuals-version \"$$v\">" >$@.new
+       echo "<!entity dpkg-version \"$(VERSION)\">" >>$@.new
+       (cmp -s $@.new $@ || mv -f $@.new $@) && rm -f $@.new
+
+internals.sgmls: internals.sgml texinfo.dtd manuals-version
+       nsgmls $< > $@ || ($(RM) $@ && false)
+
+internals.texi: internals.sgmls texinfo.texi_mapping
+       sgmlsasp $(srcdir)/texinfo.texi_mapping < $< > $@ || ($(RM) $@ && false)
+       perl -pi -e 's/printindex FN/printindex fn/' $@ || ($(RM) $@ && false)
+
+internals.ps: internals.dvi
+       dvips -t letter -o $@ $^
+
+internals.dvi: internals.texi
+       texi2dvi $^
+
+internals.info: internals.texi
+       makeinfo $^
+
+internals.html-stamp: internals.texi
+       -$(RM) -r $*.html*
+       mkdir $*.html
+       (cd $*.html && texi2html -monolithic ../$<)
+       ln -s internals.html $*.html/index.html
+       touch $@
+
+database-structure.ps: database-structure.fig
+       fig2dev -L ps -c -l _ -P <$< >ps
+       mv -f ps $@
+
+database-structure.monops: database-structure.ps
+       perl -pe 's:^/(col[0-7]) \{[01 ]*1[01 ]* setrgbcolor\}\
+ bind def$$::/$$1 {} bind def:' $< >ps
+       mv -f ps $@
+
+install-data-local: $(HTMLDOCSTAMPS)
+       $(mkinstalldirs) $(pkgdocdir)
+       $(INSTALL_DATA) $(top_srcdir)/debian/changelog $(pkgdocdir)/changelog
+       $(INSTALL_DATA) $(srcdir)/changelog $(pkgdocdir)/changelog.manuals
+       set -e; for f in $^; do \
+               g=`echo $$f | sed -e 's/-stamp$$//'`; \
+               cp -r $$g $(pkgdocdir)/`basename $$g`; \
+       done
+
+uninstall-local:
+       -$(RM) $(pkgdocdir)/changelog.manuals $(pkgdocdir)/changelog
+       -cd $(pkgdocdir) && rm -rf $(HTMLDIRS)
+
+dist-hook: $(HTMLDOCSTAMPS) $(HARDCOPY) internals.sgmls internals.texi internals.info
+       cp -p $^ $(distdir)
+       for f in `echo $^ | tr ' \t' '\n\n' | sed -ne 's:.html-stamp::gp'`; do set -e; \
+               $(RM) -r $(distdir)/`basename $$f.html`; \
+               mkdir $(distdir)/`basename $$f.html`; \
+               cp -p $$f.html/* $(distdir)/`basename $$f.html`; \
+       done
+       $(RM) -r $(distdir)/obsolete
+       cp -rp $(srcdir)/obsolete $(distdir)/
+       cp -p $(HARDCOPY) $(distdir)/
+
+maintainer-clean-local: doc-clean
+       $(RM) manuals-version
+       -$(RM) $(srcdir)/Makefile.in 
+
+doc-clean:
+       -$(RM) *.{aux,cp,dvi,fn,ky,log,pg,toc,tp,vr,bak}
+       -$(RM) internals.{FN,fns,sgmls,texi,info*}
+       -$(RM) -r {packaging,internals}.{texi,html-stamp,text,ps,lout}
+       -$(RM) -r {packaging,internals}.html
+       -$(RM) manuals-version*
+
+## End of file.
diff --git a/doc/Makefile.in b/doc/Makefile.in
deleted file mode 100644 (file)
index 381f98c..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-# Copyright (C) 1994 Ian Murdock <imurdock@debian.org>
-# Copyright (C) 1994,1995 Ian Jackson <ijackson@nyx.cs.du.edu>
-#
-#   This is free software; you can redistribute it and/or modify
-#   it under the terms of the GNU General Public License as
-#   published by the Free Software Foundation; either version 2,
-#   or (at your option) any later version.
-#
-#   This is distributed in the hope that it will be useful, but
-#   WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#   GNU General Public License for more details.
-#
-#   You should have received a copy of the GNU General Public
-#   License along with dpkg; if not, write to the Free Software
-#   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-srcdir = @srcdir@
-VPATH = @srcdir@
-
-prefix = @prefix@
-infodir = $(prefix)/info
-mandir = $(prefix)/man
-man5dir = $(mandir)/man5
-man5 = 5
-docdir = $(prefix)/doc
-dpkgdocdir = $(docdir)/dpkg
-
-DIST = Makefile.in $(SRC) $(MAN)
-
-INSTALL = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_DATA = @INSTALL_DATA@
-
-MAKEINFO = makeinfo
-TEXI2DVI = texi2dvi
-
-SGMLDOCSTAMPS= programmer.html-stamp policy.html-stamp
-
-# Files folded into manuals
-OBSOLETEDOCS= descriptions.txt upgrades+errors.txt \
- maintainer-script-args.txt virtual-dependencies.txt \
- auto-deconfiguration.txt dependency-ordering.txt \
- disappear-replace.txt diversions.text \
- essential-flag.txt version-ordering.txt
-
-all:           $(DPKGDOCS) $(SGMLDOCSTAMPS)
-
-manuals-version:       changelog Makefile
-               v=`dpkg-parsechangelog -lchangelog | sed -n 's/^Version: //p'` && \
-               echo "<!entity manuals-version \"$$v\">" >$@.new
-               d=`pwd | sed -e 's,/doc$$,,; s,^.*dpkg-\([0-9.]*\),\1,'` && \
-               echo "<!entity dpkg-version \"$$d\">" >>$@.new
-               mv $@.new $@
-
-%.html-stamp:  %.sgml manuals-version
-               rm -rf $*.html
-               debiandoc2html $<
-               touch $@
-
-guidelines.info: guidelines.texi
-               $(MAKEINFO) $(srcdir)/guidelines.texi
-
-database-structure.ps: database-structure.fig
-               fig2dev -L ps -c -l _ -P <database-structure.fig >ps
-               mv ps database-structure.ps
-
-database-structure.monops: database-structure.ps
-               perl -pe 's:^/(col[0-7]) \{[01 ]*1[01 ]* setrgbcolor\}\
- bind def$$:/$$1 {} bind def:' database-structure.ps >ps
-               mv ps database-structure.monops
-
-clean:
-               rm -f $(SGMLDOCSTAMPS)
-               rm -f database-structure.ps database-structure.monops ps
-               rm -f *.{aux,cp,dvi,fn,ky,log,pg,toc,tp,vr,bak}
-               rm -f guidelines.info*
-               rm -rf {programmer,policy}.{html*,sasp*,text*,ps*,lout*}
-
-distclean:
-               rm -f Makefile *.orig *~ *.~* ./#*#
-
-install:       all
-               $(INSTALL_DATA) deb.5 $(man5dir)/deb.$(man5)
-               $(INSTALL_DATA) deb-old.5 $(man5dir)/deb-old.$(man5)
-               $(INSTALL_DATA) deb-control.5 $(man5dir)/deb-control.$(man5)
-               set -e; for f in $(SGMLDOCSTAMPS) ; do \
-                       g=`echo $$f | sed -e 's/-stamp$$//'` ; \
-                       cp -r $$g $(dpkgdocdir)/$$g ; \
-               done
-               $(INSTALL_DATA) developer-keys.pgp $(dpkgdocdir)/.
-               $(INSTALL_DATA) ../debian/changelog $(dpkgdocdir)/changelog.dpkg
-               $(INSTALL_DATA) changelog $(dpkgdocdir)/changelog.manuals
index c16a1edba6ce9952b61d348a7cec332bbf634182..336bc0ae7a0cb1e6ff9176cbbb618b777d42ea1d 100644 (file)
@@ -1,3 +1,61 @@
+debian-manuals (2.1.2.2) frozen unstable;
+
+  * Fixed even more typographical and grammatical errors in Policy and 
+  Programmer's manual
+  * Corrected the contact email addresses again.
+  * Added a paragraph to Policy 6.3 on taking over an old package (Guy Maor)
+  * Added a paragraph to Programmer 4.2.14 on listing distributions to load
+  a package into. (Guy Maor)
+  * Further clarification of use of absolute pathnames in scripts in 
+  Programmer 6.1. 
+
+ -- David Morris <bweaver@worf.netins.net>  Tue, 3 Dec 1996 23:28:04 -0600
+
+debian-manuals (2.1.2.1) frozen unstable;
+  
+  * Many editorial and formatting revisions with suggestions from Ian Jackson,
+  Guy Maor and others  
+  * correction of chiark address in Policy 6.2
+  * footnote in Programmers chapter 2 pointing to deb(5) manpage for 
+  description of deb file format.
+  * addition of more dpkg examples in Programmer chapter 2 
+  * Replace paragraph in Policy 4.1 outlining compiling parameters for 
+  shared libraries.
+  * Added paragraph in Programmer 6.1 on paths in maintainer scripts
+  (Bug #2481)
+  * Cleaned up language and formatting of Programmer's 12.2, shlibs
+  * Corrected contact addresses for listmaster and override-change
+
+ -- David Morris <bweaver@worf.netins.net>  Wed, 27 Nov 1996 08:17:16 -0600
+
+debian-manuals (2.1.2.0) frozen unstable;
+
+  * Mostly editorial changes in Policy Manual.
+  * Added summary of distribution criteria to Introduction
+  * Added section headings for copyright criteria
+  * Fixed typos (Bugs #4485, #4622)
+  * Added paragraph in Compilation Options related to use of shared and 
+    static libraries. (Bug #5299)
+  * Paragraph added about where to find PGP and other export restricted 
+    packages in section on Procedure
+  * Change in List administrator and in the contact address for becoming 
+    a package maintainer
+  * A paragraph added related to who to contact for package maintainer changes.
+  * Changed where to send upload announcements: uploads destined for unstable,
+    frozen, or experimental go to debian-devel-changes.
+
+  * Made some mostly editorial changes to Programmers Manual.
+  * Added a recommendation to debmake in Introduction.
+  * A further interpretation of the various Distributions is added with
+    the intent of helping people decide which one to choose. (section 4.2.14)
+  * Section 12 on Shared Libraries expanded with further technical information
+    on various shlib files
+  * Section in 2.2 on format of shlib file moved to new subsection within 12.
+  * Paragraph on adding a symlink without version number added to Shared 
+    Library Section (Guy Maor, Bug #5299)
+
+ -- David Morris <bweaver@worf.netins.net>  Fri, 22 Nov 1996 23:41:39 -0600
+
 debian-manuals (2.1.1.0) unstable;
 
   * Hard links are forbidden in source packages (they didn't work anyway,
index df6a017a0f15be9c04369cf7e30f4b91c0240193..d415281dc1d1e42955e75694b2860d5a7c3b8e80 100644 (file)
@@ -15,7 +15,7 @@ changed since Debian 0.93 and the new format is being phased in.
 
 The old format is described here.  Please see
 .BR deb (5)
-for details of the old format.
+for details of the new format.
 .SH FORMAT
 The file is two lines of format information as ASCII text, followed by
 two concatenated gzipped ustar files.
diff --git a/doc/developer-keys.pgp b/doc/developer-keys.pgp
deleted file mode 100644 (file)
index 84587e7..0000000
Binary files a/doc/developer-keys.pgp and /dev/null differ
diff --git a/doc/internals.sgml b/doc/internals.sgml
new file mode 100644 (file)
index 0000000..994abb5
--- /dev/null
@@ -0,0 +1,552 @@
+<!doctype texinfo system "texinfo.dtd" [
+<!entity % manuals-version-def system "manuals-version">
+%manuals-version-def;
+]>
+
+<texinfo>
+
+<setfilename>internals.info</>
+
+<titlepage>
+<title>dpkg Internals Manual</title>
+<author>Klee Dienes</author>
+<date>Version &manuals-version; (dpkg &dpkg-version;)</date>
+<abstract>
+This manual describes the internal structure of the <code/dpkg/ package
+management system.
+</abstract>
+</titlepage>
+
+<chapter>Copyright
+
+<p>
+Copyright &copy;1997 Klee Dienes <samp/&lt;klee@@mit.edu&gt;/.
+
+<p>
+This manual is free software; you may redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option) any
+later version.
+
+<p>
+This is distributed in the hope that it will be useful, but
+<em>without any warranty</em>; without even the implied warranty of
+merchantability or fitness for a particular purpose.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License with
+your Debian GNU/Linux system, in <file>/usr/doc/copyright/GPL</>, or
+with the <code/dpkg/ source package as the file <file>COPYING</>.  If
+not, write to the Free Software Foundation, Inc., 675 Mass Ave,
+Cambridge, MA 02139, USA.
+
+</chapter>
+
+<chapter>Build Notes
+
+<section>Automake
+
+<p>
+This chapter by Tom Lees &lt;tom&at;lpsg.demon.co.uk&gt on Tue, 4 Mar 1997
+21:34:57 +0000, with subsequent modifications by Klee Dienes &lt;klee&at;debian.org&gt;
+
+<p>
+This chapter contains general notes about the conversion to
+<code/automake/.  If you plan on doing anything with <code/dpkg/, you
+should probably read all of this file first.  You have been warned.
+
+<p>
+The current version of automake used is version <code/automake-1.1n/,
+which is currently a beta version.  It has several significant
+advantages over the released version, including:
+
+<itemize>
+<item>it supports emacs lisp properly
+<item>It supports libtool properly
+<item>it includes the aclocal utility
+</itemize>
+
+<p>
+The <code/aclocal/ utility is a very useful program which will automatically
+build an <file/aclocal.m4/ file from the <file/configure.in/ file to include the
+appropriate macros.
+
+<p>
+<code/automake-1.1n/ can be retreived from
+<file>ftp://ftp.cygnus.com/pub/tromey</file>
+
+<p>
+This doesn't affect anything other than rebuilding the <file/Makefile.in/ files
+from the sources.
+
+<p>
+Probably the main difference which is noticable is that instead of
+using proprietary directory names, it now supports <code/configure
+--sharedstatedir/, and <code/configure --localstatedir/. To set these
+to the Debian defaults, you should use <code>./configure
+--localstatedir=/etc --sharedstatedir=/var/lib</>.
+
+<p>
+I have also customized the canonicalizing macros found in
+<code/autoconf-2.12/ to include the old way of finding the <code/dpkg/
+``architecture'', i.e. to be a bit more smart. Instead of it trying to
+determine the architecture only, I changed it to use the `host',
+`build', and `target' system types. The target CPU type is checked
+against the archtable to find the architecture on which dpkg will run.
+
+<p>
+It uses <code/gcc --print-libgcc-file-name/ to find out the build
+architecture if possible (used later to determine ELF or <code/a.out/
+format), and also uses <code/dpkg --print-architecture/ if possible to
+modify the <samp/cpu/ field before it passes on the target alias to
+config.sub. If you want to specify the architecture, you should now
+use "--target=", rather than <code/--with-arch/, which was essentially
+a hack anyway.  The old <code/--with-arch/ is still there, but it is
+somewhat less functional. I have also moved the <code/DPKG_CACHED_/
+macros into dpkg.m4 to make configure.in a bit more readable.
+
+<p>
+I also converted to libtool 0.7 (which can be found in the Debian
+distribution now). Essentially, this means that all the dpkg tools can
+be compiled against a shared <samp/libdpkg/ without much hassle (in
+fact, it is the default). You do not need to install libtool to use
+this feature (it works like autoconf), and generally, it should not be
+needed much at all.
+
+<p>
+The new <samp/dist/ targets will build a distribution including all
+files built by the <code/debiandoc2html/, <code/debiandoc2ps/, etc.,
+which are included in the distribution so that people may build <code/dpkg/
+without these (especially useful to porters).
+
+<p>
+A target <samp/make debian/ has been added, which will build the
+Debian files from a working directory (does a <samp/make dist/
+first). Now all we need is a modified dpkg-source so that the
+<file/dpkg-1.4.0.8.tar.gz/ GNU-distribution file can be used as part
+of the Debian dsitribution.  I'm working on this, but it doesn't work
+too well at the moment (find it in examples).
+
+<p>
+I removed the <samp/make portable/ target - it doesn't do anything useful.
+
+<p>
+I have added <samp/make uninstall/ targets to aid non-Debian users who simply
+want to try out certain Debian packages, and the "dist" targets are also
+useful to build a "distribution" of the dpkg tool. Note that since automake
+automatically includes dependencies into the Makefiles in a distribution,
+if you want to modify the C files, it would be advisable to get and install
+automake, and then re-run it in the base dpkg distribution directory, so that
+automatic dependency generation will be switched back on, and any
+dependencies which change will be taken account of. The "make maintainer-clean"
+targets will remove all files which any of the following utilities create:
+
+<itemize>
+<item>automake
+<item>autoconf
+<item>aclocal
+<item>autoheader
+<item>gettextize
+<item>libtoolize
+</itemize>
+
+<p>
+If you want to modify any of the sources, I recommend that you do the following
+first (after having installed the appropriate utilities, of course):-
+
+<itemize>
+<item>
+make maintainer-clean
+<item>
+aclocal
+<item>
+autoheader
+<item>
+autoconf
+<item>
+gettextize
+<item>
+libtoolize (do not let automake run this, as it will cause it not to
+include the libtool files in the dist targets) 
+<item>
+for i in COPYING INSTALL; do ln -s /usr/share/automake/$i .; done
+<item>
+automake
+</itemize>
+
+<p>
+I have also incorporated the patches originally made by Galen
+Hazelwood to internationalize dpkg using GNU gettext - see the file
+"NOTES.intl" for more information about this.
+
+<p>
+Other minor changes are:
+
+<itemize>
+<item>
+The version number is now determined from debian/changelog, not from
+the directory name.
+<item>
+Creation of version.h now handled from configure script, not Makefile.
+<item>
+include/dpkg.h is now generated from include/dpkg.h.in by a sed
+script, inserting the appropriate directory definitions - so now it
+supports changing the dpkg directories (can install in /usr/local)
+<item>
+Updated the COPYING (1 very minor change) and INSTALL files to those
+distributed with automake-1.1l
+<item>
+Since the shared libdpkg is now installed, I also made
+include/Makefile install dpkg.h and dpkg-db.h into /usr/include by
+default
+</itemize>
+
+Questions:
+
+<itemize>
+<item>
+Should I use <samp/localstatedir/ and <samp/sharedstatedir/ instead of
+<samp/sysconfdir/ and <samp/datadir/?
+</itemize>
+
+</section>
+
+<section>Internationalization
+
+<p>
+This section by Galen Hazelwood. 
+
+<p>
+Dpkg is, to say the least, generous in its error reporting.  The vast
+majority of the output strings are error messages of one kind or another.
+And if you feel that you've stumbled into the Department of Redundancy
+Department, you would be absolutely correct.  Many of the error messages
+in dpkg.pot are duplicates, used at different points in the program.
+
+<p>
+To avoid swamping the translators completely, I made some executive decisions
+on what kinds of strings to translate.  All the strings sent to debug() are
+left alone, on the grounds that these are for dpkg developers, and not for
+the general public.  Most interal error messages were very cryptic, and
+would probably confuse the translators when seen just sitting there in
+the dpkg.pot file, and are also left alone.  (I did mark some of the more
+verbose ones for translation.)
+
+<p>
+If others disagree with me about the necessity of translating these strings,
+it's easy enough to just go through and mark them later.
+
+<p>
+I added the startup gettext code to the main routine in dselect, which was
+necessary as many of the strings in lib are translated.  Dselect is otherwise
+unchanged.
+
+<p>
+Changes:
+
+<itemize>
+<item>
+The files in intl and po were taken from gettext 0.10.26, by way of
+the gettextize program.  I altered the makefiles to remove the VERSION
+symbol, which is only used in targets which dpkg does not support.
+<item>
+aclocal.m4 was stolen from the textutils package, configure.in was
+altered to use these new tests, symbols were added to acconfig.h, and
+the two new directories were added to Makefile.in.
+<item>
+The dpkg, dpkg-deb, md5sum, split, and dselect Makefiles now look for
+headers in ../intl, and try to link with whatever i18n libraries
+configure finds.  They also now define LOCALEDIR in CFLAGS.
+<item>
+include/dpkg.h has the necessary NLS boilerplate, and the only file
+which dosen't include this (md5sum/md5sum.c) had it added directly.
+<item>
+The most intrusive change is due to a disagreement between xgettext
+and the dpkg coding style.  Although xgettext understands string
+constant concatenation, it can't handle the case where preprocessor
+symbols are used as well.  The dpkg code uses this a lot, especially
+in cases like this:
+<example>
+ohshite("error reading from " BACKEND " pipe");
+</example>
+where BACKEND is defined as "dpkg-deb".  Because xgettext can't handle
+this, I have changed this usage in all cases to something like:
+<example>
+ohshite(_("error reading from dpkg-deb pipe");
+</example>
+This isn't very kind to Ian, I know.  But what can I do?
+</itemize>
+
+</section>
+
+</chapter>
+
+<chapter>Code Internals
+
+<section>Structure Definitons
+
+<subsection>versionrevision
+<p>
+<example>
+struct versionrevision @{
+  unsigned long epoch;
+  char *version;
+  char *revision;
+@};  
+</example>
+
+<p>
+The <tt/versionrevision/ structure is used to store a Debian version specification
+</subsection>
+
+</section>
+
+<section>Functions
+
+<subsection>Parsing translation tables
+<p>
+Each of these tables is used to associate a set of strings with a
+corresponding set of integers.
+
+Current tables are:
+
+<p>
+<example>
+const struct namevalue booleaninfos[];
+</example>
+
+<p>
+Maps boolean strings (<code/"yes"/,<code/"no"/) to their binary values.
+
+<subsubsection><code/priorityinfos[]/
+
+<p>
+<example>
+const struct namevalue priorityinfos[];
+</example>
+
+<p>
+Maps priority strings to and from values of
+type <code/enum pkgpriority/.  
+Current priority values are:
+
+<table>
+<item><code/required/</item>
+required
+<item><code/important/</item>
+important
+<item><code/standard/</item>
+standard
+<item><code/recommended/</item>
+recommended
+<item><code/optional/</item>
+optional
+<item><code/extra/</item>
+extra
+<item><code/contrib/</item>
+contrib
+<item><code/other/</item>
+other
+<item><code/unknown/</item>
+unknown
+<item><code/base/</item>
+This is obsolete, but is accepted as an alias for <code/required/.
+</table>
+</subsubsection>
+
+<subsubsection><code/statusinfos[]/
+
+<p>
+<example>
+const struct namevalue statusinfos[];
+</example>
+
+Maps package status strings to values of type <code/enum ???/.
+
+Package status strings are:
+
+"not-installed" "unpacked" "half-configured" "installed"
+"half-installed" "config-files" "postinst-failed" "removal-failed"
+</subsubsection>
+
+<subsubsection><code/eflaginfos[]/
+
+<p>
+<example>
+const struct namevalue eflaginfos[];
+</example>
+</subsubsection>
+
+<subsubsection><code/wantinfos[]/
+
+<p>
+<example>
+const struct namevalue wantinfos[];
+</example>
+</subsubsection>
+
+<subsubsection><code/nicknames[]/
+
+<p>
+<example>
+const struct nickname nicknames[];
+</example>
+
+Maps obsolete control fields to their current versions.
+
+</subsubsection>
+
+</subsection>
+
+<subsection>Parsing functions
+
+<subsubsection><code/parseerr/
+<findex/parseerr()/
+
+<p>
+<example>
+void parseerr
+(FILE *file, const char *filename, int lno,
+ FILE *warnto, int *warncount, const struct pkginfo *pigp,
+ int warnonly, const char *fmt, ...);
+</example>
+
+Report an error parsing a control data stream.  Checks <var/file/ for
+error status on <var/file/, printing an error message to stderr and
+exiting with error status if an error is present on the stream.
+Formats the variable arguments according to the <code/printf/-style
+string in <var/fmt/, preceding the result with <var/filename/,
+<var/lno/, and <var/pigp/ (if not NULL).  If <var/warnonly/ is 0,
+writes the result to stderr and exits with error status.  Otherwise,
+increments <var/warncount/ and returns normally.
+</subsubsection>
+
+<subsubsection><code/illegal_packagename/
+<findex/illegal_packagename()/
+
+<p>
+<example>
+const char *illegal_packagename
+(const char *p, const char **ep) 
+</example>
+
+Checks the package name at <var/p/ for proper syntax.  Returns NULL in
+case of success, setting <var/*ep/ to point after the last character
+in the package name, including any trailing whitespace (as defined by
+isspace()).  In case of error, returns the error message as a pointer
+to a static buffer.
+</subsubsection>
+
+<subsubsection><code/informativeversion/
+<findex/informativeversion()/
+
+<p>
+<example>
+int informativeversion(const struct versionrevision *version)
+</example>
+
+<p>
+Returns true if and only if the <code/versionrevision/ is non-empty;
+otherwise returns false.
+</subsubsection>
+
+<subsubsection><code/varbufversion/
+<findex/varbufversion()/
+
+<p>
+<example>
+void varbufversion
+(struct varbuf *vb,
+ const struct versionrevision *version,
+ enum versiondisplayepochwhen vdew);
+</example>
+
+Writes a human-readable representation of <var/version/ to <var/vb/.
+Possible values of <var/vdew/:
+
+<table>
+<item><tt/vdew_never/</item>
+never include epoch
+<item><tt/vdew_nonambig/</item>
+include epoch string if non-zero
+<item><tt/vdew_always/</item>
+always include epoch string
+</table>
+</subsubsection>
+
+<subsubsection><code/versiondescribe/
+<findex/versiondescribe()/
+
+<p>
+<example>
+const char *versiondescribe
+(const struct versionrevision *version,
+ enum versiondisplayepochwhen vdew);
+</example>
+
+<p>
+Return a human-readable representation of <var/version/ as a pointer
+to a static buffer.  If the version structure is empty, return
+<code/"&lt;none&gt;"/.  Static buffers are allocated from a set of 10
+in round-robin fashion (they will be re-used after 10 successive calls
+to <code/versiondescribe/).
+</subsubsection>
+
+<subsubsection><code/parseversion/
+<findex/parseversion()/
+
+<p>
+<example>
+const char *parseversion
+(struct versionrevision *rversion, const char *string);
+</example>
+
+<p>
+Parse the contents of <var/string/ into <var/rversion/.  If
+successful, returns NULL, otherwise returns a pointer to a static
+error string.
+</subsubsection>
+
+<subsubsection><code/parsemustfield/
+<findex/parsemustfield()/
+
+<p>
+<example>
+void parsemustfield
+(FILE *file, const char *filename, int lno,
+ FILE *warnto, int *warncount,
+ const struct pkginfo *pigp, int warnonly,
+ char **value, const char *what);
+</example>
+</subsubsection>
+
+<subsubsection><code/skip_slash_dotslash/
+<findex/skip_slash_dotslash()/
+
+<p>
+<example>
+const char *skip_slash_dotslash (const char *p);
+</example>
+</subsubsection>
+
+<subsubsection><code/convert_string/
+<findex/convert_string()/
+
+<p>
+<example>
+static int convert_string
+(const char *filename, int lno, const char *what, int otherwise,
+ FILE *warnto, int *warncount, const struct pkginfo *pigp,
+ const char *startp, const struct namevalue *nvip,
+ const char **endpp) 
+</example>
+</subsubsection>
+
+</subsection>
+
+</section>
+
+<contents>
+<printindex name="fn">
+
+</texinfo>
diff --git a/doc/lout.li b/doc/lout.li
deleted file mode 100644 (file)
index 04dfdb4..0000000
+++ /dev/null
@@ -1,1123 +0,0 @@
-00symbol 1 @DocumentLayout @TheoremCounterMarker
-00symbol 10 @DocumentLayout @FigureCounterMarker
-00symbol 11 @DocumentLayout @TablePrefixMarker
-00symbol 12 @DocumentLayout @TableCounterMarker
-00symbol 13 @PageMarker
-00symbol 14 @DocumentLayout @FootNoteCounterMarker
-00symbol 15 @DocumentLayout @Runner
-00symbol 16 @DocumentLayout @NumberMarker
-00symbol 17 @DocumentLayout listitem
-00symbol 18 @DocumentLayout @FootNote
-00symbol 19 @OptGall
-00symbol 2 @DocumentLayout @DefinitionCounterMarker
-00symbol 3 @DocumentLayout @ClaimCounterMarker
-00symbol 4 @DocumentLayout @PropositionCounterMarker
-00symbol 5 @DocumentLayout @LemmaCounterMarker
-00symbol 6 @DocumentLayout @CorollaryCounterMarker
-00symbol 7 @DocumentLayout @ExampleCounterMarker
-00symbol 8 @DocumentLayout @NumDispCounterMarker
-00symbol 9 @DocumentLayout @FigurePrefixMarker
-1&3278.policy.lout.1   0       00001   0       policy.lout
-1&3278.programmer.lout.1       0       00349   0       programmer.lout
-10&4161.policy.lout.1  0       00010   1602    policy.lout
-10&4161.programmer.lout.1      0       00350   1638    programmer.lout
-11&4334.policy.lout.1  0       00011   1720    policy.lout
-11&4334.programmer.lout.1      0       00351   1760    programmer.lout
-12&4342.policy.lout.1  0       00012   1836    policy.lout
-12&4342.programmer.lout.1      0       00352   1880    programmer.lout
-13&1655.policy.lout.1  0       00034   4442    policy.lout
-13&1655.policy.lout.10 0       00176   17809   policy.lout
-13&1655.policy.lout.11 0       00180   17809   policy.lout
-13&1655.policy.lout.12 0       00184   17809   policy.lout
-13&1655.policy.lout.13 0       00188   17809   policy.lout
-13&1655.policy.lout.14 0       00192   17809   policy.lout
-13&1655.policy.lout.15 0       00196   17809   policy.lout
-13&1655.policy.lout.16 0       00210   23905   policy.lout
-13&1655.policy.lout.17 0       00214   23905   policy.lout
-13&1655.policy.lout.18 0       00218   23905   policy.lout
-13&1655.policy.lout.19 0       00222   23905   policy.lout
-13&1655.policy.lout.2  0       00038   4442    policy.lout
-13&1655.policy.lout.20 0       00226   23905   policy.lout
-13&1655.policy.lout.21 0       00230   23905   policy.lout
-13&1655.policy.lout.22 0       00234   23905   policy.lout
-13&1655.policy.lout.23 0       00238   23905   policy.lout
-13&1655.policy.lout.24 0       00242   23905   policy.lout
-13&1655.policy.lout.25 0       00246   23905   policy.lout
-13&1655.policy.lout.26 0       00250   23905   policy.lout
-13&1655.policy.lout.27 0       00254   23905   policy.lout
-13&1655.policy.lout.28 0       00258   23905   policy.lout
-13&1655.policy.lout.29 0       00262   23905   policy.lout
-13&1655.policy.lout.3  0       00042   4442    policy.lout
-13&1655.policy.lout.30 0       00266   23905   policy.lout
-13&1655.policy.lout.31 0       00270   23905   policy.lout
-13&1655.policy.lout.32 0       00274   23905   policy.lout
-13&1655.policy.lout.33 0       00278   23905   policy.lout
-13&1655.policy.lout.34 0       00285   89259   policy.lout
-13&1655.policy.lout.35 0       00289   89259   policy.lout
-13&1655.policy.lout.36 0       00293   89259   policy.lout
-13&1655.policy.lout.37 0       00297   89259   policy.lout
-13&1655.policy.lout.38 0       00301   89259   policy.lout
-13&1655.policy.lout.39 0       00305   89259   policy.lout
-13&1655.policy.lout.4  0       00152   17809   policy.lout
-13&1655.policy.lout.40 0       00309   89259   policy.lout
-13&1655.policy.lout.41 0       00313   89259   policy.lout
-13&1655.policy.lout.42 0       00317   89259   policy.lout
-13&1655.policy.lout.43 0       00321   89259   policy.lout
-13&1655.policy.lout.5  0       00156   17809   policy.lout
-13&1655.policy.lout.6  0       00160   17809   policy.lout
-13&1655.policy.lout.7  0       00164   17809   policy.lout
-13&1655.policy.lout.8  0       00168   17809   policy.lout
-13&1655.policy.lout.9  0       00172   17809   policy.lout
-13&1655.programmer.lout.1      0       00353   6890    programmer.lout
-13&1655.programmer.lout.10     0       00354   6890    programmer.lout
-13&1655.programmer.lout.100    0       00355   117524  programmer.lout
-13&1655.programmer.lout.101    0       00356   117524  programmer.lout
-13&1655.programmer.lout.102    0       00357   117524  programmer.lout
-13&1655.programmer.lout.103    0       00358   128121  programmer.lout
-13&1655.programmer.lout.104    0       00359   128121  programmer.lout
-13&1655.programmer.lout.105    0       00360   128121  programmer.lout
-13&1655.programmer.lout.11     0       00361   15938   programmer.lout
-13&1655.programmer.lout.12     0       00362   15938   programmer.lout
-13&1655.programmer.lout.13     0       00363   15938   programmer.lout
-13&1655.programmer.lout.14     0       00364   15938   programmer.lout
-13&1655.programmer.lout.15     0       00365   18049   programmer.lout
-13&1655.programmer.lout.16     0       00366   18049   programmer.lout
-13&1655.programmer.lout.17     0       00367   18049   programmer.lout
-13&1655.programmer.lout.18     0       00368   18049   programmer.lout
-13&1655.programmer.lout.19     0       00369   18049   programmer.lout
-13&1655.programmer.lout.2      0       00370   6890    programmer.lout
-13&1655.programmer.lout.20     0       00371   18049   programmer.lout
-13&1655.programmer.lout.21     0       00372   22306   programmer.lout
-13&1655.programmer.lout.22     0       00373   22306   programmer.lout
-13&1655.programmer.lout.23     0       00374   22306   programmer.lout
-13&1655.programmer.lout.24     0       00375   22306   programmer.lout
-13&1655.programmer.lout.25     0       00376   22306   programmer.lout
-13&1655.programmer.lout.26     0       00377   22306   programmer.lout
-13&1655.programmer.lout.27     0       00378   22306   programmer.lout
-13&1655.programmer.lout.28     0       00379   25795   programmer.lout
-13&1655.programmer.lout.29     0       00380   25795   programmer.lout
-13&1655.programmer.lout.3      0       00381   6890    programmer.lout
-13&1655.programmer.lout.30     0       00382   25795   programmer.lout
-13&1655.programmer.lout.31     0       00383   25795   programmer.lout
-13&1655.programmer.lout.32     0       00384   25795   programmer.lout
-13&1655.programmer.lout.33     0       00385   25795   programmer.lout
-13&1655.programmer.lout.34     0       00386   25795   programmer.lout
-13&1655.programmer.lout.35     0       00387   31375   programmer.lout
-13&1655.programmer.lout.36     0       00388   31375   programmer.lout
-13&1655.programmer.lout.37     0       00389   31375   programmer.lout
-13&1655.programmer.lout.38     0       00390   31375   programmer.lout
-13&1655.programmer.lout.39     0       00391   31375   programmer.lout
-13&1655.programmer.lout.4      0       00392   6890    programmer.lout
-13&1655.programmer.lout.40     0       00393   31375   programmer.lout
-13&1655.programmer.lout.41     0       00394   31375   programmer.lout
-13&1655.programmer.lout.42     0       00395   31375   programmer.lout
-13&1655.programmer.lout.43     0       00396   31375   programmer.lout
-13&1655.programmer.lout.44     0       00397   36795   programmer.lout
-13&1655.programmer.lout.45     0       00398   36795   programmer.lout
-13&1655.programmer.lout.46     0       00399   47127   programmer.lout
-13&1655.programmer.lout.47     0       00400   47127   programmer.lout
-13&1655.programmer.lout.48     0       00401   47127   programmer.lout
-13&1655.programmer.lout.49     0       00402   47127   programmer.lout
-13&1655.programmer.lout.5      0       00403   6890    programmer.lout
-13&1655.programmer.lout.50     0       00404   47127   programmer.lout
-13&1655.programmer.lout.51     0       00405   47127   programmer.lout
-13&1655.programmer.lout.52     0       00406   47127   programmer.lout
-13&1655.programmer.lout.53     0       00407   47127   programmer.lout
-13&1655.programmer.lout.54     0       00408   47127   programmer.lout
-13&1655.programmer.lout.55     0       00409   47127   programmer.lout
-13&1655.programmer.lout.56     0       00410   47127   programmer.lout
-13&1655.programmer.lout.57     0       00411   47127   programmer.lout
-13&1655.programmer.lout.58     0       00412   54014   programmer.lout
-13&1655.programmer.lout.59     0       00413   54014   programmer.lout
-13&1655.programmer.lout.6      0       00414   6890    programmer.lout
-13&1655.programmer.lout.60     0       00415   54014   programmer.lout
-13&1655.programmer.lout.61     0       00416   54014   programmer.lout
-13&1655.programmer.lout.62     0       00417   54014   programmer.lout
-13&1655.programmer.lout.63     0       00418   54014   programmer.lout
-13&1655.programmer.lout.64     0       00419   54014   programmer.lout
-13&1655.programmer.lout.65     0       00420   54014   programmer.lout
-13&1655.programmer.lout.66     0       00421   54014   programmer.lout
-13&1655.programmer.lout.67     0       00422   54014   programmer.lout
-13&1655.programmer.lout.68     0       00423   54014   programmer.lout
-13&1655.programmer.lout.69     0       00424   54014   programmer.lout
-13&1655.programmer.lout.7      0       00425   6890    programmer.lout
-13&1655.programmer.lout.70     0       00426   54014   programmer.lout
-13&1655.programmer.lout.71     0       00427   54014   programmer.lout
-13&1655.programmer.lout.72     0       00428   54014   programmer.lout
-13&1655.programmer.lout.73     0       00429   54014   programmer.lout
-13&1655.programmer.lout.74     0       00430   54014   programmer.lout
-13&1655.programmer.lout.75     0       00431   54014   programmer.lout
-13&1655.programmer.lout.76     0       00432   54014   programmer.lout
-13&1655.programmer.lout.77     0       00433   89803   programmer.lout
-13&1655.programmer.lout.78     0       00434   89803   programmer.lout
-13&1655.programmer.lout.79     0       00435   89803   programmer.lout
-13&1655.programmer.lout.8      0       00436   6890    programmer.lout
-13&1655.programmer.lout.80     0       00437   89803   programmer.lout
-13&1655.programmer.lout.81     0       00438   89803   programmer.lout
-13&1655.programmer.lout.82     0       00439   89803   programmer.lout
-13&1655.programmer.lout.83     0       00440   89803   programmer.lout
-13&1655.programmer.lout.84     0       00441   89803   programmer.lout
-13&1655.programmer.lout.85     0       00442   89803   programmer.lout
-13&1655.programmer.lout.86     0       00443   89803   programmer.lout
-13&1655.programmer.lout.87     0       00444   89803   programmer.lout
-13&1655.programmer.lout.88     0       00445   111402  programmer.lout
-13&1655.programmer.lout.89     0       00446   111402  programmer.lout
-13&1655.programmer.lout.9      0       00447   6890    programmer.lout
-13&1655.programmer.lout.90     0       00448   111402  programmer.lout
-13&1655.programmer.lout.91     0       00449   111402  programmer.lout
-13&1655.programmer.lout.92     0       00450   111402  programmer.lout
-13&1655.programmer.lout.93     0       00451   111402  programmer.lout
-13&1655.programmer.lout.94     0       00452   111402  programmer.lout
-13&1655.programmer.lout.95     0       00453   111402  programmer.lout
-13&1655.programmer.lout.96     0       00454   111402  programmer.lout
-13&1655.programmer.lout.97     0       00455   116385  programmer.lout
-13&1655.programmer.lout.98     0       00456   116385  programmer.lout
-13&1655.programmer.lout.99     0       00457   117524  programmer.lout
-13&582.policy.lout.1   0       00019   2989    policy.lout
-13&582.policy.lout.10  0       00079   10050   policy.lout
-13&582.policy.lout.11  0       00085   10474   policy.lout
-13&582.policy.lout.12  0       00090   10817   policy.lout
-13&582.policy.lout.13  0       00094   11242   policy.lout
-13&582.policy.lout.14  0       00098   11585   policy.lout
-13&582.policy.lout.15  0       00106   12867   policy.lout
-13&582.policy.lout.16  0       00110   13210   policy.lout
-13&582.policy.lout.17  0       00117   14303   policy.lout
-13&582.policy.lout.18  0       00125   15546   policy.lout
-13&582.policy.lout.19  0       00129   15971   policy.lout
-13&582.policy.lout.2   0       00023   3550    policy.lout
-13&582.policy.lout.20  0       00133   16314   policy.lout
-13&582.policy.lout.21  0       00141   17466   policy.lout
-13&582.policy.lout.22  0       00146   17809   policy.lout
-13&582.policy.lout.23  0       00197   22857   policy.lout
-13&582.policy.lout.24  0       00204   23905   policy.lout
-13&582.policy.lout.25  0       00279   89259   policy.lout
-13&582.policy.lout.3   0       00025   4102    policy.lout
-13&582.policy.lout.4   0       00028   4442    policy.lout
-13&582.policy.lout.5   0       00043   6301    policy.lout
-13&582.policy.lout.6   0       00049   7245    policy.lout
-13&582.policy.lout.7   0       00057   7666    policy.lout
-13&582.policy.lout.8   0       00066   8660    policy.lout
-13&582.policy.lout.9   0       00071   9082    policy.lout
-13&582.programmer.lout.1       0       00458   3061    programmer.lout
-13&582.programmer.lout.10      0       00459   15506   programmer.lout
-13&582.programmer.lout.11      0       00460   15938   programmer.lout
-13&582.programmer.lout.12      0       00461   18049   programmer.lout
-13&582.programmer.lout.13      0       00462   21955   programmer.lout
-13&582.programmer.lout.14      0       00463   22306   programmer.lout
-13&582.programmer.lout.15      0       00464   25795   programmer.lout
-13&582.programmer.lout.16      0       00465   31375   programmer.lout
-13&582.programmer.lout.17      0       00466   36795   programmer.lout
-13&582.programmer.lout.18      0       00467   39415   programmer.lout
-13&582.programmer.lout.19      0       00468   40814   programmer.lout
-13&582.programmer.lout.2       0       00469   3634    programmer.lout
-13&582.programmer.lout.20      0       00470   42360   programmer.lout
-13&582.programmer.lout.21      0       00471   43468   programmer.lout
-13&582.programmer.lout.22      0       00472   45126   programmer.lout
-13&582.programmer.lout.23      0       00473   45559   programmer.lout
-13&582.programmer.lout.24      0       00474   45910   programmer.lout
-13&582.programmer.lout.25      0       00475   46343   programmer.lout
-13&582.programmer.lout.26      0       00476   46694   programmer.lout
-13&582.programmer.lout.27      0       00477   47127   programmer.lout
-13&582.programmer.lout.28      0       00478   54014   programmer.lout
-13&582.programmer.lout.29      0       00479   89803   programmer.lout
-13&582.programmer.lout.3       0       00480   4194    programmer.lout
-13&582.programmer.lout.30      0       00481   111402  programmer.lout
-13&582.programmer.lout.31      0       00482   116385  programmer.lout
-13&582.programmer.lout.32      0       00483   117524  programmer.lout
-13&582.programmer.lout.33      0       00484   121000  programmer.lout
-13&582.programmer.lout.34      0       00485   121351  programmer.lout
-13&582.programmer.lout.35      0       00486   121784  programmer.lout
-13&582.programmer.lout.36      0       00487   122135  programmer.lout
-13&582.programmer.lout.37      0       00488   123417  programmer.lout
-13&582.programmer.lout.38      0       00489   123768  programmer.lout
-13&582.programmer.lout.39      0       00490   124201  programmer.lout
-13&582.programmer.lout.4       0       00491   5264    programmer.lout
-13&582.programmer.lout.40      0       00492   124552  programmer.lout
-13&582.programmer.lout.41      0       00493   124985  programmer.lout
-13&582.programmer.lout.42      0       00494   125336  programmer.lout
-13&582.programmer.lout.43      0       00495   125769  programmer.lout
-13&582.programmer.lout.44      0       00496   126120  programmer.lout
-13&582.programmer.lout.45      0       00497   126553  programmer.lout
-13&582.programmer.lout.46      0       00498   126904  programmer.lout
-13&582.programmer.lout.47      0       00499   127337  programmer.lout
-13&582.programmer.lout.48      0       00500   127688  programmer.lout
-13&582.programmer.lout.49      0       00501   128121  programmer.lout
-13&582.programmer.lout.5       0       00502   5693    programmer.lout
-13&582.programmer.lout.50      0       00503   129729  programmer.lout
-13&582.programmer.lout.6       0       00504   6890    programmer.lout
-13&582.programmer.lout.7       0       00505   12936   programmer.lout
-13&582.programmer.lout.8       0       00506   13285   programmer.lout
-13&582.programmer.lout.9       0       00507   15157   programmer.lout
-13&ch-alternatives     0       00508   125769  programmer.lout
-13&ch-binarypkg        0       00051   7245    policy.lout
-13&ch-binarypkg        0       00509   5264    programmer.lout
-13&ch-conffiles        0       00510   124985  programmer.lout
-13&ch-controlfields    0       00511   39415   programmer.lout
-13&ch-conversion       0       00206   23905   policy.lout
-13&ch-descriptions     0       00512   117524  programmer.lout
-13&ch-developer        0       00143   17466   policy.lout
-13&ch-diversions       0       00513   126120  programmer.lout
-13&ch-mailinglists     0       00199   22857   policy.lout
-13&ch-maintainerscripts        0       00514   47127   programmer.lout
-13&ch-methif   0       00515   128121  programmer.lout
-13&ch-pkgcopyright     0       00030   4442    policy.lout
-13&ch-relationships    0       00516   121784  programmer.lout
-13&ch-scope    0       00027   4102    policy.lout
-13&ch-scope    0       00517   4194    programmer.lout
-13&ch-sharedlibs       0       00518   126553  programmer.lout
-13&ch-sourcepkg        0       00127   15546   policy.lout
-13&ch-sourcepkg        0       00519   12936   programmer.lout
-13&ch-sysvinit 0       00520   126904  programmer.lout
-13&ch-versions 0       00521   46343   programmer.lout
-13&last.page   0       00348   89259   policy.lout
-13&last.page   0       00522   129729  programmer.lout
-13&s-bincreating       0       00523   5264    programmer.lout
-13&s-changesfiles      0       00148   17809   policy.lout
-13&s-conflicts 0       00524   123417  programmer.lout
-13&s-controlarea       0       00525   5693    programmer.lout
-13&s-controlfile       0       00526   6890    programmer.lout
-13&s-copyrightfile     0       00084   10050   policy.lout
-13&s-depsyntax 0       00527   121784  programmer.lout
-13&s-dpkgchangelog     0       00528   18049   programmer.lout
-13&s-f-Architecture    0       00529   40814   programmer.lout
-13&s-f-Binary  0       00530   43468   programmer.lout
-13&s-f-Changes 0       00531   45559   programmer.lout
-13&s-f-Conffiles       0       00532   45559   programmer.lout
-13&s-f-Config-Version  0       00533   45559   programmer.lout
-13&s-f-Date    0       00534   45126   programmer.lout
-13&s-f-Description     0       00535   42360   programmer.lout
-13&s-f-Distribution    0       00536   45126   programmer.lout
-13&s-f-Essential       0       00537   42360   programmer.lout
-13&s-f-Filename        0       00538   45559   programmer.lout
-13&s-f-Files   0       00539   43468   programmer.lout
-13&s-f-Format  0       00540   45559   programmer.lout
-13&s-f-Installed-Size  0       00541   43468   programmer.lout
-13&s-f-Maintainer      0       00542   40814   programmer.lout
-13&s-f-Package 0       00543   39415   programmer.lout
-13&s-f-Size    0       00544   45559   programmer.lout
-13&s-f-Source  0       00545   42360   programmer.lout
-13&s-f-Standards-Version       0       00546   45126   programmer.lout
-13&s-f-Status  0       00547   45559   programmer.lout
-13&s-f-Urgency 0       00548   45126   programmer.lout
-13&s-f-Version 0       00549   40814   programmer.lout
-13&s-f-classification  0       00550   42360   programmer.lout
-13&s-instchangelog     0       00083   10050   policy.lout
-13&s-mail      0       00109   12867   policy.lout
-13&s-mscriptsinstact   0       00551   47127   programmer.lout
-13&s-replaces  0       00552   124201  programmer.lout
-13&s-sourcearchives    0       00553   25795   programmer.lout
-13&s-sourcetools       0       00554   12936   programmer.lout
-13&s-sourcetree        0       00555   15506   programmer.lout
-13&s-srcsubstvars      0       00556   22306   programmer.lout
-13&s-virtual   0       00557   123768  programmer.lout
-13&s13.1       0       00558   126904  programmer.lout
-13&s13.2       0       00559   126904  programmer.lout
-13&s13.3       0       00560   127337  programmer.lout
-13&s13.4       0       00561   127337  programmer.lout
-13&s13.5       0       00562   127337  programmer.lout
-13&s13.6       0       00563   127688  programmer.lout
-13&s14.1       0       00564   128121  programmer.lout
-13&s14.2       0       00565   128121  programmer.lout
-13&s3.1        0       00052   7245    policy.lout
-13&s3.1.1      0       00053   7245    policy.lout
-13&s3.1.1      0       00566   12936   programmer.lout
-13&s3.1.2      0       00054   7245    policy.lout
-13&s3.1.2      0       00567   12936   programmer.lout
-13&s3.1.3      0       00055   7245    policy.lout
-13&s3.1.3      0       00568   13285   programmer.lout
-13&s3.1.3.1    0       00056   7245    policy.lout
-13&s3.1.3.2    0       00060   7666    policy.lout
-13&s3.1.4      0       00061   7666    policy.lout
-13&s3.1.4      0       00569   13285   programmer.lout
-13&s3.1.5      0       00062   7666    policy.lout
-13&s3.1.5      0       00570   15157   programmer.lout
-13&s3.1.6      0       00068   8660    policy.lout
-13&s3.1.6      0       00571   15157   programmer.lout
-13&s3.1.7      0       00572   15157   programmer.lout
-13&s3.11       0       00113   13210   policy.lout
-13&s3.12       0       00119   14303   policy.lout
-13&s3.13       0       00121   14303   policy.lout
-13&s3.2        0       00069   8660    policy.lout
-13&s3.2.1      0       00070   8660    policy.lout
-13&s3.2.1      0       00573   15506   programmer.lout
-13&s3.2.2      0       00073   9082    policy.lout
-13&s3.2.2      0       00574   15938   programmer.lout
-13&s3.2.2.1    0       00575   18049   programmer.lout
-13&s3.2.3      0       00074   9082    policy.lout
-13&s3.2.3.1    0       00576   21955   programmer.lout
-13&s3.2.4      0       00081   10050   policy.lout
-13&s3.2.4.1    0       00082   10050   policy.lout
-13&s3.2.5      0       00577   22306   programmer.lout
-13&s3.2.6      0       00578   25795   programmer.lout
-13&s3.2.7      0       00087   10474   policy.lout
-13&s3.2.8      0       00088   10474   policy.lout
-13&s3.2.9      0       00089   10474   policy.lout
-13&s3.3        0       00092   10817   policy.lout
-13&s3.4        0       00093   10817   policy.lout
-13&s3.4        0       00579   31375   programmer.lout
-13&s3.4.1      0       00580   31375   programmer.lout
-13&s3.5        0       00096   11242   policy.lout
-13&s3.6        0       00097   11242   policy.lout
-13&s3.7        0       00100   11585   policy.lout
-13&s3.8        0       00101   11585   policy.lout
-13&s3.9        0       00108   12867   policy.lout
-13&s4.1        0       00128   15546   policy.lout
-13&s4.1        0       00581   39415   programmer.lout
-13&s4.2        0       00131   15971   policy.lout
-13&s4.2        0       00582   39415   programmer.lout
-13&s4.2.24     0       00583   45910   programmer.lout
-13&s4.2.6      0       00584   42360   programmer.lout
-13&s4.3        0       00132   15971   policy.lout
-13&s4.4        0       00136   16314   policy.lout
-13&s4.5        0       00137   16314   policy.lout
-13&s5.1        0       00144   17466   policy.lout
-13&s5.2        0       00145   17466   policy.lout
-13&s6.1        0       00585   47127   programmer.lout
-13&s6.3        0       00586   54014   programmer.lout
-13&s6.4        0       00587   111402  programmer.lout
-13&s6.5        0       00588   111402  programmer.lout
-13&s7.1        0       00589   117524  programmer.lout
-13&s7.2        0       00590   117524  programmer.lout
-13&s7.3        0       00591   121000  programmer.lout
-13&s8.2        0       00592   121784  programmer.lout
-13&s8.2.1      0       00593   123417  programmer.lout
-13&s8.2.2      0       00594   123417  programmer.lout
-13&s8.5.1      0       00595   124201  programmer.lout
-13&s8.5.2      0       00596   124201  programmer.lout
-13&s8.6        0       00597   124201  programmer.lout
-13&s9.1        0       00598   124985  programmer.lout
-13&s9.2        0       00599   125336  programmer.lout
-14&2495.policy.lout.1  0       00020   3340    policy.lout
-14&2495.policy.lout.10 0       00067   8961    policy.lout
-14&2495.policy.lout.11 0       00072   9302    policy.lout
-14&2495.policy.lout.12 0       00077   9617    policy.lout
-14&2495.policy.lout.13 0       00080   10353   policy.lout
-14&2495.policy.lout.14 0       00086   10696   policy.lout
-14&2495.policy.lout.15 0       00091   11121   policy.lout
-14&2495.policy.lout.16 0       00095   11464   policy.lout
-14&2495.policy.lout.17 0       00099   11889   policy.lout
-14&2495.policy.lout.18 0       00104   12434   policy.lout
-14&2495.policy.lout.19 0       00107   13089   policy.lout
-14&2495.policy.lout.2  0       00024   3982    policy.lout
-14&2495.policy.lout.20 0       00111   13514   policy.lout
-14&2495.policy.lout.21 0       00115   13870   policy.lout
-14&2495.policy.lout.22 0       00118   14525   policy.lout
-14&2495.policy.lout.23 0       00123   15113   policy.lout
-14&2495.policy.lout.24 0       00126   15850   policy.lout
-14&2495.policy.lout.25 0       00130   16193   policy.lout
-14&2495.policy.lout.26 0       00134   16618   policy.lout
-14&2495.policy.lout.27 0       00139   17033   policy.lout
-14&2495.policy.lout.28 0       00142   17688   policy.lout
-14&2495.policy.lout.29 0       00147   18113   policy.lout
-14&2495.policy.lout.3  0       00026   4322    policy.lout
-14&2495.policy.lout.30 0       00198   23079   policy.lout
-14&2495.policy.lout.31 0       00202   23472   policy.lout
-14&2495.policy.lout.32 0       00205   24209   policy.lout
-14&2495.policy.lout.33 0       00280   89481   policy.lout
-14&2495.policy.lout.4  0       00029   4743    policy.lout
-14&2495.policy.lout.5  0       00044   6521    policy.lout
-14&2495.policy.lout.6  0       00047   6813    policy.lout
-14&2495.policy.lout.7  0       00050   7546    policy.lout
-14&2495.policy.lout.8  0       00058   7886    policy.lout
-14&2495.policy.lout.9  0       00064   8228    policy.lout
-14&2495.programmer.lout.1      0       00600   3416    programmer.lout
-14&2495.programmer.lout.10     0       00601   13160   programmer.lout
-14&2495.programmer.lout.11     0       00602   13590   programmer.lout
-14&2495.programmer.lout.12     0       00603   14259   programmer.lout
-14&2495.programmer.lout.13     0       00604   14708   programmer.lout
-14&2495.programmer.lout.14     0       00605   15381   programmer.lout
-14&2495.programmer.lout.15     0       00606   15813   programmer.lout
-14&2495.programmer.lout.16     0       00607   16164   programmer.lout
-14&2495.programmer.lout.17     0       00608   18357   programmer.lout
-14&2495.programmer.lout.18     0       00609   21506   programmer.lout
-14&2495.programmer.lout.19     0       00610   22181   programmer.lout
-14&2495.programmer.lout.2      0       00611   4070    programmer.lout
-14&2495.programmer.lout.20     0       00612   22614   programmer.lout
-14&2495.programmer.lout.21     0       00613   26021   programmer.lout
-14&2495.programmer.lout.22     0       00614   30926   programmer.lout
-14&2495.programmer.lout.23     0       00615   31683   programmer.lout
-14&2495.programmer.lout.24     0       00616   36346   programmer.lout
-14&2495.programmer.lout.25     0       00617   37021   programmer.lout
-14&2495.programmer.lout.26     0       00618   38966   programmer.lout
-14&2495.programmer.lout.27     0       00619   39723   programmer.lout
-14&2495.programmer.lout.28     0       00620   40362   programmer.lout
-14&2495.programmer.lout.29     0       00621   41040   programmer.lout
-14&2495.programmer.lout.3      0       00622   4418    programmer.lout
-14&2495.programmer.lout.30     0       00623   41456   programmer.lout
-14&2495.programmer.lout.31     0       00624   41908   programmer.lout
-14&2495.programmer.lout.32     0       00625   42668   programmer.lout
-14&2495.programmer.lout.33     0       00626   43016   programmer.lout
-14&2495.programmer.lout.34     0       00627   43694   programmer.lout
-14&2495.programmer.lout.35     0       00628   44222   programmer.lout
-14&2495.programmer.lout.36     0       00629   44674   programmer.lout
-14&2495.programmer.lout.37     0       00630   45434   programmer.lout
-14&2495.programmer.lout.38     0       00631   45785   programmer.lout
-14&2495.programmer.lout.39     0       00632   46218   programmer.lout
-14&2495.programmer.lout.4      0       00633   4816    programmer.lout
-14&2495.programmer.lout.40     0       00634   46569   programmer.lout
-14&2495.programmer.lout.41     0       00635   47002   programmer.lout
-14&2495.programmer.lout.42     0       00636   47353   programmer.lout
-14&2495.programmer.lout.43     0       00637   54322   programmer.lout
-14&2495.programmer.lout.44     0       00638   90029   programmer.lout
-14&2495.programmer.lout.45     0       00639   110950  programmer.lout
-14&2495.programmer.lout.46     0       00640   111710  programmer.lout
-14&2495.programmer.lout.47     0       00641   116611  programmer.lout
-14&2495.programmer.lout.48     0       00642   117832  programmer.lout
-14&2495.programmer.lout.49     0       00643   120548  programmer.lout
-14&2495.programmer.lout.5      0       00644   5569    programmer.lout
-14&2495.programmer.lout.50     0       00645   121226  programmer.lout
-14&2495.programmer.lout.51     0       00646   121659  programmer.lout
-14&2495.programmer.lout.52     0       00647   122010  programmer.lout
-14&2495.programmer.lout.53     0       00648   122443  programmer.lout
-14&2495.programmer.lout.54     0       00649   122965  programmer.lout
-14&2495.programmer.lout.55     0       00650   123643  programmer.lout
-14&2495.programmer.lout.56     0       00651   124076  programmer.lout
-14&2495.programmer.lout.57     0       00652   124427  programmer.lout
-14&2495.programmer.lout.58     0       00653   124860  programmer.lout
-14&2495.programmer.lout.59     0       00654   125211  programmer.lout
-14&2495.programmer.lout.6      0       00655   5917    programmer.lout
-14&2495.programmer.lout.60     0       00656   125644  programmer.lout
-14&2495.programmer.lout.61     0       00657   125995  programmer.lout
-14&2495.programmer.lout.62     0       00658   126428  programmer.lout
-14&2495.programmer.lout.63     0       00659   126779  programmer.lout
-14&2495.programmer.lout.64     0       00660   127212  programmer.lout
-14&2495.programmer.lout.65     0       00661   127563  programmer.lout
-14&2495.programmer.lout.66     0       00662   127996  programmer.lout
-14&2495.programmer.lout.67     0       00663   128347  programmer.lout
-14&2495.programmer.lout.68     0       00664   130037  programmer.lout
-14&2495.programmer.lout.7      0       00665   6442    programmer.lout
-14&2495.programmer.lout.8      0       00666   7195    programmer.lout
-14&2495.programmer.lout.9      0       00667   12488   programmer.lout
-14&2521.policy.lout.1  0       00046   6521    policy.lout
-14&2521.policy.lout.2  0       00063   7886    policy.lout
-14&2521.policy.lout.3  0       00076   9302    policy.lout
-14&2521.policy.lout.4  0       00103   11889   policy.lout
-14&2521.policy.lout.5  0       00114   13514   policy.lout
-14&2521.policy.lout.6  0       00122   14525   policy.lout
-14&2521.policy.lout.7  0       00138   16618   policy.lout
-14&2521.policy.lout.8  0       00201   23079   policy.lout
-14&2521.programmer.lout.1      0       00668   4418    programmer.lout
-14&2521.programmer.lout.10     0       00669   39723   programmer.lout
-14&2521.programmer.lout.11     0       00670   41040   programmer.lout
-14&2521.programmer.lout.12     0       00671   41456   programmer.lout
-14&2521.programmer.lout.13     0       00672   42668   programmer.lout
-14&2521.programmer.lout.14     0       00673   43694   programmer.lout
-14&2521.programmer.lout.15     0       00674   44222   programmer.lout
-14&2521.programmer.lout.16     0       00675   90029   programmer.lout
-14&2521.programmer.lout.17     0       00676   117832  programmer.lout
-14&2521.programmer.lout.18     0       00677   122443  programmer.lout
-14&2521.programmer.lout.2      0       00678   5917    programmer.lout
-14&2521.programmer.lout.3      0       00679   7195    programmer.lout
-14&2521.programmer.lout.4      0       00680   13590   programmer.lout
-14&2521.programmer.lout.5      0       00681   14259   programmer.lout
-14&2521.programmer.lout.6      0       00682   18357   programmer.lout
-14&2521.programmer.lout.7      0       00683   26021   programmer.lout
-14&2521.programmer.lout.8      0       00684   31683   programmer.lout
-14&2521.programmer.lout.9      0       00685   37021   programmer.lout
-15&1954.policy.lout.2  0       00347   108761  policy.lout
-15&1954.policy.lout.3  0       00022   3460    policy.lout
-15&1954.policy.lout.4  0       00346   108668  policy.lout
-15&1954.programmer.lout.2      0       00686   130425  programmer.lout
-15&1954.programmer.lout.3      0       00687   3540    programmer.lout
-15&1954.programmer.lout.4      0       00688   130328  programmer.lout
-15&policy.lout_1       0       00021   3460    policy.lout
-15&policy.lout_10      0       00327   108668  policy.lout
-15&policy.lout_11      0       00328   108668  policy.lout
-15&policy.lout_12      0       00329   108668  policy.lout
-15&policy.lout_13      0       00330   108668  policy.lout
-15&policy.lout_14      0       00331   108668  policy.lout
-15&policy.lout_15      0       00332   108668  policy.lout
-15&policy.lout_16      0       00333   108668  policy.lout
-15&policy.lout_17      0       00334   108668  policy.lout
-15&policy.lout_18      0       00335   108668  policy.lout
-15&policy.lout_19      0       00336   108668  policy.lout
-15&policy.lout_20      0       00337   108668  policy.lout
-15&policy.lout_21      0       00338   108668  policy.lout
-15&policy.lout_22      0       00339   108668  policy.lout
-15&policy.lout_23      0       00340   108668  policy.lout
-15&policy.lout_24      0       00341   108668  policy.lout
-15&policy.lout_25      0       00342   108668  policy.lout
-15&policy.lout_26      0       00343   108668  policy.lout
-15&policy.lout_27      0       00344   108668  policy.lout
-15&policy.lout_28      0       00345   108668  policy.lout
-15&policy.lout_5       0       00322   108668  policy.lout
-15&policy.lout_6       0       00323   108668  policy.lout
-15&policy.lout_7       0       00324   108668  policy.lout
-15&policy.lout_8       0       00325   108668  policy.lout
-15&policy.lout_9       0       00326   108668  policy.lout
-15&programmer.lout_1   0       00689   3540    programmer.lout
-15&programmer.lout_10  0       00690   130328  programmer.lout
-15&programmer.lout_11  0       00691   130328  programmer.lout
-15&programmer.lout_12  0       00692   130328  programmer.lout
-15&programmer.lout_13  0       00693   130328  programmer.lout
-15&programmer.lout_14  0       00694   130328  programmer.lout
-15&programmer.lout_15  0       00695   130328  programmer.lout
-15&programmer.lout_16  0       00696   130328  programmer.lout
-15&programmer.lout_17  0       00697   130328  programmer.lout
-15&programmer.lout_18  0       00698   130328  programmer.lout
-15&programmer.lout_19  0       00699   130328  programmer.lout
-15&programmer.lout_20  0       00700   130328  programmer.lout
-15&programmer.lout_21  0       00701   130328  programmer.lout
-15&programmer.lout_22  0       00702   130328  programmer.lout
-15&programmer.lout_23  0       00703   130328  programmer.lout
-15&programmer.lout_24  0       00704   130328  programmer.lout
-15&programmer.lout_25  0       00705   130328  programmer.lout
-15&programmer.lout_26  0       00706   130328  programmer.lout
-15&programmer.lout_27  0       00707   130328  programmer.lout
-15&programmer.lout_28  0       00708   130328  programmer.lout
-15&programmer.lout_29  0       00709   130328  programmer.lout
-15&programmer.lout_30  0       00710   130328  programmer.lout
-15&programmer.lout_31  0       00711   130328  programmer.lout
-15&programmer.lout_32  0       00712   130328  programmer.lout
-15&programmer.lout_33  0       00713   130328  programmer.lout
-15&programmer.lout_34  0       00714   130328  programmer.lout
-15&programmer.lout_35  0       00715   130328  programmer.lout
-15&programmer.lout_36  0       00716   130328  programmer.lout
-15&programmer.lout_37  0       00717   130328  programmer.lout
-15&programmer.lout_38  0       00718   130328  programmer.lout
-15&programmer.lout_39  0       00719   130328  programmer.lout
-15&programmer.lout_40  0       00720   130328  programmer.lout
-15&programmer.lout_41  0       00721   130328  programmer.lout
-15&programmer.lout_42  0       00722   130328  programmer.lout
-15&programmer.lout_43  0       00723   130328  programmer.lout
-15&programmer.lout_44  0       00724   130328  programmer.lout
-15&programmer.lout_45  0       00725   130328  programmer.lout
-15&programmer.lout_46  0       00726   130328  programmer.lout
-15&programmer.lout_47  0       00727   130328  programmer.lout
-15&programmer.lout_48  0       00728   130328  programmer.lout
-15&programmer.lout_49  0       00729   130328  programmer.lout
-15&programmer.lout_5   0       00730   130328  programmer.lout
-15&programmer.lout_50  0       00731   130328  programmer.lout
-15&programmer.lout_51  0       00732   130328  programmer.lout
-15&programmer.lout_52  0       00733   130328  programmer.lout
-15&programmer.lout_53  0       00734   130328  programmer.lout
-15&programmer.lout_6   0       00735   130328  programmer.lout
-15&programmer.lout_7   0       00736   130328  programmer.lout
-15&programmer.lout_8   0       00737   130328  programmer.lout
-15&programmer.lout_9   0       00738   130328  programmer.lout
-16&1306.policy.lout.1  0       00031   4863    policy.lout
-16&1306.policy.lout.10 0       00173   20538   policy.lout
-16&1306.policy.lout.11 0       00177   20924   policy.lout
-16&1306.policy.lout.12 0       00181   21310   policy.lout
-16&1306.policy.lout.13 0       00185   21696   policy.lout
-16&1306.policy.lout.14 0       00189   22083   policy.lout
-16&1306.policy.lout.15 0       00193   22470   policy.lout
-16&1306.policy.lout.16 0       00207   24330   policy.lout
-16&1306.policy.lout.17 0       00211   25241   policy.lout
-16&1306.policy.lout.18 0       00215   25797   policy.lout
-16&1306.policy.lout.19 0       00219   26166   policy.lout
-16&1306.policy.lout.2  0       00035   5369    policy.lout
-16&1306.policy.lout.20 0       00223   26535   policy.lout
-16&1306.policy.lout.21 0       00227   31188   policy.lout
-16&1306.policy.lout.22 0       00231   35574   policy.lout
-16&1306.policy.lout.23 0       00235   39888   policy.lout
-16&1306.policy.lout.24 0       00239   44296   policy.lout
-16&1306.policy.lout.25 0       00243   48828   policy.lout
-16&1306.policy.lout.26 0       00247   53553   policy.lout
-16&1306.policy.lout.27 0       00251   53922   policy.lout
-16&1306.policy.lout.28 0       00255   59072   policy.lout
-16&1306.policy.lout.29 0       00259   64483   policy.lout
-16&1306.policy.lout.3  0       00039   5827    policy.lout
-16&1306.policy.lout.30 0       00263   69640   policy.lout
-16&1306.policy.lout.31 0       00267   74577   policy.lout
-16&1306.policy.lout.32 0       00271   79521   policy.lout
-16&1306.policy.lout.33 0       00275   84380   policy.lout
-16&1306.policy.lout.34 0       00282   89692   policy.lout
-16&1306.policy.lout.35 0       00286   90802   policy.lout
-16&1306.policy.lout.36 0       00290   91171   policy.lout
-16&1306.policy.lout.37 0       00294   94284   policy.lout
-16&1306.policy.lout.38 0       00298   97420   policy.lout
-16&1306.policy.lout.39 0       00302   100591  policy.lout
-16&1306.policy.lout.4  0       00149   18234   policy.lout
-16&1306.policy.lout.40 0       00306   103557  policy.lout
-16&1306.policy.lout.41 0       00310   106632  policy.lout
-16&1306.policy.lout.42 0       00314   107021  policy.lout
-16&1306.policy.lout.43 0       00318   107874  policy.lout
-16&1306.policy.lout.5  0       00153   18618   policy.lout
-16&1306.policy.lout.6  0       00157   19002   policy.lout
-16&1306.policy.lout.7  0       00161   19386   policy.lout
-16&1306.policy.lout.8  0       00165   19770   policy.lout
-16&1306.policy.lout.9  0       00169   20154   policy.lout
-16&1306.programmer.lout.1      0       00739   7319    programmer.lout
-16&1306.programmer.lout.10     0       00740   12093   programmer.lout
-16&1306.programmer.lout.100    0       00741   115339  programmer.lout
-16&1306.programmer.lout.101    0       00742   115716  programmer.lout
-16&1306.programmer.lout.103    0       00743   116736  programmer.lout
-16&1306.programmer.lout.104    0       00744   117113  programmer.lout
-16&1306.programmer.lout.105    0       00745   117957  programmer.lout
-16&1306.programmer.lout.106    0       00746   118510  programmer.lout
-16&1306.programmer.lout.107    0       00747   119333  programmer.lout
-16&1306.programmer.lout.108    0       00748   119895  programmer.lout
-16&1306.programmer.lout.109    0       00749   128472  programmer.lout
-16&1306.programmer.lout.11     0       00750   16289   programmer.lout
-16&1306.programmer.lout.110    0       00751   128897  programmer.lout
-16&1306.programmer.lout.111    0       00752   129326  programmer.lout
-16&1306.programmer.lout.12     0       00753   16740   programmer.lout
-16&1306.programmer.lout.13     0       00754   17134   programmer.lout
-16&1306.programmer.lout.14     0       00755   17655   programmer.lout
-16&1306.programmer.lout.15     0       00756   18482   programmer.lout
-16&1306.programmer.lout.16     0       00757   18934   programmer.lout
-16&1306.programmer.lout.17     0       00758   19391   programmer.lout
-16&1306.programmer.lout.18     0       00759   19785   programmer.lout
-16&1306.programmer.lout.19     0       00760   20295   programmer.lout
-16&1306.programmer.lout.2      0       00761   7769    programmer.lout
-16&1306.programmer.lout.20     0       00762   20689   programmer.lout
-16&1306.programmer.lout.21     0       00763   22739   programmer.lout
-16&1306.programmer.lout.22     0       00764   23133   programmer.lout
-16&1306.programmer.lout.23     0       00765   23585   programmer.lout
-16&1306.programmer.lout.24     0       00766   24042   programmer.lout
-16&1306.programmer.lout.25     0       00767   24494   programmer.lout
-16&1306.programmer.lout.26     0       00768   24949   programmer.lout
-16&1306.programmer.lout.27     0       00769   25343   programmer.lout
-16&1306.programmer.lout.28     0       00770   26656   programmer.lout
-16&1306.programmer.lout.29     0       00771   27266   programmer.lout
-16&1306.programmer.lout.3      0       00772   8219    programmer.lout
-16&1306.programmer.lout.30     0       00773   27876   programmer.lout
-16&1306.programmer.lout.31     0       00774   28486   programmer.lout
-16&1306.programmer.lout.32     0       00775   29096   programmer.lout
-16&1306.programmer.lout.33     0       00776   29706   programmer.lout
-16&1306.programmer.lout.34     0       00777   30316   programmer.lout
-16&1306.programmer.lout.35     0       00778   31808   programmer.lout
-16&1306.programmer.lout.36     0       00779   32297   programmer.lout
-16&1306.programmer.lout.37     0       00780   32930   programmer.lout
-16&1306.programmer.lout.38     0       00781   33423   programmer.lout
-16&1306.programmer.lout.39     0       00782   33897   programmer.lout
-16&1306.programmer.lout.4      0       00783   9538    programmer.lout
-16&1306.programmer.lout.40     0       00784   34561   programmer.lout
-16&1306.programmer.lout.41     0       00785   35006   programmer.lout
-16&1306.programmer.lout.42     0       00786   35438   programmer.lout
-16&1306.programmer.lout.43     0       00787   35913   programmer.lout
-16&1306.programmer.lout.44     0       00788   37146   programmer.lout
-16&1306.programmer.lout.45     0       00789   38453   programmer.lout
-16&1306.programmer.lout.46     0       00790   47478   programmer.lout
-16&1306.programmer.lout.47     0       00791   47952   programmer.lout
-16&1306.programmer.lout.48     0       00792   48460   programmer.lout
-16&1306.programmer.lout.49     0       00793   48968   programmer.lout
-16&1306.programmer.lout.5      0       00794   10035   programmer.lout
-16&1306.programmer.lout.50     0       00795   49491   programmer.lout
-16&1306.programmer.lout.51     0       00796   50017   programmer.lout
-16&1306.programmer.lout.52     0       00797   50541   programmer.lout
-16&1306.programmer.lout.53     0       00798   51161   programmer.lout
-16&1306.programmer.lout.54     0       00799   51919   programmer.lout
-16&1306.programmer.lout.55     0       00800   52384   programmer.lout
-16&1306.programmer.lout.56     0       00801   52890   programmer.lout
-16&1306.programmer.lout.57     0       00802   53412   programmer.lout
-16&1306.programmer.lout.58     0       00803   54447   programmer.lout
-16&1306.programmer.lout.59     0       00804   55188   programmer.lout
-16&1306.programmer.lout.6      0       00805   10427   programmer.lout
-16&1306.programmer.lout.60     0       00806   55654   programmer.lout
-16&1306.programmer.lout.61     0       00807   56119   programmer.lout
-16&1306.programmer.lout.62     0       00808   56626   programmer.lout
-16&1306.programmer.lout.63     0       00809   57149   programmer.lout
-16&1306.programmer.lout.64     0       00810   57637   programmer.lout
-16&1306.programmer.lout.65     0       00811   58159   programmer.lout
-16&1306.programmer.lout.66     0       00812   58681   programmer.lout
-16&1306.programmer.lout.68     0       00813   59607   programmer.lout
-16&1306.programmer.lout.69     0       00814   59231   programmer.lout
-16&1306.programmer.lout.7      0       00815   10819   programmer.lout
-16&1306.programmer.lout.70     0       00816   62563   programmer.lout
-16&1306.programmer.lout.71     0       00817   65519   programmer.lout
-16&1306.programmer.lout.72     0       00818   65895   programmer.lout
-16&1306.programmer.lout.73     0       00819   71553   programmer.lout
-16&1306.programmer.lout.75     0       00820   77587   programmer.lout
-16&1306.programmer.lout.76     0       00821   77211   programmer.lout
-16&1306.programmer.lout.77     0       00822   81659   programmer.lout
-16&1306.programmer.lout.78     0       00823   85731   programmer.lout
-16&1306.programmer.lout.79     0       00824   90154   programmer.lout
-16&1306.programmer.lout.8      0       00825   11309   programmer.lout
-16&1306.programmer.lout.81     0       00826   92505   programmer.lout
-16&1306.programmer.lout.82     0       00827   92129   programmer.lout
-16&1306.programmer.lout.83     0       00828   96157   programmer.lout
-16&1306.programmer.lout.84     0       00829   99809   programmer.lout
-16&1306.programmer.lout.85     0       00830   100270  programmer.lout
-16&1306.programmer.lout.86     0       00831   100680  programmer.lout
-16&1306.programmer.lout.87     0       00832   101098  programmer.lout
-16&1306.programmer.lout.88     0       00833   101474  programmer.lout
-16&1306.programmer.lout.89     0       00834   104492  programmer.lout
-16&1306.programmer.lout.9      0       00835   11701   programmer.lout
-16&1306.programmer.lout.90     0       00836   107554  programmer.lout
-16&1306.programmer.lout.91     0       00837   111835  programmer.lout
-16&1306.programmer.lout.92     0       00838   112421  programmer.lout
-16&1306.programmer.lout.93     0       00839   112859  programmer.lout
-16&1306.programmer.lout.94     0       00840   113488  programmer.lout
-16&1306.programmer.lout.96     0       00841   114161  programmer.lout
-16&1306.programmer.lout.97     0       00842   114537  programmer.lout
-16&1306.programmer.lout.99     0       00843   114963  programmer.lout
-16&1655.policy.lout.1  0       00033   4863    policy.lout
-16&1655.policy.lout.10 0       00175   20538   policy.lout
-16&1655.policy.lout.11 0       00179   20924   policy.lout
-16&1655.policy.lout.12 0       00183   21310   policy.lout
-16&1655.policy.lout.13 0       00187   21696   policy.lout
-16&1655.policy.lout.14 0       00191   22083   policy.lout
-16&1655.policy.lout.15 0       00195   22470   policy.lout
-16&1655.policy.lout.16 0       00209   24330   policy.lout
-16&1655.policy.lout.17 0       00213   25241   policy.lout
-16&1655.policy.lout.18 0       00217   25797   policy.lout
-16&1655.policy.lout.19 0       00221   26166   policy.lout
-16&1655.policy.lout.2  0       00037   5369    policy.lout
-16&1655.policy.lout.20 0       00225   26535   policy.lout
-16&1655.policy.lout.21 0       00229   31188   policy.lout
-16&1655.policy.lout.22 0       00233   35574   policy.lout
-16&1655.policy.lout.23 0       00237   39888   policy.lout
-16&1655.policy.lout.24 0       00241   44296   policy.lout
-16&1655.policy.lout.25 0       00245   48828   policy.lout
-16&1655.policy.lout.26 0       00249   53553   policy.lout
-16&1655.policy.lout.27 0       00253   53922   policy.lout
-16&1655.policy.lout.28 0       00257   59072   policy.lout
-16&1655.policy.lout.29 0       00261   64483   policy.lout
-16&1655.policy.lout.3  0       00041   5827    policy.lout
-16&1655.policy.lout.30 0       00265   69640   policy.lout
-16&1655.policy.lout.31 0       00269   74577   policy.lout
-16&1655.policy.lout.32 0       00273   79521   policy.lout
-16&1655.policy.lout.33 0       00277   84380   policy.lout
-16&1655.policy.lout.34 0       00284   89692   policy.lout
-16&1655.policy.lout.35 0       00288   90802   policy.lout
-16&1655.policy.lout.36 0       00292   91171   policy.lout
-16&1655.policy.lout.37 0       00296   94284   policy.lout
-16&1655.policy.lout.38 0       00300   97420   policy.lout
-16&1655.policy.lout.39 0       00304   100591  policy.lout
-16&1655.policy.lout.4  0       00151   18234   policy.lout
-16&1655.policy.lout.40 0       00308   103557  policy.lout
-16&1655.policy.lout.41 0       00312   106632  policy.lout
-16&1655.policy.lout.42 0       00316   107021  policy.lout
-16&1655.policy.lout.43 0       00320   107874  policy.lout
-16&1655.policy.lout.5  0       00155   18618   policy.lout
-16&1655.policy.lout.6  0       00159   19002   policy.lout
-16&1655.policy.lout.7  0       00163   19386   policy.lout
-16&1655.policy.lout.8  0       00167   19770   policy.lout
-16&1655.policy.lout.9  0       00171   20154   policy.lout
-16&1655.programmer.lout.1      0       00844   7319    programmer.lout
-16&1655.programmer.lout.10     0       00845   12093   programmer.lout
-16&1655.programmer.lout.100    0       00846   118510  programmer.lout
-16&1655.programmer.lout.101    0       00847   119333  programmer.lout
-16&1655.programmer.lout.102    0       00848   119895  programmer.lout
-16&1655.programmer.lout.103    0       00849   128472  programmer.lout
-16&1655.programmer.lout.104    0       00850   128897  programmer.lout
-16&1655.programmer.lout.105    0       00851   129326  programmer.lout
-16&1655.programmer.lout.11     0       00852   16289   programmer.lout
-16&1655.programmer.lout.12     0       00853   16740   programmer.lout
-16&1655.programmer.lout.13     0       00854   17134   programmer.lout
-16&1655.programmer.lout.14     0       00855   17655   programmer.lout
-16&1655.programmer.lout.15     0       00856   18482   programmer.lout
-16&1655.programmer.lout.16     0       00857   18934   programmer.lout
-16&1655.programmer.lout.17     0       00858   19391   programmer.lout
-16&1655.programmer.lout.18     0       00859   19785   programmer.lout
-16&1655.programmer.lout.19     0       00860   20295   programmer.lout
-16&1655.programmer.lout.2      0       00861   7769    programmer.lout
-16&1655.programmer.lout.20     0       00862   20689   programmer.lout
-16&1655.programmer.lout.21     0       00863   22739   programmer.lout
-16&1655.programmer.lout.22     0       00864   23133   programmer.lout
-16&1655.programmer.lout.23     0       00865   23585   programmer.lout
-16&1655.programmer.lout.24     0       00866   24042   programmer.lout
-16&1655.programmer.lout.25     0       00867   24494   programmer.lout
-16&1655.programmer.lout.26     0       00868   24949   programmer.lout
-16&1655.programmer.lout.27     0       00869   25343   programmer.lout
-16&1655.programmer.lout.28     0       00870   26656   programmer.lout
-16&1655.programmer.lout.29     0       00871   27266   programmer.lout
-16&1655.programmer.lout.3      0       00872   8219    programmer.lout
-16&1655.programmer.lout.30     0       00873   27876   programmer.lout
-16&1655.programmer.lout.31     0       00874   28486   programmer.lout
-16&1655.programmer.lout.32     0       00875   29096   programmer.lout
-16&1655.programmer.lout.33     0       00876   29706   programmer.lout
-16&1655.programmer.lout.34     0       00877   30316   programmer.lout
-16&1655.programmer.lout.35     0       00878   31808   programmer.lout
-16&1655.programmer.lout.36     0       00879   32297   programmer.lout
-16&1655.programmer.lout.37     0       00880   32930   programmer.lout
-16&1655.programmer.lout.38     0       00881   33423   programmer.lout
-16&1655.programmer.lout.39     0       00882   33897   programmer.lout
-16&1655.programmer.lout.4      0       00883   9538    programmer.lout
-16&1655.programmer.lout.40     0       00884   34561   programmer.lout
-16&1655.programmer.lout.41     0       00885   35006   programmer.lout
-16&1655.programmer.lout.42     0       00886   35438   programmer.lout
-16&1655.programmer.lout.43     0       00887   35913   programmer.lout
-16&1655.programmer.lout.44     0       00888   37146   programmer.lout
-16&1655.programmer.lout.45     0       00889   38453   programmer.lout
-16&1655.programmer.lout.46     0       00890   47478   programmer.lout
-16&1655.programmer.lout.47     0       00891   47952   programmer.lout
-16&1655.programmer.lout.48     0       00892   48460   programmer.lout
-16&1655.programmer.lout.49     0       00893   48968   programmer.lout
-16&1655.programmer.lout.5      0       00894   10035   programmer.lout
-16&1655.programmer.lout.50     0       00895   49491   programmer.lout
-16&1655.programmer.lout.51     0       00896   50017   programmer.lout
-16&1655.programmer.lout.52     0       00897   50541   programmer.lout
-16&1655.programmer.lout.53     0       00898   51161   programmer.lout
-16&1655.programmer.lout.54     0       00899   51919   programmer.lout
-16&1655.programmer.lout.55     0       00900   52384   programmer.lout
-16&1655.programmer.lout.56     0       00901   52890   programmer.lout
-16&1655.programmer.lout.57     0       00902   53412   programmer.lout
-16&1655.programmer.lout.58     0       00903   54447   programmer.lout
-16&1655.programmer.lout.59     0       00904   55188   programmer.lout
-16&1655.programmer.lout.6      0       00905   10427   programmer.lout
-16&1655.programmer.lout.60     0       00906   55654   programmer.lout
-16&1655.programmer.lout.61     0       00907   56119   programmer.lout
-16&1655.programmer.lout.62     0       00908   56626   programmer.lout
-16&1655.programmer.lout.63     0       00909   57149   programmer.lout
-16&1655.programmer.lout.64     0       00910   57637   programmer.lout
-16&1655.programmer.lout.65     0       00911   58159   programmer.lout
-16&1655.programmer.lout.66     0       00912   58681   programmer.lout
-16&1655.programmer.lout.67     0       00913   59231   programmer.lout
-16&1655.programmer.lout.68     0       00914   59607   programmer.lout
-16&1655.programmer.lout.69     0       00915   62563   programmer.lout
-16&1655.programmer.lout.7      0       00916   10819   programmer.lout
-16&1655.programmer.lout.70     0       00917   65519   programmer.lout
-16&1655.programmer.lout.71     0       00918   65895   programmer.lout
-16&1655.programmer.lout.72     0       00919   71553   programmer.lout
-16&1655.programmer.lout.73     0       00920   77211   programmer.lout
-16&1655.programmer.lout.74     0       00921   77587   programmer.lout
-16&1655.programmer.lout.75     0       00922   81659   programmer.lout
-16&1655.programmer.lout.76     0       00923   85731   programmer.lout
-16&1655.programmer.lout.77     0       00924   90154   programmer.lout
-16&1655.programmer.lout.78     0       00925   92129   programmer.lout
-16&1655.programmer.lout.79     0       00926   92505   programmer.lout
-16&1655.programmer.lout.8      0       00927   11309   programmer.lout
-16&1655.programmer.lout.80     0       00928   96157   programmer.lout
-16&1655.programmer.lout.81     0       00929   99809   programmer.lout
-16&1655.programmer.lout.82     0       00930   100270  programmer.lout
-16&1655.programmer.lout.83     0       00931   100680  programmer.lout
-16&1655.programmer.lout.84     0       00932   101098  programmer.lout
-16&1655.programmer.lout.85     0       00933   101474  programmer.lout
-16&1655.programmer.lout.86     0       00934   104492  programmer.lout
-16&1655.programmer.lout.87     0       00935   107554  programmer.lout
-16&1655.programmer.lout.88     0       00936   111835  programmer.lout
-16&1655.programmer.lout.89     0       00937   112421  programmer.lout
-16&1655.programmer.lout.9      0       00938   11701   programmer.lout
-16&1655.programmer.lout.90     0       00939   112859  programmer.lout
-16&1655.programmer.lout.91     0       00940   113488  programmer.lout
-16&1655.programmer.lout.92     0       00941   114161  programmer.lout
-16&1655.programmer.lout.93     0       00942   114537  programmer.lout
-16&1655.programmer.lout.94     0       00943   114963  programmer.lout
-16&1655.programmer.lout.95     0       00944   115339  programmer.lout
-16&1655.programmer.lout.96     0       00945   115716  programmer.lout
-16&1655.programmer.lout.97     0       00946   116736  programmer.lout
-16&1655.programmer.lout.98     0       00947   117113  programmer.lout
-16&1655.programmer.lout.99     0       00948   117957  programmer.lout
-16&2521.policy.lout.1  0       00048   7015    policy.lout
-16&2521.policy.lout.2  0       00065   8430    policy.lout
-16&2521.policy.lout.3  0       00078   9820    policy.lout
-16&2521.policy.lout.4  0       00105   12637   policy.lout
-16&2521.policy.lout.5  0       00116   14073   policy.lout
-16&2521.policy.lout.6  0       00124   15316   policy.lout
-16&2521.policy.lout.7  0       00140   17236   policy.lout
-16&2521.policy.lout.8  0       00203   23675   policy.lout
-16&2521.programmer.lout.1      0       00949   5026    programmer.lout
-16&2521.programmer.lout.10     0       00950   40574   programmer.lout
-16&2521.programmer.lout.11     0       00951   41668   programmer.lout
-16&2521.programmer.lout.12     0       00952   42120   programmer.lout
-16&2521.programmer.lout.13     0       00953   43228   programmer.lout
-16&2521.programmer.lout.14     0       00954   44434   programmer.lout
-16&2521.programmer.lout.15     0       00955   44886   programmer.lout
-16&2521.programmer.lout.16     0       00956   111162  programmer.lout
-16&2521.programmer.lout.17     0       00957   120760  programmer.lout
-16&2521.programmer.lout.18     0       00958   123177  programmer.lout
-16&2521.programmer.lout.2      0       00959   6652    programmer.lout
-16&2521.programmer.lout.3      0       00960   12698   programmer.lout
-16&2521.programmer.lout.4      0       00961   14470   programmer.lout
-16&2521.programmer.lout.5      0       00962   14919   programmer.lout
-16&2521.programmer.lout.6      0       00963   21717   programmer.lout
-16&2521.programmer.lout.7      0       00964   31137   programmer.lout
-16&2521.programmer.lout.8      0       00965   36557   programmer.lout
-16&2521.programmer.lout.9      0       00966   39177   programmer.lout
-17&1655.policy.lout.1  0       00032   5108    policy.lout
-17&1655.policy.lout.10 0       00174   20784   policy.lout
-17&1655.policy.lout.11 0       00178   21170   policy.lout
-17&1655.policy.lout.12 0       00182   21556   policy.lout
-17&1655.policy.lout.13 0       00186   21943   policy.lout
-17&1655.policy.lout.14 0       00190   22330   policy.lout
-17&1655.policy.lout.15 0       00194   22717   policy.lout
-17&1655.policy.lout.16 0       00208   24559   policy.lout
-17&1655.policy.lout.17 0       00212   25470   policy.lout
-17&1655.policy.lout.18 0       00216   26026   policy.lout
-17&1655.policy.lout.19 0       00220   26395   policy.lout
-17&1655.policy.lout.2  0       00036   5614    policy.lout
-17&1655.policy.lout.20 0       00224   28715   policy.lout
-17&1655.policy.lout.21 0       00228   33368   policy.lout
-17&1655.policy.lout.22 0       00232   37754   policy.lout
-17&1655.policy.lout.23 0       00236   42068   policy.lout
-17&1655.policy.lout.24 0       00240   46476   policy.lout
-17&1655.policy.lout.25 0       00244   51008   policy.lout
-17&1655.policy.lout.26 0       00248   53782   policy.lout
-17&1655.policy.lout.27 0       00252   56374   policy.lout
-17&1655.policy.lout.28 0       00256   61524   policy.lout
-17&1655.policy.lout.29 0       00260   66935   policy.lout
-17&1655.policy.lout.3  0       00040   6072    policy.lout
-17&1655.policy.lout.30 0       00264   72092   policy.lout
-17&1655.policy.lout.31 0       00268   77029   policy.lout
-17&1655.policy.lout.32 0       00272   81973   policy.lout
-17&1655.policy.lout.33 0       00276   86832   policy.lout
-17&1655.policy.lout.34 0       00283   89921   policy.lout
-17&1655.policy.lout.35 0       00287   91031   policy.lout
-17&1655.policy.lout.36 0       00291   92683   policy.lout
-17&1655.policy.lout.37 0       00295   95796   policy.lout
-17&1655.policy.lout.38 0       00299   98932   policy.lout
-17&1655.policy.lout.39 0       00303   102103  policy.lout
-17&1655.policy.lout.4  0       00150   18479   policy.lout
-17&1655.policy.lout.40 0       00307   105069  policy.lout
-17&1655.policy.lout.41 0       00311   106861  policy.lout
-17&1655.policy.lout.42 0       00315   107250  policy.lout
-17&1655.policy.lout.43 0       00319   108104  policy.lout
-17&1655.policy.lout.5  0       00154   18863   policy.lout
-17&1655.policy.lout.6  0       00158   19247   policy.lout
-17&1655.policy.lout.7  0       00162   19631   policy.lout
-17&1655.policy.lout.8  0       00166   20015   policy.lout
-17&1655.policy.lout.9  0       00170   20399   policy.lout
-17&1655.programmer.lout.1      0       00967   7568    programmer.lout
-17&1655.programmer.lout.10     0       00968   12344   programmer.lout
-17&1655.programmer.lout.100    0       00969   118744  programmer.lout
-17&1655.programmer.lout.101    0       00970   119567  programmer.lout
-17&1655.programmer.lout.102    0       00971   120129  programmer.lout
-17&1655.programmer.lout.103    0       00972   128723  programmer.lout
-17&1655.programmer.lout.104    0       00973   129148  programmer.lout
-17&1655.programmer.lout.105    0       00974   129577  programmer.lout
-17&1655.programmer.lout.11     0       00975   16539   programmer.lout
-17&1655.programmer.lout.12     0       00976   16990   programmer.lout
-17&1655.programmer.lout.13     0       00977   17384   programmer.lout
-17&1655.programmer.lout.14     0       00978   17905   programmer.lout
-17&1655.programmer.lout.15     0       00979   18732   programmer.lout
-17&1655.programmer.lout.16     0       00980   19184   programmer.lout
-17&1655.programmer.lout.17     0       00981   19641   programmer.lout
-17&1655.programmer.lout.18     0       00982   20035   programmer.lout
-17&1655.programmer.lout.19     0       00983   20545   programmer.lout
-17&1655.programmer.lout.2      0       00984   8018    programmer.lout
-17&1655.programmer.lout.20     0       00985   20939   programmer.lout
-17&1655.programmer.lout.21     0       00986   22989   programmer.lout
-17&1655.programmer.lout.22     0       00987   23383   programmer.lout
-17&1655.programmer.lout.23     0       00988   23835   programmer.lout
-17&1655.programmer.lout.24     0       00989   24292   programmer.lout
-17&1655.programmer.lout.25     0       00990   24744   programmer.lout
-17&1655.programmer.lout.26     0       00991   25199   programmer.lout
-17&1655.programmer.lout.27     0       00992   25593   programmer.lout
-17&1655.programmer.lout.28     0       00993   27014   programmer.lout
-17&1655.programmer.lout.29     0       00994   27624   programmer.lout
-17&1655.programmer.lout.3      0       00995   8468    programmer.lout
-17&1655.programmer.lout.30     0       00996   28234   programmer.lout
-17&1655.programmer.lout.31     0       00997   28844   programmer.lout
-17&1655.programmer.lout.32     0       00998   29454   programmer.lout
-17&1655.programmer.lout.33     0       00999   30064   programmer.lout
-17&1655.programmer.lout.34     0       01000   30674   programmer.lout
-17&1655.programmer.lout.35     0       01001   32057   programmer.lout
-17&1655.programmer.lout.36     0       01002   32546   programmer.lout
-17&1655.programmer.lout.37     0       01003   33179   programmer.lout
-17&1655.programmer.lout.38     0       01004   33672   programmer.lout
-17&1655.programmer.lout.39     0       01005   34146   programmer.lout
-17&1655.programmer.lout.4      0       01006   9787    programmer.lout
-17&1655.programmer.lout.40     0       01007   34811   programmer.lout
-17&1655.programmer.lout.41     0       01008   35256   programmer.lout
-17&1655.programmer.lout.42     0       01009   35688   programmer.lout
-17&1655.programmer.lout.43     0       01010   36163   programmer.lout
-17&1655.programmer.lout.44     0       01011   37396   programmer.lout
-17&1655.programmer.lout.45     0       01012   38703   programmer.lout
-17&1655.programmer.lout.46     0       01013   47728   programmer.lout
-17&1655.programmer.lout.47     0       01014   48202   programmer.lout
-17&1655.programmer.lout.48     0       01015   48710   programmer.lout
-17&1655.programmer.lout.49     0       01016   49218   programmer.lout
-17&1655.programmer.lout.5      0       01017   10284   programmer.lout
-17&1655.programmer.lout.50     0       01018   49741   programmer.lout
-17&1655.programmer.lout.51     0       01019   50267   programmer.lout
-17&1655.programmer.lout.52     0       01020   50791   programmer.lout
-17&1655.programmer.lout.53     0       01021   51411   programmer.lout
-17&1655.programmer.lout.54     0       01022   52169   programmer.lout
-17&1655.programmer.lout.55     0       01023   52634   programmer.lout
-17&1655.programmer.lout.56     0       01024   53140   programmer.lout
-17&1655.programmer.lout.57     0       01025   53662   programmer.lout
-17&1655.programmer.lout.58     0       01026   54697   programmer.lout
-17&1655.programmer.lout.59     0       01027   55438   programmer.lout
-17&1655.programmer.lout.6      0       01028   10676   programmer.lout
-17&1655.programmer.lout.60     0       01029   55904   programmer.lout
-17&1655.programmer.lout.61     0       01030   56369   programmer.lout
-17&1655.programmer.lout.62     0       01031   56876   programmer.lout
-17&1655.programmer.lout.63     0       01032   57399   programmer.lout
-17&1655.programmer.lout.64     0       01033   57887   programmer.lout
-17&1655.programmer.lout.65     0       01034   58409   programmer.lout
-17&1655.programmer.lout.66     0       01035   58931   programmer.lout
-17&1655.programmer.lout.67     0       01036   59463   programmer.lout
-17&1655.programmer.lout.68     0       01037   61134   programmer.lout
-17&1655.programmer.lout.69     0       01038   64090   programmer.lout
-17&1655.programmer.lout.7      0       01039   11068   programmer.lout
-17&1655.programmer.lout.70     0       01040   65751   programmer.lout
-17&1655.programmer.lout.71     0       01041   68773   programmer.lout
-17&1655.programmer.lout.72     0       01042   74431   programmer.lout
-17&1655.programmer.lout.73     0       01043   77443   programmer.lout
-17&1655.programmer.lout.74     0       01044   79672   programmer.lout
-17&1655.programmer.lout.75     0       01045   83744   programmer.lout
-17&1655.programmer.lout.76     0       01046   87816   programmer.lout
-17&1655.programmer.lout.77     0       01047   90386   programmer.lout
-17&1655.programmer.lout.78     0       01048   92361   programmer.lout
-17&1655.programmer.lout.79     0       01049   94380   programmer.lout
-17&1655.programmer.lout.8      0       01050   11558   programmer.lout
-17&1655.programmer.lout.80     0       01051   98032   programmer.lout
-17&1655.programmer.lout.81     0       01052   100041  programmer.lout
-17&1655.programmer.lout.82     0       01053   100502  programmer.lout
-17&1655.programmer.lout.83     0       01054   100912  programmer.lout
-17&1655.programmer.lout.84     0       01055   101330  programmer.lout
-17&1655.programmer.lout.85     0       01056   103032  programmer.lout
-17&1655.programmer.lout.86     0       01057   106050  programmer.lout
-17&1655.programmer.lout.87     0       01058   109112  programmer.lout
-17&1655.programmer.lout.88     0       01059   112068  programmer.lout
-17&1655.programmer.lout.89     0       01060   112654  programmer.lout
-17&1655.programmer.lout.9      0       01061   11950   programmer.lout
-17&1655.programmer.lout.90     0       01062   113092  programmer.lout
-17&1655.programmer.lout.91     0       01063   113721  programmer.lout
-17&1655.programmer.lout.92     0       01064   114393  programmer.lout
-17&1655.programmer.lout.93     0       01065   114769  programmer.lout
-17&1655.programmer.lout.94     0       01066   115195  programmer.lout
-17&1655.programmer.lout.95     0       01067   115572  programmer.lout
-17&1655.programmer.lout.96     0       01068   115949  programmer.lout
-17&1655.programmer.lout.97     0       01069   116969  programmer.lout
-17&1655.programmer.lout.98     0       01070   117346  programmer.lout
-17&1655.programmer.lout.99     0       01071   118191  programmer.lout
-18&2521.policy.lout.1  0       00045   6641    policy.lout
-18&2521.policy.lout.2  0       00059   8006    policy.lout
-18&2521.policy.lout.3  0       00075   9423    policy.lout
-18&2521.policy.lout.4  0       00102   12010   policy.lout
-18&2521.policy.lout.5  0       00112   13635   policy.lout
-18&2521.policy.lout.6  0       00120   14646   policy.lout
-18&2521.policy.lout.7  0       00135   16739   policy.lout
-18&2521.policy.lout.8  0       00200   23200   policy.lout
-18&2521.programmer.lout.1      0       01072   4542    programmer.lout
-18&2521.programmer.lout.10     0       01073   39848   programmer.lout
-18&2521.programmer.lout.11     0       01074   41165   programmer.lout
-18&2521.programmer.lout.12     0       01075   41317   programmer.lout
-18&2521.programmer.lout.13     0       01076   42793   programmer.lout
-18&2521.programmer.lout.14     0       01077   43819   programmer.lout
-18&2521.programmer.lout.15     0       01078   43998   programmer.lout
-18&2521.programmer.lout.16     0       01079   90530   programmer.lout
-18&2521.programmer.lout.17     0       01080   120385  programmer.lout
-18&2521.programmer.lout.18     0       01081   122568  programmer.lout
-18&2521.programmer.lout.2      0       01082   6041    programmer.lout
-18&2521.programmer.lout.3      0       01083   8851    programmer.lout
-18&2521.programmer.lout.4      0       01084   13715   programmer.lout
-18&2521.programmer.lout.5      0       01085   13928   programmer.lout
-18&2521.programmer.lout.6      0       01086   21165   programmer.lout
-18&2521.programmer.lout.7      0       01087   26146   programmer.lout
-18&2521.programmer.lout.8      0       01088   34393   programmer.lout
-18&2521.programmer.lout.9      0       01089   37766   programmer.lout
-19&@DocumentBody.28    0       00281   89602   policy.lout
-19&@DocumentBody.28    0       01090   130162  programmer.lout
-2&3336.policy.lout.1   0       00002   171     policy.lout
-2&3336.policy.lout.2   0       00013   1953    policy.lout
-2&3336.programmer.lout.1       0       01091   175     programmer.lout
-2&3336.programmer.lout.2       0       01092   2001    programmer.lout
-3&3391.policy.lout.1   0       00003   348     policy.lout
-3&3391.policy.lout.2   0       00014   2130    policy.lout
-3&3391.programmer.lout.1       0       01093   356     programmer.lout
-3&3391.programmer.lout.2       0       01094   2182    programmer.lout
-4&3445.policy.lout.1   0       00004   515     policy.lout
-4&3445.policy.lout.2   0       00015   2297    policy.lout
-4&3445.programmer.lout.1       0       01095   527     programmer.lout
-4&3445.programmer.lout.2       0       01096   2353    programmer.lout
-5&3500.policy.lout.1   0       00005   694     policy.lout
-5&3500.policy.lout.2   0       00016   2476    policy.lout
-5&3500.programmer.lout.1       0       01097   710     programmer.lout
-5&3500.programmer.lout.2       0       01098   2536    programmer.lout
-6&3554.policy.lout.1   0       00006   861     policy.lout
-6&3554.policy.lout.2   0       00017   2643    policy.lout
-6&3554.programmer.lout.1       0       01099   881     programmer.lout
-6&3554.programmer.lout.2       0       01100   2707    programmer.lout
-7&3609.policy.lout.1   0       00007   1036    policy.lout
-7&3609.policy.lout.2   0       00018   2818    policy.lout
-7&3609.programmer.lout.1       0       01101   1060    programmer.lout
-7&3609.programmer.lout.2       0       01102   2886    programmer.lout
-8&1400.policy.lout.1   0       00008   1207    policy.lout
-8&1400.programmer.lout.1       0       01103   1235    programmer.lout
-9&4153.policy.lout.1   0       00009   1485    policy.lout
-9&4153.programmer.lout.1       0       01104   1517    programmer.lout
index 1020fd06f9c22bcf9882a1a46a9c07421f01a7e1..db29682903812897840cc6f00b318e6471ff7eef 100644 (file)
@@ -1,2 +1,2 @@
-<!entity manuals-version "2.1.1.0">
-<!entity dpkg-version "1.4.0">
+<!entity manuals-version "">
+<!entity dpkg-version "1.4.1">
diff --git a/doc/obsolete/dependency-ordering.txt b/doc/obsolete/dependency-ordering.txt
deleted file mode 100644 (file)
index f3f6794..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-To: Debian developers list <debian-devel@pixar.com>
-Subject: Note about the default for virtal package dependencies
-
-As I wrote some time ago (see below), ordering is significant in the
-Depends and Recommended fields - in the absence of other information
-dselect will suggest to the user that they select the first named
-package in a list of options.
-
-However, there is no way to specify the `order' of several packages
-which all Provide the same thing, when that thing is listed as a
-Dependency.
-
-Eg, if we have:
- Package: glibcdoc
- Recommended: info-browser
-
- Package: info
- Provides: info-browser
-
- Package: emacs
- Provides: info-browser
-
-then (if emacs and info are both in the same Class) dselect's choice
-will be essentially random.
-
-It is important to think about this problem, and to consider whether
-to list one the the packages explicitly.
-
-For example,
- Package: glibcdoc
- Recommended: info | info-browser
-
-will do the same as the above, except that it will ensure that `info'
-is the package which dselect will suggest to the user they also select
-if the user has neither it nor Emacs and asks to select glibcdoc.
-
-This is not necessary if one of the packages has a more fundamental
-Class - see the details below.
-
-Ian.
-
-------- Start of forwarded message -------
-To: Debian developers list <debian-devel@pixar.com>
-Subject: Ordering is significant in Depends: and Recommends:
-
-For dselect, the ordering of alternative packages in a Depends: or
-Recommended: line is significant.
-
-When an unsatisfied dependency (Depends or Recommended) or a conflict
-is detected dselect will go into a `recursive package list', where the
-user gets to choose how to resolve the problem.
-
-Usually dselect will suggest to the user that they select the package
-with the most `fundamental' class (eg, it will prefer Base packages to
-Optional ones), or the one that they `most wanted' to select in some
-sense.
-
-However, in the absence of other information dselect will prefer
-packages listed earlier in the unsatisfied entry in the Depends or
-Recommended field.
-
-NB: this doesn't apply to constructions of the form:
- Package: auctex
- Depends: emacs, tex
-which specifies that auctex depends on *both* emacs and tex.  In this
-case dselect will suggest to the user that they select both packages.
-
-It applies to constructions of the form:
- Package: a2gs
- Recommended: gs_x | gs_both | gs_svga
-Here, dselect will prefer gs_x because it is listed earlier.  (In the
-future I may make it more clever - it may be able to notice, to
-continue the example, that the dependencies of gs_x are not yet
-satisfied while those of gs_svga, are, and thus prefer the latter, or
-in a different situation to notice that gs_both has extra dependencies
-which are satisfied, and thus prefer it to gs_x and gs_svga.  More
-thought is needed in this area.)
-
-One final example.  In the more complicated construction:
- Package: trn
- Depends: smail | sendmail, inn | inewsinn
-dselect will prefer smail because it is a Standard package, and
-Sendmail is only Optional, and will prefer inewsinn because it is
-Recommended and inn is only Optional.  So, the default (if none of the
-other packages were selected) would be to select smail and inewsinn.
-
-However, if inewsinn were moved to Optional this would change, and inn
-would be preferred whenever the issue arose after the change.
-
-Optional fields have the same structure as Depends and Recommended
-fields, but they will not arrange for the packages they list to be
-suggested for selection, though they will be offered to the user.
-
-Ian M: can this go in an appendix to the Guidelines ?
-
-Ian.
-------- End of forwarded message -------
diff --git a/doc/obsolete/descriptions.txt b/doc/obsolete/descriptions.txt
deleted file mode 100644 (file)
index fdc302b..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-To: Debian developers list <debian-devel@pixar.com>
-Subject: Package maintainers please look at your Description fields.
-
-dselect will be much more useful when more packages are more
-informative in the Description they provide in their control file.
-
-So, when you next release a package, could you please check whether
-the `control' file has a good description of the package, formatted as
-described below ?
-
-A small amount of effort here on the part of package maintainers will
-improve the looks of things quite a bit, I think.
-
-BTW, a number of packages have been indenting continuation lines in
-their Description fields thus:
-  Description: gnomovision
-         Gnomovision is ....
-         further blurb ...
-Please don't do this.  According to the scheme described below (which
-I've now implemented), dselect interprets the extra indentation to
-mean `preformatted' text, and doesn't wordwrap it.
-
-Ian.
-
-
-The format of the Description field is as follows:
-
-Description: <single line synopsis>
- <extended description over several lines>
-
-The extended description has several kinds of line:
-
- - those starting with a single space are part of a paragraph.
-Successive lines of this form will be word-wrapped when displayed.
-The leading space will usually be stripped off.
-
- - those starting with two or more spaces.  These will be displayed
-verbatim.  If the display cannot be panned horizontally the displaying
-program will linewrap them `hard' (ie, without taking account of word
-breaks).  If it can they will be allowed to trail off to the right.
-None, one or two initial spaces may be deleted, but the number of
-spaces deleted from each line will be the same (so that you can have
-indenting work right, for example).
-
- - those containing a single space followed by a single full stop
-character.  These are rendered as blank lines.  This is the ONLY way
-to get a blank line - see below.
-
- - those containing a space, a full stop and some more characters.
-These are for future expansion.  Don't use them.
-
-IMPORTANT and not so important TIPS:
-
-* ALWAYS START EXTENDED DESCRIPTION LINES WITH AT LEAST ONE WHITESPACE
-CHARACTER.  Fields in the control file and in the Packages file are
-separated by field names starting in the first column, just as in
-RFC822.  Forgetting the whitespace will cause dpkg-deb (>=0.93.23) to
-produce a syntax error when trying to build the package.  If you force
-it to build anyway dpkg will refuse to install the resulting mess.
-
-* DO NOT INCLUDE ANY COMPLETELY EMPTY LINES.  These separate different
-records in the Packages file, and are forbidden in control files.  See
-the previous paragraph for what happens if you get this wrong.
-
-* The single line synopsis should be kept brief - certainly under 80
-characters.  My current working half-dselect displays the first 49
-characters if you're using an 80-column terminal.
-
-* Don't include the package name in the synopsis line.  The display
-software knows how to display this already, and you don't need to
-state it.
-
-* The extended description should describe what the package does, and
-what component it forms of any larger subsystem of which it is a part.
-
-* Put important information first, both in the synopis and extended
-description.  Sometimes only the first part of the synopsis or of the
-description will be displayed.  You can assume that there will usually
-be a way to see the whole extended description.
-
-* You may include information about dependencies and so forth in the
-extended description, if you wish.
-
-* Don't use tab characters.  Their effect is not predictable.
-
-Example control file for Smail:
-
-Package: smail
-Version: 3.1.29.1
-Package_Revision: 8
-Maintainer: Ian Jackson <iwj10@cus.cam.ac.uk>
-Recommended: pine | elm | emacs | mh | mailx
-Optional: metamail
-Depends: cron
-Conflicts: sendmail
-Description: Electronic mail transport system.
- Smail is the recommended mail transport agent (MTA) for Debian.
- .
- An MTA is the innards of the mail system - it takes messages from
- user-friendly mailer programs and arranges for them to be delivered
- locally or passed on to other systems as required.
- .
- In order to make use of it you must have one or more user level
- mailreader programs such as elm, pine, mailx or Emacs (which has Rmail
- and VM as mailreaders) installed.  If you wish to send messages other
- than just to other users of your system you must also have appropriate
- networking support, in the form of IP or UUCP.
-
--- 
-Ian Jackson, at home.         ijackson@nyx.cs.du.edu or iwj10@cus.cam.ac.uk
-+44 1223 575512    Escoerea on IRC.   http://www.cl.cam.ac.uk/users/iwj10/
-2 Lexington Close, Cambridge, CB4 3LS, England.   Urgent: iwj@cam-orl.co.uk
diff --git a/doc/obsolete/disappear-replace.txt b/doc/obsolete/disappear-replace.txt
deleted file mode 100644 (file)
index 8335a0e..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-From ian Tue Apr 18 23:30:04 1995 
-X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
-       [nil nil nil nil nil nil nil nil nil nil nil nil "^To:" nil nil nil nil nil nil nil]
-       nil)
-X-VM-Summary-Format: "%3n %a %2d %3m  %-19.19F  %s\n"
-X-VM-Labels: nil
-X-VM-VHeader: ("Resent-" "From:" "Sender:" "To:" "Apparently-To:" "Cc:" "Subject:" "Date:") nil
-X-VM-Bookmark: 5
-To: Debian developers list <debian-devel@pixar.com>
-Subject: Handling of base packages
-
-I propose to implement the following scheme to enable obsolete base
-packages to disappear, and to allow files in the base packages to move
-between one package and another.
-
-1. When a package is installed, and contains files that are already
-marked as belonging to some other package, the older package will have
-the files that have been overwritten removed from its file list.
-
-2. When a package ceases to contain any files due to the action of
-point 1 above, its postrm script is run with the argument `disappear'
-(in place of `remove', `purge' or whatever).  It will then be moved
-into the `purge ok not-installed' state, so that it will cease to
-appear in dpkg and dselect lists.  Its conffiles will be ignored,
-*not* purged.  The prerm will *not* be run as the packaging system
-doesn't know what files are in a package until it unpacks it.
-
-This will all happen during the `unpack' phase of the replacing
-package.
-
-3. If a base system package which is being installed conflicts with
-another base system package which is currently installed on the
-system, the currently installed one will be removed first (the prerm
-will be run with `replace <package> <version>' as arguments, then the
-package will be removed, then the postrm will be run, likewise with
-`replace').  If the replacement fails the removal will be aborted,
-involving running the old packages' scripts with `abort-replace'.
-
-4. Base system packages may not be removed except under 2. or 3.
-above.  (There will be a --force-remove-base flag to allow foolhardy
-users to go ahead anyway.)
-
-Ian.
-
diff --git a/doc/obsolete/dpkg.texi b/doc/obsolete/dpkg.texi
deleted file mode 100644 (file)
index b9530d6..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-\input texinfo @c -*-texinfo-*-
-@c %**start of header
-@setfilename dpkg.info
-@settitle The @code{dpkg} Package Maintenance System
-@c %**end of header
-
-@ifinfo
-@format
-START-INFO-DIR-ENTRY
-* dpkg: (dpkg).          The @code{dpkg} package maintenance system.
-END-INFO-DIR-ENTRY
-@end format
-@end ifinfo
-
-@setchapternewpage off
-
-@ifinfo
-This file documents the @code{dpkg} package maintenance system.
-
-Copyright (C) 1994 Ian A. Murdock
-
-Permission is granted to make and distribute verbatim copies of this
-document provided the copyright notice and this permission notice are
-preserved on all copies.
-
-@ignore
-Permission is granted to process this file through TeX and print the
-results, provided the printed document carries a copying permission
-notice identical to this one, except for the removal of this paragraph
-(this paragraph not being relevant to the printed manual).
-@end ignore
-
-Permission is granted to copy and distribute modified versions of this
-document under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this document
-into another language, under the above conditions for modified versions,
-except that this permission notice may be stated in a translation approved
-by The Debian Linux Association.
-@end ifinfo
-
-@titlepage
-@title The @code{dpkg} Package Maintenance System
-@author Ian A. Murdock
-@page
-
-@vskip 0pt plus 1filll
-Copyright @copyright{} 1994 Ian A. Murdock
-
-Permission is granted to make and distribute verbatim copies of this
-document provided the copyright notice and this permission notice are
-preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-document under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this document
-into another language, under the above conditions for modified versions,
-except that this permission notice may be stated in a translation approved
-by The Debian Linux Association.
-@end titlepage
-
-@node Top, Overview, (dir), (dir)
-
-@top Introduction
-@menu
-* Overview::            An overview of the @code{dpkg} package
-                        maintenance system.
-* Installation::        How to install a package with @code{dpkg}.
-* Removal::             How to remove a package with @code{dpkg}.
-* Information::         How to obtain information about both
-                        installed and not-yet-installed packages.
-* Extension::           How to extend @code{dpkg} to support new
-                        package formats.
-* Guidelines::          Guidelines for creating and maintaining
-                        packages for Debian GNU/Linux.
-@end menu
-
-@node Overview
-@chapter Overview
-
-@node Installation
-@chapter Package Installation
-
-@node Removal
-@chapter Package Removal
-
-@node Information
-@chapter Package Information
-
-@node Guidelines
-@chapter Debian GNU/Linux Guidelines
-
-@node Extension
-@chapter How to Extend @code{dpkg} to Support New Package Formats
-
-@bye
diff --git a/doc/obsolete/dselect-methods.txt b/doc/obsolete/dselect-methods.txt
deleted file mode 100644 (file)
index d90e730..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-From ian Sun May 14 18:21:53 +0100 1995
-To: Debian developers list <debian-devel@pixar.com>
-Subject: dselect installation method scripts
-
-Below is a (somewhat amended) repost of the posting I made a little
-while ago about the interface between dselect and the installation
-scripts it can run to extract packages.
-
-Carl Streeter has some hard disk scripts that look fairly good (I
-haven't tested them).  Anyone else looking to write such scripts
-should see his code (Carl, can you upload them please ?).
-
-Howevever, there are a few points to note:
- * Each set of scripts can support several `options' as they're called
-- this saves having different code for the CD-ROM, hard disk, &c
-methods.
- * You have to supply a /usr/[local]/lib/dpkg/methods/<method>/names
-file listing the options - see below.
-
-dselect *will* look in /usr/local/lib/dpkg/methods as well as
-/usr/lib.  Put your scripts there until you send them to me for
-inclusion in dpkg.
-
-Details if the installation method handling is below, and in
-method-scripts.txt; an example `test' method that just shows you how
-to write a `names' file and how dselect reacts is available as:
-
-ab2022c57a1198838034c5f87ea501b1  dselect-example-test-method.tar
--rw-rw-r--   1 ian      ian         10240 May 14 18:19 dselect-example-test-method.tar
-
-NB that the code in dselect to select and call installation scripts is
-ALPHA !
-
-Ian.
-
-Each `installation method' will have three scripts:
-
- * Setup installation parameters.
- * Update list of available packages.
- * Unpack.
-
-Which set of scripts is to be used is selectable by the user, from the
-`[S]etup' menu option.  Basically, the user hits `Setup', gets
-presented with a menu of choices and picks one.
-
-This (a) sets that `choice' to be the default installation method and
-(b) runs the `setup' script for that choice.
-
-The setup script should prompt the user for parameters like the site
-to NFS-mount or FTP from, the directory to use, or the directory or
-filesystem where the .deb files can be found, or the tape or floppy
-device to install from.  It should store the responses under
-/var/lib/dpkg/methods - see below.
-
-The update script should obtain a list of available packages if
-possible (this is the Packages file from the FTP sites), and copy it
-to /var/lib/dpkg/available.  Be careful not to overwrite the available
-file if something goes wrong - I'd suggest copying to `available.new'
-and renaming.  If no available list is available :-) it should print a
-message saying so.
-
-The unpack script should feed all the available .deb files to
-  dpkg --unpack --no-also-select
-(the --auto option may also be useful here).  In the future there will
-be a mechanism to allow (for example) a floppy-based installation
-scheme to tell the user which packages are still to be processed; in
-the meantime you should just keep going until the user says `stop'.
-
-If any of these scripts needs to display a message for the user, it
-should wait for the user to hit `return' before exiting so that
-dselect doesn't immediately rewrite the screen.
-
-If a script gives a non-zero exit status dselect will print a message
-about it and prompt the user for an acknowledgement.  If it exits with
-a zero exit status then dselect will immediately go back into curses
-and any message that the script printed just before exiting will not
-be visible.
-
-The scripts will be kept in /usr/lib/dpkg/methods/.  Each method
-should have a directory under methods, containing:
-  `names'  - a list of `user-visible options', see below.
-  `setup', `update', `unpack'  - executable programs.
-  `desc.<option>' - description file.
-
-A method may provide several options on the `main menu' with different
-behaviour.  For example, there might be a generic get-packages-by-FTP
-method which might provide entries in the main menu for installation
-directly from one of the Debian mirror sites as well as for
-installation from a user-specified site.
-
-The `setup', `update' and `unpack' will be invoked with three
-arguments.
-
-The first argument is the directory with the dpkg status information,
-usually /var/lib/dpkg.  They should $1/methods/<method-name> to store
-their data (remember that the user can give a --admindir option to
-dselect).
-
-The second and third argument are the name of the method and the
-option within that method, respectively.  This information is provided
-by dselect (from the user's choice of installation option).
-
-`names' will be formatted as a list of lines, each containing:
- <sequence> <option> <summary>
-
-<sequence> is a two-digit number that will be used much like rc.d
-prefixes to control the order in the main menu.  If in doubt use 50.
-
-<option> is a name which will be passed to `setup', `update' and
-`unpack' as their third argument (see above).
-
-<summary> is the menu entry string.
-
-Each option may have an extended description in `desc.<option>'.  This
-should be formatted like a Description: field entry *shifted one
-character to the left*.
-
-/var/lib/dpkg/methods will exist, and a method may use a
-/var/lib/dpkg/methods/<method> directory or file (or <method>.* files)
-to store its state.
-
-<method> and <option> must follow the rules for C identifiers.
-
--- Ian Jackson 14th May 1995
diff --git a/doc/obsolete/essential-flag.txt b/doc/obsolete/essential-flag.txt
deleted file mode 100644 (file)
index 34e8211..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-From ian Thu Jul  6 21:14:08 +0100 1995
-X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
-       [nil nil nil nil nil nil nil nil nil nil nil nil "^To:" nil nil nil nil nil nil nil]
-       nil)
-In-Reply-To: <m0sTw2a-00063aC@mongo.pixar.com>
-References: <m0sTw2a-00063aC@mongo.pixar.com>
-To: debian-devel@pixar.com
-Subject: Re: non-uninstallable packages
-
-Bruce Perens writes ("non-uninstallable packages"):
-> Assume that a package, such as one in the base, is supposed to be
-> non-uninstallable because it is a critical system component. We should
-> specify that in an unambiguous form, rather than indicating it by
-> specifying "Class: base" in the control file.
-> 
-> I suggest yet another control file field, called "Flags: ". This is
-> followed by a comma-delimited set of flags. An example might be:
->      Flags: no-uninstall
-> 
-> Another alternative would be to add control-file fields for each flag.
-> In this case, the field would appear as:
->      Allow-uninstall: no
-> ...and the default would be "yes".
-
-I think you're right.  Bill spotted that we were trying to overload
-the `Class' field.
-
-I don't think there's any need for a generic `Flags:' field; a simple
-extra field is fine, unless we're going to have an awful lot of
-boolean flags applying to packages (any attribute with a value is
-better handled using a field of its own anyway).
-
-I propose to call the new field `Essential', with allowable values
-`yes' and `no' and a default of `no'.
-
-This will be clearer all round, I think, than attempting to describe
-dpkg behaviour in the field name.
-
-If I don't have to make an emergency bugfix release of dpkg first this
-will be in the next version.  I'll modify dselect too.
-
-Ian.
-
diff --git a/doc/obsolete/maintainer-script-args.txt b/doc/obsolete/maintainer-script-args.txt
deleted file mode 100644 (file)
index a1cd3c7..0000000
+++ /dev/null
@@ -1,173 +0,0 @@
-Richard Kettlewell has asked me to document this, so here is a brief
-summary.  More documentation will probably have to wait until someone
-has time ...
-
-... hmm, it has turned out not to be so brief, and I've spent the last
-hour or so writing it.  Perhaps someone can use it as the basis for a
-spec or a manpage or something.
-
-In all cases version numbers are <version>-<revision>, if the package
-has both, or just <version>.  `upgrade' is used even when the new
-version number looks lower than the old.
-
-*** SUMMARY - listing of possible scripts with arguments:
-
- <new preinst> install
- <new preinst> install <old-version>
- <new preinst> upgrade <old-version>
- <old preinst> abort-upgrade <new-version>
-
- <postinst> configure
- <old postinst> abort-upgrade <new version>
- <conflictor's postinst> abort-remove in-favour <package> <new version>
- <deconfigured's postinst> abort-deconfigure \
-               in-favour <package-being-installed-but-failed> <version>
-               removing <conflicting-package> <version>
-
- <prerm> remove
- <old prerm> upgrade <new version>
- <new prerm> failed-upgrade <old-vppersion>
- <conflictor's prerm> remove in-favour <package> <new version>
- <deconfigured's prerm> deconfigure \
-               in-favour <package-being-installed> <version> \
-               removing <conflicting-package> <version>
-
- <postrm> remove
- <postrm> purge
- <old postrm> upgrade <new-version>
- <new postrm> failed-upgrade <old-version>
- <new postrm> abort-install
- <new postrm> abort-install <old-version>
- <new postrm> abort-upgrade <old-version>
- <disappearer's postrm> disappear <overwriter> <new version>
-
-*** INSTALLATION (unpack):
-
-The procedure on installation/upgrade/overwrite/disappear (ie, when
-running dpkg --unpack, or the unpack stage of dpkg --install) is as
-follows.  In each case if an error occurs the actions in are general
-run backwards - this means that the maintainer scripts are run with
-different arguments in reverse order.  These are the `error unwind'
-calls listed below.
-
-1a. If a version the package is already installed, call
-       <old prerm> upgrade <new version>
-1b. If this gives an error (ie, a non-zero exit status), dpkg will
-attempt instead:
-       <new prerm> failed-upgrade <old-version>
-   ... error unwind, for both the above cases:
-       <old postinst> abort-upgrade <new version>
-
-2. If a `conflicting' package is being removed at the same time:
-2a. If any packages depended on that conflicting package and
---auto-deconfigure is specified, call, for each such package:
-       <deconfigured's prerm> deconfigure \
-               in-favour <package-being-installed> <version> \
-               removing <conflicting-package> <version>
-   ... error unwind:
-       <deconfigured's postinst> abort-deconfigure \
-               in-favour <package-being-installed-but-failed> <version>
-               removing <conflicting-package> <version>
-The deconfigured packages are marked as requiring configuration, so
-that if --install is used they will be configured again if possible.
-2b. To prepare for removal of the conflicting package, call:
-       <conflictor's prerm> remove in-favour <package> <new version>
-   ... error unwind:
-       <conflictor's postinst> abort-remove in-favour <package> <new version>
-
-3a. If the package is being upgraded, call
-       <new preinst> upgrade <old-version>
-3b. otherwise, if the package had some configuration files from a
-previous version installed (ie, it is in the conffiles-only state):
-       <new preinst> install <old-version>
-3c. otherwise (ie, the package was completely purged):
-       <new preinst> install
-   ... error unwind versions, respectively:
-       <new postrm> abort-upgrade <old-version>
-       <new postrm> abort-install <old-version>
-       <new postrm> abort-install
-
-4. The new package's files are unpacked, overwriting any that may be
-on the system already, for example any from the old package or from
-another package (backups of the old files are left around, and if
-anything goes wrong dpkg will attempt to put them back as part of the
-error unwind).
-
-5a. If the package is being upgraded, call
-       <old postrm> upgrade <new-version>
-5b. If this fails, dpkg will attempt:
-       <new postrm> failed-upgrade <old-version>
-   ... error unwind, for both cases:
-       <old preinst> abort-upgrade <new-version>
-
-This is the point of no return - if dpkg gets this far, it won't back
-off past this point if an error occurs.  This will leave the package
-in a fairly bad state, which will require a successful reinstallation
-to clear up, but it's when dpkg starts doing things that are
-irreversible.
-
-6. Any files which were in the old version of the package but not in
-   the new are removed.
-7. The new file list replaces the old.
-8. The new maintainer scripts replace the old.
-
-9. Any packages all of whose files have been overwritten during the
-installation, and which aren't required for dependencies, are
-considered to have been removed.  For each such package, 
-9a. dpkg calls:
-       <disappearer's postrm> disappear <overwriter> <new version>
-9b. The package's maintainer scripts are removed.
-9c. It is noted in the status database as being in a sane state,
-namely not installed (any conffiles it may have are ignored).
-Note that disappearing packages don't have their prerm called, because
-dpkg doesn't know in advance that the package is going to vanish.
-
-10. Any files in the package we're unpacking that are also listed in
-the file lists of other packages are removed from those lists.  (This
-will lobotomise the file list of the `conflicting' package if there is
-one.)
-
-11. The backup files made at 4. are deleted.
-12. The new package's status is now sane, and recorded as `unpacked'.
-
-Here is another point of no return - if the conflicting package's
-removal fails we don't unwind the rest of the installation; the
-conflicting package is left in a half-removed limbo.
-
-13. If there was a conflicting package we go and do the removal
-actions, starting from point 2. of the removal, below.
-
-
-*** CONFIGURATION:
-
-When we configure a package (this happens with dpkg --install, or with
---configure), we first update the conffiles and then call:
-       <postinst> configure
-(I'm planning to make available as an argument the version of the most
-recent successfully-configured version of the package.)
-
-No attempt is made to unwind after errors during configuration.
-
-
-*** REMOVAL:
-
-1.     <prerm> remove
-
-2. The package's files are removed (except conffiles).
-
-3.     <postrm> remove
-
-4. All the maintainer scripts except the postrm are removed.
-
-If we aren't purging the package we stop here.  Note that packages
-which have no postrm and no conffiles are automatically purged when
-removed, as there is no difference except for the dpkg status.
-
-5. The conffiles and any backup files (~-files, #*# files, %-files,
-.dpkg-{old,new,tmp}, &c &c &c) are removed.
-
-6.     <postrm> purge
-
-7. The package's file list is removed.
-
-No attempt is made to unwind after errors during removal.
diff --git a/doc/obsolete/version-ordering.txt b/doc/obsolete/version-ordering.txt
deleted file mode 100644 (file)
index 7bbda63..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-(This has been edited to conform to the intent in dpkg 1.0.16.
- When recent versions of dpkg compare versions they break the Version
- into an upstream version and debian revision first, by splitting the
- Version at the last hyphen.  The revisions are only considered if the
- upstream versions compare equal.)
-
-To: debian-devel@pixar.com
-Subject: Re: dpkg 0.93.8 released
-
-[...]
-Well, here is what I came up with after a bit of thought and testing.
-I propose the following algorithm for comparing version numbers:
-
-   forever {
-     remove initial non-digit substring from string a
-     remove initial non-digit substring from string b
-     compare initial non-digit substrings lexically,
-       counting letters as coming before punctuation
-     if (they differ) return the answer
-     remove initial digit substring from string a
-     remove initial digit substring from string b
-     compare initial digit substrings numerically
-     if (they differ) return the answer
-     if (both strings are now empty)
-       the version numbers are the same, stop
-     if (one string is now empty)
-       it is the `lesser', return the answer
-   }
-
-This will have the desired results:
-   2.1 < 2.7 < 2.7a < 2.7a-2 < 2.15
-
-An implementation in Perl is attached below.
-
-Ian.
-
-#!/usr/bin/perl --
-
-if (@ARGV) {
-    print &compare(@ARGV),"\n";
-} else {
-    while(<>) { chop; chop($x=<>); print &compare($_,$x),"\n"; }
-}                
-
-sub compare {
-    local ($a,$b) = @_;
-    do {
-        $a =~ s/^\D*//; $ad= $&; $ad =~ s/\W/ /g;
-        $b =~ s/^\D*//; $bd= $&; $bd =~ s/\W/ /g;
-print "\t[$ad|$a] [$bd|$b]\n";
-        $cm = $ad cmp $bd;  return $cm if $cm;
-        $a =~ s/^\d*//; $ad= $&;
-        $b =~ s/^\d*//; $bd= $&;
-print "\t<$ad|$a> <$bd|$b>\n";
-        $cm = $ad <=> $bd;  return $cm if $cm;
-    } while (length($a) && length($b));
-print "\t{$a} {$b}\n";
-    return length($a) cmp length($b);
-}
diff --git a/doc/obsolete/virtual-dependencies.txt b/doc/obsolete/virtual-dependencies.txt
deleted file mode 100644 (file)
index 1f45eb7..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-To: Debian users list <debian-user@pixar.com>
-Subject: dpkg 0.93.36: dselect does virtual packages
-
-This release contains virtual package support in the C parts of the
-system, which at the moment includes dselect and dpkg-deb.
-
-It works as I outlined in a mail to debian-devel a little while ago.
-
-Package maintainers: please start adding `Provides:' fields to your
-packages.  dselect will use and understand them; dpkg-deb will check
-the syntax of the Provides field instead of warning you about it.
-dpkg will not understand the new field and will ignore it.
-
-When almost all the packages have Provides: fields in place we can
-start replacing old-style Recommended: fields.
-
-Note that we can't change Depends: fields since they're also
-interpreted by dpkg, which doesn't know about Provides (yet).
-
-[...]
---------------------
-
-From: iwj10@cus.cam.ac.uk (Ian Jackson)
-To: debian-devel@pixar.com
-Subject: `virtual' packages in Depends, Conflicts &c
-Date: Fri, 31 Mar 95 15:44 BST
-
-We're starting to have a problem with package name changes and
-multiple packages providing the same service.
-
-I liked the idea (put forward by [Bruce Perens]) of having `virtual'
-packages; it seems that it would solve many of these problems straight
-away.
-
-What I'm proposing to do is as follows:
-
-Depends, Conflicts, Recommended and Optional lines will now be able to
-contain `virtual' package names as well as real package names.
-
-Virtual packages are in the same namespace as real packages, and may
-have the same name.  The meaning of a virtual package in a
-dependency/conflicts list is exactly that of listing all the real
-packages which state that they are an instantiation of that virtual
-package.
-
-This is done with a new Provides field in the control file, with a
-syntax much like the Conflicts field.
-
-The idea is that we can have something like:
- Package: elm
- Depends: mta
-
- Package: smail
- Provides: mta
- Conflicts: mta
-
- Package: sendmail
- Provides: mta
- Conflicts: mta
-&c.  The result is equivalent to elm having said
- Depends: smail | sendmail
-
-(There'll be a special case to say that a package may conflict with a
-virtual package which it provides - clearly ...)
-
-If there are both a real and a virtual package of the same name then
-the dependency may be satisfied (or the conflict caused) by either the
-real package or any of the virtual packages which provide it.  This is
-so that, for example, supposing we have
- Package: lout
- Optional: ghostview
-(this is a fictional example - the Lout package shouldn't mention
-ghostview), and someone else comes up with a nice PostScript
-previewer, then they can just say
- Package: marvelpostview
- Provides: ghostview
-and all will work in the interim (until, say, the Lout maintainer
-changes things).
-
-If a dependency or a conflict has a version number attached then only
-real packages will be considered to see whether the relationship is
-satisfied (or prohibited, for a conflict) - it is assumed that a real
-package which provides virtual package is not of the `right' version.
-If there is demand I could arrange that a package which provides a
-virtual package may mention a version number, eg.
-  Provides: mta (2.0)
-though I tbink this is unlikely to be helpful.
-
-If you want to specify which of a set of real packages should be the
-default to satisfy a particular dependency on a virtual package, you
-can simply list the real package as alternative before the virtual
-one.  E.g.:
- Package: xbaseR6
- Recommended: xsvga | x-server
- Provides: x-base, xr6shlib
-
- Package: xsvga
- Recommended: x-base
- Provides: x-server
-
- Package: x8514
- Recommended: x-base
- Provides: x-server
-
-Ian.
diff --git a/doc/policy.sgml b/doc/policy.sgml
deleted file mode 100644 (file)
index 112d51d..0000000
+++ /dev/null
@@ -1,1619 +0,0 @@
-<!doctype debiandoc system [
-<!entity % manuals-version-def system "manuals-version">
-%manuals-version-def;
-]>
-
-<!--
- Debian Linux package policy manual.
- Copyright (C)1996 Ian Jackson; released under the terms of the GNU
- General Public License, version 2 or (at your option) any later.
- -->
-
-<book>
-
-<title>Debian policy manual
-<author>Ian Jackson <email/ijackson@gnu.ai.mit.edu/
-<version>version &manuals-version; (dpkg &dpkg-version;), <date>
-
-<abstract>
-This manual describes the policy requirements which must be satisfied
-for a package to be included in the Debian distribution.  This
-includes details of the permissions and ownerships of files in
-packages and other technical requirements as well as information like
-the upload procedure.
-</abstract>
-
-<copyright>Copyright &copy;1996 Ian Jackson.
-<p>
-
-This manual is free software; you may redistribute it and/or modify it
-under the terms of the GNU General Public License as published by the
-Free Software Foundation; either version 2, or (at your option) any
-later version.
-<p>
-
-This is distributed in the hope that it will be useful, but
-<em>without any warranty</em>; without even the implied warranty of
-merchantability or fitness for a particular purpose.  See the GNU
-General Public License for more details.
-<p>
-
-You should have received a copy of the GNU General Public License with
-your Debian GNU/Linux system, in <tt>/usr/doc/copyright/GPL</tt>, or
-with the <prgn/dpkg/ source package as the file <tt>COPYING</tt>.  If
-not, write to the Free Software Foundation, Inc., 675 Mass Ave,
-Cambridge, MA 02139, USA.
-
-<toc sect>
-
-<chapt id="scope">Introduction and scope of this manual
-<p>
-
-This manual describes the criteria that a Debian-format package must
-satisfy to be included in the Debian distribution.
-<p>
-
-Much of this information will be useful even when building a package
-which is to be distributed in some other way or is for local use.
-<p>
-
-This manual does <em/not/ describe the technical mechanisms involved
-in package creation, installation and removal.  This information can
-be found in the <prgn/dpkg/ programmers' manual and the <prgn/dpkg/ system
-administrators' manual.
-<p>
-
-This document assumes familiarity with these other two manuals.
-Unfortunately the system administrators' manual does not exist yet.
-<p>
-
-The Debian version of the FSF's GNU <prgn/hello/ program is provided
-as an example for people wishing to create Debian packages.
-<p>
-
-<em>Note that this document is still a draft!</em>
-
-<chapt id="pkgcopyright">Package copyright
-<p>
-
-Please study the copyright of your submission <em/carefully/ and
-understand it before proceeding.  If you have doubts or questions,
-please ask.
-<p>
-
-The aims of the policy detailed below are:
-<list compact>
-<item>
-That any user be able to rebuild any package in the official Debian
-distribution from the original source plus our patches.
-<item>
-That we make available in our packaging formats as much software as we
-can.
-<item>
-That it be easy for people to make CDROMs of our distribution without
-violating copyrights.
-</list>
-<p>
-
-All packages in the Debian distribution proper must be freely useable,
-modifiable and redistributable in both source and binary
-form.<footnote>It is OK for there to be a requirement that modified
-versions carry a warning, or that they be released with a different
-name or version number, or something similar, because we can comply
-with this requirement if necessary.</footnote>
-It must be possible for anyone to distribute and use modified source
-code and their own compiled binaries, at least when they do so as part
-of a Debian distribution.
-<p>
-
-Packages
-<list compact>
-<item>
-whose copyright permission notices (or patent problems) do not allow
-distribution and copying for profit, without restriction on the amount
-charged, or
-<item>
-where distribution is restricted according to the medium used, or
-<item>
-where the distributor must ask any kind of special permission of the
-authors, or
-<item>
-with other onerous conditions,
-</list>
-may only be placed in the semi-supported non-free section of the
-Debian FTP archives.  This is important so that CDROM manufacturers
-can distribute Debian without having to check the copyright of each
-package individually, simply by leaving out the contents of the
-non-free area; CDROM distributors are encouraged, though, to check the
-copyrights on programs in non-free individually and include as many as
-they can.
-<p>
-
-Packages
-<list compact>
-<item>
-whose copyright permission notices (or patent problems) allow only
-distribution of compiled binaries (and thus of which only binaries are
-available), or
-<item>
-where the source code which may be
-distributed is not the complete source code required to compile the
-program (ie, the program cannot be compiled using only packages in the
-main Debian distribution), or
-<item>
-which depend for their use on non-free or contrib
-packages<footnote>This includes all packages which declare a
-dependency on a non-free or contrib package, and almost all packages
-which declare a recommendation.</footnote>, or
-<item>
-allow free use only for a trial period (shareware), or
-<item>
-are demonstration programs lacking vital functionality (crippleware),
-or
-<item>
-are only installer-packages which require the user to supply a
-separate file to be installed, or
-<item>
-which are buggy and no longer maintained, but are preserved for
-backward compatibility, or
-<item>
-which fail to meet some other policy requirements,
-</list>
-may only be placed in the semi-supported contrib section of the Debian
-FTP archives (unless they need to be in non-free - see above).
-<p>
-
-Programs whose authors encourage the user to make donations are fine
-for the main distribution, provided that the authors do not claim that
-not donating is immoral, unethical, illegal or something similar;
-otherwise they must go in contrib (or non-free, if even distribution
-is restricted by such statements).
-<p>
-
-Packages whose copyright permission notices (or patent problems) do
-not allow redistribution even of only binaries, and where no special
-permission has been obtained, cannot placed on the Debian FTP site and
-its mirrors at all.
-<p>
-
-Note that under international copyright law<footnote>This applies in
-the United States, too.</footnote> <em/no/ distribution or modification
-of a work is allowed without an explicit notice saying so.  Therefore
-a program without a copyright notice <em/is/ copyrighted and you may
-not do anything to it without risking being sued!  Likewise if a
-program has a copyright notice but no statement saying what is
-permitted then nothing is permitted.
-<p>
-
-Many authors are unaware of the problems that restrictive copyrights
-(or lack of copyright notices) can cause for the users of their
-supposedly-free software.  It is often worthwhile contacting such
-authors diplomatically to ask them to modify their terms generally, or
-specially for Debian.  However, this is a politically difficult thing
-to do and you should ask for advice on <prgn/debian-devel/ first.
-<p>
-
-When in doubt, send mail to <email/debian-devel@lists.debian.org/.  Be
-prepared to provide us with the copyright statement.  Software covered
-by the GPL, public domain software and BSD-like copyrights are safe;
-be wary of the phrases `commercial use prohibited' and `distribution
-restricted'.
-<p>
-
-Every package submission <em/must/ be accompanied by verbatim copy of
-its copyright (with the exceptions of public domain packages and those
-covered by the UCB BSD licence or the GNU GPL or LGPL; in these cases
-simply indicate which is appropriate).  This information must be
-included in a file installed by the binary package - see <ref
-id="copyrightfile">.
-
-<chapt id="binarypkg">Contents of the binary package
-
-<sect>Control file requirements
-
-<sect1><tt/Maintainer/ information
-<p>
-
-All packages must have a <tt/Maintainer/ field with the correct name
-and a working email address for the Debian maintainer of the package.
-If one person maintains several packages they should try to avoid
-having different forms of their name and address in different
-<tt/Maintainer/ fields.
-
-<sect1>Dependencies and virtual packages
-<p>
-
-Add a dependency for any shared libraries required by
-dynamically-linked executable binaries in your package, by using
-<prgn/dpkg-shlibdeps/.
-<p>
-
-All packages must use virtual package names where appropriate, and
-arrange to create new ones if necessary.  They must not use virtual
-package names (except privately, amongst a cooperating group of
-packages) unless they have been agreed upon and appear in the list of
-virtual package names.
-<p>
-
-The latest version of the authoritative list of virtual package names
-can be found on <ftpsite>ftp.debian.org</> in
-<ftppath>/debian/doc/package-developer/virtual-package-names-list.text</>
-or your local mirror.  The procedure for updating it is described at
-the top of the file.
-
-<sect1><tt/Section/ and <tt/Priority/
-<p>
-
-Decide whether your package can go in <tt/non-free/, <tt/contrib/ or
-the main distribution - see <ref id="pkgcopyright">, and put
-an appropriate value for the distribution in the
-<tt>debian/changelog</> file.
-<p>
-
-The <tt/Priority/ and <tt/Section/ control file fields give
-information for classifying the package in <prgn/dselect/ and say
-which directory to place it in the FTP archive.
-<p>
-
-They are ultimately the responsibility of the distribution
-maintainers; however, you should suggest values for them in your
-<tt/.changes/ information when you upload a package.  You do this by
-including appropriate information in the <tt>debian/control</tt> file
-before building the packages.
-<p>
-
-For a list of the currently in-use sections, please see the FTP
-archive.  Packages in the non-free and contrib areas should have
-section <tt/non-free/ and <tt/contrib/, respectively.
-
-<sect2><tt/Priority/ values
-<p>
-
-<taglist>
-<tag><tt/required/
-<item>
-<tt/required/ packages are necessary for the proper functioning of the
-system.  You must not remove these packages or your system may become
-totally broken and you may probably not even be able to use
-<prgn/dpkg/ to put things back.  Systems with only the <tt/required/
-packages are probably unuseable, but they do have enough functionality
-to allow the sysadmin to boot and install more software.
-
-<tag><tt/important/
-<item>
-Important programs, including those which one would expect to find on
-any Unix-like system.  If the expectation is that an experienced Unix
-person who found it missing would go `What the F*!@&lt;+ is going on,
-where is <prgn/foo/', it should be in <tt/important/.  This is an
-important criterion because we are trying to produce, amongst other
-things, a free Unix.  Other packages without which the system will not
-run well or be useable should also be here.  This does <em/not/
-include Emacs or X11 or TeX or any other large applications.  The
-<tt/important/ packages are just a bare minimum of commonly-expected
-and necessary tools.
-
-<tag><tt/standard/
-<item>
-These packages provide a reasonably small but not too limited
-character-mode system.  This is what will install by default if the
-user doesn't select anything else.  It doesn't include many large
-applications, but it does include Emacs (this is more of a piece of
-infrastructure than an application) and a reasonable subset of TeX and
-LaTeX (if this is possible without X).
-
-<tag><tt/optional/<footnote>In a sense everything is optional that
-isn't required, but that's not what is meant here.</footnote>
-<item>
-This is all the software that you might reasonably want to install if
-you didn't know what it was or don't have specialised requirements.
-This is a much larger system and includes X11, a full TeX
-distribution, and lots of applications.
-
-<tag><tt/extra/
-<item>
-This contains packages that conflict with others with higher
-priorities, or are only likely to be useful if you already know what
-they are or have specialised requirements.
-
-</taglist>
-<p>
-
-Priority values are not case-sensitive.
-
-<sect2>Base packages
-<p>
-
-Some packages have <tt/Section: base/ and are in the <tt/base/
-subdirectory on the FTP archives.  These are the packages that are
-supplied on the base disks.  They are the minimum sensible set for
-installing new packages (perhaps via a network).
-<p>
-
-Most of these packages should have <tt/Priority: required/ or at least
-<tt/Priority: important/, and many will be essential (see below).
-
-<sect1><tt/Pre-Depends/ and the <tt/Essential/ flag
-<p>
-
-Do not use <tt/Pre-Depends/ or <tt/Essential: yes/ unless your package
-is absolutely vital to the functioning of the system and the
-installation of other packages.  Do not do either of these things
-without consultation with the distribution maintainers or on
-<prgn/debian-devel/.
-<p>
-
-Usually, neither of these fields should not be used unless removing a
-package really will completely hose the system, making it impossible
-to recover by (re)installing packages with <prgn/dpkg/.
-<p>
-
-<tt/Essential/ should not be used for a shared library package - the
-dependencies will prevent its premature removal, and we need to be
-able to remove it when it has been superseded.
-<p>
-
-It is not necessary for other packages to declare any dependencies
-they have on other packages which are marked <tt/Essential/.
-
-<sect1>Including <tt/Priority/ and <tt/Section/ in the <tt/.deb/
-control file
-<p>
-
-If a user installs a package which is not part of the standard
-distribution, or without downloading and updating from a new
-<prgn/Packages/ file, the information about the priority and section
-of a package will be absent, and the <prgn/dselect/ package listing
-will have the package listed under `unclassified'.  In order to
-improve this it is permissible to use the <tt/-is/, <tt/-isp/ or
-<tt/-ip/ option to <prgn/dpkg-gencontrol/, so that the <tt/Section/
-and/or <tt/Priority/ is copied into the actual control information in
-the <tt/.deb/ file.  However, if you do this you should make sure you
-keep the information up to date so that users are not shown
-conflicting information.
-
-
-<sect1>Formatting of the <tt/Description/ control file field
-<p>
-
-Every Debian package should have an extended description.
-<p>
-
-The description should be written so that it tells the user what they
-need to know to decide whether to install the package.  This
-description should not just be copied from the blurb for the program.
-Instructions for configuring or using the package should not be
-included - that is what installation scripts, manpages, Info files and
-<tt>/usr/doc/<var/package/</> are for.  Copyright statements and other
-administrivia should not be included - that is what
-<tt>/usr/doc/<var/package//copyright</> is for.
-<p>
-
-If you wish to include a list in your extended with entries which are
-a line or more each you must indent each entry by one space to make
-sure that it doesn't get wordwrapped.  The start of each list entry
-should be marked with an asterisk, followed by a single space.  You
-must wrap the list entries yourself to 75 columns, and should start
-continuation lines indented by three spaces so that they line up with
-the start of the text on the first line of each list entry.
-<p>
-
-See the programmers' manual for further requirements and pitfalls.
-
-<sect>Locations of files
-<p>
-
-The location of all installed files and directories must comply fully
-with the Linux File System Standard (FSSTND).  The latest version of
-this document can be found alongside this manual or on
-<ftpsite/tsx-11.mit.edu/ in
-<ftppath>/pub/linux/docs/linux-standards/fsstnd/</>.  Specific questions
-about following the standard may be asked on <prgn/debian-devel/, or
-referred to Daniel Quinlan, the FSSTND coordinator, at
-<email/quinlan@yggdrasil.com/.
-<p>
-
-<sect1>Manpages
-<p>
-
-You must install manpages in <prgn/nroff/ source form, in appropriate
-places under <tt>/usr/man</tt>.  You should only use sections 1 to 9
-(see the FSSTND for more details).  You must <em/not/ install a
-preformatted `cat page'.
-<p>
-
-If no manual page is available for a particular program, utility or
-function and this is reported as a bug on debian-bugs, a symbolic link
-from the requested manual page to the <manref name=undocumented
-section=7> manual page should be provided.  This symbolic link can be
-created from <tt>debian/rules</> like this:
-<example>
-ln -s ../man7/undocumented.7 \
- debian/tmp/usr/man/man[1-9]/the_requested_manpage.[1-9]
-</example>
-This manpage claims that the lack of a manpage has been reported as a
-bug, so you may only do this if it really has (you can report it
-yourself, if you like).  Do not close the bug report until a proper
-manpage is available.
-<p>
-
-You may forward a complaint about a missing manpage to the upstream
-authors, and mark the bug as forwarded in the Debian bug tracking
-system.  Even though the GNU Project do not in general consider the
-lack of a manpage to be a bug, we do - if they tell you that they
-don't consider it a bug you should leave the bug in our bug tracking
-system open anyway.
-<p>
-
-Manpages should be installed compressed using <tt/gzip -9/.
-<p>
-
-If one manpage needs to be accesssible via several names it is better
-to use a symbolic link than the <tt/.so/ feature, but there is no need
-to fiddle with the relevant parts of the upstream source to change
-from <tt/.so/ to symlinks - don't do it unless it's easy.  Do not
-create hard links in the manual page directories, and do not put
-absolute filenames in <tt/.so/ directives.  The filename in a
-<tt/.so/ in a manpage should be relative to the base of the manpage
-tree (usually <tt>/usr/man</tt>).
-
-<sect1>Info documents
-<p>
-
-Info documents should be installed in <tt>/usr/info</tt>.  They should
-be compressed with <tt/gzip -9/.
-<p>
-
-Your package must call <prgn/install-info/ to update the Info <tt/dir/
-file, in its post-installation script:
-<example>
-install-info --quiet --section Development Development \
-  /usr/info/foobar.info
-</example>
-<p>
-
-It is a good idea to specify a section for the location of your
-program; this is done with the <tt/--section/ switch.  To determine
-which section to use, you should look at <tt>/usr/info/dir</> on your
-system and choose the most relevant (or create a new section if none
-of the current sections are relevant).  Note that the <tt/--section/
-flag takes two arguments; the first is a regular expression to match
-(case-insensitively) against an existing section, the second is used
-when creating a new one.
-<p>
-
-You must remove the entries in the pre-removal script:
-<example>
-install-info --quiet --remove /usr/info/foobar.info
-</example>
-<p>
-
-If <prgn/install-info/ cannot find a description entry in the Info file
-you will have to supply one.  See <manref name=install-info section=8>
-for details.
-
-<sect1>Additional documentation
-<p>
-
-Any additional documentation that comes with the package can be
-installed at the discretion of the package maintainer.  Text
-documentation should be installed in a directory
-<tt>/usr/doc/<var/package/</tt><footnote>Where <var/package/ is the
-name of the package.</footnote> and compressed with <tt/gzip -9/
-unless it is small.
-<p>
-
-If a package comes with large amounts of documentation which many
-users of the package will not require you should create a separate
-binary package to contain it, so that it does not take up disk space
-on the machines of users who do not need or want it installed.
-<p>
-
-It is often a good idea to put text information files (<tt/README/s,
-changelogs, and so forth) that come with the source package in
-<tt>/usr/doc/<var/package/</> in the binary package.  However, don't
-install the instructions for building and installing the package, of
-course!
-
-<sect1>Preferred documentation formats
-<p>
-
-The unification of Debian documentation is being carried out via HTML.
-<p>
-
-If your package comes with extensive documentation in a markup format
-that can be converted to various other formats you should if possible
-ship HTML versions in the binary package, in the directory
-<tt>/usr/doc/<var/package/</> or its subdirectories.
-<p>
-
-Other formats such as PostScript may be provided at your option.
-
-<sect2>Examples
-<p>
-
-Any examples (configurations, source files, whatever), should be
-installed in a directory <tt>/usr/doc/<var/package//examples</tt>.
-These files should not be referenced by any program - they're there
-for the benefit of the system administrator and users, as
-documentation only.
-
-<sect1 id="instchangelog"><tt>/usr/doc/<var/package//changelog.Debian.gz</>
-and <tt>/usr/doc/<var/package//changelog.upstream.gz</>.
-<p>
-
-This installed file must contain a copy of the <tt>debian/changelog</>
-file from your Debian source tree, and a copy of the upstream
-changelog file if there is one.  They should usually be installed in
-<tt>/usr/doc/<var/package/</> as <tt/changelog.Debian.gz/ and
-<tt/changelog.gz/ respectively.
-<p>
-
-Both should be installed compressed using <tt/gzip -9/, as they will
-become large with time even if they start out small.
-<p>
-
-If the package has only one changelog which is used both as the Debian
-changelog and the upstream one because there is no separate upstream
-maintainer then that changelog should usually be installed as
-<tt>/usr/doc/<var/package//changelog.gz</>; if there is a separate
-upstream maintainer, but no upstream changelog, then the Debian
-changelog should still be called <tt/changelog.Debian.gz/.
-
-<sect1 id="copyrightfile"><tt>/usr/doc/<var/package//copyright</tt>
-<p>
-
-This file must contain details of the authorship and copyright of the
-package.  It must say where the upstream sources (if any) were
-obtained, and explain briefly what modifications were made in the
-Debian version of the package compared to the upstream one.  It must
-name the original authors of the package and the Debian maintainer(s)
-who were involved with its creation.
-<p>
-
-It must contain the full text of the copyright notice and any
-acknowledgements for the program and the licence terms under which the
-program is distributed.  If the package is distributed under the GNU
-General Public Licence, the GNU Library General Public Licence, the
-Regents of the University of California at Berkeley (BSD) licence or
-Larry Wall's Artistic Licence please say so instead of including a
-copy of the licence.  The files <tt/BSD/, <tt/GPL/, <tt/LGPL/ and
-<tt/Artistic/ are be available in <tt>/usr/doc/copyright</tt> for you
-to refer to.
-<p>
-
-The copyright file should not be compressed unless it is very large.
-<p>
-
-Do not use the copyright file as a general <tt/README/ file.  If your
-package has such a file it should be installed in
-<tt>/usr/doc/<var/package//README</> or <tt/README.Debian/ or some
-other appropriate place.
-
-<sect1>Symbolic links
-<p>
-
-Most symbolic links should be relative, not absolute.  Absolute links,
-in general, cause problems when a file system is not mounted where it
-"normally" resides (for example, when mounted via NFS).
-<p>
-
-In particular, symlinks from one part of <tt>/usr</tt> to another
-should be relative.
-<p>
-
-In certain cases, however, relative links may cause more problems.
-For example, links into <tt>/etc</tt> and <tt>/var</tt> should be
-absolute.
-<p>
-
-Note that when creating a relative link using <prgn/ln/ it is not
-necessary for the target of the link to exist relative to the working
-directory you're running <prgn/ln/ from; nor is it necessary to change
-directory to the directory where the link is to be made.  Simply
-include the string that should appear as the target of the link (this
-will be a pathname relative to the directory in which the link
-resides) as the first argument to <prgn/ln/.
-<p>
-
-For example, in your <prgn/Makefile/ or <tt>debian/rules</>, do things
-like:
-<example>
-ln -fs gcc $(prefix)/bin/cc
-ln -fs gcc debian/tmp/usr/bin/cc
-ln -fs ../sbin/sendmail $(prefix)/bin/runq
-ln -fs ../sbin/sendmail debian/tmp/usr/bin/runq
-</example>
-
-<sect1>Logfiles
-<p>
-
-Logfiles should usually be named
-<tt>/var/log/<var/package/.log</tt>.  If you have many logfiles,
-or need a separate directory for permissions reasons
-(<tt>/var/log</tt> is writeable only by <tt/root/), you should usually
-create a directory named <tt>/var/log/<var/package/</tt>.
-<p>
-
-Make sure that any logfiles are rotated occasionally so that they
-don't grow indefinitely; the best way to do this is to use
-<prgn/savelog/ program in an <tt>/etc/cron.daily</>,
-<tt>/etc/cron.weekly</> or <tt>/etc/cron.monthly</> script.
-<p>
-
-Make sure that any logfiles are removed when the package is purged
-(but not when it is only removed), by checking the argument to the
-postrm script (see the programmer's manual for details).
-
-<sect1><tt>/usr/local</> - for the use of the system administrator
-<p>
-
-As mandated by the FSSTND no package should place any files in
-<tt>/usr/local</>, either by putting them in the filesystem archive to
-be unpacked by <prgn/dpkg/ or by manipulating them in their maintainer
-scripts.
-<p>
-
-Every package that searches a number of directories or files for
-something (for example, looking for shared libraries in <tt>/lib</> or
-<tt>/usr/lib</>) should search an appropriate directory in
-<tt>/usr/local</> too.
-<p>
-
-In order that the system administrator may know where to place
-additional files a package should create an empty directory in the
-appropriate place in <tt>/usr/local</> by supplying it in the
-filesystem archive for unpacking by <prgn/dpkg/.  The
-<tt>/usr/local</> directory itself and all the subdirectories created
-by the package should have permissions 2775 (group-writeable and
-set-group-id) and be owned by <tt/root.staff/.
-<p>
-
-In the future it will be possible to tell <prgn/dpkg/ not to unpack
-files matching certain patterns, so that system administrators who do
-not wish these directories in <tt>/usr/local</> do not need to have
-them.
-
-<sect>Permissions and ownerships
-<p>
-
-The rules in this section are guidelines for general use.  If
-necessary you may deviate from the details below.  However, if you do
-so you must make sure that what is done is secure and you must try to
-be as consistent as possible with the rest of the system.  You should
-probably also discuss it on <prgn/debian-devel/ first.
-<p>
-
-Files should be owned by <tt/root.root/, and made writeable only by
-the owner and universally readable (and executable, if appropriate).
-<p>
-
-Directories should be mode 755 or (for group-writability) mode 2775.
-The ownership of the directory should be consistent with its mode -
-if a directory is mode 2775, it should be owned by the group that
-needs write access to it.
-<p>
-
-Setuid and setgid executables should be mode 4755 or 2755
-respectively, and owned by the appropriate user or group.  They should
-not be made unreadable (modes like 4711 or 2711 or even 4111); doing
-so achieves no extra security, because anyone can find the binary in
-the freely available Debian package - it is merely inconvenient.  For
-the same reason you should not restrict read or execute permissions on
-non-set-id executables.
-<p>
-
-Some setuid programs need to be restricted to particular sets of
-users, using file permissions.  In this case they should be owned by
-the uid to which they are set-id, and by the group which should be
-allowed to execute them.  They should have mode 4754; there is no
-point in making them unreadable to those users who must not be allowed
-to execute them.
-<p>
-
-Do not arrange that the system administrator can only reconfigure the
-package to correspond to their local security policy by changing the
-permissions on a binary.  Ordinary files installed by <prgn/dpkg/ (as
-opposed to conffiles and other similar objects) have their permissions
-reset to the distributed permissions when the package is reinstalled.
-Instead you should consider (for example) creating a group for people
-allowed to use the program(s) and making any setuid executables
-executable only by that group.
-<p>
-
-Shared libraries should be installed executable.
-
-<sect>Configuration files
-<p>
-
-Any configuration files created or used by your package should reside
-in <tt>/etc</tt>.  If there are several you should consider creating a
-subdirectory named after your package.
-<p>
-
-It is almost certain that any file in <tt>/etc</tt> that is in your
-package's filesystem archive should be listed in <prgn/dpkg/'s
-<tt/conffiles/ control area file.  (See the <prgn/dpkg/ programmers'
-manual).
-
-<sect>Maintainer scripts
-<p>
-
-The package installation scripts should avoid producing output which
-it is unnecessary for the user to see and should rely on <prgn/dpkg/ to
-stave off boredom on the part of a user installing many packages.
-This means, amongst other things, using the <tt/--quiet/ option on
-<prgn/install-info/.
-<p>
-
-Packages should try to minimise the amount of prompting they need to
-do, and they should ensure that the user will only every be asked each
-question once.  This means that packages should try to use appropriate
-shared configuration files (such as <tt>/etc/papersize</> and
-<tt>/etc/news/server</>, rather than each prompting for their own
-list of required pieces of information.
-<p>
-
-It also means that an upgrade should not ask the same questions again,
-unless the user has used <tt/dpkg --purge/ to remove the package's
-configuration.  The answers to configuration questions should be
-stored in an appropriate place in <tt>/etc</> so that the user can
-modify them, and how this has been done should be documented.
-<p>
-
-If a package has a vitally important piece of information to pass to
-the user (such as "don't run me as I am, you must edit the following
-configuration files first or you risk your system emitting
-badly-formatted messages"), it should display this in the
-<prgn/postinst/ script and prompt the user to hit return to
-acknowledge the message.  Copyright messages do not count as vitally
-important (they belong in <tt>/usr/doc/copyright</>); neither do
-instructions on how to use a program (these should be in on line
-documentation, where all the users can see them).
-<p>
-
-Any necessary prompting should almost always be confined to the
-post-installation script, and should be protected with a conditional
-so that unnecssary prompting doesn't happen if a package's
-installation fails and the <prgn/postinst/ is called with
-<tt/abort-upgrade/, <tt/abort-remove/ or <tt/abort-deconfigure/.
-<p>
-
-Errors which occur during the execution of an installation script
-<em/must/ be checked and the installation <em/must not/ continue after
-an error.
-<p>
-
-The section below on scripts in general applies to package maintainer
-scripts too.
-
-<sect>Scripts in general
-<p>
-
-All command scripts, including the package maintainer scripts inside
-the package and used by <prgn/dpkg/, should have a <tt/#!/ line naming
-the shell to be used to interpret them.
-<p>
-
-In the case of Perl scripts this should be <tt>#!/usr/bin/perl</tt>.
-<p>
-
-Shell scripts (<prgn/sh/ and <prgn/bash/) should almost certainly
-start with <tt>set -e</> so that errors are detected.  Every script
-<em/must/ use <tt/set -e/ or check the exit status of <em/every/
-command.
-<p>
-
-Perl scripts should check for errors when making any system calls,
-including <tt/open/, <tt/print/, <tt/close/, <tt/rename/ and
-<tt/system/.
-<p>
-
-<prgn/csh/ and <prgn/tcsh/ should be avoided as scripting languages.  See
-Csh Programming Considered Harmful, one of the <tt/comp.unix.*/ FAQs.
-If an upstream package comes with <prgn/csh/ scripts then you must make
-sure that they start with <tt>#!/bin/csh</tt> and make your package
-depend on <prgn/csh/.
-<p>
-
-<sect>Shared library packages
-<p>
-
-Packages involving shared libraries should be split up into several
-binary packages.
-<p>
-
-For a straightforward library which has a development environment and
-a runtime kit including just shared libraries you need to create two
-packages: <tt/<var/libraryname/<var/soname//<footnote><var/soname/ is
-the shared object name of the shared library - it's the thing that has
-to match exactly between building an executable and running it for the
-dynamic linker to be able run the program.  Usually the <var/soname/
-is the major number of the library.</footnote> and
-<tt/<var/libraryname/<var/soname/-dev/.
-<p>
-
-If you prefer only to support one development version at a time you
-may name the development package <tt/<var/libraryname/-dev/; otherwise
-you may wish to use <prgn/dpkg/'s conflicts mechanism to ensure that
-the user only installs one development version at a time (after all,
-different development versions are likely to have the same header
-files in them, causing a filename clash if both are installed).
-Typically the development version will also need an exact version
-dependency on the runtime library, to make sure that compilation and
-linking happens correctly.
-<p>
-
-Packages which use the shared library should have a dependency on the
-name of the shared library package,
-<tt/<var/libraryname/<var/soname//.  When the <var/soname/ changes you
-can have both versions of the library installed while moving from the
-old library to the new.
-<p>
-
-If your package has some run-time support programs which use the
-shared library you must <em/not/ put them in the shared library
-package.  If you do that then you won't be able to install several
-versions of the shared library without getting filename clashes.
-Instead, either create a third package for the runtime binaries (this
-package might typically be named <tt/<var/libraryname/-runtime/ - note
-the absence of the <var/soname/ in the package name) or if the
-development package is small include them in there.
-<p>
-
-If you have several shared libraries built from the same source tree
-you can lump them all togther into a single shared library package,
-provided that you change all their <var/soname/s at once (so that you
-don't get filename clashes if you try to install different versions of
-the combined shared libraries package).
-<p>
-
-Follow the directions in the <prgn/dpkg/ programmers' manual for
-putting the shared library in its package, and make sure you include a
-<tt/shlibs/ control area file with details of the dependencies for
-packages which use the library.
-
-<sect>Application configuration files, dotfiles and <tt>/etc/skel</>
-<p>
-
-Files in <tt>/etc/skel</> will automatically be copied into new user
-accounts by <prgn/adduser/.  They should not be referenced there by
-any program.
-<p>
-
-Therefore, if a program needs a dotfile to exist in advance in
-<tt/$HOME/ to work sensibly that dotfile should be installed in
-<tt>/etc/skel</> (and listed in conffiles, if it is not generated and
-modified dynamically by the package's installation scripts).
-<p>
-
-However, programs that require dotfiles in order to operate sensibly
-(dotfiles that they do not create themselves automatically, that is)
-are a bad thing, and programs should be configured by the Debian
-default installation as close to normal as possible.
-<p>
-
-Therefore, if a program in a Debian package needs to be configured in
-some way in order to operate sensibly that configuration should be
-done in a site-wide global configuration file elsewhere in
-<tt>/etc</>.  Only if the program doesn't support a site-wide default
-configuration and the package maintainer doesn't have time to add it
-should a default per-user file be placed in <tt>/etc/skel</>.
-<p>
-
-<tt>/etc/skel</> should be as empty as we can make it.  This is
-particularly true because there is no easy mechanism for ensuring that
-the appropriate dotfiles are copied into the accounts of existing
-users when a package is installed.
-<p>
-
-Ideally the sysadmin should ideally not have to do any configuration
-other than that done (semi-)automatically by the postinst script.
-
-
-<sect>Games
-<p>
-
-The permissions on /var/lib/games are 755 <tt/root.root/.
-<p>
-
-Each game decides on its own security policy.
-<p>
-
-Games which require protected, privileged access to high-score files,
-savegames, &amp;c, must be made set-<em/group/-id (mode 2755) and
-owned by <tt/root.games/, and use files and directories with
-appropriate permissions (770 <tt/root.games/, for example).  They must
-<em/not/ be made set-<em/user/-id, as this causes security
-problems.<footnote>If an attacker can subvert any set-user-id game
-they can overwrite the executable of any other, causing other players
-of these cames to run a trojan.  With a set-group-id game the attacker
-only gets access to less important game data, and if they can get at
-the other players' accounts at all it will take considerably more
-effort.</footnote>
-<p>
-
-Some packages, for example some fortune cookie programs, are
-configured by the upstream authors to install with their data files or
-other static information made unreadable so that they can only be
-accessed through set-id programs provided.  Do not do this in a Debian
-package: anyone can download the <tt/.deb/ file and read the data from
-it, so there is no point making the files unreadable.  Not making the
-files unreadable also means that you don't have to make so many
-programs set-id, which reduces the risk of a security hole.
-
-<sect>Allocating package-specific users and groups
-<p>
-
-If you need to create a new user or group for your package there are
-two possibilities.  Firstly, you may need to make some files in the
-binary package be owned by this user or group, or you may need to
-compile the user or group id (rather than just the name) into the
-binary (though this latter should be avoided if possible).  In this
-case you need a statically allocated id.
-<p>
-
-You must ask for a user or group id from the base system maintainer,
-and must not release the package until you have been allocated one.
-Once you have been allocated one you must make the package depend
-on a version of the base system with the id present in
-<tt>/etc/passwd</tt> or <tt>/etc/group</tt>, or alternatively arrange
-for your package to create the user or group itself with the correct
-id (using <tt/adduser/) in its pre- or post-installation script (the
-latter is to be preferred if it is possible).
-<p>
-
-On the other hand, the program may able to determine the uid or gid
-from the group name at runtime, so that a dynamic id can be used.  In
-this case you must choose an appropriate user or group name,
-discussing this on <prgn/debian-devel/ and checking with the base system
-maintainer that it is unique and that they do not wish you to use a
-statically allocated id instead.  When this has been checked you must
-arrange for your package to create the user or group if necessary
-using <prgn/adduser/ in the pre- or post-installation script (again, the
-latter is to be preferred if it is possible).
-<p>
-
-Note that changing the numeric value of an id associated with a name
-is very difficult, and involves searching the filesystem for all
-appropriate files.  You need to think carefully whether a static or
-dynamic id is required, since changing your mind later will cause
-problems.
-
-
-<sect>Installation of Emacs-lisp files
-<p>
-
-Generally, if a package includes an elisp helper file, it probably
-doesn't need to be byte-compiled. If the package is <em/written/
-primarily in emacs, it is probably complex enough that speed is an
-issue and should be byte compiled.
-
-
-<sect>Use of <prgn/dpkg-divert/ and <prgn/update-alternatives/
-<p>
-
-Do not use <prgn/dpkg-divert/ on a file belonging to another package
-without consulting the maintainer of that package first.
-<p>
-
-In order for <prgn/update-alternatives/ to work correctly all the
-packages which supply an instance of the `shared' command name (or,
-in general, filename) must use it.  You can use <tt/Conflicts/ to
-force the deinstallation of other packages supplying it which do not
-(yet) use <prgn/update-alternatives/.  It may in this case be
-appropriate to specify a conflict on earlier versions on something -
-this is an exception to the usual rule that this is not allowed.
-
-
-<chapt>Configuring and building the programs in the package
-
-<sect>Compilation options
-<p>
-
-Generally the following compilation parameters should be used:
-<example>
-CC = gcc
-CFLAGS = -O2 -g -Wall # sane warning options vary between programs
-LDFLAGS = # none
-install -s # (or use strip on the files in debian/tmp)
-</example>
-<p>
-
-Note that all installed binaries and shared libraries should be
-stripped<footnote>Shared libraries can function perfectly well when
-stripped, since the symbols for dynamic linking are in a separate part
-of the ELF object file.</footnote><footnote>Under some circumstances
-it may be useful to install a shared library unstripped, for example
-when building a separate package to support debugging.</footnote>,
-either by using the <tt/-s/ flag to <prgn/install/, or by calling
-<prgn/strip/ on the binaries after they have been copied into
-<tt>debian/tmp</> but before the tree is made into a package.
-<p>
-
-Make sure that you do not link with <tt/-g/, as this makes a.out
-compilers produce huge statically linked binaries.  The <tt/-g/ flag
-is useful on compilation so that you have available a full set of
-debugging symbols in your built source tree, in case anyone should
-file a bug report involving (for example) a core dump.
-<p>
-
-The <tt/-N/ flag should not be used.  On a.out systems it may have
-been useful for some very small binaries, but for ELF it has no good
-effect.
-<p>
-
-It is up to the package maintainer to decide what compilation options
-are best for the package.  Certain binaries (such as
-computationally-intensive programs) may function better with certain
-flags (<tt/-O3/, for example); feel free to use them.  Please use good
-judgment here.  Don't use flags for the sake of it; only use them if
-there is good reason to do so.  Feel free to override the upstream
-author's ideas about which compilation options are best - they are
-often inappropriate for our environment.
-<p>
-
-Please make sure that you use only released versions of shared
-libraries to build your packages; otherwise other users will not be
-able to run your binaries properly.  Producing source packages that
-depend on unreleased compilers is also usually a bad idea.
-
-
-<sect>Packages which can use the X shared libraries
-<p>
-
-Some programs can be configured with or without support for X Windows.
-Typically these binaries produced when configured for X will need the
-X shared libraries to run.
-<p>
-
-Such programs should be configured <em/with/ X support, and should
-declare a dependency on <tt/elf-x11r6lib/ (for the X11R6 libraries).
-Users who wish to use the program can install just the relatively
-small <tt/xlib/ package, and do not need to install the whole of X.
-<p>
-
-Do not create two versions (one with X support and one without) of
-your package.
-
-
-<sect id="mail">Mail processing on Debian systems
-<p>
-
-Debian packages which process electronic mail, whether
-mail-user-agents (MUAs) or mail-transport-agents (MTAs), <em/must/
-make sure that they are compatible with the configuration decisions
-below.  Failure to do this may result in lost mail, broken <tt/From:/
-lines, and other serious brain damage!
-<p>
-
-The mail spool is <tt>/var/spool/mail</> and the interface to send a
-mail message is <tt>/usr/sbin/sendmail</> (as per the FSSTND).  The
-mail spool is part of the base system and not part of the MTA package.
-<p>
-
-Mailboxes are locked using the <tt/<var/username/.lock/ lockfile
-convention, rather than <prgn/fcntl/, <prgn/flock/ or <prgn/lockf/.
-<p>
-
-Mailboxes are generally 660 <tt/<var/user/.mail/ unless the user has
-chosen otherwise.  A MUA may remove a mailbox (unless it has
-nonstandard permissions) in which case the MTA or another MUA must
-recreate it if needed.  Mailboxes must be writeable by group mail.
-<p>
-
-The mail spool is 2775 <tt/mail.mail/, and MUA's need to be setgid
-mail to do the locking mentioned above (and obviously need to avoid
-accessing other users' mailboxes using this privilege).
-<p>
-
-<tt>/etc/aliases</> is the source file for the system mail aliases
-(e.g.  postmaster, usenet, etc.) - it is the one which the sysadmin
-and postinst scripts may edit.  After <tt>/etc/aliases</> is edited
-the program or human editing it must call <prgn/newaliases/.  All MTA
-packages should come with a <prgn/newaliases/ program, even if it does
-nothing, but older MTA packages do not do this so programs should not
-fail if <prgn/newaliases/ cannot be found.
-<p>
-
-The convention of writing <tt/forward to <var/address// in the mailbox
-itself is not supported.  Use a <tt/.forward/ file instead.
-<p>
-
-The location for the <prgn/rmail/ program used by UUCP for incoming
-mail is <tt>/usr/sbin/rmail</>, as per the FSSTND.  Likewise,
-<prgn/rsmtp/, for receiving batch-SMTP-over-UUCP, is in
-<tt>/usr/sbin/rsmtp</> if it is supported.
-<p>
-
-If you need to know what name to use (for example) on outgoing news
-and mail messages which are generated locally, you should use the file
-<tt>/etc/mailname</>.  It will contain the portion after the username
-and <tt/@/ (at) sign for email addresses of users on the machine
-(followed by a newline).
-<p>
-
-A package should check for the existence of this file.  If it exists
-it should use it without comment.<footnote>An MTA's prompting
-configuration script may wish to prompt the user even if it finds this
-file exists.</footnote> If it does not exist it should prompt the user
-for the value and store it in <tt>/etc/mailname</> as well as using it
-in the package's configuration.  The prompt should make it clear that
-the name will not just be used by that package.  E.g., in this
-situation the INN package says:
-<example>
-Please enter the `mail name' of your system.  This is the hostname
-portion of the address to be shown on outgoing news and mail messages.
-The default is <var/syshostname/, your system's host name.
-Mail name [`<var/syshostname/']:
-</example>
-where <var/syshostname/ is the output of <tt/hostname -fqdn/.
-
-
-<sect>Obsolete constructs and libraries: varargs and libtermcap
-<p>
-
-<prgn/&lt;varargs.h&gt;/ is provided to support end-users compiling
-very old software; libtermcap is provided to support the execution of
-software which has been linked against it (either old programs or
-those such as Netscape which are only available in binary form).
-<p>
-
-Debian packages should be ported to <prgn/&lt;stdarg.h&gt;/ and
-ncurses when they are built.
-
-
-<chapt id="sourcepkg">Source packaging, changelogs, etc.
-
-<sect>Releases of packages by other than the usual Debian maintainer
-<p>
-
-Under certain circumstances it is necessary for someone other than the
-usual package maintainer to make a release of a package.  For example,
-a porter for another architecture may have to make some small changes
-to the source package and does not wish to wait with uploading their
-release until the main maintainer has incorporated the patch, or a
-serious security problem may have come to light requiring immediate
-attention.
-<p>
-
-Maintainers other than the usual package maintainer should make as few
-changes to the package as possible, and they should always send a
-unified context diff (<tt/diff -u/) detailing their changes to the bug
-tracking system properly flagged with the correct package so that the
-usual maintainer is kept aware of the situation.
-<p>
-
-When someone other than the usual maintainer releases a package they
-should add a new component to the <var/debian-revision/ component of
-the version number - that is, the portion after the (last) hyphen.
-This extra component will start at <tt/1/.  This is to avoid
-`stealing' one of the usual maintainer's version numbers, possibly
-disrupting their work.  If there is no <var/debian-revision/ component
-in the version number then one should be created, starting at <tt/1/.
-<p>
-
-If it is absolutely necessary for someone other than the usual
-maintainer to make a release based on a new upstream version then the
-person making the release should start with the <var/debian-revision/
-value <tt/0.1/.  The usual maintainer of a package should start their
-<var/debian-revision/ numbering at <tt/1/.
-
-
-<sect>Standards conformance and <tt/Standards-Version/
-<p>
-
-You should specify the most recent version of the packaging standards
-with which your package complies in the source package's
-<tt/Standards-Version/ field.
-<p>
-
-This value will be used to file bug reports automatically if your
-package becomes too much out of date.
-<p>
-
-The value corresponds to a version of the Debian manuals, as can be
-found on the title page or page headers and footers (depending on the
-format).  The value for this version of the manuals and packaging
-standards is <tt/&manuals-version;/.
-<p>
-
-The version number has four components - major and minor number and
-major and minor patchlevel.  When the standards change in a way that
-requires every package to change the major number will be changed.
-Significant changes that will require work in many packages will be
-signaled by a change to the minor number.  The major patchlevel will
-be changed for any change to the meaning of the standards, however
-small; the minor patchlevel will be changed when only cosmetic,
-typographical or other edits which do not change the meaning are made,
-or changes which do not affect the contents of packages.
-<p>
-
-You should regularly, and especially if your package has become out of
-date, install the most recent version of dpkg and read
-<tt>/usr/doc/dpkg/changelog-manuals</> to see which changes, if any,
-are relevant.  If any are relevant you should look up the relevant
-section in the policy or programmers' manuals and update your package.
-When your package complies with the new standards you may update the
-<tt/Standards-Version/ source package field and release it.
-
-
-<sect>Documentation and the <tt/changelog/
-<p>
-
-Document your changes and updates to the source package properly in
-the <tt>debian/changelog</tt> file.
-<p>
-
-A copy of the file which will be installed in
-<tt>/usr/doc/<var/package//copyright</tt> should be in
-<tt>debian/copyright</tt>.
-<p>
-
-In non-experimental packages you may only use a format for
-<tt>debian/changelog</> which is supported by the most recent released
-version of <prgn/dpkg/.  If your format is not supported and there is
-general support for it you should contact the <prgn/dpkg/ maintainer
-to have the parser script for your format included in the <prgn/dpkg/
-package.<footnote>You will need to agree that the parser and its
-manpage may be distributed under the GNU GPL, just as the rest of
-<prgn/dpkg/ is.</footnote>
-
-<sect>Changes to the upstream sources
-<p>
-
-If you need to edit a <prgn/Makefile/ where GNU-style <prgn/configure/
-scripts are used, you should edit the <tt/.in/ files rather than
-editing the <prgn/Makefile/ directly.  This allows the user to
-reconfigure the package if necessary.  You should <em/not/ configure
-the package and edit the generated <prgn/Makefile/!  This makes it
-impossible for someone else to later reconfigure the package.
-<p>
-
-If changes to the source code are made that are generally applicable
-please try to get them included in the upstream version of the package
-by supplying the upstream authors with the changes in whatever form
-they prefer.
-<p>
-
-If you need to configure the package differently for Debian or for
-Linux, and the upstream source doesn't provide a way to configure it
-the way you need to, please add such configuration facilities (for
-example, a new <prgn/autoconf/ test or <tt/#define/) and send the
-patch to the upstream authors, with the default set to the way they
-originally had it.  You can then easily override the default in your
-<tt>debian/rules</tt> or wherever is appropriate.
-
-<sect>Error trapping in makefiles
-<p>
-
-When <prgn/make/ invokes a command in a makefile (including your
-package's upstream makefiles and the <tt>debian/rules</>) it does so
-using <tt/sh/.  This means that <tt/sh/'s usual bad error handling
-properties apply: if you include a miniature script as one of the
-commands in your makefile you'll find that if you don't do anything
-about it then errors are not detected and <prgn/make/ will blithely
-continue after problems.
-<p>
-
-Every time you put more than one shell command (this includes using a
-loop) in a makefile command you <em/must/ make sure that errors are
-trapped.  For simple compound commands, such as changing directory and
-then running a program, using <tt/&amp;&amp;/ rather than semicolon as
-a command separator is sufficient.  For more complex commands
-including most loops and conditionals you must include a separate
-<tt/set -e/ command at the start of every makefile command that's
-actually one of these miniature shellscripts.
-
-<chapt id="developer">Procedure - how to participate in the Debian project
-
-<sect>Before you start work on a package
-<p>
-
-So, you've read all the documentation, you understand what everything
-in the <prgn/hello/ example package is for, and you're about to
-Debianise your favourite package.  How do you actually become a Debian
-developer so that your work can be incorporated into the Project?
-<p>
-
-Firstly, subscribe to <prgn/debian-devel/ if you haven't already.
-Send the word <tt/subscribe/ in the <em/Subject/ of a mail to
-<email/debian-devel-REQUEST@lists.debian.org/.  In case of problems
-contact the list administrator, Anders Chrigstrom <email/ac@netg.se/.
-<p>
-
-You should to subscribe and lurk for a bit before doing any coding,
-and you should post about your intentions to work on something to
-avoid duplicated effort.
-<p>
-
-If you do not have a PGP key yet generate one.  You should probably
-read the PGP manual, as it has much important information which is
-critical to its security.  Many more security failures are due to
-human error than to software failure or high-powered spy techniques.
-<p>
-
-If you live in a country where use of cryptography even for signing is
-forbidden then please contact us so we can make special arrangements.
-This does not apply in France, where I believe only encryption and not
-signing is forbidden.
-
-
-<sect>When you have a package to upload
-<p>
-
-When you have your package ready to be uploaded you must send a
-message to the project leader, Bruce Perens <email/bruce@pixar.com/,
-the administrator of <tt/master.debian.org/, Simon Shapiro
-<email/shimon@i-connect.net/, the mailing list administrator, Anders
-Chrigstrom <email/ac@netg.se/ and the <prgn/dpkg/ maintainer, Ian
-Jackson <email/ijackson@gnu.ai.mit.edu/.
-<p>
-
-The message should say what you've done and who you are, and should
-ask for an account on <prgn/master/ and to be subscribed to
-<prgn/debian-private/ (the developers-only mailing list).  It should
-contain your PGP key (extracted using <tt/pgp -kxa/) for the database
-of keys which is shipped with <prgn/dpkg/.
-
-When you have your personal account on <prgn/master/ log in and
-transfer the files to
-<tt>/home/Debian/ftp/private/project/Incoming</>.  You cannot upload
-to <prgn/Incoming/ on <prgn/master/ using anonymous FTP.
-<p>
-
-You can also upload files to <prgn/Incoming/ via a <prgn/cron/-driven
-upload queue in Europe on <ftpsite/chiark.chu.cam.ac.uk/.  For details
-connect to <prgn/chiark/ using anonymous FTP and read
-<ftppath>/pub/debian/private/project/README.how-to-upload</ftppath>.
-
-
-<sect id="changesfiles">Upload handling - <tt/.changes/ files
-<p>
-
-When a package is uploaded to the Debian FTP archive, it must be
-accompanied by a <tt/.changes/ file which gives directions for its
-handling.  This is usually generated by <prgn/dpkg-genchanges/.
-<p>
-
-This file is a control file with the following fields:
-<list compact>
-<item><tt/Format/
-<item><tt/Date/
-<item><tt/Source/
-<item><tt/Binary/
-<item><tt/Architecture/
-<item><tt/Version/
-<item><tt/Distribution/
-<item><tt/Urgency/
-<item><tt/Maintainer/
-<item><tt/Description/
-<item><tt/Changes/
-<item><tt/Files/
-</list>
-<p>
-
-All of them are mandatory for a Debian upload.  See the list of
-control fields in the <prgn/dpkg/ programmers' manual for the contents
-of these fields.
-<p>
-
-The first time a version is uploaded which corresponds to a particular
-upstream version the original source tarfile should be uploaded and
-included in the <tt/.changes/ file; subsequent times the very same
-tarfile should be used to build the new diffs and <tt/.dsc/ files, and
-it need not then be uploaded.
-<p>
-
-By default <prgn/dpkg-genchanges/ and <prgn/dpkg-buildpackage/ will
-include the original source tarfile if and only if the Debian revision
-part of the source version number is <tt/0/ or <tt/1/, indicating a
-new upstream version.  This behaviour may be modified by using
-<tt/-sa/ to always include it or <tt/-sd/ to always leave it out.
-<p>
-
-If no original source is included in the upload then the original
-source tarfile used by <prgn/dpkg-source/ when constructing the
-<tt/.dsc/ file and diff to be uploaded <em/must/ be byte-for-byte
-identical with the one already in the archive.  If there is some
-reason why this is not the case then the new version of the original
-source should be uploaded, possibly by using the <tt/-sa/ flag.
-
-
-<sect>Upload handling - announcements
-<p>
-
-When a package is uploaded an announcement should be posted to
-<tt/debian-changes/.  The announcement should give the (source)
-package name and version number, and a very short summary of the
-changes, in the <prgn/Subject/ field, and should contain the
-PGP-signed <tt/.changes/ file.  Some additional explanatory text may
-be added before the start of the <tt/.changes/ file.
-<p>
-
-If a package is released with <tt/Distribution: experimental/ the
-announcement should be posted to <tt/debian-devel/ instead.
-
-
-<sect id="mailinglists">The Debian mailing lists
-<p>
-
-The mailing list server is at <tt/lists.debian.org/.  Mail
-<tt/debian-<var/foo/-REQUEST@lists.debian.org/<footnote>where
-<tt/debian-<var/foo// is the name of the list</footnote> with the word
-<tt/subscribe/ in the Subject to subscribe or <tt/unsubscribe/ to
-unsubscribe.
-<p>
-
-When replying to messages on the mailing list, please do not send a
-carbon copy (<tt/CC/ - this does not mean `courtesy copy') to the
-original poster.  Anyone who posts to a mailing list should read it to
-see the responses.
-<p>
-
-As ever on the net, please trim down the quoting of articles you're
-replying to.  In general, please adhere to the usual conventions for
-posting messages.
-
-
-<chapt id="conversion">Conversion procedure from old source packages
-<p>
-
-This is a brief summary of the procedure for converting a
-pre-2.0.0.0-format source package into the new format.
-<p>
-
-You are strongly advised to download and examine the <prgn/hello/
-package, and to read the section in the <prgn/dpkg/ programmers'
-manual describing the source packaging tools.  More detail about the
-exact functionality of these tools is available in <manref
-name=dpkg-source section=1>.
-<p>
-
-<list>
-
-<item>
-Download the original source code from wherever it can be found and do
-any rearrangement required to make it look like the original tree of
-the Debian source.  Put it in
-<tt><var/package/-<var/upstream-version/.orig/</> or
-<tt/<var/package/_<var/upstream-version/.orig.tar.gz/.
-
-<item>
-Rename all files <tt/debian.*/ to <tt>debian/*</>.  There may be some
-exceptions to this, but this is a good start.
-
-<item>
-Edit the <tt>debian/changelog</> - create or rename it if necessary.
-Add a new revision to the top with the appropriate details, and a
-local variables entry to the bottom to set Emacs to the right mode:
-<example>
-Local variables:
-mode: debian-changelog
-End:
-</example>
-
-<item>
-Edit/create <tt>debian/control</>:
-<list compact>
-<item>
-Remove the <tt/Version/ field.  If it is generated unusually (not
-equal to the source version) you must use the -v option to
-dpkg-gencontrol (see below).  <tt/Section/, <tt/Priority/,
-<tt/Maintainer/ go above the first blank line, most of the rest below.
-
-<item>
-Reorder the fields and add a blank line at an appropriate point,
-separating the source package fields from the binary package
-fields.
-
-<item>
-Add the <tt/Source/ field.
-
-<item>
-Add the <tt/Standards-Version/ field.  The current value is
-<tt/&manuals-version;/.
-
-<item>
-Change the <tt/Architecture/ field for each package to <tt/any/,
-<tt/all/ or whatever.  If there isn't an <tt/Architecture/ field add
-one.
-
-<item>
-If any other seddery or things used to happen to make the binary
-control files use <prgn/dpkg-gencontrol/'s variable substitution
-features to achieve the same effect.  Use <tt>debian/substvars</> if
-you need to put unusally-generated information (apart from details of
-<tt/.deb/ files) in the <tt/.changes/ file too.
-</list>
-
-<item>
-Edit the <tt>debian/rules</>:
-<list compact>
-<item>
-Remove the <prgn/source/ and <prgn/diff/ and any <prgn/changes/ and
-<prgn/dist/ targets.  These things now happen in a package-independent
-way and are not done by <tt>debian/rules</>.
-<item>
-Split the <prgn/binary/ target into <prgn/binary-arch/ and
-<prgn/binary-indep/; in many cases all of <prgn/binary/ should go into
-<prgn/binary-arch/.  Create the <prgn/binary/ target and the unused of
-the two other <prgn/binary-*/ targets if there is one - you can copy
-the ones from the <prgn/hello/ package.
-<item>
-Change the <prgn/binary/ target to use <prgn/dpkg-gencontrol/ to make
-the package control file(s).  Move it to after all the files have been
-installed but just before the last <prgn/chown/ and <prgn/chmod/ in
-the target.
-<item>
-Change occurrences of <tt/debian-tmp/ to <tt>debian/tmp</>.
-<item>
-Change occurrences of <tt/debian.{post,pre}{inst,rm}/ to
-<tt>debian/*</>.
-<item>
-Remove the version number setting at the top, if there is one.
-<item>
-Ensure that the package's Debian-specific and upstream changelogs are
-installed.
-</list>
-
-<item>
-Change the package to use <prgn/dpkg-shlibdeps/ to determine its
-shared library dependencies and substitute them in.  Shared library
-dependencies should no longer be hardwired in the source package.
-
-<item>
-Check that the <tt>debian/README</> is really the copyright file, and
-if so rename it to <tt>debian/copyright</> and edit
-<tt>debian/rules</> to cope with this and to change the installation
-of the copyright file from <tt>/usr/doc/<var/package//copyright</>
-instead of <tt>/usr/doc/copyright/<var/package/</>.  If it isn't then
-find <tt>debian/copyright</> and decide what to do with the
-<tt>README</>.
-
-<item>
-Check for various other anachronisms and problems:
-<list compact>
-<item>
-Remove any <tt/Package_Revision/, <tt/Package-Revision/ or
-<tt/Revision/ fields.
-<item>
-Rename <tt/Optional/ to <tt/Suggests/, <tt/Recommended/ to
-<tt/Recommends/.
-<item>
-Change <tt>/usr/doc/examples/<var/package/</> to
-<tt>/usr/doc/<var/package//examples</>.
-<item>
-Make sure that manpages are installed compressed.
-<item>
-Check that the description has an extended description, is
-well-formatted and meaningful and helpful to people wanting to know
-whether to install a package.
-</list>
-
-<item>
-Look everything over.
-
-<item>
-Do a test build using <tt/dpkg-buildpackage -ur -uc -sa
--r<var/whatever//.  Check the permissions and locations of files in
-the resulting package by eyeballing the output of <tt/dpkg-deb
---contents/, and check that the source build happened OK.  Test
-install the binary package(s) and test extract the source package(s).
-
-<item>
-Sign the release: either rebuild everything with <tt/dpkg-buildpackage
--sa/, or PGP-sign the <tt/.dsc/, rebuild the <tt/.changes/ using
-<tt/dpkg-genchanges -sa/, and then PGP-sign the <tt/.changes/.
-
-</list>
-<p>
-
-The use of <tt/-sa/ on <prgn/dpkg-buildpackage/ and
-<prgn/dpkg-genchanges/ is important when doing the first
-build/uploading of a new-format source package.  Unless this happens
-to be Debian revision <tt/0/ or <tt/1/ by default the original source
-tarfile will not be included in the uploaded files listed in the
-<tt/.changes/ file, and so it won't be installed on the FTP site.
-<tt/-sa/ requests that the original source be included regardless.
-
-</book>
diff --git a/doc/programmer.sgml b/doc/programmer.sgml
deleted file mode 100644 (file)
index 0dcd867..0000000
+++ /dev/null
@@ -1,3370 +0,0 @@
-<!doctype debiandoc system [
-<!entity % manuals-version-def system "manuals-version">
-%manuals-version-def;
-]>
-
-<!--
- Debian Linux dpkg package installation tool.
- programmers' manual.
- Copyright (C)1996 Ian Jackson; released under the terms of the GNU
- General Public License, version 2 or (at your option) any later.
- -->
-
-<book>
-
-<title><prgn/dpkg/ programmers' manual
-<author>Ian Jackson <email/ijackson@gnu.ai.mit.edu/
-<version>version &manuals-version; (dpkg &dpkg-version;), <date>
-
-<abstract>
-This manual describes the technical aspects of creating Debian binary
-and source packages.  It also documents the interface between
-<prgn/dselect/ and its access method scripts.  It does not deal with
-the Debian Project policy requirements, and it assumes familiarity
-with <prgn/dpkg/'s functions from the system administrator's
-perspective.
-
-<copyright>Copyright &copy;1996 Ian Jackson.
-<p>
-
-This manual is free software; you may redistribute it and/or modify it
-under the terms of the GNU General Public License as published by the
-Free Software Foundation; either version 2, or (at your option) any
-later version.
-<p>
-
-This is distributed in the hope that it will be useful, but
-<em>without any warranty</em>; without even the implied warranty of
-merchantability or fitness for a particular purpose.  See the GNU
-General Public License for more details.
-<p>
-
-You should have received a copy of the GNU General Public License with
-your Debian GNU/Linux system, in <tt>/usr/doc/copyright/GPL</tt>, or
-with the <prgn/dpkg/ source package as the file <tt>COPYING</tt>.  If
-not, write to the Free Software Foundation, Inc., 675 Mass Ave,
-Cambridge, MA 02139, USA.
-
-<toc sect>
-
-<!-- Describes the technical interface between a package and dpkg.
-
-How to safely put shared libraries in a package.  Details of dpkg's
-handling of individual files.  Sections on when to use which feature
-(eg Replaces vs. Replaces/Conflicts vs. update-alternatives
-vs. diversions) Cross-references to the policy document (see below)
-where appropriate.  Description of the interface between dselect and
-its access methods.  Hints on where to start with a new package (ie,
-the hello package).  What to do about file aliasing.
-
-file aliasing
-
-Manpages are required for: update-rc.d, diversions,
-update-alternatives, install-info in a package.
-
--->
-
-<chapt id="scope">Introduction and scope of this manual
-<p>
-
-<prgn/dpkg/ is a suite of programs for creating binary package files
-and installing and removing them on Unix systems.<footnote><prgn/dpkg/
-is targetted primarily at Debian GNU/Linux, but may work on or be
-ported to other systems.</footnote>
-<p>
-
-The binary packages are designed for the management of installed
-executable programs (usually compiled binaries) and their associated
-data, though source code examples and documentation are provided as
-part of some packages.
-<p>
-
-This manual describes the technical aspects of creating Debian binary
-packages (<tt/.deb/ files).  It documents the behaviour of the
-package management programs <prgn/dpkg/, <prgn/dselect/ et al. and and the
-way they interact with packages.
-<p>
-
-It also documents the interaction between <prgn/dselect/'s core and the
-access method scripts it uses to actually install the selected
-packages, and describes how to create a new access method.
-<p>
-
-This manual does not go into detail about the options and usage of the
-package building and installation tools.  It should therefore be read
-in conjuction with those programs' manpages.
-<p>
-
-The utility programs which are provided with <prgn/dpkg/ for managing
-various system configuration and similar issues, such as
-<prgn/update-rc.d/ and <prgn/install-info/, are not described in
-detail here - please see their manpages.
-<p>
-
-It does <em/not/ describe the policy requirements imposed on Debian
-packages, such as the permissions on files and directories,
-documentation requirements, upload procedure, and so on.  You should
-see the Debian packaging policy manual for these details.  (Many of
-them will probably turn out to be helpful even if you don't plan to
-upload your package and make it available as part of the
-distribution.)
-<p>
-
-It is assumed that the reader is reasonably familiar with the
-<prgn/dpkg/ System Administrators' manual.  Unfortunately this manual
-does not yet exist.
-<p>
-
-The Debian version of the FSF's GNU hello program is provided as an
-example for people wishing to create Debian packages.
-<p>
-
-<em>Note that this document is still a draft!</em>
-
-<chapt id="binarypkg">Binary packages
-<p>
-
-The binary package has two main sections.  The first part consists of
-various control information files and scripts used by <prgn/dpkg/ when
-installing and removing.  See <ref id="controlarea">.
-<p>
-
-The second part is an archive (currently a <prgn/tar/ archive)
-containing files and directories to be installed.
-<p>
-
-In the future binary packages may also contain other components, such
-as checksums and digital signatures.
-
-
-<sect id="bincreating">Creating package files - <prgn/dpkg-deb/
-<p>
-
-All manipulation of binary package files is done by <prgn/dpkg-deb/;
-it's the only program that has knowledge of the format.
-(<prgn/dpkg-deb/ may be invoked by calling <prgn/dpkg/, as <prgn/dpkg/ will
-spot that the options requested are appropriate to <prgn/dpkg-deb/ and
-invoke that instead with the same arguments.)
-<p>
-
-In order to create a binary package you must make a directory tree
-which contains all the files and directories you want to have in the
-filesystem data part of the package.  In Debian-format source packages
-this directory is usually <tt>debian/tmp</tt>, relative to the top of
-the package's source tree.
-<p>
-
-They should have the locations (relative to the root of the directory
-tree you're constructing) ownerships and permissions which you want
-them to have on the system when they are installed.
-<p>
-
-With current versions of <prgn/dpkg/ the uid/username and gid/groupname
-mappings for the users and groups being used should be the same on the
-system where the package is built and the one where it is installed.
-<p>
-
-You need to add one special directory to the root of the miniature
-filesystem tree you're creating: <prgn/DEBIAN/.  It should contain the
-control information files, notably the binary package control file
-(see <ref id="controlfile">).
-<p>
-
-The <prgn/DEBIAN/ directory will not appear in the filesystem archive of
-the package, and so won't be installed by <prgn/dpkg/ when the package
-is installed.
-<p>
-
-When you've prepared the package, you should invoke:
-<example>
-dpkg --build <var/directory/
-</example>
-<p>
-
-This will build the package in <tt/<var/directory/.deb/.
-(<prgn/dpkg/ knows that <tt/--build/ is a <prgn/dpkg-deb/ option, so it
-invokes <prgn/dpkg-deb/ with the same arguments to build the package.)
-<p>
-
-See the manpage <manref name="dpkg-deb" section=8> for details of how
-to examine the contents of this newly-created file.  You may find the
-output of following commands enlightening:
-<example>
-dpkg-deb --info <var/filename/.deb
-dpkg-deb --contents <var/filename/.deb
-</example>
-
-<sect id="controlarea">Package control information files
-<p>
-
-The control information portion of a binary package is a collection of
-files with names known to <prgn/dpkg/.  It will treat the contents of
-these files specially - some of them contain information used by
-<prgn/dpkg/ when installing or removing the package; others are scripts
-which the package maintainer wants <prgn/dpkg/ to run.
-<p>
-
-It is possible to put other files in the package control area, but
-this is not generally a good idea (though they will largely be
-ignored).
-<p>
-
-Here is a brief list of the control info files supported by <prgn/dpkg/
-and a summary of what they're used for.
-<p>
-
-<taglist>
-<tag><tt/control/
-<item>
-
-This is the key description file used by <prgn/dpkg/.  It specifies the
-package's name and version, gives its description for the user, states
-its relationships with other packages, and so forth.
-See <ref id="controlfile">.
-<p>
-
-It is usually generated automatically from information in the source
-package by the <prgn/dpkg-gencontrol/ program, and with assistance
-from <prgn/dpkg-shlibdeps/.  See <ref id="sourcetools">.
-
-<tag><tt/postinst/, <tt/preinst/, <tt/postrm/, <tt/prerm/
-<item>
-
-These are exectuable files (usually scripts) which <prgn/dpkg/ runs
-during installation, upgrade and removal of packages.  They allow the
-package to deal with matters which are particular to that package or
-require more complicated processing than that provided by <prgn/dpkg/.
-Details of when and how they are called are in
-<ref id="maintainerscripts">.
-<p>
-
-It is very important to make these scripts itempotent.<footnote>That
-means that if it runs successfully or fails and then you call it again
-it doesn't bomb out, but just ensures that everything is the way it
-ought to be.</footnote>  This is so that if an error occurs, the user
-interrupts <prgn/dpkg/ or some other unforeseen circumstance happens you
-don't leave the user with a badly-broken package.
-<p>
-
-The maintainer scripts are guaranteed to run with a controlling
-terminal and can interact with the user.  If they need to prompt for
-passwords, do full-screen interaction or something similar you should
-do these things to and from <tt>/dev/tty</>, since <prgn/dpkg/ will at
-some point redirect scripts' standard input and output so that it can
-log the installation process.  Likewise, because these scripts may be
-executed with standard output redirected into a pipe for logging
-purposes, Perl scripts should set unbuffered output by setting
-<tt/$|=1/ so that the output is printed immediately rather than being
-buffered.
-<p>
-
-Each script should return a zero exit status for success, or a nonzero
-one for failure.
-
-<tag><tt/conffiles/
-<item>
-
-This file contains a list of configuration files which are to be
-handled automatically by <prgn/dpkg/ (see <ref id="conffiles">).  Note
-that not necessarily every configuration file should be listed here.
-
-<tag><tt/shlibs/
-<item>
-
-This file contains a list of the shared libraries supplied by the
-package, with dependency details for each.  This is used by
-<prgn/dpkg-shlibdeps/ when it determines what dependencies are
-required in a package control file.
-<p>
-
-Each line is of the form:
-<example>
-<var/library-name/ <var/version-or-soname/ <var/dependencies .../
-</example>
-<p>
-
-<var/library-name/ is the name of the shared library, for example
-<tt/libc5/.
-<p>
-
-<var/version-or-soname/ is the soname of the library - ie, the thing
-that must exactly match for the library to be recognised by
-<prgn/ld.so/.  Usually this is major version number of the library.
-<p>
-
-<var/dependencies/ has the same syntax as a dependency field in a
-binary package control file.  It should give details of which
-package(s) are required to satisfy a binary built against the version
-of the library contained in the package.  See <ref id="depsyntax">.
-<p>
-
-For example, if the package <tt/foo/ contains <tt/libfoo.so.1.2.3/,
-where the soname of the library is <tt/libfoo.so.1/, and the first
-version of the package which contained a minor number of at least
-<tt/2.3/ was <var/1.2.3-1/, then the package's <var/shlibs/ could
-say:
-<example>
-libfoo 1       foo (>= 1.2.3-1)
-</example>
-<p>
-
-The version-specific dependency is to avoid warnings from <prgn/ld.so/
-about using older shared libraries with newer binaries.
-
-</taglist>
-
-<sect id="controlfile">The main control information file: <tt/control/
-<p>
-
-The most important control information file used by <prgn/dpkg/ when it
-installs a package is <tt/control/.  It contains all the package's
-`vital statistics'.
-<p>
-
-The binary package control files of packages built from Debian sources
-are made by a special tool, <prgn/dpkg-gencontrol/, which reads
-<tt>debian/control</> and <tt>debian/changelog</> to find the
-information it needs.  See <ref id="sourcepkg"> for more details.
-<p>
-
-The fields in binary package control files are:
-<list compact>
-
-<item><qref id="f-Package"><tt/Package/</> (mandatory)
-<item><qref id="versions"><tt/Version/</> (mandatory)
-
-<item><qref id="f-Architecture"><tt/Architecture/</>
-(mandatory)<footnote>This field should appear in all packages, though
-<prgn/dpkg/ doesn't require it yet so that old packages can still be
-installed.</footnote>
-
-<item><qref id="relationships"><tt/Depends/, <tt/Provides/ et al.</>
-<item><qref id="f-Essential"><tt/Essential/</>
-<item><qref id="f-Maintainer"><tt/Maintainer/</>
-<item><qref id="f-classification"><tt/Section/, <tt/Priority/</>
-<item><qref id="f-Source"><tt/Source/</>
-<item><qref id="descriptions"><tt/Description/</>
-<item><qref id="f-Installed-Size"><tt/Installed-Size/</>
-
-</list>
-<p>
-
-A description of the syntax of control files and the purpose of these
-fields is available in <ref id="controlfields">.
-
-
-<chapt id="sourcepkg">Source packages
-<p>
-
-The Debian binary packages in the distribution are generated from
-Debian sources, which are in a special format to assist the easy and
-automatic building of binaries.
-<p>
-
-There was a previous version of the Debian source format, which is now
-being phased out.  Instructions for converting an old-style package
-are given in the Debian policy manual.
-
-<sect id="sourcetools">Tools for processing source packages
-<p>
-
-Various tools are provided for manipulating source packages; they pack
-and unpack sources and help build of binary packages and help manage
-the distribution of new versions.
-<p>
-
-They are introduced and typical uses described here; see <manref
-name=dpkg-source section=1> for full documentation about their
-arguments and operation.
-<p>
-
-For examples of how to construct a Debian source package, and how to
-use those utilities that are used by Debian source packages, please
-see the <prgn/hello/ example package.
-
-<sect1><prgn/dpkg-source/ - packs and unpacks Debian source packages
-<p>
-
-This program is frequently used by hand, and is also called from
-package-independent automated building scripts such as
-<prgn/dpkg-buildpackage/.
-<p>
-
-To unpack a package it is typically invoked with
-<example>
-dpkg-source -x <var>.../path/to/filename</>.dsc
-</example>
-with the <tt/<var/filename/.tar.gz/ and
-<tt/<var/filename/.diff.gz/ (if applicable) in the same directory.  It
-unpacks into <tt/<var/package/-<var/version//, and if applicable
-<tt/<var/package/-<var/version/.orig/, in the current directory.
-<p>
-
-To create a packed source archive it is typically invoked:
-<example>
-dpkg-source -b <var/package/-<var/version/
-</example>
-This will create the <tt/.dsc/, <tt/.tar.gz/ and <tt/.diff.gz/ (if
-appropriate) in the current directory.  <prgn/dpkg-source/ does not
-clean the source tree first - this must be done separately if it is
-required.
-<p>
-
-See also <ref id="sourcearchives">.
-
-
-<sect1><prgn/dpkg-buildpackage/ - overall package-building control
-script
-<p>
-
-<prgn/dpkg-buildpackage/ is a script which invokes <prgn/dpkg-source/,
-the <tt>debian/rules</> targets <prgn/clean/, <prgn/build/ and
-<prgn/binary/, <prgn/dpkg-genchanges/ and <prgn/pgp/ to build a signed
-source and binary package upload.
-<p>
-
-It is usually invoked by hand from the top level of the built or
-unbuilt source directory.  It may be invoked with no arguments; useful
-arguments include:
-<taglist compact>
-<tag><tt/-uc/, <tt/-us/
-<item>Do not PGP-sign the <tt/.changes/ file or the source package
-<tt/.dsc/ file, respectively.
-
-<tag><tt/-p<var/pgp-command//
-<item>Invoke <var/pgp-command/ instead of finding <tt/pgp/ on the
-<prgn/PATH/.  <var/pgp-command/ must behave just like <prgn/pgp/.
-
-<tag><tt/-r<var/root-command//
-<item>When root privilege is required, invoke the command
-<var/root-command/.  <var/root-command/ should invoke its first
-argument as a command, from the <prgn/PATH/ if necessary, and pass its
-second and subsequent arguments to the command it calls.  If no
-<var/root-command/ is supplied then <var/dpkg-buildpackage/ will take
-no special action to gain root privilege, so that for most packages it
-will have to be invoked as root to start with.
-
-<tag><tt/-b/, <tt/-B/
-<item>Two types of binary-only build and upload - see <manref
-name=dpkg-source section=1>.
-</taglist>
-
-
-<sect1><prgn/dpkg-gencontrol/ - generates binary package control files
-<p>
-
-This program is usually called from <tt>debian/rules</> (see <ref
-id="sourcetree">) in the top level of the source tree.
-<p>
-
-This is usually done just before the files and directories in the
-temporary directory tree where the package is being built have their
-permissions and ownerships set and the package is constructed using
-<prgn/dpkg-deb/<footnote>This is so that the control file which is
-produced has the right permissions</footnote>.
-<p>
-
-<prgn/dpkg-gencontrol/ must be called after all the files which are to
-go into the package have been placed in the temporary build directory,
-so that its calculation of the installed size of a package is correct.
-<p>
-
-It is also necessary for <prgn/dpkg-gencontrol/ to be run after
-<prgn/dpkg-shlibdeps/ so that the variable substitutions created by
-<prgn/dpkg-shlibdeps/ in <tt>debian/substvars</> are available.
-<p>
-
-For a package which generates only one binary package, and which
-builds it in <tt>debian/tmp</> relative to the top of the source
-package, it is usually sufficient to call:
-<example>
-dpkg-gencontrol
-</example>
-<p>
-
-Sources which build several binaries will typically need something
-like:
-<example>
-dpkg-gencontrol -Pdebian/tmp-<var/pkg/ -p<var/package/
-</example>
-The <tt/-P/ tells <prgn/dpkg-gencontrol/ that the package is being
-built in a non-default directory, and the <tt/-p/ tells it which
-package's control file should be generated.
-<p>
-
-<prgn/dpkg-gencontrol/ also adds information to the list of files in
-<tt>debian/files</>, for the benefit of (for example) a future
-invocation of <prgn/dpkg-genchanges/.
-
-
-<sect1><prgn/dpkg-shlibdeps/ - calculates shared library dependencies
-<p>
-
-This program is usually called from <tt>debian/rules</> just before
-<prgn/dpkg-gencontrol/ (see <ref id="sourcetree">), in the top level
-of the source tree.
-<p>
-
-Its arguments are executables<footnote>They may be specified either
-in the locations in the source tree where they are created or in the
-locations in the temporary build tree where they are installed prior
-to binary package creation.</footnote> for which shared library
-dependencies should be included in the binary package's control file.
-<p>
-
-If some of the executable(s) shared libraries should only warrant a
-<tt/Recommends/ or <tt/Suggests/, or if some warrant a
-<tt/Pre-Depends/, this can be achieved by using the
-<tt/-d<var/dependency-field// option before those executable(s).
-(Each <tt/-d/ option takes effect until the next <tt/-d/.)
-<p>
-
-<prgn/dpkg-shlibdeps/ does not directly cause the output control file
-to be modified.  Instead by default it adds to the
-<tt>debian/substvars</> file variable settings like
-<tt/shlibs:Depends/.  These variable settings must be referenced in
-dependency fields in the appropriate per-binary-package sections of
-the source control file.
-<p>
-
-For example, the <prgn/procps/ package generates two kinds of
-binaries, simple C binaries like <prgn/ps/ which require a
-predependency and full-screen ncurses binaries like <prgn/top/ which
-require only a recommendation.  It can say in its <tt>debian/rules</>:
-<example>
-dpkg-shlibdeps -dPre-Depends ps -dRecommends top
-</example>
-and then in its main control file <tt>debian/control</>:
-<example>
-<var/.../
-Package: procps
-Pre-Depends: ${shlibs:Pre-Depends}
-Recommends: ${shlibs:Recommends}
-<var/.../
-</example>
-<p>
-
-Sources which produce several binary packages with different shared
-library dependency requirements can use the <tt/-p<var/varnameprefix//
-option to override the default <tt/shlib:/ prefix (one invocation of
-<prgn/dpkg-shlibdeps/ per setting of this option).  They can thus
-produce several sets of dependency variables, each of the form
-<tt/<var/varnameprefix/:<var/dependencyfield//, which can be referred
-to in the appropriate parts of the binary package control files.
-
-
-<sect1><prgn/dpkg-distaddfile/ - adds a file to <tt>debian/files</>
-<p>
-
-Some packages' uploads need to include files other than the source and
-binary package files.
-<p>
-
-<prgn/dpkg-distaddfile/ adds a file to the <tt>debian/files</> file so
-that it will be included in the <tt/.changes/ file when
-<prgn/dpkg-genchanges/ is run.
-<p>
-
-It is usually invoked from the <prgn/binary/ target of
-<tt>debian/rules</>:
-<example>
-dpkg-distaddfile <var/filename/ <var/section/ <var/priority/
-</example>
-The <var/filename/ is relative to the directory where
-<prgn/dpkg-genchanges/ will expect to find it - this is usually the
-directory above the top level of the source tree.  The
-<tt>debian/rules</> target should put the file there just before or
-just after calling <prgn/dpkg-distaddfile/.
-<p>
-
-The <var/section/ and <var/priority/ are passed unchanged into the
-resulting <tt/.changes/ file.  See <ref id="f-classification">.
-
-
-<sect1><prgn/dpkg-genchanges/ - generates a <tt/.changes/ upload
-control file
-<p>
-
-This program is usually called by package-independent automatic
-building scripts such as <prgn/dpkg-buildpackage/, but it may also be
-called by hand.
-<p>
-
-It is usually called in the top level of a built source tree, and when
-invoked with no arguments will print out a straightforward
-<tt/.changes/ file based on the information in the source package's
-changelog and control file and the binary and source packages which
-should have been built.
-
-
-<sect1><prgn/dpkg-parsechangelog/ - produces parsed representation of
-a changelog
-<p>
-
-This program is used internally by <prgn/dpkg-source/ et al.  It may
-also occasionally be useful in <tt>debian/rules</> and elsewhere.  It
-parses a changelog, <tt>debian/changelog</> by default, and prints a
-control-file format representation of the information in it to
-standard output.
-
-<sect id="sourcetree">The Debianised source tree
-<p>
-
-The source archive scheme described later is intended to allow a
-Debianised source tree with some associated control information to be
-reproduced and transported easily.  The Debianised source tree is a
-version of the original program with certain files added for the
-benefit of the Debianisation process, and with any other changes
-required made to the rest of the source code and installation scripts.
-<p>
-
-The extra files created for Debian are in the subdirectory <tt/debian/
-of the top level of the Debianised source tree.  They are described
-below.
-
-<sect1><tt>debian/rules</tt> - the main building script
-<p>
-
-This file is an executable makefile, and contains the package-specific
-recipies for compiling the package and building binary package(s) out
-of the source.
-<p>
-
-It must start with the line <tt>#!/usr/bin/make -f</tt>, so that it
-can be invoked by saying its name rather than invoking <prgn/make/
-explicitly.
-<p>
-
-The targets which are required to be present are:
-
-<taglist>
-<tag/<tt/build//
-<item>
-
-This should perform all non-interactive configuration and compilation
-of the package.  If a package has an interactive pre-build
-configuration routine, the Debianised source package should be built
-after this has taken place, so that it can be built without rerunning
-the configuration.
-<p>
-
-For some packages, notably ones where the same source tree is compiled
-in different ways to produce two binary packages, the <prgn/build/
-target does not make much sense.  For these packages it is good enough
-to provide two (or more) targets (<tt/build-a/ and <tt/build-b/ or
-whatever) for each of the ways of building the package, and a
-<prgn/build/ target that does nothing.  The <prgn/binary/ target will have
-to build the package in each of the possible ways and make the binary
-package out of each.
-<p>
-
-The <prgn/build/ target must not do anything that might require root
-privilege.
-<p>
-
-The <prgn/build/ target may need to run <prgn/clean/ first - see below.
-<p>
-
-When a package has a configuration routine that takes a long time, or
-when the makefiles are poorly designed, or when <prgn/build/ needs to
-run <prgn/clean/ first, it is a good idea to <tt/touch build/ when the
-build process is complete.  This will ensure that if <tt>debian/rules
-build</tt> is run again it will not rebuild the whole program.
-
-<tag/<tt/binary/, <tt/binary-arch/, <tt/binary-indep/
-<item>
-
-The <prgn/binary/ target should be all that is necessary for the user
-to build the binary package.  It is split into two parts:
-<prgn/binary-arch/ builds the packages' output files which are
-specific to a particular architecture, and <prgn/binary-indep/
-builds those which are not.
-<p>
-
-<prgn/binary/ should usually be a target with no commands which simply
-depends on <prgn/binary-arch/ and <prgn/binary-indep/.
-<p>
-
-Both <prgn/binary-*/ targets should depend on the <prgn/build/ target,
-above, so that the package is built if it has not been already.  It
-should then create the relevant binary package(s), using
-<prgn/dpkg-gencontrol/ to make their control files and <prgn/dpkg-deb/
-to build them and place them in the parent of the top level directory.
-<p>
-
-If one of the <prgn/binary-*/ targets has nothing to do (this will be
-always be the case if the source generates only a single binary
-package, whether architecture-dependent or not) it <em/must/ still
-exist, but should always succeed.
-<p>
-
-<ref id="binarypkg"> describes how to construct binary packages.
-<p>
-
-The <prgn/binary/ targets must be invoked as root.
-
-<tag/<tt/clean//
-<item>
-
-This should undo any effects that the <prgn/build/ and <prgn/binary/
-targets may have had, except that it should leave alone any output
-files created in the parent directory by a run of <prgn/binary/.
-<p>
-
-If a <prgn/build/ file is touched at the end of the <prgn/build/ target,
-as suggested above, it must be removed as the first thing that
-<prgn/clean/ does, so that running <prgn/build/ again after an interrupted
-<prgn/clean/ doesn't think that everything is already done.
-<p>
-
-The <prgn/clean/ target must be invoked as root if <prgn/binary/ has
-been invoked since the last <prgn/clean/, or if <prgn/build/ has been
-invoked as root (since <prgn/build/ may create directories, for
-example).
-
-<tag/<tt/get-orig-source//
-<item>
-
-This target fetches the most recent version of the original source
-package from a canonical archive site (via FTP or WWW, for example),
-does any necessary rearrangement to turn it into the original source
-tarfile format described below, and leaves it in the current directory.
-<p>
-
-This target may be invoked in any directory, and should take care to
-clean up any temporary files it may have left.
-<p>
-
-This target is optional, but providing it if possible is a good idea.
-
-</taglist>
-
-The <prgn/build/, <prgn/binary/ and <prgn/clean/ targets must be
-invoked with a current directory of the package's top-level
-directory.
-
-<p>
-
-Additional targets may exist in <tt>debian/rules</tt>, either as
-published or undocumented interfaces or for the package's internal
-use.
-
-
-<sect1><tt>debian/control</tt>
-<p>
-
-This file contains version-independent details about the source
-package and about the binary packages it creates.
-<p>
-
-It is a series of sets of control fields, each syntactically similar
-to a binary package control file.  The sets are separated by one or
-more blank lines.  The first set is information about the source
-package in general; each subsequent set describes one binary package
-that the source tree builds.
-<p>
-
-The syntax and semantics of the fields are described below in
-<ref id="controlfields">.
-<p>
-
-The general (binary-package-independent) fields are:
-<list compact>
-<item><qref id="f-Source"><tt/Source/</> (mandatory)
-<item><qref id="f-Maintainer"><tt/Maintainer/</>
-<item><qref id="f-classification"><tt/Section/ and <tt/Priority/</>
-(classification, mandatory)
-<item><qref id="f-Standards-Version"><tt/Standards-Version/</>
-</list>
-<p>
-
-The per-binary-package fields are:
-<list compact>
-<item><qref id="f-Package"><tt/Package/</> (mandatory)
-<item><qref id="f-Architecture"><tt/Architecture/</> (mandatory)
-<item><qref id="descriptions"><tt/Description/</>
-<item><qref id="f-classification"><tt/Section/ and <tt/Priority/</> (classification)
-<item><qref id="f-Essential"><tt/Essential/</>
-<item><qref id="relationships"><tt/Depends/ et al.</> (package interrelationships)
-</list>
-<p>
-
-These fields are used by <prgn/dpkg-gencontrol/ to generate control
-files for binary packages (see below), by <prgn/dpkg-genchanges/ to
-generate the <tt/.changes/ file to accompany the upload, and by
-<prgn/dpkg-source/ when it creates the <tt/.dsc/ source control file as
-part of a source archive.
-<p>
-
-The fields here may contain variable references - their values will be
-substituted by <prgn/dpkg-gencontrol/, <prgn/dpkg-genchanges/ or
-<prgn/dpkg-source/ when they generate output control files.  See <ref
-id="srcsubstvars"> for details.
-<p>
-
-<sect2>User-defined fields
-<p>
-
-Additional user-defined fields may be added to the source package
-control file.  Such fields will be ignored, and not copied to (for
-example) binary or source package control files or upload control
-files.
-<p>
-
-If you wish to add additional unsupported fields to these output files
-you should use the mechanism described here.
-<p>
-
-Fields in the main source control information file with names starting
-<tt/X/, followed by one or more of the letters <tt/BCS/ and a hyphen
-<tt/-/, will be copied to the output files.  Only the part of the
-field name after the hyphen will be used in the output file.  Where
-the letter <tt/B/ is used the field will appear in binary package
-control files, where the letter <tt/S/ is used in source package
-control files and where <tt/C/ is used in upload control
-(<tt/.changes/) files.
-<p>
-
-For example, if the main source information control file contains the
-field
-<example>
-XBS-Comment: I stand between the candle and the star.
-</example>
-then the binary and source package control files will contain the
-field
-<example>
-Comment: I stand between the candle and the star.
-</example>
-
-<sect1 id="dpkgchangelog"><tt>debian/changelog</>
-<p>
-
-This file records the changes to the Debian-specific parts of the
-package<footnote>Though there is nothing stopping an author who is
-also the Debian maintainer from using it for all their changes, it
-will have to be renamed if the Debian and upstream maintainers become
-different people.</footnote>.
-<p>
-
-It has a special format which allows the package building tools to
-discover which version of the package is being built and find out
-other release-specific information.
-<p>
-
-That format is a series of entries like this:
-<example>
-<var/package/ (<var/version/) <var/distribution(s)/; urgency=<var/urgency/
-
-  * <var/change details/
-    <var/more change details/
-  * <var/even more change details/
-
- -- <var/maintainer name and email address/  <var/date/
-</example>
-<p>
-
-<var/package/ and <var/version/ are the source package name and
-version number.  <var/distribution(s)/ lists the distributions where
-this version should be installed when it is uploaded - it is copied to
-the <tt/Distribution/ field in the <tt/.changes/ file.  See <ref
-id="f-Distribution">.
-<p>
-
-<var/urgency/ is the value for the <tt/Urgency/ field in the
-<tt/.changes/ file for the upload.  See <ref id="f-Urgency">.  It is
-not possible to specify an urgency containing commas; commas are used
-to separate <tt/<var/keyword/=<var/value// settings in the <prgn/dpkg/
-changelog format (though there is currently only one useful
-<var/keyword/, <tt/urgency/).
-<p>
-
-The change details may in fact be any series of lines starting with at
-least two spaces, but conventionally each change starts with an
-asterisk and a separating space and continuation lines are indented so
-as to bring them in line with the start of the text above.  Blank
-lines may be used here to separate groups of changes, if desired.
-<p>
-
-The maintainer name and email address should <em/not/ necessarily be
-those of the usual package maintainer.  They should be the details of
-the person doing <em/this/ version.  The information here will be
-copied to the <tt/.changes/ file, and then later used to send an
-acknowledgement when the upload has been installed.
-<p>
-
-The <var/date/ should be in RFC822 format<footnote>This is generated
-by the <prgn/822-date/ program.</footnote>; it should include the
-timezone specified numerically, with the timezone name or abbreviation
-optionally present as a comment.
-<p>
-
-The first `title' line with the package name should start at the left
-hand margin; the `trailer' line with the maintainer and date details
-should be preceded by exactly one space.  The maintainer details and
-the date must be separated by exactly two spaces.
-<p>
-
-An Emacs mode for editing this format is available: it is called
-<tt/debian-changelog-mode/.  You can have this mode selected
-automatically when you edit a Debian changelog by adding a local
-variables clause to the end of the changelog.
-
-<sect2>Defining alternative changelog formats
-<p>
-
-It is possible to use a different format to the standard one, by
-providing a parser for the format you wish to use.
-<p>
-
-In order to have <tt/dpkg-parsechangelog/ run your parser, you must
-include a line within the last 40 lines of your file matching the Perl
-regular expression:
-<tt>\schangelog-format:\s+([0-9a-z]+)\W</tt>
-The part in parentheses should be the name of the format.  For
-example, you might say:
-<example>
-@@@ changelog-format: joebloggs @@@
-</example>
-Changelog format names are non-empty strings of alphanumerics.
-<p>
-
-If such a line exists then <tt/dpkg-parsechangelog/ will look for the
-parser as <tt>/usr/lib/dpkg/parsechangelog/<var/format-name/</> or
-<tt>/usr/local/lib/dpkg/parsechangelog/<var/format-name/</>; it is an
-error for it not to find it, or for it not to be an executable
-program.  The default changelog format is <tt/dpkg/, and a parser for
-it is provided with the <tt/dpkg/ package.
-<p>
-
-The parser will be invoked with the changelog open on standard input
-at the start of the file.  It should read the file (it may seek if it
-wishes) to determine the information required and return the parsed
-information to standard output in the form of a series of control
-fields in the standard format.  By default it should return
-information about only the most recent version in the changelog; it
-should accept a <tt/-v<var/version// option to return changes
-information from all versions present <em/strictly after/
-<var/version/, and it should then be an error for <var/version/ not to
-be present in the changelog.
-<p>
-
-The fields are:
-<list compact>
-<item><qref id="f-Source"><tt/Source/</>
-<item><qref id="versions"><tt/Version/</> (mandatory)
-<item><qref id="f-Distribution"><tt/Distribution/</> (mandatory)
-<item><qref id="f-Urgency"><tt/Urgency/</> (mandatory)
-<item><qref id="f-Maintainer"><tt/Maintainer/</> (mandatory)
-<item><qref id="f-Date"><tt/Date/</>
-<item><qref id="f-Changes"><tt/Changes/</> (mandatory)
-</list>
-<p>
-
-If several versions are being returned (due to the use of <tt/-v/),
-the urgency value should be of the highest urgency code listed at the
-start of any of the versions requested followed by the concatenated
-(space-separated) comments from all the versions requested; the
-maintainer, version, distribution and date should always be from the
-most recent version.
-<p>
-
-For the format of the <tt/Changes/ field see <ref id="f-Changes">.
-<p>
-
-If the changelog format which is being parsed always or almost always
-leaves a blank line between individual change notes these blank lines
-should be stripped out, so as to make the resulting output compact.
-<p>
-
-If the changelog format does not contain date or package name
-information this information should be omitted from the output.  The
-parser should not attempt to synthesise it or find it from other
-sources.
-<p>
-
-If the changelog does not have the expected format the parser should
-exit with a nonzero exit status, rather than trying to muddle through
-and possibly generating incorrect output.
-<p>
-
-A changelog parser may not interact with the user at all.
-
-<sect1 id="srcsubstvars"><tt>debian/substvars</> and variable substitutions
-<p>
-
-When <prgn/dpkg-gencontrol/, <prgn/dpkg-genchanges/ and
-<prgn/dpkg-source/ generate control files they do variable
-substitutions on their output just before writing it.  Variable
-substitutions have the form <tt/${<var/variable-name/}/.  The optional
-file <tt>debian/substvars</> contains variable substitutions to be
-used; variables can also be set directly from <tt>debian/rules</>
-using the <tt/-V/ option to the source packaging commands, and certain
-predefined variables are available.
-<p>
-
-The is usually generated and modified dynamically by
-<tt>debian/rules</> targets; in this case it must be removed by the
-<prgn/clean/ target.
-<p>
-
-
-
-See <manref name=dpkg-source section=1> for full details about source
-variable substitutions, including the format of
-<tt>debian/substvars</>.
-
-<sect1><tt>debian/files</>
-<p>
-
-This file is not a permanent part of the source tree; it is used while
-building packages to record which files are being generated.
-<prgn/dpkg-genchanges/ uses it when it generates a <tt/.changes/ file.
-<p>
-
-It should not exist in a shipped source package, and so it (and any
-backup files or temporary files such as
-<tt/files.new/<footnote><tt/files.new/ is used as a temporary file by
-<prgn/dpkg-gencontrol/ and <prgn/dpkg-distaddfile/ - they write a new
-version of <tt/files/ here before renaming it, to avoid leaving a
-corrupted copy if an error occurs</footnote>) should be removed by the
-<prgn/clean/ target.  It may also be wise to ensure a fresh start by
-emptying or removing it at the start of the <prgn/binary/ target.
-<p>
-
-<prgn/dpkg-gencontrol/ adds an entry to this file for the <tt/.deb/
-file that will be created by <prgn/dpkg-deb/ from the control file
-that it generates, so for most packages all that needs to be done with
-this file is to delete it in <prgn/clean/.
-<p>
-
-If a package upload includes files besides the source package and any
-binary packages whose control files were made with
-<prgn/dpkg-gencontrol/ then they should be placed in the parent of the
-package's top-level directory and <prgn/dpkg-distaddfile/ should be
-called to add the file to the list in <tt>debian/files</>.
-
-<sect1><tt>debian/tmp</>
-<p>
-
-This is the canonical temporary location for the construction of
-binary packages by the <prgn/binary/ target.  The directory <tt/tmp/
-serves as the root of the filesystem tree as it is being constructed
-(for example, by using the package's upstream makefiles install
-targets and redirecting the output there), and it also contains the
-<tt/DEBIAN/ subdirectory.  See <ref id="bincreating">.
-<p>
-
-If several binary packages are generated from the same source tree it
-is usual to use several <tt>debian/tmp<var/something/</> directories,
-for example <tt/tmp-a/ or <tt/tmp-doc/.
-<p>
-
-Whatever <tt>tmp</> directories are created and used by <prgn/binary/
-must of course be removed by the <prgn/clean/ target.
-
-
-<sect id="sourcearchives">Source packages as archives
-<p>
-
-As it exists on the FTP site, a Debian source package consists of
-three related files.  You must have the right versions of all three to
-be able to use them.
-<p>
-
-<taglist>
-<tag/Debian source control file - <tt/.dsc//
-<item>
-
-This file contains a series of fields, identified and separated just
-like the fields in the control file of a binary package.  The fields
-are listed below; their syntax is described above, in
-<ref id="controlfields">.
-<list compact>
-<item><qref id="f-Source"><tt/Source/</>
-<item><qref id="versions"><tt/Version/</>
-<item><qref id="f-Maintainer"><tt/Maintainer/</>
-<item><qref id="f-Binary"><tt/Binary/</>
-<item><qref id="f-Architecture"><tt/Architecture/</>
-<item><qref id="f-Standards-Version"><tt/Standards-Version/</>
-<item><qref id="f-Files"><tt/Files/</>
-</list>
-<p>
-
-The source package control file is generated by <prgn/dpkg-source/
-when it builds the source archive, from other files in the source
-package, described above.  When unpacking it is checked against the
-files and directories in the other parts of the source package, as
-described below.
-
-<tag/Original source archive - <tt/<var/package/_<var/upstream-version/.orig.tar.gz//
-<item>
-
-This is a compressed (with <tt/gzip -9/) <prgn/tar/ file containing
-the source code from the upstream authors of the program.  The tarfile
-unpacks into a directory
-<tt/<var/package/-<var/upstream-version/.orig/, and does not contain
-files anywhere other than in there or in its subdirectories.
-
-<tag/Debianisation diff - <tt/<var/package/_<var/version-revision/.diff.gz//
-<item>
-
-This is a unified context diff (<tt/diff -u/) giving the changes which
-are required to turn the original source into the Debian source.
-These changes may only include editing and creating plain files.  The
-permissions of files, the targets of symbolic links and the
-characteristics of special files or pipes may not be changed and no
-files may be removed or renamed.
-<p>
-
-All the directories in the diff must exist, except the <tt/debian/
-subdirectory of the top of the source tree, which will be created by
-<prgn/dpkg-source/ if necessary when unpacking.
-<p>
-
-The <prgn/dpkg-source/ program will automatically make the
-<tt>debian/rules</tt> file executable (see below).
-
-</taglist>
-<p>
-
-If there is no original source code - for example, if the package is
-specially prepared for Debian or the Debian maintainer is the same as
-the upstream maintainer - the format is slightly different: then there
-is no diff, and the tarfile is named
-<tt/<var/package/_<var/version/.tar.gz</> and contains a directory
-<tt/<var/package/-<var/version/</>.
-
-<sect>Unpacking a Debian source package without <prgn/dpkg-source/
-<p>
-
-<tt/dpkg-source -x/ is the recommended way to unpack a Debian source
-package.  However, if it is not available it is possible to unpack a
-Debian source archive as follows:
-
-<enumlist compact>
-<item>Untar the tarfile, which will create a <tt/.orig/ directory.
-<item>Rename the <tt/.orig/ directory to
-<tt/<var/package/-<var/version//.
-<item>Create the subdirectory <tt/debian/ at the top of the source
-tree.
-<item>Apply the diff using <tt/patch -p0/.
-<item>Untar the tarfile again if you want a copy of the original
-source code alongside the Debianised version.
-</enumlist>
-<p>
-
-It is not possible to generate a valid Debian source archive without
-using <prgn/dpkg-source/.  In particular, attempting to use
-<prgn/diff/ directly to generate the <tt/.diff.gz/ file will not work.
-
-<sect1>Restrictions on objects in source packages
-<p>
-
-The source package may not contain any hard links<footnote>This is not
-currently detected when building source packages, but only when
-extracting them.</footnote><footnote>Hard links may be permitted at
-some point in the future, but would require a fair amount of
-work.</footnote>, device special files, sockets or setuid or setgid
-files.<footnote>Setgid directories are allowed.</footnote>
-<p>
-
-The source packaging tools manage the changes between the original and
-Debianised source using <prgn/diff/ and <prgn/patch/.  Turning the
-original source tree as included in the <tt/.orig.tar.gz/ into the
-debianised source must not involve any changes which cannot be handled
-by these tools.  Problematic changes which cause <prgn/dpkg-source/ to
-halt with an error when building the source package are:
-<list compact>
-<item>Adding or removing symbolic links, sockets or pipes.
-<item>Changing the targets of symbolic links.
-<item>Creating directories, other than <tt/debian/.
-<item>Changes to the contents of binary files.
-</list>
-Changes which cause <prgn/dpkg-source/ to print a warning but continue
-anyway are:
-<list compact>
-<item>Removing files, directories or symlinks.  <footnote>Renaming a
-file is not treated specially - it is seen as the removal of the old
-file (which generates a warning, but is otherwise ignored), and the
-creation of the new one.</footnote>
-<item>Changed text files which are missing the usual final newline
-(either in the original or the modified source tree).
-</list>
-Changes which are not represented, but which are not detected by
-<prgn/dpkg-source/, are:
-<list compact>
-<item>Changing the permissions of files (other than
-<tt>debian/rules</>) and directories.
-</list>
-<p>
-
-The <tt/debian/ directory and <tt>debian/rules</> are handled
-specially by <prgn/dpkg-source/ - before applying the changes it will
-create the <tt/debian/ directory, and afterwards it will make
-<tt>debian/rules</> world-exectuable.
-
-<chapt id="controlfields">Control files and their fields
-<p>
-
-Many of the tools in the <prgn/dpkg/ suite manipulate data in a common
-format, known as control files.  Binary and source packages have
-control data as do the <tt/.changes/ files which control the
-installation of uploaded files, and <prgn/dpkg/'s internal databases
-are in a similar format.
-
-<sect>Syntax of control files
-<p>
-
-A file consists of one or more paragraphs of fields.  The paragraphs
-are separated by blank lines.  Some control files only allow one
-paragraph; others allow several, in which case each paragraph often
-refers to a different package.
-<p>
-
-Each paragraph is a series of fields and values; each field consists
-of a name, followed by a colon and the value.  It ends at the end of
-the line.  Horizontal whitespace (spaces and tabs) may occur before or
-after the value and is ignored there; it is conventional to put a
-single space after the colon.
-<p>
-
-Some fields' values may span several lines; in this case each
-continuation line <em/must/ start with a space or tab.  Any trailing
-spaces or tabs at the end of individual lines of a field value are
-ignored.
-<p>
-
-Except where otherwise stated only a single line of data is allowed
-and whitespace is not significant in a field body.  Whitespace may
-never appear inside names (of packages, architectures, files or
-anything else), version numbers or in between the characters of
-multi-character version relationships.
-<p>
-
-Field names are not case-sensitive, but it is usual to capitalise the
-fields using mixed case as shown below.
-<p>
-
-Blank lines, or lines consisting only of spaces and tabs, are not
-allowed within field values or between fields - that would mean a new
-paragraph.
-<p>
-
-It is important to note that there are several fields which are
-optional as far as <prgn/dpkg/ and the related tools are concerned,
-but which must appear in every Debian package, or whose omission may
-cause problems.  When writing the control files for Debian packages
-you <em/must/ read the Debian policy manual in conjuction with the
-details below and the list of fields for the particular file.
-
-<sect>List of fields
-
-<sect1 id="f-Package"><tt/Package/
-<p>
-
-The name of the binary package.  Package names consist of the
-alphanumerics and <tt/+/ <tt/-/ <tt/./ (plus, minus and full
-stop).<footnote>The characters <tt/@/ <tt/:/ <tt/=/ <tt/%/ <tt/_/ (at,
-colon, equals, percent and underscore) used to be legal and are still
-accepted when found in a package file, but may not be used in new
-packages</footnote>
-<p>
-
-They must be at least two characters and must start with an
-alphanumeric.  In current versions of dpkg they are sort of
-case-sensitive<footnote>This is a bug.</footnote>; use lowercase
-package names unless the package you're building (or referring to, in
-other fields) is already using uppercase.
-
-<sect1 id="f-Version"><tt/Version/
-<p>
-
-This lists the source or binary package's version number - see <ref
-id="versions">.
-
-<sect1 id="f-Architecture"><tt/Architecture/
-<p>
-
-This is the architecture string; it is a single word for the CPU
-architecture.
-<p>
-
-<prgn/dpkg/ will check the declared architecture of a binary package
-against its own compiled-in value before it installs it.
-<p>
-
-The special value <tt/all/ indicates that the package is
-architecture-independent.
-<p>
-
-In the main <tt>debian/control</> file in the source package, or in
-the source package control file <tt/.dsc/, a list of architectures
-(separated by spaces) is also allowed, as is the special value
-<tt/any/.  A list indicates that the source will build an
-architecture-dependent package, and will only work correctly on the
-listed architectures.  <tt/any/ indicates that though the source
-package isn't dependent on any particular architecture and should
-compile fine on any one, the binary package(s) produced are not
-architecture-independent but will instead be specific to whatever the
-current build architecture is.
-<p>
-
-In a <tt/.changes/ file the <tt/Architecture/ field lists the
-architecture(s) of the package(s) currently being uploaded.  This will
-be a list; if the source for the package is being uploaded too the
-special entry <tt/source/ is also present.
-<p>
-
-The current build architecture can be determined using <tt/dpkg
---print-architecture/.<footnote>This actually invokes
-<example>
-gcc --print-libgcc-file-name
-</example>
-and parses and decomposes the output and looks the CPU type from the
-GCC configuration in a table in <prgn/dpkg/.  This is so that it will
-work if you're cross-compiling.
-</footnote>
-This value is automatically used by <prgn/dpkg-gencontrol/ when
-building the control file for a binary package for which the source
-control information doesn't specify architecture <tt/all/.
-<p>
-
-There is a separate option, <tt/--print-installation-architecture/,
-for finding out what architecture <prgn/dpkg/ is willing to install.
-This information is also in the output of <tt/dpkg --version/.
-
-<sect1 id="f-Maintainer"><tt/Maintainer/
-<p>
-
-The package maintainer's name and email address.  The name should come
-first, then the email address inside angle brackets <tt/&lt;&gt/ (in
-RFC822 format).
-<p>
-
-If the maintainer's name contains a full stop then the whole field
-will not work directly as an email address due to a misfeature in the
-syntax specified in RFC822; a program using this field as an address
-must check for this and correct the problem if necessary (for example
-by putting the name in round brackets and moving it to the end, and
-bringing the email address forward).
-<p>
-
-In a <tt/.changes/ file or parsed changelog data this contains the
-name and email address of the person responsible for the particular
-version in question - this may not be the package's usual maintainer.
-<p>
-
-This field is usually optional in as far as the <prgn/dpkg/ are
-concerned, but its absence when building packages usually generates a
-warning.
-
-<sect1 id="f-Source"><tt/Source/
-<p>
-
-This field identifies the source package name.
-<p>
-
-In a main source control information or a <tt/.changes/ or <tt/.dsc/
-file or parsed changelog data this may contain only the name of the
-source package.
-<p>
-
-In the control file of a binary package (or in a <tt/Packages/ file)
-it may be followed by a version number in parentheses.<footnote>It is
-usual to leave a space after the package name if a version number is
-specified.</footnote> This version number may be omitted (and is, by
-<prgn/dpkg-gencontrol/) if it has the same value as the <tt/Version/
-field of the binary package in question.  The field itself may be
-omitted from a binary package control file when the source package has
-the same name and version as the binary package.
-
-<sect1>Package interrelationship fields:
-<tt/Depends/, <tt/Pre-Depends/, <tt/Recommends/
-<tt/Suggests/, <tt/Conflicts/, <tt/Provides/, <tt/Replaces/
-<p>
-
-These fields describe the package's relationships with other packages.
-Their syntax and semantics are described in <ref id="relationships">.
-
-<sect1 id="f-Description"><tt/Description/
-<p>
-
-In a binary package <tt/Packages/ file or main source control file
-this field contains a description of the binary package, in a special
-format.  See <ref id="descriptions"> for details.
-<p>
-
-In a <tt/.changes/ file it contains a summary of the descriptions for
-the packages being uploaded.  The part of the field before the first
-newline is empty; thereafter each line has the name of a binary
-package and the summary description line from that binary package.
-Each line is indented by one space.
-
-<sect1 id="f-Essential"><tt/Essential/
-<p>
-
-This is a boolean field which may occur only in the control file of a
-binary package (or in the <tt/Packages/ file) or in a per-package
-fields paragraph of a main source control data file.
-<p>
-
-If set to <tt/yes/ then <prgn/dpkg/ and <prgn/dselect/ will refuse to
-remove the package (though it can be upgraded and/or replaced).  The
-other possible value is <tt/no/, which is the same as not having the
-field at all.
-
-<sect1 id="f-classification"><tt/Section/ and <tt/Priority/
-<p>
-
-These two fields classify the package.  The <tt/Priority/ represents
-how important that it is that the user have it installed; the
-<tt/Section/ represents an application area into which the package has
-been classified.
-<p>
-
-When they appear in the <tt>debian/control</> file these fields give
-values for the section and priority subfields of the <tt/Files/ field
-of the <tt/.changes/ file, and give defaults for the section and
-priority of the binary packages.
-<p>
-
-The section and priority are represented, though not as separate
-fields, in the information for each file in the <qref
-id="f-Files"><tt/Files/</> field of a <tt/.changes/ file.  The
-section value in a <tt/.changes/ file is used to decide where to
-install a package in the FTP archive.
-<p>
-
-These fields are not used by by <prgn/dpkg/ proper, but by
-<prgn/dselect/ when it sorts packages and selects defaults.  See the
-Debian policy manual for the priorities in use and the criteria for
-selecting the priority for a Debian package, and look at the Debian
-FTP archive for a list of currently in-use priorities.
-<p>
-
-These fields may appear in binary package control files, in which case
-they provide a default value in case the <tt/Packages/ files are
-missing the information.  <prgn/dpkg/ and <prgn/dselect/ will only use
-the value from a <tt/.deb/ file if they have no other information; a
-value listed in a <tt/Packages/ file will always take precedence.  By
-default <prgn/dpkg-genchanges/ does not include the section and
-priority in the control file of a binary package - use the <tt/-isp/,
-<tt/-is/ or <tt/-ip/ options to achieve this effect.
-
-<sect1 id="f-Binary"><tt/Binary/
-<p>
-
-This field is a list of binary packages.
-<p>
-
-When it appears in the <tt/.dsc/ file it is the list of binary
-packages which a source package can produce.  It does not necessarily
-produce all of these binary packages for every architecture.  The
-source control file doesn't contain details of which architectures are
-appropriate for which of the binary packages.
-<p>
-
-When it appears in a <tt/.changes/ file it lists the names of the
-binary packages actually being uploaded.
-<p>
-
-The syntax is a list of binary packages separated by
-commas.<footnote>A space after each comma is conventional.</footnote>
-Currently the packages must be separated using only spaces in the
-<tt/.changes/ file.
-
-<sect1 id="f-Installed-Size"><tt/Installed-Size/
-<p>
-
-This field appears in the control files of binary packages, and in the
-<tt/Packages/ files.  It gives the total amount of disk space
-required to install the named package.
-<p>
-
-The disk space is represented in kilobytes as a simple decimal number.
-
-<sect1 id="f-Files"><tt/Files/
-<p>
-
-This field contains a list of files with information about each one.
-The exact information and syntax varies with the context.  In all
-cases the the part of the field contents on the same line as the field
-name is empty.  The remainder of the field is one line per file, each
-line being indented by one space and containing a number of sub-fields
-separated by spaces.
-<p>
-
-In the <tt/.dsc/ (Debian source control) file each line contains the
-MD5 checksum, size and filename of the tarfile and (if applicable)
-diff file which make up the remainder of the source
-package.<footnote>That is, the parts which are not the
-<tt/.dsc/.</footnote> The exact forms of the filenames are described
-in <ref id="sourcearchives">.
-<p>
-
-In the <tt/.changes/ file this contains one line per file being
-uploaded.  Each line contains the MD5 checksum, size, section and
-priority and the filename.  The section and priority are the values of
-the corresponding fields in the main source control file - see <ref
-id="f-classification">.  If no section or priority is specified then
-<tt/-/ should be used, though section and priority values must be
-specified for new packages to be installed properly.
-<p>
-
-The special value <tt/byhand/ for the section in a <tt/.changes/ file
-indicates that the file in question is not an ordinary package file
-and must by installed by hand by the distribution maintainers.  If the
-section is <tt/byhand/ the priority should be <tt/-/.
-<p>
-
-If a new Debian revision of a package is being shipped and no new
-original source archive is being distributed the <tt/.dsc/ must still
-contain the <tt/Files/ field entry for the original source archive
-<tt/<var/package/-<var/upstream-version/.orig.tar.gz/, but the
-<tt/.changes/ file should leave it out.  In this case the original
-source archive on the distribution site must match exactly,
-byte-for-byte, the original source archive which was used to generate
-the <tt/.dsc/ file and diff which are being uploaded.
-
-
-<sect1 id="f-Standards-Version"><tt/Standards-Version/
-<p>
-
-The most recent version of the standards (the <prgn/dpkg/ programmers'
-and policy manuals and associated texts) with which the package
-complies.  This is updated manually when editing the source package to
-conform to newer standards; it can sometimes be used to tell when a
-package needs attention.
-<p>
-
-Its format is the same as that of a version number except that no
-epoch or Debian revision is allowed - see <ref id="versions">.
-
-
-<sect1 id="f-Distribution"><tt/Distribution/
-<p>
-
-In a <tt/.changes/ file or parsed changelog output this contains the
-(space-separated) name(s) of the distribution(s) where this version of
-the package should be or was installed.  Distribution names follow the
-rules for package names.  (See <ref id="f-Package">).
-<p>
-
-Current distribution values are <tt/stable/, <tt/unstable/,
-<tt/contrib/, <tt/non-free/ and <tt/experimental/.
-
-<sect1 id="f-Urgency"><tt/Urgency/
-<p>
-
-This is a description of how important it is to upgrade to this
-version from previous ones.  It consists of a single keyword usually
-taking one of the values <tt/LOW/, <tt/MEDIUM/ or <tt/HIGH/) followed
-by an optional commentary (separated by a space) which is usually in
-parentheses.  For example:
-<example>
-Urgency: LOW (HIGH for diversions users)
-</example>
-<p>
-
-This field appears in the <tt/.changes/ file and in parsed changelogs;
-its value appears as the value of the <tt/urgency/ attribute in a
-<prgn/dpkg/-style changelog (see <ref id="dpkgchangelog">).
-<p>
-
-Urgency keywords are not case-sensitive.
-
-<sect1 id="f-Date"><tt/Date/
-<p>
-
-In <tt/.changes/ files and parsed changelogs, this gives the date the
-package was built or last edited.
-
-<sect1 id="f-Format"><tt/Format/
-<p>
-
-This field occurs in <tt/.changes/ files, and specifies a format
-revision for the file.  The format described here is version <tt/1.5/.
-The syntax of the format value is the same as that of a package
-version number except that no epoch or Debian revision is allowed -
-see <ref id="versions">.
-
-<sect1 id="f-Changes"><tt/Changes/
-<p>
-
-In a <tt/.changes/ file or parsed changelog this field contains the
-human-readable changes data, describing the differences between the
-last version and the current one.
-<p>
-
-There should be nothing in this field before the first newline; all
-the subsequent lines must be indented by at least one space; blank
-lines must be represented by a line consiting only of a space and a
-full stop.
-<p>
-
-Each version's change information should be preceded by a `title' line
-giving at least the version, distribution(s) and urgency, in a
-human-readable way.
-<p>
-
-If data from several versions is being returned the entry for the most
-recent version should be returned first, and entries should be
-separated by the representation of a blank line (the `title' line may
-also be followed by the representation of blank line).
-
-<sect1 id="f-Filename"><tt/Filename/ and <tt/MSDOS-Filename/
-<p>
-
-These fields in <tt/Packages/ files give the filename(s) of (the parts
-of) a package in the distribution directories, relative to the root of
-the Debian hierarchy.  If the package has been split into several
-parts the parts are all listed in order, separated by spaces.
-
-<sect1 id="f-Size"><tt/Size/ and <tt/MD5sum/
-<p>
-
-These fields in <tt/Packages/ files give the size (in bytes, expressed
-in decimal) and MD5 checksum of the file(s) which make(s) up a binary
-package in the distribution.  If the package is split into several
-parts the values for the parts are listed in order, separated by
-spaces.
-
-<sect1 id="f-Status"><tt/Status/
-<p>
-
-This field in <prgn/dpkg/'s status file records whether the user wants a
-package installed, removed or left alone, whether it is broken
-(requiring reinstallation) or not and what its current state on the
-system is.  Each of these pieces of information is a single word.
-
-<sect1 id="f-Config-Version"><tt/Config-Version/
-<p>
-
-If a package is not installed or not configured, this field in
-<prgn/dpkg/'s status file records the last version of the package which
-was successfully configured.
-
-<sect1 id="f-Conffiles"><tt/Conffiles/
-<p>
-
-This field in <prgn/dpkg/'s status file contains information about the
-automatically-managed configuration files held by a package.  This
-field should <em/not/ appear anywhere in a package!
-
-<sect1>Obsolete fields
-<p>
-
-These are still recognised by <prgn/dpkg/ but should not appear anywhere
-any more.
-
-<taglist compact>
-
-<tag><tt/Revision/
-<tag><tt/Package-Revision/
-<tag><tt/Package_Revision/
-<item>
-The Debian revision part of the package version was at one point in a
-separate control file field.  This field went through several names.
-
-<tag><tt/Recommended/
-<item>Old name for <tt/Recommends/
-
-<tag><tt/Optional/
-<item>Old name for <tt/Suggests/.
-
-<tag><tt/Class/
-<item>Old name for <tt/Priority/.
-
-</taglist>
-
-<chapt id="versions">Version numbering
-<p>
-
-Every package has a version number, in its <tt/Version/ control file
-field.
-<p>
-
-<prgn/dpkg/ imposes an ordering on version numbers, so that it can tell
-whether packages are being up- or downgraded and so that <prgn/dselect/
-can tell whether a package it finds available is newer than the one
-installed on the system.  The version number format has the most
-significant parts (as far as comparison is concerned) at the
-beginning.
-<p>
-
-The version number format is:
-&lsqb<var/epoch/<tt/:/&rsqb;<var/upstream-version/&lsqb;<tt/-/<var/debian-revision/&rsqb;.
-<p>
-
-The three components here are:
-
-<taglist>
-
-<tag><var/epoch/
-<item>
-
-This is a single unsigned integer, which should usually be small.  It
-may be omitted, in which case zero is assumed.  If it is omitted then
-the <var/upstream-version/ may not contain any colons.
-<p>
-
-It is provided to allow mistakes in the version numbers of older
-versions of a package, and also a package's previous version numbering
-schemes, to be left behind.
-<p>
-
-<prgn/dpkg/ will not usually display the epoch unless it is essential
-(non-zero, or if the <var/upstream-version/ contains a colon);
-<prgn/dselect/ does not display epochs at all in the main part of the
-package selection display.
-
-<tag><var/upstream-version/
-<item>
-
-This is the main part of the version.  It is usually version number of
-the original (`upstream') package of which the <tt/.deb/ file has been
-made, if this is applicable.  Usually this will be in the same format
-as that specified by the upstream author(s); however, it may need to
-be reformatted to fit into <prgn/dpkg/'s format and comparison scheme.
-<p>
-
-The comparison behaviour of <prgn/dpkg/ with respect to the
-<var/upstream-version/ is described below.  The <var/upstream-version/
-portion of the version number is mandatory.
-<p>
-
-The <var/upstream-version/ may contain only alphanumerics and the
-characters <tt/+/ <tt/./ <tt/-/ <tt/:/ (full stop, plus, hyphen,
-colon) and should start with a digit.  If there is no
-<var/debian-revision/ then hyphens are not allowed; if there is no
-<var/epoch/ then colons are not allowed.
-
-<tag><var/debian-revision/
-<item>
-
-This part of the version represents the version of the modifications
-that were made to the package to make it a Debian binary package.  It
-is in the same format as the <var/upstream-version/ and <prgn/dpkg/
-compares it in the same way.
-<p>
-
-It is optional; if it isn't present then the <var/upstream-version/
-may not contain a hyphen.  This format represents the case where a
-piece of software was written specifically to be turned into a Debian
-binary package, and so there is only one `debianization' of it and
-therefore no revision indication is required.
-<p>
-
-It is conventional to restart the <var/debian-revision/ at <tt/1/ each
-time the <var/upstream-version/ is increased.
-<p>
-
-<prgn/dpkg/ will break the <var/upstream-version/ and
-<var/debian-revision/ apart at the last hyphen in the string.  The
-absence of a <var/debian-revision/ compares earlier than the presence
-of one (but note that the <var/debian-revision/ is the least
-significant part of the version number).
-<p>
-
-The <var/debian-revision/ may contain only alphanumerics and the
-characters <tt/+/ and <tt/./ (plus and full stop).
-
-</taglist>
-
-The <var/upstream-version/ and <var/debian-revision/ parts are
-compared by <prgn/dpkg/ using the same algorithm:
-<p>
-
-The strings are compared from left to right.
-<p>
-
-First the initial part of each string consisting entirely of non-digit
-characters is determined.  These two parts (one of which may be empty)
-are compared lexically.  If a difference is found it is returned.  The
-lexical comparison is a comparison of ASCII values modified so that
-all the letters sort earlier than all the non-letters.
-<p>
-
-Then the initial part of the remainder of each string which consists
-entirely of digit characters is determined.  The numerical values of
-these two parts are compared, and any difference found is returned as
-the result of the comparison.  For these purposes an empty string
-(which can only occur at the end of one or both version strings being
-compared) counts as zero.
-<p>
-
-These two steps are repeated (chopping initial non-digit strings and
-initial digit strings off from the start) until a difference is found
-or both strings are exhausted.
-<p>
-
-Note that the purpose of epochs is to allow us to leave behind
-mistakes in version numbering, and to cope with situations where the
-version numbering changes.  It is <em/not/ there to cope with version
-numbers containing strings of letters which <prgn/dpkg/ cannot interpret
-(such as <tt/ALPHA/ or <tt/pre-/), or with silly orderings (the author
-of this manual has heard of a package whose versions went <tt/1.1/,
-<tt/1.2/, <tt/1.3/, <tt/1/, <tt/2.1/, <tt/2.2/, <tt/2/ and so forth).
-<p>
-
-If an upstream package has problematic version numbers they should be
-converted to a sane form for use in the <tt/Version/ field.
-
-
-<chapt id="maintainerscripts">Package maintainer scripts
-and installation procedure
-<sect>Introduction to package maintainer scripts
-<p>
-
-It is possible supply scripts as part of a package which <prgn/dpkg/
-will run for you when your package is installed, upgraded or removed.
-<p>
-
-These scripts should be the files <tt/preinst/, <tt/postinst/,
-<tt/prerm/ and <tt/postrm/ in the control area of the package.  They
-must be proper exectuable files; if they are scripts (which is
-recommended) they must start with the usual <tt/#!/ convention.  They
-should be readable and executable to anyone, and not world-writeable.
-<p>
-
-<prgn/dpkg/ looks at the exit status from these scripts.  It is
-important that they exit with a non-zero status if there is an error,
-so that <prgn/dpkg/ can stop its processing.  For shell scripts this
-means that you <em/almost always/ need to use <tt/set -e/ (this is
-usually true when writing shell scripts, in fact).  It is also
-important, of course, that they don't exit with a non-zero status if
-everything went well.
-<p>
-
-It is necessary for the error recovery procedures that the scripts be
-idempotent: ie, invoking the same script several times in the same
-situation should do no harm.  If the first call failed, or aborted
-half way through for some reason, the second call should merely do the
-things that were left undone the first time, if any, and exit with a
-success status.
-<p>
-
-When a package is upgraded a combination of the scripts from the old
-and new packages is called in amongst the other steps of the upgrade
-procedure.  If your scripts are going to be at all complicated you
-need to be aware of this, and may need to check the arguments to your
-scripts.
-<p>
-
-Broadly speaking the <prgn/preinst/ is called before (a particular
-version of) a package is installed, and the <prgn/postinst/ afterwards;
-the <prgn/prerm/ before (a version of) a package is removed and the
-<prgn/postrm/ afterwards.
-
-
-<sect id="mscriptsinstact">Summary of ways maintainer scripts are called
-<p>
-
-<list compact>
-<item><var/new-preinst/ <tt/install/
-<item><var/new-preinst/ <tt/install/ <var/old-version/
-<item><var/new-preinst/ <tt/upgrade/ <var/old-version/
-<item><var/old-preinst/ <tt/abort-upgrade/ <var/new-version/
-</list>
-<p>
-
-<list compact>
-<item><var/postinst/ <tt/configure/ <var/most-recently-configured-version/
-<item><var/old-postinst/ <tt/abort-upgrade/ <var/new version/
-<item><var/conflictor's-postinst/ <tt/abort-remove/
-    <tt/in-favour/ <var/package/ <var/new-version/
-<item><var/deconfigured's-postinst/ <tt/abort-deconfigure/
-    <tt/in-favour/ <var/failed-install-package/ <var/version/
-    <tt/removing/ <var/conflicting-package/ <var/version/
-</list>
-<p>
-
-<list compact>
-<item><var/prerm/ <tt/remove/
-<item><var/old-prerm/ <tt/upgrade/ <var/new-version/
-<item><var/new-prerm/ <tt/failed-upgrade/ <var/old-version/
-<item><var/conflictor's-prerm/ <tt/remove/ <tt/in-favour/
-    <var/package/ <var/new-version/
-<item><var/deconfigured's-prerm/ <tt/deconfigure/
-    <tt/in-favour/ <var/package-being-installed/ <var/version/
-    <tt/removing/ <var/conflicting-package/ <var/version/
-</list>
-<p>
-
-<list compact>
-<item><var/postrm/ <tt/remove/
-<item><var/postrm/ <tt/purge/
-<item><var/old-postrm/ <tt/upgrade/ <var/new-version/
-<item><var/new-postrm/ <tt/failed-upgrade/ <var/old-version/
-<item><var/new-postrm/ <tt/abort-install/
-<item><var/new-postrm/ <tt/abort-install/ <var/old-version/
-<item><var/new-postrm/ <tt/abort-upgrade/ <var/old-version/
-<item><var/disappearer's-postrm/ <tt/disappear/ <var/overwriter/ <var/new-version/
-</list>
-
-
-<sect>Details of unpack phase of installation or upgrade
-<p>
-
-The procedure on installation/upgrade/overwrite/disappear (ie, when
-running <tt/dpkg --unpack/, or the unpack stage of <tt/dpkg
---install/) is as follows.  In each case if an error occurs the
-actions in are general run backwards - this means that the maintainer
-scripts are run with different arguments in reverse order.  These are
-the `error unwind' calls listed below.
-
-<enumlist>
-<item>
-
-<enumlist>
-<item>
-If a version the package is already
-installed, call
-<example>
-<var/old-prerm/ upgrade <var/new-version/
-</example>
-
-<item>
-If this gives an error (ie, a non-zero exit status), dpkg will
-attempt instead:
-<example>
-<var/new-prerm/ failed-upgrade <var/old-version/
-</example>
-Error unwind, for both the above cases:
-<example>
-<var/old-postinst/ abort-upgrade <var/new-version/
-</example>
-
-</enumlist>
-
-<item>
-If a `conflicting' package is being removed at the same time:
-<enumlist>
-
-<item>
-If any packages depended on that conflicting package and
-<tt/--auto-deconfigure/ is specified, call, for each such package:
-<example>
-<var/deconfigured's-prerm/ deconfigure \
-    in-favour <var/package-being-installed/ <var/version/ \
-    removing <var/conflicting-package/ <var/version/
-</example>
-Error unwind:
-<example>
-<var/deconfigured's-postinst/ abort-deconfigure \
-    in-favour <var/package-being-installed-but-failed/ <var/version/ \
-    removing <var/conflicting-package/ <var/version/
-</example>
-The deconfigured packages are marked as requiring configuration, so
-that if <tt/--install/ is used they will be configured again if
-possible.
-
-<item>
-To prepare for removal of the conflicting package, call:
-<example>
-<var/conflictor's-prerm/ remove in-favour <var/package/ <var/new-version/
-</example>
-Error unwind:
-<example>
-<var/conflictor's-postinst/ abort-remove \
-    in-favour <var/package/ <var/new-version/
-</example>
-
-</enumlist>
-
-<item>
-<enumlist>
-<item>
-If the package is being upgraded, call:
-<example>
-<var/new-preinst/ upgrade <var/old-version/
-</example>
-
-<item>
-Otherwise, if the package had some configuration files from a previous
-version installed (ie, it is in the `configuration files only' state):
-<example>
-<var/new-preinst/ install <var/old-version/
-</example>
-
-<item>
-Otherwise (ie, the package was completely purged):
-<example>
-<var/new-preinst/ install
-</example>
-Error unwind versions, respectively:
-<example>
-<var/new-postrm/ abort-upgrade <var/old-version/
-<var/new-postrm/ abort-install <var/old-version/
-<var/new-postrm/ abort-install
-</example>
-
-</enumlist>
-
-<item>
-The new package's files are unpacked, overwriting any that may be on
-the system already, for example any from the old version of the same
-package or from another package (backups of the old files are left
-around, and if anything goes wrong dpkg will attempt to put them back
-as part of the error unwind).
-<p>
-
-It is an error for a package to contains files which are on the system
-in another package, unless <tt/Replaces/ is used (see
-<ref id="replaces">).  Currently the <tt/--force-overwrite/ flag is
-enabled, downgrading it to a warning, but this may not always be the
-case.
-<p>
-
-It is a more serious error for a package to contain a plain file or
-other kind of nondirectory where another package has a directory
-(again, unless <tt/Replaces/ is used).  This error can be overridden
-if desired using <tt/--force-overwrite-dir/, but this is not -->
---advisable.
-<p>
-
-Packages which overwrite each other's files produce behaviour which
-though deterministic is hard for the system administrator to
-understand.  It can easily lead to `missing' programs if, for example,
-a package is installed which overwrites a file from another package,
-and is then removed again.<footnote>Part of the problem is due to what
-is arguably a bug in <prgn/dpkg/.</footnote>
-<p>
-
-A directory will never be replaced by a symbolic links to a directory
-or vice versa; instead, the existing state (symlink or not) will be
-left alone and <prgn/dpkg/ will follow the symlink if there is one.
-
-<item>
-
-<enumlist>
-<item>
-If the package is being upgraded, call
-<example>
-<var/old-postrm/ upgrade <var/new-version/
-</example>
-
-<item>
-If this fails, <prgn/dpkg/ will attempt:
-<example>
-<var/new-postrm/ failed-upgrade <var/old-version/
-</example>
-Error unwind, for both cases:
-<example>
-<var/old-preinst/ abort-upgrade <var/new-version/
-</example>
-
-</enumlist>
-
-This is the point of no return - if <prgn/dpkg/ gets this far, it won't
-back off past this point if an error occurs.  This will leave the
-package in a fairly bad state, which will require a successful
-reinstallation to clear up, but it's when <prgn/dpkg/ starts doing
-things that are irreversible.
-
-<item>
-Any files which were in the old version of the package but not in the
-new are removed.
-
-<item>
-The new file list replaces the old.
-
-<item>
-The new maintainer scripts replace the old.
-
-<item>
-Any packages all of whose files have been overwritten during the
-installation, and which aren't required for dependencies, are considered
-to have been removed.  For each such package,
-
-<enumlist>
-<item>
-<prgn/dpkg/ calls:
-<example>
-<var/disappearer's-postrm/ disappear \
-    <var/overwriter/ <var/overwriter-version/
-</example>
-
-<item>
-The package's maintainer scripts are removed.
-
-<item>
-It is noted in the status database as being in a sane state, namely
-not installed (any conffiles it may have are ignored, rather than
-being removed by <prgn/dpkg/).  Note that disappearing packages do not
-have their prerm called, because <prgn/dpkg/ doesn't know in advance
-that the package is going to vanish.
-
-</enumlist>
-
-<item>
-Any files in the package we're unpacking that are also listed in the
-file lists of other packages are removed from those lists.  (This will
-lobotomise the file list of the `conflicting' package if there is one.)
-
-<item>
-The backup files made during installation, above, are deleted.
-
-<item>
-The new package's status is now sane, and recorded as `unpacked'.  Here
-is another point of no return - if the conflicting package's removal
-fails we do not unwind the rest of the installation; the conflicting
-package is left in a half-removed limbo.
-
-<item>
-If there was a conflicting package we go and do the removal actions
-(described below), starting with the removal of the conflicting
-package's files (any that are also in the package being installed
-have already been removed from the conflicting package's file list,
-and so do not get removed now).
-
-</enumlist>
-
-<sect>Details of configuration
-<p>
-
-When we configure a package (this happens with <tt/dpkg --install/, or
-with <tt/--configure/), we first update the conffiles and then call:
-<example>
-<var/postinst/ configure <var/most-recently-configured-version/
-</example>
-<p>
-
-No attempt is made to unwind after errors during configuration.
-<p>
-
-If there is no most recently configured version <prgn/dpkg/ will pass a
-null argument; older versions of dpkg may pass
-<tt>&lt;unknown&gt;</tt> (including the angle brackets) in this case.
-Even older ones do not pass a second argument at all, under any
-circumstances.
-
-<sect>Details of removal and/or configuration purging
-<p>
-
-<enumlist>
-<item>
-<example>
-<var/prerm/ remove
-</example>
-
-<item>
-The package's files are removed (except conffiles).
-
-<item>
-<example>
-<var/postrm/ remove
-</example>
-
-<item>
-All the maintainer scripts except the postrm are removed.
-<p>
-
-If we aren't purging the package we stop here.  Note that packages
-which have no postrm and no conffiles are automatically purged when
-removed, as there is no difference except for the <prgn/dpkg/ status.
-
-<item>
-The conffiles and any backup files (<tt/~/-files, <tt/#*#/ files,
-<tt/%/-files, <tt/.dpkg-{old,new,tmp}/, etc.) are removed.
-
-<item>
-<example>
-<var/postrm/ purge
-</example>
-
-<item>
-The package's file list is removed.
-
-</enumlist>
-
-No attempt is made to unwind after errors during removal.
-
-
-<chapt id="descriptions">Descriptions of packages - the
-<tt/Description/ field
-<p>
-
-The <tt/Description/ control file field is used by <prgn/dselect/ when
-the user is selecting which packages to install and by <prgn/dpkg/
-when it displays information about the status of packages and so
-forth.  It is included on the FTP site in the <prgn/Packages/ files,
-and may also be used by the Debian WWW pages.
-<p>
-
-The description is intended to describe the program to a user who has
-never met it before so that they know whether they want to install it.
-It should also give information about the significant dependencies and
-conflicts between this package and others, so that the user knows why
-these dependencies and conflicts have been declared.
-<p>
-
-The field's format is as follows:
-<example>
-Description: <var/single line synopsis/
- <var/extended description over several lines/
-</example>
-<p>
-
-The synopsis is often printed in lists of packages and so forth, and
-should be as informative as possible.  Every package should also have
-an extended description.
-<p>
-
-<sect>Types of formatting line in the extended description
-<p>
-
-<list>
-<item>
-Those starting with a single space are part of a paragraph.
-Successive lines of this form will be word-wrapped when displayed.
-The leading space will usually be stripped off.
-
-<item>
-Those starting with two or more spaces.  These will be displayed
-verbatim.  If the display cannot be panned horizontally the
-displaying program will linewrap them `hard' (ie, without taking
-account of word breaks).  If it can they will be allowed to trail
-off to the right.  None, one or two initial spaces may be deleted,
-but the number of spaces deleted from each line will be the same
-(so that you can have indenting work correctly, for example).
-
-<item>
-Those containing a single space followed by a single full stop
-character.  These are rendered as blank lines.  This is the <em/only/
-way to get a blank line - see below.
-
-<item>
-Those containing a space, a full stop and some more characters.  These
-are for future expansion.  Do not use them.
-</list>
-
-<sect>Notes about writing descriptions
-<p>
-
-<em/Always/ start extended description lines with at least one
-whitespace character.  Fields in the control file and in the Packages
-file are separated by field names starting in the first column, just
-as message header fields are in RFC822.  Forgetting the whitespace
-will cause <prgn/dpkg-deb/<footnote>Version 0.93.23 or
-later.</footnote> to produce a syntax error when trying to build the
-package.  If you force it to build anyway <prgn/dpkg/ will refuse to
-install the resulting mess.
-<p>
-
-<em/Do not/ include any completely <em/empty/ lines. These separate
-different records in the Packages file and different packages in the
-<tt>debian/control</> file, and are forbidden in package control
-files.  See the previous paragraph for what happens if you get this
-wrong.
-<p>
-
-The single line synopsis should be kept brief - certainly under 80
-characters.  <prgn/dselect/ displays between 25 and 49 characters
-without panning if you're using an 80-column terminal, depending on
-what display options are in effect.
-<p>
-
-Do not include the package name in the synopsis line.  The display
-software knows how to display this already, and you do not need to
-state it.  Remember that in many situations the user may only see
-the synopsis line - make it as informative as you can.
-<p>
-
-The extended description should describe what the package does and
-how it relates to the rest of the system (in terms of, for
-example, which subsystem it is which part of).
-<p>
-
-The blurb that comes with a program in its announcements and/or
-<prgn/README/ files is rarely suitable for use in a description.  It
-is usually aimed at people who are already in the community where the
-package is used.  The description field needs to make sense to anyone,
-even people who have no idea about any of the
-things the package deals with.
-<p>
-
-Put important information first, both in the synopis and extended
-description.  Sometimes only the first part of the synopsis or of
-the description will be displayed.  You can assume that there will
-usually be a way to see the whole extended description.
-<p>
-
-You may include information about dependencies and so forth in the
-extended description, if you wish.
-<p>
-
-Do not use tab characters.  Their effect is not predictable.
-<p>
-
-Do not try to linewrap the summary (the part on the same line as the
-field name <tt/Description/) into the extended description.  This will
-not work correctly when the full description is displayed, and makes
-no sense where only the summary is available.
-
-<sect>Example description in control file for Smail
-<p>
-
-<example>
-Package: smail
-Version: 3.1.29.1-13
-Maintainer: Ian Jackson &lt;iwj10@cus.cam.ac.uk&gt;
-Recommends: pine | mailx | elm | emacs | mail-user-agent
-Suggests: metamail
-Depends: cron, libc5
-Conflicts: sendmail
-Provides: mail-transport-agent
-Description: Electronic mail transport system.
- Smail is the recommended mail transport agent (MTA) for Debian.
- .
- An MTA is the innards of the mail system - it takes messages from
- user-friendly mailer programs and arranges for them to be delivered
- locally or passed on to other systems as required.
- .
- In order to make use of it you must have one or more user level
- mailreader programs such as elm, pine, mailx or Emacs (which has Rmail
- and VM as mailreaders) installed.  If you wish to send messages other
- than just to other users of your system you must also have appropriate
- and VM as mailreaders) installed.  If you wish to send messages other
- than just to other users of your system you must also have appropriate
- networking support, in the form of IP or UUCP.
-</example>
-
-<chapt id="relationships">Declaring relationships between packages
-<p>
-
-Packages can declare in their control file that they have certain
-relationships to other packages - for example, that they may not be
-installed at the same time as certain other packages, and/or that they
-depend on the presence of others, or that they should overwrite files
-in certain other packages if present.
-<p>
-
-This is done using the <tt/Depends/, <tt/Recommends/, <tt/Suggests/,
-<tt/Conflicts/, <tt/Provides/ and <tt/Replaces/ control file fields.
-<p>
-
-<sect id="depsyntax">Syntax of relationship fields
-<p>
-
-These fields all have a uniform syntax.  They are a list of package
-names separated by commas.
-<p>
-
-In <tt/Depends/, <tt/Recommends/, <tt/Suggests/ and <tt/Pre-Depends/
-(the fields which declare dependencies of the package in which they
-occur on other packages) these package names may also be lists of
-alternative package names, separated by vertical bar symbols <tt/|/
-(pipe symbols).
-<p>
-
-All the fields except <tt/Provides/ may restrict their applicability
-to particular versions of each named package.  This is done in
-parentheses after each individual package name; the parentheses should
-contain a relation from the list below followed by a version number,
-in the format described in <ref id="versions">.
-<p>
-
-The relations allowed are
-<tt/&lt;&lt;/,
-<tt/&lt;=/,
-<tt/=/,
-<tt/&gt;=/ and
-<tt/&gt;&gt;/
-for strictly earlier, earlier or equal, exactly equal, later or equal
-and strictly later, respectively.  The forms <tt/&lt;/ and <tt/&gt;/
-were used to mean earlier/later or equal, rather than strictly
-earlier/later, so they should not appear in new packages (though
-<prgn/dpkg/ still supports them).
-<p>
-
-Whitespace may appear at any point in the version specification, and
-must appear where it's necessary to disambiguate; it is not otherwise
-significant.  For consistency and in case of future changes to
-<prgn/dpkg/ it is recommended that a single space be used after a
-version relationship and before a version number; it is usual also to
-put a single space after each comma, on either side of each vertical
-bar, and before each open parenthesis.
-<p>
-
-For example:
-<example>
-Package: metamail
-Version: 2.7-3
-Depends: libc5 (>= 5.2.18-4), mime-support, csh | tcsh
-</example>
-
-<sect>Dependencies - <tt/Depends/, <tt/Recommends/, <tt/Suggests/, <tt/Pre-Depends/
-<p>
-
-These four fields are used to declare a dependency by one package on
-another.  They appear in the depending package's control file.
-<p>
-
-All but <tt/Pre-Depends/ (discussed below) take effect <em/only/ when
-a package is to be configured.  They do not prevent a package being on
-the system in an unconfigured state while its dependencies are
-unsatisfied, and it is possible to replace a package whose
-dependencies are satisfied and which is properly installed with a
-different version whose dependencies are not and cannot be satisfied;
-when this is done the depending package will be left unconfigured
-(since attempts to configure it will give errors) and will not
-function properly.
-<p>
-
-For this reason packages in an installation run are usually all
-unpacked first and all configured later; this gives later versions of
-packages with dependencies on later versions of other packages the
-opportunity to have their dependencies satisfied.
-<p>
-
-Thus <tt/Depends/ allows package maintainers to impose an order in
-which packages should be configured.
-
-<taglist>
-<tag><tt/Depends/
-<item>
-
-This declares an absolute dependency.
-<p>
-
-<prgn/dpkg/ will not configure
-packages whose dependencies aren't satisfied.  If it is asked to make
-an installation which would cause an installed package's dependencies
-to become unsatisfied it will complain<footnote>Current versions
-(1.2.4) of <prgn/dpkg/ have a bug in this area which will cause some of
-these problems to be ignored.</footnote>, unless
-<tt/--auto-deconfigure/ is specified, in which case those packages
-will be deconfigured before the installation proceeds.
-<p>
-
-<prgn/dselect/ makes it hard for the user to select packages for
-installation, removal or upgrade in a way that would mean that
-packages' <prgn/Depends/ fields would be unsatisfied.  The user can
-override this if they wish, for example if they know that <prgn/dselect/
-has an out-of-date view of the real package relationships.
-<p>
-
-The <tt/Depends/ field should be used if the depended-on package is
-required for the depending package to provide a significant amount of
-functionality.
-
-<tag><tt/Recommends/
-<item>
-This declares a strong, but not absolute, dependency.
-<p>
-
-<tt/Recommends/ is ignored by <prgn/dpkg/, so that users using the
-command-line (who are presumed to know what they're doing) will not be
-impeded.
-<p>
-
-It is treated by <prgn/dselect/ exactly as <tt/Depends/ is; this makes
-it hard for the user to select things so as to leave <tt/Recommends/
-fields unsatisfied, but they are able to do so by being persistent.
-<p>
-
-The <tt/Recommends/ field should list packages that would be found
-together with this one in all but unusual installations.
-
-<tag><tt/Suggests/
-<item>
-
-This is used to declare that one package may be more useful with one
-or more others.  Using this field tells the packaging system and the
-user that the listed packages are be related to this one and can
-perhaps enhance its usefulness, but that installing this one without
-them is perfectly reasonable.
-<p>
-
-<prgn/dselect/ will offer suggsted packages to the system administrator
-when they select the suggesting package, but the default is not to
-install the suggested package.
-
-<tag><tt/Pre-Depends/
-<item>
-
-This field is like <tt/Depends/, except that it also forces <prgn/dpkg/
-to complete installation of the packages named before even starting
-the installation of the package which declares the predependency.
-<p>
-
-<prgn/dselect/ checks for predependencies when it is doing an
-installation run, and will attempt to find the packages which are
-required to be installed first and do so in the right order.
-<p>
-
-However, this process is slow (because it requires repeated
-invocations of <prgn/dpkg/) and troublesome (because it requires
-guessing where to find the appropriate files).
-<p>
-
-For these reasons, and because this field imposes restrictions on the
-order in which packages may be unpacked (which can be difficult for
-installations from multipart media, for example), <tt/Pre-Depends/
-should be used sparingly, preferably only by packages whose premature
-upgrade or installation would hamper the ability of the system to
-continue with any upgrade that might be in progress.
-<p>
-
-When the package declaring it is being configured, a
-<tt/Pre-Dependency/ will be considered satisfied only if the depending
-package has been correctly configured, just as if an ordinary
-<tt/Depends/ had been used.
-<p>
-
-However, when a package declaring a predependency is being unpacked
-the predependency can be satisfied even if the depended-on package(s)
-are only unpacked or half-configured, provided that they have been
-configured correctly at some point in the past (and not removed or
-partially removed since).  In this case both the previously-configured
-and currently unpacked or half-configured versions must satisfy any
-version clause in the <tt/Pre-Depends/ field.
-
-</taglist>
-
-When selecting which level of dependency to use you should consider
-how important the depended-on package is to the functionality of the
-one declaring the dependency.  Some packages are composed of
-components of varying degrees of importance.  Such a package should
-list using <tt/Depends/ the package(s) which are required by the more
-important components.  The other components' requirements may be
-mentioned as Suggestions or Recommendations, as appropriate to the
-components' relative importance.
-
-<sect1>Dependencies on shared libraries
-<p>
-
-The dependency fields listed above are used by packages which need
-shared libraries to declare dependencies on the appropriate packages.
-<p>
-
-These dependencies are usually determined automatically using
-<prgn/dpkg-shlibdeps/ and inserted in the package control file using
-the control file substitution variables mechanism; see <ref
-id="srcsubstvars"> and <ref id="sourcetools">.
-
-<sect1>Deconfiguration due to removal during bulk installations
-<p>
-
-If <prgn/dpkg/ would like to remove a package due to a conflict, as
-described above, but this would violate a dependency of some other
-package on the system, <prgn/dpkg/ will usually not remove the
-conflicting package and halt with an error.
-<p>
-
-However, if the <tt/--auto-deconfigure/ (<tt/-B/) option is used
-<prgn/dpkg/ will automatically `deconfigure' the package with the
-problematic dependency, so that the conflicting package can be removed
-and the package we're trying to install can be installed.  If
-<prgn/dpkg/ is being asked to install packages (rather than just
-unpacking them) it will try to reconfigure the package when it has
-unpacked all its arguments, in the hope that one of the other packages
-it is installing will satisfy the problematic dependency.
-<p>
-
-<prgn/dselect/ supplies this argument to <prgn/dpkg/ when it invokes it,
-so that bulk installations proceed smoothly.
-
-<sect id="conflicts">Alternative packages - <tt/Conflicts/ and <tt/Replaces/
-<p>
-
-When one package declares a conflict with another <prgn/dpkg/ will
-refuse to allow them to be installed on the system at the same time.
-<p>
-
-If one package is to be installed, the other must be removed first -
-if the package being installed is marked as replacing (<ref
-id="replaces">) the one on the system, or the one on the system is
-marked as deselected, or both packages are marked <tt/Essential/, then
-<prgn/dpkg/ will automatically remove the package which is causing the
-conflict, otherwise it will halt the installation of the new package
-with an error.
-<p>
-
-<prgn/dselect/ makes it hard to select conflicting packages, though the
-user can override this if they wish.  If they do not override it then
-<prgn/dselect/ will select one of the packages for removal, and the user
-must make sure it is the right one.  In the future <prgn/dselect/ will
-look for the presence of a <tt/Replaces/ field to help decide which
-package should be installed and which removed.
-<p>
-
-A package will not cause a conflict merely because its configuration
-files are still installed; it must be at least half-installed.
-<p>
-
-A special exception is made for packages which declare a conflict with
-their own package name, or with a virtual package which they provide
-(see below): this does not prevent their installation, and allows a
-package to conflict with others providing a replacement for it.  You
-use this feature when you want the package in question to be the only
-package providing something.
-<p>
-
-A <tt/Conflicts/ entry should almost never have an `earlier than'
-version clause.  This would prevent <prgn/dpkg/ from upgrading or
-installing the package which declared such a conflict until the
-upgrade or removal of the conflicted-with package had been completed.
-This aspect of installation ordering is not handled by <prgn/dselect/,
-so that the use <tt/Conflicts/ in this way is likely to cause problems
-for `bulk run' upgrades and installations.
-<p>
-
-
-<sect id="virtual">Virtual packages - <tt/Provides/
-<p>
-
-As well as the names of actual (`concrete') packages, the package
-relationship fields <tt/Depends/, <tt/Recommends/, <tt/Suggests/ and
-<tt/Conflicts/ may mention virtual packages.
-<p>
-
-A virtual package is one which appears in the <tt/Provides/ control
-file field of another package.  The effect is as if the package(s)
-which provide a particular virtual package name had been listed by
-name everywhere were the virtual package name appears.
-<p>
-
-If there are both a real and a virtual package of the same name then
-the dependency may be satisfied (or the conflict caused) by either the
-real package or any of the virtual packages which provide it.  This is
-so that, for example, supposing we have
-<example>
-Package: vm
-Depends: emacs
-</example>
-and someone else releases an xemacs package they can say
-<example>
-Package: xemacs
-Provides: emacs
-</example>
-and all will work in the interim (until a purely virtual package name
-is decided on and the <tt/emacs/ and <tt/vm/ packages are changed to
-use it).
-<p>
-
-If a dependency or a conflict has a version number attached then only
-real packages will be considered to see whether the relationship is
-satisfied (or the prohibition violated, for a conflict) - it is
-assumed that a real package which provides virtual package is not of
-the `right' version.  So, a <tt/Provides/ field may not contain
-version numbers, and the version number of the concrete package which
-provides a particular virtual package will not be looked at when
-considering a dependency on or conflict with the virtual package name.
-<p>
-
-If you want to specify which of a set of real packages should be the
-default to satisfy a particular dependency on a virtual package, you
-should list the real package as alternative before the virtual.
-<p>
-
-
-<sect id="replaces"><tt/Replaces/ - overwriting files and replacing packages
-<p>
-
-The <tt/Replaces/ control file field has two purposes, which come into
-play in different situations.
-<p>
-
-Virtual packages (<ref id="virtual">) are not considered when looking
-at a <tt/Replaces/ field - the packages declared as being replaced
-must be mentioned by their real names.
-
-<sect1>Overwriting files in other packages
-<p>
-
-Firstly, as mentioned before, it is usually an error for a package to
-contains files which are on the system in another package, though
-currently the <tt/--force-overwrite/ flag is enabled by default,
-downgrading the error to a warning,
-<p>
-
-If the overwriting package declares that it replaces the one
-containing the file being overwritten then <prgn/dpkg/ will proceed, and
-replace the file from the old package with that from the new.  The
-file will no longer be listed as `owned' by the old package.
-<p>
-
-If a package is completely replaced in this way, so that <prgn/dpkg/
-does not know of any files it still contains, it is considered to have
-disappeared.  It will be marked as not wanted on the system (selected
-for removal) and not installed.  Any conffiles details noted in the
-package will be ignored, as they will have been taken over by the
-replacing package(s).  The package's <prgn/postrm/ script will be run to
-allow the package to do any final cleanup required.
-See <ref id="mscriptsinstact">.
-<p>
-
-In the future <prgn/dpkg/ will discard files which overwrite those from
-another package which declares that it replaces the one being
-installed (so that you can install an older version of a package
-without problems).
-<p>
-
-This usage of <tt/Replaces/ only takes effect when both packages are
-at least partially on the system at once, so that it can only happen
-if they do not conflict or if the conflict has been overridden.
-
-<sect1>Replacing whole packages, forcing their removal
-<p>
-
-Secondly, <tt/Replaces/ allows <prgn/dpkg/ and <prgn/dselect/ to resolve
-which package should be removed when a conflict - see
-<ref id="conflicts">.  This usage only takes effect when the two
-packages <em/do/ conflict, so that the two effects do not interfere
-with each other.
-<p>
-
-<sect>Defaults for satisfying dependencies - ordering
-<p>
-
-Ordering is significant in dependency fields.
-<p>
-
-Usually dselect will suggest to the user that they select the package
-with the most `fundamental' class (eg, it will prefer Base packages to
-Optional ones), or the one that they `most wanted' to select in some
-sense.
-<p>
-
-In the absence of other information <prgn/dselect/ will offer a
-default selection of the first named package in a list of
-alternatives.
-<p>
-
-However, there is no way to specify the `order' of several packages
-which all provide the same thing, when that thing is listed as a
-dependency.
-<p>
-
-Therefore a dependency on a virtual package should contain a concrete
-package name as the first alternative, so that this is the default.
-<p>
-
-For example, consider the set of packages:
-
-<example>
-Package: glibcdoc
-Recommends: info-browser
-
-Package: info
-Provides: info-browser
-
-Package: emacs
-Provides: info-browser
-</example>
-<p>
-
-If <prgn/emacs/ and <prgn/info/ both have the same priority then
-<prgn/dselect/'s choice is essentially random.  Better would be
-<example>
-Package: glibcdoc
-Recommends: info | info-browser
-</example>
-so that <prgn/dselect/ defaults to selecting the lightweight standalone
-info browser.
-
-
-
-<chapt id="conffiles">Configuration file handling
-<p>
-
-<prgn/dpkg/ can do a certain amount of automatic handling of package
-configuration files.
-<p>
-
-Whether this mechanism is appropriate depends on a number of factors,
-but basically there are two approaches to any particular configuration
-file.
-<p>
-
-The easy method is to ship a best-effort configuration in the package,
-and use <prgn/dpkg/'s conffile mechanism to handle updates.  If the user
-is unlikely to want to edit the file, but you need them to be able to
-without losing their changes, and a new package with a changed version
-of the file is only released infrequently, this is a good approach.
-<p>
-
-The hard method is to build the configuration file from scratch in the
-<prgn/postinst/ script, and to take the responsibility for fixing any
-mistakes made in earlier versions of the package automatically.  This
-will be appropriate if the file is likely to need to be different on
-each system.
-
-<sect>Automatic handling of configuration files by <prgn/dpkg/
-<p>
-
-A package may contain a control area file called <tt/conffiles/.  This
-file should be a list of filenames of configuration files needing
-automatic handling, separated by newlines.  The filenames should be
-absolute pathnames, and the files referred to should actually exist in
-the package.
-<p>
-
-When a package is upgraded <prgn/dpkg/ will process the configuration
-files during the configuration stage, shortly before it runs the
-package's <prgn/postinst/ script,
-<p>
-
-For each file it checks to see whether the version of the file
-included in the package is the same as the one that was included in
-the last version of the package (the one that is being upgraded
-from); it also compares the version currently installed on the system
-with the one shipped with the last version.
-<p>
-
-If neither the user nor the package maintainer has changed the file,
-it is left alone.  If one or the other has changed their version, then
-the changed version is preferred - ie, if the user edits their file,
-but the package maintainer doesn't ship a different version, the
-user's changes will stay, silently, but if the maintainer ships a new
-version and the user hasn't edited it the new version will be
-installed (with an informative message).  If both have changed their
-version the user is prompted about the problem and must resolve the
-differences themselves.
-<p>
-
-The comparisons are done by calculating the MD5 message digests of the
-files, and storing the MD5 of the file as it was included in the most
-recent version of the package.
-<p>
-
-When a package is installed for the first time <prgn/dpkg/ will install
-the file that comes with it, unless that would mean overwriting a file
-already on the filesystem.
-<p>
-
-However, note that <prgn/dpkg/ will <em/not/ replace a conffile that
-was removed by the user (or by a script).  This is necessary because
-with some programs a missing file produces an effect hard or
-impossible to achieve in another way, so that a missing file needs to
-be kept that way if the user did it.
-<p>
-
-Note that a package should <em/not/ modify a <prgn/dpkg/-handled
-conffile in its maintainer scripts.  Doing this will lead to
-<prgn/dpkg/ giving the user confusing and possibly dangerous options
-for conffile update when the package is upgraded.
-
-<sect>Fully-featured maintainer script configuration handling
-<p>
-
-For files which contain site-specific information such as the hostname
-and networking details and so forth, it is better to create the file
-in the package's <prgn/postinst/ script.
-<p>
-
-This will typically involve examining the state of the rest of the
-system to determine values and other information, and may involve
-prompting the user for some information which can't be obtained some
-other way.
-<p>
-
-When using this method there are a couple of important issues which
-should be considered:
-<p>
-
-If you discover a bug in the program which generates the configuration
-file, or if the format of the file changes from one version to the
-next, you will have to arrange for the postinst script to do something
-sensible - usually this will mean editing the installed configuration
-file to remove the problem or change the syntax.  You will have to do
-this very carefully, since the user may have changed the file, perhaps
-to fix the very problem that your script is trying to deal with - you
-will have to detect these situations and deal with them correctly.
-<p>
-
-If you do go down this route it's probably a good idea to make the
-program that generates the configuration file(s) a separate program in
-<tt>/usr/sbin</>, by convention called <tt/<var/package/config/ and
-then run that if appropriate from the post-installation script.  The
-<tt/<var/package/config/ program should not unquestioningly overwrite
-an existing configuration - if its mode of operation is geared towards
-setting up a package for the first time (rather than any arbitrary
-reconfiguration later) you should have it check whether the
-configuration already exists, and require a <tt/--force/ flag to
-overwrite it.
-
-
-
-<chapt id="alternatives">Alternative versions of an interface -
-<prgn/update-alternatives/
-<p>
-
-When several packages all provide different versions of the same
-program or file it is useful to have the system select a default, but
-to allow the system administrator to change it and have their
-decisions respected.
-<p>
-
-For example, there are several versions of the <prgn/vi/ editor, and
-there is no reason to prevent all of them from being installed at
-once, each under their own name (<prgn/nvi/, <prgn/vim/ or whatever).
-Nevertheless it is desirable to have the name <tt/vi/ refer to
-something, at least by default.
-<p>
-
-If all the packages involved cooperate, this can be done with
-<prgn/update-alternatives/.
-<p>
-
-Each package provides its own version under its own name, and calls
-<prgn/update-alternatives/ in its postinst to register its version
-(and again in its prerm to deregister it).
-<p>
-
-See the manpage <manref name=update-alternatives section=8> for
-details.
-<p>
-
-If <prgn/update-alternatives/ does not seem appropriate you may wish
-to consider using diversions instead.
-
-
-<chapt id="diversions">Diversions - overriding a package's version of a file
-<p>
-
-It is possible to have <prgn/dpkg/ not overwrite a file when it
-reinstalls the package it belongs to, and to have it put the file from
-the package somewhere else instead.
-<p>
-
-This can be used locally to override a package's version of a file, or
-by one package to override another's version (or provide a wrapper for
-it).
-<p>
-
-Before deciding to use a diversion, read <ref id="alternatives"> to
-see if you really want a diversion rather than several alternative
-versions of a program.
-<p>
-
-There is a diversion list, which is read by <prgn/dpkg/, and updated
-by a special program <prgn/dpkg-divert/.  Please see <manref
-name=dpkg-divert section=8> for full details of its operation.
-<p>
-
-When a package wishes to divert a file from another, it should call
-<prgn/dpkg-divert/ in its preinst to add the diversion and rename the
-existing file.  For example, supposing that a <prgn/smailwrapper/
-package wishes to install a wrapper around <tt>/usr/sbin/smail</>:
-<example>
-if [ install = "$1" ]; then
-    dpkg-divert --package smailwrapper --add --rename \
-               --divert /usr/sbin/smail.real /usr/sbin/smail
-fi
-</example>
-Testing <tt/$1/ is necessary so that the script doesn't try to add the
-diversion again when <prgn/smailwrapper/ is upgraded.  The
-<tt/--package smailwrapper/ ensures that <prgn/smailwrapper/'s copy of
-<tt>/usr/sbin/smail</> can bypass the diversion and get installed as
-the true version.
-<p>
-
-The postrm has to do the reverse:
-<example>
-if [ remove = "$1" ]; then
-    dpkg-divert --package smailwrapper --remove --rename \
-                --divert /usr/sbin/smail.real /usr/sbin/smail
-fi
-</example>
-<p>
-
-Do not attempt to divert a file which is vitally important for the
-system's operation - when using <prgn/dpkg-divert/ there is a time,
-after it has been diverted but before <prgn/dpkg/ has installed the
-new version, when the file does not exist.
-
-
-<chapt id="sharedlibs">Shared libraries
-<p>
-
-Packages containing shared libraries must be constructed with a little
-care to make sure that the shared library is always available.  This
-is especially important for packages whose shared libraries are
-vitally important, such as the libc.
-<p>
-
-Firstly, your package should install the shared libraries under their
-normal names.  For example, the <prgn/libgdbm1/ package should install
-<tt/libgdbm.so.1.7.3/ as <tt>/usr/lib/libgdbm.so.1.7.3</tt>.  The
-files should not be renamed or relinked by any prerm or postrm
-scripts; <prgn/dpkg/ will take care of renaming things safely without
-affecting running programs, and attempts to interfere with this are
-likely to lead to problems.
-<p>
-
-Secondly, your package should include the symlink that <prgn/ldconfig/
-would create for the shared libraries.  For example, the
-<prgn/libgdbm1/ package should include a symlink from
-<tt>/usr/lib/libgdbm.so.1</tt> to <tt/libgdbm.so.1.7.3/.  This is
-needed so that <prgn/ld.so/ can find the library in between the time
-<prgn/dpkg/ installs it and <prgn/ldconfig/ is run in the
-<prgn/postinst/ script.  Futhermore, and <em/this is very important/,
-the library must be placed before the symlink pointing to it in the
-<tt/.deb/ file.  This is so that by the time <prgn/dpkg/ comes to
-install the symlink (overwriting the previous symlink pointing at an
-older version of the library) the new shared library is already in
-place.  Currently the way to ensure the ordering is done properly is
-to install the library in the appropriate <tt>debian/tmp/.../lib</>
-directory before creating the symlink, by putting the commands in the
-<tt>debian/rules</> in the appropriate order.
-<p>
-
-If you do the above your package does not need to call <prgn/ldconfig/
-in its maintainer scripts.  It is especially important not to call
-<prgn/ldconfig/ in the postrm or preinst scripts in the case where the
-package is being upgraded (see the programmer's manual), as
-<prgn/ldconfig/ will see the temporary names that <prgn/dpkg/ uses for the
-files while it is installing them and will make the shared library
-links point to them, just before <prgn/dpkg/ continues the installation
-and removes the links!
-
-
-
-<chapt id="sysvinit">Configuration of <prgn/init/
-<p>
-
-<sect>Introduction to the <tt/init.d/ scheme
-<p>
-
-The <tt>/etc/init.d</> directory contains the scripts executed by
-<prgn/init/ when init state (or `runlevel') is changed (see <manref
-name=init section=8>).
-<p>
-
-These scripts are be referenced by symbolic links in the
-<tt>/etc/rc<var/n/.d</> directories.  When changing runlevels, init
-looks in the directory <tt>/etc/rc<var/n/.d</> for the scripts it
-should execute, where <var/n/ is the runlevel that is being changed
-to.
-<p>
-
-The names of the links all have the form <tt/S<var/mm/<var/script// or
-<tt/K<var/mm/<var/script// where <var/mm/ is a two-digit number and
-<var/script/ is the name of the script (this should be the same as the
-name of the actual script in <tt>/etc/init.d</>.
-
-When <prgn/init/ changes runlevel first the targets of the links whose
-names starting with a <tt/K/ are executed, each with the single
-argument <tt/stop/, followed by the scripts prefixed with an <tt/S/,
-each with the single argument <tt/start/.  The <tt/K/ links are
-responsible for killing services and the <tt/S/ link for starting
-services upon entering the runlevel.
-<p>
-
-For example, if we are changing from runlevel 2 to runlevel 3, init
-will first execute all of the <tt/K/ prefixed scripts it finds in
-<tt>/etc/rc3.d</>, and then all of the <tt/S/ prefixed scripts.  The
-links starting with <tt/K/ will cause the referred-to file to be
-executed with an argument of <tt/stop/, and the <tt/S/ links with an
-argument of <tt/start/.
-<p>
-
-The two-digit number <var/mm/ is used to decide which order to start
-and stop things in - low-numbered links have their scripts run first.
-For example, the <tt/K20/ scripts will be executed before the <tt/K30/
-scripts.  This is used when a certain service must be started before
-another.  For example, the name server <prgn/bind/ might need to be
-started before the news server <prgn/inn/ so that <prgn/inn/ can set
-up its access lists.  In this case, the script that starts <prgn/bind/
-should have a lower number than the script that starts <prgn/inn/ so
-that it runs first:
-<example>
-/etc/rc2.d/S17bind
-/etc/rc2.d/S70inn
-</example>
-
-<sect>Writing <tt/init.d/ scripts
-<p>
-
-Packages can and should place scripts in <tt>/etc/init.d</> to start
-or stop services at boot time or during a change of runlevel.  These
-scripts should be named <tt>/etc/init.d/<var/package/</>, and they
-should accept one argument, saying what to do: <tt/start/, meaning to
-starts the service, or <tt/stop/, to stop the service.  Optionally
-they can support <tt/reload/ which causes the configuration to be
-reloaded.
-<p>
-
-The <tt/init.d/ scripts should ensure that they will behave sensibly
-if invoked with <tt/start/ when the service is already running, or
-with <tt/stop/ when it isn't, and that they don't kill
-unfortunately-named user processes.  The best way to achieve this is
-usually to use <prgn/start-stop-daemon/.
-<p>
-
-These scripts should not fail obscurely when the configuration files
-remain but the package has been removed, as the default in <prgn/dpkg/
-is to leave configuration files on the system after the package has
-been removed.  Only when it is executed with the <tt/--purge/ option
-will dpkg remove configuration files.  Therefore, you should include a
-<tt/test/ statement at the top of the script, like this:
-<example>
-test -f <var/program-executed-later-in-script/ || exit 0
-</example>
-
-<sect>Managing the <tt/rc<var/n/.d/ links - <prgn/update-rc.d/
-<p>
-
-A program is provided, <prgn/update-rc.d/, to make it easier for
-package maintainers to arrange for the proper creation and removal of
-<tt>/etc/rc<var/n/.d</> symbolic links from their postinst and postrm
-scripts.
-<p>
-
-You should use this script to make changes to <tt>/etc/rc<var/n/.d</>
-and <em/never/ include any <tt>/etc/rc<var/n/.d</> symbolic links in
-the actual archive.
-<p>
-
-By default <prgn/update-rc.d/ will start services in each of the
-multi-user state runlevels (2, 3, 4, and 5) and stop them in the halt
-runlevel (0), the single-user runlevel (1) and the reboot runlevel
-(6).  The system administrator will have the opportunity to customize
-runlevels by simply adding, moving, or removing the symbolic links in
-<tt>/etc/rc<var/n/.d</>.
-<p>
-
-To get the default behaviour for your package, put in your postinst
-script
-<example>
-update-rc.d <var/package/ default &gt;/dev/null
-</example>
-and in your postrm
-<example>
-if [ purge = "$1" ]; then
-    update-rc.d <var/package/ remove &gt;/dev/null
-fi
-</example>
-<p>
-
-This will use a default sequence number of 20.  If it does not matter
-when or in which order the script is run, use this default.  If it
-does, then you should talk to the maintainer of the <prgn/sysvinit/
-package or post to <tt>debian-devel</>, and they will help you choose
-a number.
-<p>
-
-For more information about using <tt/update-rc.d/, please consult its
-manpage <manref name=update-rc.d section=8>.
-
-<sect>Boot-time initialisation - <tt/rc.boot/
-<p>
-
-There is another directory, <tt>/etc/rc.boot</>, which contains
-scripts which are run once per machine boot.  This facility is
-provided for initialisation of hardware devices, cleaning up of
-leftover files, and so forth.
-<p>
-
-For example, the <prgn/kbd/ package provides a script here for
-initialising the keyboard layout and console font and mode.
-<p>
-
-The files in <tt>/etc/rc.boot</> should <em/not/ be links into
-<tt>/etc/init.d</> - they should be the scripts themselves.
-<p>
-
-<tt/rc.boot/ should <em/not/ be used for starting general-purpose
-daemons and similar activities.  This should be done using the
-<tt/rc<var/n/.d/ scheme, above, so that the services can be started
-and stopped cleanly when the runlevel changes or the machine is to be
-shut down or rebooted.
-
-<sect>Notes
-<p>
-
-<em/Do not/ include the <tt>/etc/rc<var/n/.d/*</> symbolic links in
-the <tt/.deb/ filesystem archive!  <em/This will cause problems!/
-You should create them with <prgn/update-rc.d/, as above.
-<p>
-
-<em/Do not/ include the <tt>/etc/rc<var/n/.d/*</> symbolic links in
-<prgn/dpkg/'s conffiles list!  <em/This will cause problems!/
-<em/Do/, however, include the <tt>/etc/init.d</> scripts in conffiles.
-
-<sect>Example
-<p>
-
-The <prgn/bind/ DNS (nameserver) package wants to make sure that the
-nameserver is running in multiuser runlevels, and is properly shut
-down with the system.  It puts a script in <tt>/etc/init.d</>, naming
-the script appropriately <tt/bind/.  As you can see, the script
-interprets the argument <tt/reload/ to send the nameserver a <tt/HUP/
-signal (causing it to reload its configuration); this way the user can
-say <tt>/etc/init.d/bind reload</> to reload the nameserver.
-<p>
-
-<example>
-#!/bin/sh
-# Original version by Robert Leslie &lt;rob@mars.org&gt;, edited by iwj
-test -x /usr/sbin/named || exit 0
-case "$1" in
-  start)
-    test -f /etc/named.boot -a -f /var/named/boot.options || exit 0
-    start-stop-daemon --start --verbose --exec /usr/sbin/named
-    ;;
-  stop)
-    start-stop-daemon --stop --verbose  \
-        --pidfile /var/run/named.pid --exec /usr/sbin/named
-    ;;
-  reload)
-    start-stop-daemon --stop --signal 1 --verbose  \
-        --pidfile /var/run/named.pid --exec /usr/sbin/named
-    ;;
-  *)
-    echo "Usage: /etc/init.d/bind {start|stop|reload}" >&2
-    exit 1
-    ;;
-esac
-exit 0
-</example>
-<p>
-
-Another example on which to base your <tt>/etc/init.d</> scripts is in
-<tt>/etc/init.d/skeleton</>.
-<p>
-
-If this package is happy with the default setup from
-<prgn/update-rc.d/, namely an ordering number of 20 and having named
-running in all runlevels, it can say in its postinst:
-<example>
-update-rc.d bind default >/dev/null
-</example>
-And in its postrm, to remove the links when the package is purged:
-<example>
-if [ purge = "$1" ]; then
-     update-rc.d acct remove >/dev/null
-fi
-</example>
-
-
-
-<chapt id="methif"><prgn/dselect/'s interface to its installation methods
-<p>
-
-<prgn/dselect/ calls scripts from its installation methods when it
-needs to actually access data from the distribution.  The core program
-<prgn/dselect/ itself just calls these scripts and provides the
-package and access method selection interfaces.  The installation
-methods are responsible for invoking <prgn/dpkg/ as appropriate.
-<p>
-
-Each installation method has three scripts:
-<list compact>
-<item>Setup installation parameters.
-<item>Update list of available packages.
-<item>Install.
-</list>
-<p>
-
-<prgn/dselect/ searches for methods in <tt>/usr/lib/dpkg/methods</>
-and <tt>/usr/local/lib/dpkg/methods</>.
-
-<sect>Functions of the method scripts
-<p>
-
-The setup script is run just after the user has chosen an installation
-method.  It should prompt the user for parameters like the site to
-NFS-mount or FTP from, the directory to use, or the directory or
-filesystem where the <tt/.deb/ files can be found, or the tape or
-floppy device to install from.  It should store the responses under
-<tt>/var/lib/dpkg/methods</> - see below.  If no available
-packages list is available it should perhaps offer to scan the
-available packages.
-<p>
-
-The update script should obtain a list of available packages if
-possible, and run <tt/dpkg --update-avail/, <tt/dpkg --merge-avail/
-and/or <tt/dpkg --forget-old-unavail/ to load it into <prgn/dpkg/ and
-<prgn/dselect/'s database of available packages.  If no packages list
-was available and the user was offered and accepted the option of
-scanning the actual files available this scan should be done here,
-using <tt/dpkg --record-avail/.
-<p>
-
-The install script should feed all the available <tt/.deb/ files to
-<tt/dpkg --iGOEB/ (this is equivalent to <tt/dpkg --install
---refuse-downgrade --selected-only --skip-same-version
---auto-deconfigure/).  The <tt/-R/ (<tt/--recursive/) option for
-traversing subdirectories may also be useful here).
-<p>
-
-If any of these scripts needs to display a message for the user, it
-should wait for the user to hit `return' before exiting so that
-dselect doesn't immediately rewrite the screen.
-<p>
-
-If a method script succeeds (returns a zero exit status)
-<prgn/dselect/ will return immediately to the main menu, with the
-`next' option highlighted ready for the user to select it.  If it
-fails <prgn/dselect/ will display a message and wait for the user to
-hit return.
-
-<sect>Location and arguments of the method scripts
-<p>
-
-A set of scripts (henceforth known as a group) may provide several
-methods on the `main menu' with different behaviour.  For example,
-there might be a generic get-packages-by-FTP group which might provide
-methods in the main menu for installation directly from one of the
-Debian mirror sites as well as for installation from a user-specified
-site.
-<p>
-
-Each group of methods implemented by the same set of scripts should
-have a subdirectory <tt>/usr/lib/dpkg/methods/<var/group/</> or
-<tt>/usr/local/lib/dpkg/methods/<var/group/</>, containing:
-<taglist compact>
-<tag><tt/names/
-<item>a list of user-visible methods provided by these scripts.
-<tag><tt/setup/
-<tag><tt/update/
-<tag><tt/install/
-<item>executable programs, the scripts themselves.
-<tag><tt/desc.<var/option//
-<item>description file.
-</taglist>
-<p>
-
-<tt/names/ will be formatted as a list of lines, each containing:
-<example>
-<var/sequence/ <var/method/ <var/summary/
-</example>
-<p>
-
-<var/sequence/ is a two-digit number that will be used much like
-<tt/rc.d/ prefixes to control the order in the main menu.  If in doubt
-use 50.
-<p>
-
-<var/method/ is a name which is displayed by <prgn/dselect/ as the
-name of the method, and which will be passed to <tt/setup/,
-<tt/update/ and <tt/unpack/ as their first argument.
-<p>
-
-<var/summary/ is the brief description string for <prgn/dselect/'s menu.
-<p>
-
-Each of the three scripts gets the same three arguments: <var/vardir/,
-<var/group/ and <var/method/.  <var/vardir/ is the base directory for
-storing <prgn/dpkg/ and <prgn/dselect/'s state, usually
-<tt>/var/lib/dpkg</>; this is passed in so that the <tt/--admindir/
-option to <prgn/dselect/ is honoured).
-<p>
-
-Each option may have an extended description in
-<tt/desc.<var/option//.  This should be formatted like the extended
-description part of a <tt/Description/ field entry <em/shifted one
-character to the left/.
-<p>
-
-<tt><var/vardir//methods</> will exist, and a method group may use a
-<tt><var/vardir//methods/<var/group/</> directory to store its state.
-<p>
-
-The group name and method name must follow the rules for C identifiers.
-
-</book>
diff --git a/doc/texinfo.debian_mapping b/doc/texinfo.debian_mapping
new file mode 100644 (file)
index 0000000..35c4298
--- /dev/null
@@ -0,0 +1,18 @@
+% texinfo.debian_mapping 
+%   - sgmlsasp mapping file for TeXinfo/SGML->debiandoc/SGML
+%
+% Copyright (C) 1997 Klee Dienes <klee@mit.edu>
+%
+% This is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as
+% published by the Free Software Foundation; either version 2,
+% or (at your option) any later version.
+%
+% This is distributed in the hope that it will be useful, but
+% WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public
+% License along with dpkg; if not, write to the Free Software
+% Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
diff --git a/doc/texinfo.dtd b/doc/texinfo.dtd
new file mode 100644 (file)
index 0000000..6484519
--- /dev/null
@@ -0,0 +1,94 @@
+<!--
+ texinfo.dtd - TeXinfo/SGML document type definition
+
+ Copyright (C) 1997 Klee Dienes <klee@mit.edu>
+
+ This is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free
+ Software Foundation; either version 2, or (at your option) any later
+ version.
+
+ This is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ for more details.
+
+ You should have received a copy of the GNU General Public
+ License along with dpkg; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+-->
+
+<!entity at sdata "@@">
+<!entity copy sdata "@copyright{}">
+<!entity amp sdata "@&">
+<!entity lt sdata "<">
+<!entity gt sdata ">">
+<!entity lsqb sdata "[">
+<!entity rsqb sdata "]">
+<!entity bsol sdata "\">
+
+<!element setfilename - o (#pcdata)>
+
+<!element titlepage - - (title?,author?,date?,abstract?)>
+<!element texinfo - - (setfilename,titlepage?,chapter+,closing)>
+
+<!element title - - (#pcdata)>
+<!element author - - (#pcdata)>
+<!element date - - (#pcdata)>
+<!element abstract - - (#pcdata|file|samp|var|code)*>
+
+<!element quotation - - (#pcdata)>
+<!element example - - (#pcdata)>
+<!element lisp - - (#pcdata)>
+<!element smallexample - - (#pcdata)>
+<!element smalllisp - - (#pcdata)>
+<!element display - - (#pcdata)>
+<!element format - - (#pcdata)>
+
+<!element code - - (#pcdata)>
+<!element kbd - - (#pcdata)>
+<!element key - - (#pcdata)>
+<!element samp - - (#pcdata)>
+<!element var - - (#pcdata)>
+<!element file - - (#pcdata)>
+<!element dfn - - (#pcdata)>
+<!element cite - - (#pcdata)>
+
+<!element tt - - (#pcdata)+>
+<!element em - - (#pcdata)+>
+<!element it - - (#pcdata)+>
+
+<!element heading o o (#pcdata|label|code|var|file|samp)+>
+<!element body o o (#pcdata|index|ref|file|samp|var|code|example|tt|em|it|htmlurl|url|itemize|enumerate|table|ftable|vtable)+>
+
+<!element chapter - o (heading, (section|cindex|findex|vindex|kindex|pindex|tindex|p)*)>
+<!element section - o (heading, (subsection|cindex|findex|vindex|kindex|pindex|tindex|p)*)>
+<!element subsection - o (heading, (subsubsection|cindex|findex|vindex|kindex|pindex|tindex|p)*)>
+<!element subsubsection - o (heading, (cindex|findex|vindex|kindex|pindex|tindex|p)*)>
+
+<!element itemize - - (item)*>
+<!element enumerate - - (item)*>
+<!element table - - (item, body)*>
+<!element ftable - - (item, body)*>
+<!element vtable - - (item, body)*>
+
+<!element item - o (body)>
+
+<!element p - o (body)>
+
+<!element contents - o empty>
+<!element shortcontents - o empty>
+<!element summarycontents - o empty>
+
+<!element printindex - o empty>
+
+<!attlist printindex name NAME "fn">
+
+<!element closing o o (contents|shortcontents|summarycontents|printindex)*>
+
+<!element cindex - - (#pcdata|code|var|file|samp)+>
+<!element findex - - (#pcdata|code|var|file|samp)+>
+<!element vindex - - (#pcdata|code|var|file|samp)+>
+<!element kindex - - (#pcdata|code|var|file|samp)+>
+<!element pindex - - (#pcdata|code|var|file|samp)+>
+<!element tindex - - (#pcdata|code|var|file|samp)+>
diff --git a/doc/texinfo.texi_mapping b/doc/texinfo.texi_mapping
new file mode 100644 (file)
index 0000000..2f87914
--- /dev/null
@@ -0,0 +1,120 @@
+% texinfo.mapping - sgmlsasp mapping file for TeXinfo/SGML->TeXinfo
+%
+% Copyright (C) 1997 Klee Dienes <klee@mit.edu>
+%
+% This is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as
+% published by the Free Software Foundation; either version 2,
+% or (at your option) any later version.
+%
+% This is distributed in the hope that it will be useful, but
+% WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public
+% License along with dpkg; if not, write to the Free Software
+% Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+<texinfo>    "\\input texinfo\n"
+</texinfo>   "@bye\n"
+
+<setfilename> "@setfilename "
+</setfilename> "\n"
+
+<titlepage>  "@titlepage\n"
+</titlepage> "\n@end titlepage\n"
+
+<title>  "@title "
+</title> "\n"
+
+<author> "@author "
+</author>    "\n"
+
+<chapter>    "@chapter "
+<section>    "@section "
+<subsection> "@subsection "
+<subsubsection> "@subsubsection "
+
+<heading>    ""
+</heading>   "\n"
+
+<code>  "@code{"
+</code>  "}"
+
+<kbd>   "@kbd{"
+</kbd>  "}"
+
+<key>   "@key{"
+</key>  "}"
+
+<p>    "\n\n"
+
+<samp>  "@samp{"
+</samp>  "}"
+
+<var>   "@var{"
+</var>  "}"
+
+<file>  "@file{"
+</file>  "}"
+
+<dfn>   "@dfn{"
+</dfn>  "}"
+
+<cite>  "@cite{"
+</cite>  "}"
+
+<itemize>    "@itemize @asis\n"
+</itemize>   "@end itemize\n"
+
+<table>    "@table @asis\n"
+</table>   "\n@end table\n"
+
+<item>       "@item "
+</item>      "\n"
+
+<quotation>  "@quotation\n"
+</quotation> "@end quotation\n"
+
+<example>    "@example\n"
+</example>   "@end example\n"
+
+<lisp>  "@lisp\n"
+</lisp>  "@end lisp\n"
+
+<smallexample>  "@smallexample\n"
+</smallexample> "@end smallexample\n"
+
+<smalllisp>  "@smalllisp\n"
+</smalllisp> "@end smalllisp\n"
+
+<display>    "@display\n"
+</display>   "@end display\n"
+
+<format> "@format\n"
+</format>    "@end format\n"
+
+<contents> "@contents\n"
+<shortcontents> "@shortcontents\n"
+<summarycontents> "@summarycontents\n"
+
+<cindex> "@cindex "
+</cindex> "\n"
+
+<findex> "@findex "
+</findex> "\n"
+
+<vindex> "@vindex "
+</vindex> "\n"
+
+<kindex> "@kindex "
+</kindex> "\n"
+
+<pindex> "@pindex "
+</pindex> "\n"
+
+<tindex> "@tindex "
+</tindex> "\n"
+
+<printindex> "@printindex [name]\n"
\ No newline at end of file
diff --git a/dpkg-deb/.cvsignore b/dpkg-deb/.cvsignore
new file mode 100644 (file)
index 0000000..70845e0
--- /dev/null
@@ -0,0 +1 @@
+Makefile.in
diff --git a/dpkg-deb/Makefile.am b/dpkg-deb/Makefile.am
new file mode 100644 (file)
index 0000000..2bead26
--- /dev/null
@@ -0,0 +1,36 @@
+## Process this file with automake to produce a Makefile.in
+
+AUTOMAKE_OPTIONS       = 1.1 foreign
+
+## Directory definitions
+
+localedir              = $(datadir)/locale
+
+## Various options
+
+CFLAGS                 = @CFLAGS@ @CWARNS@ -g $(XCFLAGS) -DLOCALEDIR=\"$(localedir)\"
+OPTCFLAGS              = @CFLAGS@ @OPTCFLAGS@ @CWARNS@ -g $(XCFLAGS)
+LDFLAGS                        = @LDFLAGS@ $(XLDFLAGS)
+LIBS                   = @INTLLIBS@ @LIBS@ $(XLIBS)
+
+CXXFLAGS               = @CXXFLAGS@ @CWARNS@ -g $(XCXXFLAGS)
+OPTCXXFLAGS            = @CXXFLAGS @OPTCFLAGS@ @CWARNS@ -g $(XCXXFLAGS)
+
+DEFS                   = -I$(top_srcdir)/include -I$(top_srcdir) -I$(srcdir) \
+                         -I$(top_builddir) -I$(top_builddir)/include -I. \
+                         -I$(top_srcdir)/intl -I$(top_builddir)/intl @DEFS@
+
+## Automake variables
+
+MAINTAINERCLEANFILES   = $(srcdir)/Makefile.in
+EXTRA_DIST             = dpkg-deb.1
+
+## Rules
+
+bin_PROGRAMS           = dpkg-deb
+man_MANS               = dpkg-deb.1
+
+dpkg_deb_SOURCES       = main.c build.c extract.c info.c dpkg-deb.h
+dpkg_deb_LDADD         = ../lib/libdpkg.la ../lib/myopt.o
+
+## End of file.
diff --git a/dpkg-deb/Makefile.in b/dpkg-deb/Makefile.in
deleted file mode 100644 (file)
index e3377a7..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-# Copyright (C) 1994 Ian Murdock <imurdock@debian.org>
-# Copyright (C) 1994,1995 Ian Jackson <ijackson@nyx.cs.du.edu>
-#
-#   This is free software; you can redistribute it and/or modify
-#   it under the terms of the GNU General Public License as
-#   published by the Free Software Foundation; either version 2,
-#   or (at your option) any later version.
-#
-#   This is distributed in the hope that it will be useful, but
-#   WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#   GNU General Public License for more details.
-#
-#   You should have received a copy of the GNU General Public
-#   License along with dpkg; if not, write to the Free Software
-#   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-srcdir = @srcdir@
-VPATH = @srcdir@
-
-prefix = @prefix@
-exec_prefix = $(prefix)
-bindir = $(exec_prefix)/bin
-libdir = $(prefix)/lib
-mandir = $(prefix)/man
-man1dir = $(mandir)/man1
-man1 = 1
-
-SRC = main.c build.c extract.c info.c
-OBJ = main.o build.o extract.o info.o
-
-INSTALL = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_DATA = @INSTALL_DATA@
-
-CC = @CC@
-
-CFLAGS = @CFLAGS@ @CWARNS@ -g $(XCFLAGS)
-LDFLAGS = $(XLDFLAGS)
-LIBS = -L../lib -ldpkg $(XLIBS)
-ALL_CFLAGS = -I../include -I.. @DEFS@ $(CFLAGS)
-
-.SUFFIXES:     .c .o
-
-.c.o:
-               $(CC) $(ALL_CFLAGS) -c $<
-
-all:           dpkg-deb
-
-dpkg-deb:      $(OBJ) ../lib/libdpkg.a
-               $(CC) $(LDFLAGS) -o dpkg-deb $(OBJ) $(LIBS)
-
-$(OBJ):                                dpkg-deb.h ../config.h ../include/dpkg.h
-build.o:                       ../include/dpkg-db.h
-info.o extract.o main.o:       ../include/myopt.h
-main.o:                                ../version.h
-
-clean:
-               rm -f *.o core dpkg-deb
-
-distclean:     clean
-               rm -f Makefile *.orig *~ *.~* ./#*#
-
-install:       all
-               $(INSTALL_PROGRAM) -s dpkg-deb $(bindir)/dpkg-deb
-               $(INSTALL_DATA) dpkg-deb.1 $(man1dir)/dpkg-deb.$(man1)
index 277c2ebe8bf844e7679f6a1e183c088a16ff4508..d02ae0e851b876a285a738d27ee82533469d026f 100644 (file)
@@ -34,9 +34,9 @@
 #include <ctype.h>
 #include <assert.h>
 
-#include "config.h"
-#include "dpkg.h"
-#include "dpkg-db.h"
+#include <config.h>
+#include <dpkg.h>
+#include <dpkg-db.h>
 #include "dpkg-deb.h"
 
 #ifndef S_ISLNK
@@ -47,7 +47,7 @@ static void checkversion(const char *vstring, const char *valuename, int *errs)
   const char *p;
   if (!vstring || !*vstring) return;
   for (p=vstring; *p; p++) if (isdigit(*p)) return;
-  fprintf(stderr, BACKEND " - error: %s (`%s') doesn't contain any digits\n",
+  fprintf(stderr, _("dpkg-deb - error: %s (`%s') doesn't contain any digits\n"),
           valuename, vstring);
   (*errs)++;
 }
@@ -69,14 +69,14 @@ void do_build(const char *const *argv) {
   char conffilename[MAXCONFFILENAME+1];
   time_t thetime= 0;
   
-  directory= *argv++; if (!directory) badusage("--build needs a directory argument");
+  directory= *argv++; if (!directory) badusage(_("--build needs a directory argument"));
   subdir= 0;
   if ((debar= *argv++) !=0) {
-    if (*argv) badusage("--build takes at most two arguments");
+    if (*argv) badusage(_("--build takes at most two arguments"));
     if (debar) {
       if (stat(debar,&debarstab)) {
         if (errno != ENOENT)
-          ohshite("unable to check for existence of archive `%.250s'",debar);
+          ohshite(_("unable to check for existence of archive `%.250s'"),debar);
       } else if (S_ISDIR(debarstab.st_mode)) {
         subdir= 1;
       }
@@ -89,9 +89,9 @@ void do_build(const char *const *argv) {
     
   if (nocheckflag) {
     if (subdir)
-      ohshit("target is directory - cannot skip control file check");
-    printf(BACKEND ": warning, not checking contents of control area.\n"
-           BACKEND ": building an unknown package in `%s'.\n", debar);
+      ohshit(_("target is directory - cannot skip control file check"));
+    printf(_("dpkg-deb: warning, not checking contents of control area.\n"
+           "dpkg-deb: building an unknown package in `%s'.\n"), debar);
   } else {
     controlfile= m_malloc(strlen(directory) + sizeof(BUILDCONTROLDIR) +
                           sizeof(CONTROLFILE) + sizeof(CONFFILESFILE) +
@@ -107,20 +107,20 @@ void do_build(const char *const *argv) {
     if (strspn(checkedinfo->name,
                "abcdefghijklmnopqrstuvwxyz0123456789+-.")
         != strlen(checkedinfo->name))
-      ohshit("package name has characters that aren't lowercase alphanums or `-+.'");
+      ohshit(_("package name has characters that aren't lowercase alphanums or `-+.'"));
     if (checkedinfo->priority == pri_other) {
-      fprintf(stderr, "warning, `%s' contains user-defined Priority value `%s'\n",
+      fprintf(stderr, _("warning, `%s' contains user-defined Priority value `%s'\n"),
               controlfile, checkedinfo->otherpriority);
       warns++;
     }
     for (field= checkedinfo->available.arbs; field; field= field->next) {
-      fprintf(stderr, "warning, `%s' contains user-defined field `%s'\n",
+      fprintf(stderr, _("warning, `%s' contains user-defined field `%s'\n"),
               controlfile, field->name);
       warns++;
     }
     checkversion(checkedinfo->available.version.version,"(upstream) version",&errs);
     checkversion(checkedinfo->available.version.revision,"Debian revision",&errs);
-    if (errs) ohshit("%d errors in control file",errs);
+    if (errs) ohshit(_("%d errors in control file"),errs);
 
     if (subdir) {
       versionstring= versiondescribe(&checkedinfo->available.version,vdew_never);
@@ -131,15 +131,15 @@ void do_build(const char *const *argv) {
               arch[0] ? "_" : "", arch);
       debar= m;
     }
-    printf(BACKEND ": building package `%s' in `%s'.\n", checkedinfo->name, debar);
+    printf(_("dpkg-deb: building package `%s' in `%s'.\n"), checkedinfo->name, debar);
 
     strcpy(controlfile, directory);
     strcat(controlfile, "/" BUILDCONTROLDIR "/");
     if (lstat(controlfile,&mscriptstab)) ohshite("unable to stat control directory");
     if (!S_ISDIR(mscriptstab.st_mode)) ohshit("control directory is not a directory");
     if ((mscriptstab.st_mode & 07757) != 0755)
-      ohshit("control directory has bad permissions %03lo (must be >=0755 "
-             "and <=0775)", (unsigned long)(mscriptstab.st_mode & 07777));
+      ohshit(_("control directory has bad permissions %03lo (must be >=0755 "
+             "and <=0775)"), (unsigned long)(mscriptstab.st_mode & 07777));
 
     for (mscriptp= maintainerscripts; *mscriptp; mscriptp++) {
       strcpy(controlfile, directory);
@@ -149,13 +149,13 @@ void do_build(const char *const *argv) {
       if (!lstat(controlfile,&mscriptstab)) {
         if (S_ISLNK(mscriptstab.st_mode)) continue;
         if (!S_ISREG(mscriptstab.st_mode))
-          ohshit("maintainer script `%.50s' is not a plain file or symlink",*mscriptp);
+          ohshit(_("maintainer script `%.50s' is not a plain file or symlink"),*mscriptp);
         if ((mscriptstab.st_mode & 07557) != 0555)
-          ohshit("maintainer script `%.50s' has bad permissions %03lo "
-                 "(must be >=0555 and <=0775)",
+          ohshit(_("maintainer script `%.50s' has bad permissions %03lo "
+                 "(must be >=0555 and <=0775)"),
                  *mscriptp, (unsigned long)(mscriptstab.st_mode & 07777));
       } else if (errno != ENOENT) {
-        ohshite("maintainer script `%.50s' is not stattable",*mscriptp);
+        ohshite(_("maintainer script `%.50s' is not stattable"),*mscriptp);
       }
     }
 
@@ -164,9 +164,10 @@ void do_build(const char *const *argv) {
     if ((cf= fopen(controlfile,"r"))) {
       while (fgets(conffilename,MAXCONFFILENAME+1,cf)) {
         n= strlen(conffilename);
-        if (!n) ohshite("empty string from fgets reading conffiles");
+        if (!n) ohshite(_("empty string from fgets reading conffiles"));
         if (conffilename[n-1] != '\n') {
-          fprintf(stderr, "warning, conffile name `%.50s...' is too long", conffilename);
+          fprintf(stderr, _("warning, conffile name `%.50s...' is too long, or missing final newline\n"), 
+                 conffilename);
           warns++;
           while ((c= getc(cf)) != EOF && c != '\n');
           continue;
@@ -177,46 +178,46 @@ void do_build(const char *const *argv) {
         strcat(controlfile, conffilename);
         if (lstat(controlfile,&controlstab)) {
           if (errno == ENOENT)
-            ohshit("conffile `%.250s' does not appear in package",conffilename);
+            ohshit(_("conffile `%.250s' does not appear in package"),conffilename);
           else
-            ohshite("conffile `%.250s' is not stattable",conffilename);
+            ohshite(_("conffile `%.250s' is not stattable"),conffilename);
         } else if (!S_ISREG(controlstab.st_mode)) {
-          fprintf(stderr, "warning, conffile `%s'"
-                  " is not a plain file\n", conffilename);
+          fprintf(stderr, _("warning, conffile `%s'"
+                  " is not a plain file\n"), conffilename);
           warns++;
         }
       }
-      if (ferror(cf)) ohshite("error reading conffiles file");
+      if (ferror(cf)) ohshite(_("error reading conffiles file"));
       fclose(cf);
     } else if (errno != ENOENT) {
-      ohshite("error opening conffiles file");
+      ohshite(_("error opening conffiles file"));
     }
     if (warns) {
-      if (fprintf(stderr, BACKEND ": ignoring %d warnings about the control"
-                  " file(s)\n", warns) == EOF) werr("stderr");
+      if (fprintf(stderr, _("dpkg-deb: ignoring %d warnings about the control"
+                  " file(s)\n"), warns) == EOF) werr("stderr");
     }
   }
   if (ferror(stdout)) werr("stdout");
   
-  if (!(ar=fopen(debar,"wb"))) ohshite("unable to create `%.255s'",debar);
-  if (setvbuf(ar, 0, _IONBF, 0)) ohshite("unable to unbuffer `%.255s'",debar);
+  if (!(ar=fopen(debar,"wb"))) ohshite(_("unable to create `%.255s'"),debar);
+  if (setvbuf(ar, 0, _IONBF, 0)) ohshite(_("unable to unbuffer `%.255s'"),debar);
   m_pipe(p1);
   if (!(c1= m_fork())) {
     m_dup2(p1[1],1); close(p1[0]); close(p1[1]);
-    if (chdir(directory)) ohshite("failed to chdir to `%.255s'",directory);
-    if (chdir(BUILDCONTROLDIR)) ohshite("failed to chdir to .../" BUILDCONTROLDIR);
-    execlp(TAR,"tar","-cf","-",".",(char*)0); ohshite("failed to exec tar -cf");
+    if (chdir(directory)) ohshite(_("failed to chdir to `%.255s'"),directory);
+    if (chdir(BUILDCONTROLDIR)) ohshite(_("failed to chdir to .../DEBIAN"));
+    execlp(TAR,"tar","-cf","-",".",(char*)0); ohshite(_("failed to exec tar -cf"));
   }
   close(p1[1]);
-  if (!(gz= tmpfile())) ohshite("failed to make tmpfile (control)");
+  if (!(gz= tmpfile())) ohshite(_("failed to make tmpfile (control)"));
   if (!(c2= m_fork())) {
     m_dup2(p1[0],0); m_dup2(fileno(gz),1); close(p1[0]);
-    execlp(GZIP,"gzip","-9c",(char*)0); ohshite("failed to exec gzip -9c");
+    execlp(GZIP,"gzip","-9c",(char*)0); ohshite(_("failed to exec gzip -9c"));
   }
   close(p1[0]);
   waitsubproc(c2,"gzip -9c",0);
   waitsubproc(c1,"tar -cf",0);
-  if (fstat(fileno(gz),&controlstab)) ohshite("failed to fstat tmpfile (control)");
+  if (fstat(fileno(gz),&controlstab)) ohshite(_("failed to fstat tmpfile (control)"));
   if (oldformatflag) {
     if (fprintf(ar, "%-8s\n%ld\n", OLDARCHIVEVERSION, (long)controlstab.st_size) == EOF)
       werr(debar);
@@ -236,36 +237,36 @@ void do_build(const char *const *argv) {
       werr(debar);
   }                
                 
-  if (lseek(fileno(gz),0,SEEK_SET)) ohshite("failed to rewind tmpfile (control)");
+  if (lseek(fileno(gz),0,SEEK_SET)) ohshite(_("failed to rewind tmpfile (control)"));
   if (!(c3= m_fork())) {
     m_dup2(fileno(gz),0); m_dup2(fileno(ar),1);
-    execlp(CAT,"cat",(char*)0); ohshite("failed to exec cat (control)");
+    execlp(CAT,"cat",(char*)0); ohshite(_("failed to exec cat (control)"));
   }
   waitsubproc(c3,"cat (control)",0);
   
   if (!oldformatflag) {
     fclose(gz);
-    if (!(gz= tmpfile())) ohshite("failed to make tmpfile (data)");
+    if (!(gz= tmpfile())) ohshite(_("failed to make tmpfile (data)"));
   }
   m_pipe(p2);
   if (!(c4= m_fork())) {
     m_dup2(p2[1],1); close(p2[0]); close(p2[1]);
-    if (chdir(directory)) ohshite("failed to chdir to `%.255s'",directory);
+    if (chdir(directory)) ohshite(_("failed to chdir to `%.255s'"),directory);
     execlp(TAR,"tar","--exclude",BUILDCONTROLDIR,"-cf","-",".",(char*)0);
-    ohshite("failed to exec tar --exclude");
+    ohshite(_("failed to exec tar --exclude"));
   }
   close(p2[1]);
   if (!(c5= m_fork())) {
     m_dup2(p2[0],0); close(p2[0]);
     m_dup2(oldformatflag ? fileno(ar) : fileno(gz),1);
     execlp(GZIP,"gzip","-9c",(char*)0);
-    ohshite("failed to exec gzip -9c from tar --exclude");
+    ohshite(_("failed to exec gzip -9c from tar --exclude"));
   }
   close(p2[0]);
   waitsubproc(c5,"gzip -9c from tar --exclude",0);
   waitsubproc(c4,"tar --exclude",0);
   if (!oldformatflag) {
-    if (fstat(fileno(gz),&datastab)) ohshite("failed to fstat tmpfile (data)");
+    if (fstat(fileno(gz),&datastab)) ohshite("_(failed to fstat tmpfile (data))");
     if (fprintf(ar,
                 "%s"
                 DATAMEMBER "%-12lu0     0     100644  %-10ld`\n",
@@ -274,10 +275,10 @@ void do_build(const char *const *argv) {
                 (long)datastab.st_size) == EOF)
       werr(debar);
 
-    if (lseek(fileno(gz),0,SEEK_SET)) ohshite("failed to rewind tmpfile (data)");
+    if (lseek(fileno(gz),0,SEEK_SET)) ohshite(_("failed to rewind tmpfile (data)"));
     if (!(c3= m_fork())) {
       m_dup2(fileno(gz),0); m_dup2(fileno(ar),1);
-      execlp(CAT,"cat",(char*)0); ohshite("failed to exec cat (data)");
+      execlp(CAT,"cat",(char*)0); ohshite(_("failed to exec cat (data)"));
     }
     waitsubproc(c3,"cat (data)",0);
 
diff --git a/dpkg-deb/debugmake b/dpkg-deb/debugmake
deleted file mode 100755 (executable)
index 638c74d..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-set -x
-make XCFLAGS='-g -O0' LDFLAGS=-g LIBS='-lefence -L../lib -ldpkg' "$@"
index 5b3f2b77be624da408f7c0c5632e1ebb510e0cc4..7f080a8d08ccb105ea17a60646b5c3bdfec38f4e 100644 (file)
 #include <assert.h>
 #include <ar.h>
 
-#include "config.h"
-#include "dpkg.h"
-#include "dpkg-deb.h"
-#include "myopt.h"
+#include <config.h>
+#include <dpkg.h>
+#include <dpkg-deb.h>
+#include <myopt.h>
 
 static void movecontrolfiles(const char *thing) {
   char buf[200];
@@ -45,16 +45,16 @@ static void movecontrolfiles(const char *thing) {
   
   sprintf(buf, "mv %s/* . && rmdir %s", thing, thing);
   if (!(c1= m_fork())) {
-    execlp("sh","sh","-c",buf,(char*)0); ohshite("failed to exec sh -c mv foo/* &c");
+    execlp("sh","sh","-c",buf,(char*)0); ohshite(_("failed to exec sh -c mv foo/* &c"));
   }
   waitsubproc(c1,"sh -c mv foo/* &c",0);
 }
 
 static void readfail(FILE *a, const char *filename, const char *what) {
   if (ferror(a)) {
-    ohshite("error reading %s from %.255s",what,filename);
+    ohshite(_("error reading %s from %.255s"),what,filename);
   } else {
-    ohshit("unexpected end of file in %s in %.255s",what,filename);
+    ohshit(_("unexpected end of file in %s in %.255s"),what,filename);
   }
 }
 
@@ -65,14 +65,14 @@ static unsigned long parseheaderlength(const char *inh, size_t len,
   char *endp;
 
   if (memchr(inh,0,len))
-    ohshit("file `%.250s' is corrupt - %.250s length contains nulls",fn,what);
+    ohshit(_("file `%.250s' is corrupt - %.250s length contains nulls"),fn,what);
   assert(sizeof(lintbuf) > len);
   memcpy(lintbuf,inh,len);
   lintbuf[len]= ' ';
   *strchr(lintbuf,' ')= 0;
   r= strtoul(lintbuf,&endp,10);
   if (*endp)
-    ohshit("file `%.250s' is corrupt - bad digit (code %d) in %s",fn,*endp,what);
+    ohshit(_("file `%.250s' is corrupt - bad digit (code %d) in %s"),fn,*endp,what);
   return r;
 }
 
@@ -102,9 +102,12 @@ void extracthalf(const char *debar, const char *directory,
   char *cur;
   struct ar_hdr arh;
   int readfromfd, oldformat, header_done, adminmember, c;
+#if defined(__GLIBC__) && (__GLIBC__ == 2) && (__GLIBC_MINOR__ > 0)
+  fpos_t fpos;
+#endif
   
-  ar= fopen(debar,"r"); if (!ar) ohshite("failed to read archive `%.255s'",debar);
-  if (fstat(fileno(ar),&stab)) ohshite("failed to fstat archive");
+  ar= fopen(debar,"r"); if (!ar) ohshite(_("failed to read archive `%.255s'"),debar);
+  if (fstat(fileno(ar),&stab)) ohshite(_("failed to fstat archive"));
   if (!fgets(versionbuf,sizeof(versionbuf),ar)) readfail(ar,debar,"version number");
 
   if (!strcmp(versionbuf,"!<arch>\n")) {
@@ -116,26 +119,26 @@ void extracthalf(const char *debar, const char *directory,
       if (fread(&arh,1,sizeof(arh),ar) != sizeof(arh))
         readfail(ar,debar,"between members");
       if (memcmp(arh.ar_fmag,ARFMAG,sizeof(arh.ar_fmag)))
-        ohshit("file `%.250s' is corrupt - bad magic at end of first header",debar);
+        ohshit(_("file `%.250s' is corrupt - bad magic at end of first header"),debar);
       memberlen= parseheaderlength(arh.ar_size,sizeof(arh.ar_size),
                                    debar,"member length");
       if (memberlen<0)
-        ohshit("file `%.250s' is corrupt - negative member length %ld",debar,memberlen);
+        ohshit(_("file `%.250s' is corrupt - negative member length %ld"),debar,memberlen);
       if (!header_done) {
         if (memcmp(arh.ar_name,"debian-binary   ",sizeof(arh.ar_name)))
-          ohshit("file `%.250s' is not a debian binary archive (try dpkg-split?)",debar);
+          ohshit(_("file `%.250s' is not a debian binary archive (try dpkg-split?)"),debar);
         infobuf= m_malloc(memberlen+1);
         if (fread(infobuf,1, memberlen + (memberlen&1), ar) != memberlen + (memberlen&1))
           readfail(ar,debar,"header info member");
         infobuf[memberlen]= 0;
         cur= strchr(infobuf,'\n');
-        if (!cur) ohshit("archive has no newlines in header");
+        if (!cur) ohshit(_("archive has no newlines in header"));
         *cur= 0;
         cur= strchr(infobuf,'.');
-        if (!cur) ohshit("archive has no dot in version number");
+        if (!cur) ohshit(_("archive has no dot in version number"));
         *cur= 0;
         if (strcmp(infobuf,"2"))
-          ohshit("archive version %.250s not understood, get newer " BACKEND, infobuf);
+          ohshit(_("archive version %.250s not understood, get newer dpkg-deb"), infobuf);
         *cur= '.';
         strncpy(versionbuf,infobuf,sizeof(versionbuf));
         versionbuf[sizeof(versionbuf)-1]= 0;
@@ -151,12 +154,12 @@ void extracthalf(const char *debar, const char *directory,
           !memcmp(arh.ar_name,DATAMEMBER,sizeof(arh.ar_name)) ? 0 :
           -1;
         if (adminmember == -1) {
-          ohshit("file `%.250s' contains ununderstood data member %.*s, giving up",
+          ohshit(_("file `%.250s' contains ununderstood data member %.*s, giving up"),
                  debar, (int)sizeof(arh.ar_name), arh.ar_name);
         }
         if (adminmember == 1) {
           if (ctrllennum != 0)
-            ohshit("file `%.250s' contains two control members, giving up", debar);
+            ohshit(_("file `%.250s' contains two control members, giving up"), debar);
           ctrllennum= memberlen;
         }
         if (!adminmember != !admininfo) {
@@ -168,8 +171,8 @@ void extracthalf(const char *debar, const char *directory,
     }
 
     if (admininfo >= 2)
-      if (printf(" new debian package, version %s.\n"
-                 " size %ld bytes: control archive= %ld bytes.\n",
+      if (printf(_(" new debian package, version %s.\n"
+                 " size %ld bytes: control archive= %ld bytes.\n"),
                  versionbuf, (long)stab.st_size, ctrllennum) == EOF ||
           fflush(stdout)) werr("stdout");
     
@@ -182,11 +185,11 @@ void extracthalf(const char *debar, const char *directory,
     if (!fgets(ctrllenbuf,sizeof(ctrllenbuf),ar))
       readfail(ar,debar,"ctrl information length");
     if (sscanf(ctrllenbuf,"%ld%c%d",&ctrllennum,&nlc,&dummy) !=2 || nlc != '\n')
-      ohshit("archive has malformatted ctrl len `%s'",ctrllenbuf);
+      ohshit(_("archive has malformatted ctrl len `%s'"),ctrllenbuf);
 
     if (admininfo >= 2)
-      if (printf(" old debian package, version %s.\n"
-                 " size %ld bytes: control archive= %ld, main archive= %ld.\n",
+      if (printf(_(" old debian package, version %s.\n"
+                 " size %ld bytes: control archive= %ld, main archive= %ld.\n"),
                  versionbuf, (long)stab.st_size, ctrllennum,
                  (long) (stab.st_size - ctrllennum - strlen(ctrllenbuf) - l)) == EOF ||
           fflush(stdout)) werr("stdout");
@@ -199,33 +202,39 @@ void extracthalf(const char *debar, const char *directory,
   } else {
     
     if (!strncmp(versionbuf,"!<arch>",7)) {
-      if (fprintf(stderr, BACKEND
-                  ": file looks like it might be an archive which has been\n"
-                  BACKEND ":    corrupted by being downloaded in ASCII mode\n")
+      if (fprintf(stderr,
+                  _("dpkg-deb: file looks like it might be an archive which has been\n"
+                  "dpkg-deb:    corrupted by being downloaded in ASCII mode\n"))
           == EOF) werr("stderr");
     }
 
-    ohshit("`%.255s' is not a debian format archive",debar);
+    ohshit(_("`%.255s' is not a debian format archive"),debar);
 
   }
 
+#if defined(__GLIBC__) && (__GLIBC__ == 2) && (__GLIBC_MINOR__ > 0)
+  if(fgetpos(ar, &fpos)) ohshit(_("fgetpos failed"));
+#endif
   fflush(ar);
+#if defined(__GLIBC__) && (__GLIBC__ == 2) && (__GLIBC_MINOR__ > 0)
+  if(fsetpos(ar, &fpos)) ohshit(_("fsetpos failed"));
+#endif
   if (oldformat) {
     if (admininfo) {
       m_pipe(p1);
       if (!(c1= m_fork())) {
         close(p1[0]);
-        if (!(pi= fdopen(p1[1],"w"))) ohshite("failed to fdopen p1 in paste");
+        if (!(pi= fdopen(p1[1],"w"))) ohshite(_("failed to fdopen p1 in paste"));
         errno=0; if (fwrite(ctrlarea,1,ctrllennum,pi) != ctrllennum)
-          ohshit("failed to write to gzip -dc");
-        if (fclose(pi)) ohshit("failed to close gzip -dc");
+          ohshit(_("failed to write to gzip -dc"));
+        if (fclose(pi)) ohshit(_("failed to close gzip -dc"));
         exit(0);
       }
       close(p1[1]);
       readfromfd= p1[0];
     } else {
       if (lseek(fileno(ar),l+strlen(ctrllenbuf)+ctrllennum,SEEK_SET) == -1)
-        ohshite("failed to syscall lseek to files archive portion");
+        ohshite(_("failed to syscall lseek to files archive portion"));
       c1= -1;
       readfromfd= fileno(ar);
     }
@@ -233,13 +242,13 @@ void extracthalf(const char *debar, const char *directory,
     m_pipe(p1);
     if (!(c1= m_fork())) {
       close(p1[0]);
-      if (!(pi= fdopen(p1[1],"w"))) ohshite("failed to fdopen p1 in copy");
+      if (!(pi= fdopen(p1[1],"w"))) ohshite(_("failed to fdopen p1 in copy"));
       while (memberlen > 0) {
         if ((c= getc(ar)) == EOF) readfail(ar,debar,"member data");
-        if (putc(c,pi) == EOF) ohshite("failed to write to pipe in copy");
+        if (putc(c,pi) == EOF) ohshite(_("failed to write to pipe in copy"));
         memberlen--;
       }
-      if (fclose(pi) == EOF) ohshite("failed to close pipe in copy");
+      if (fclose(pi) == EOF) ohshite(_("failed to close pipe in copy"));
       exit(0);
     }
     close(p1[1]);
@@ -252,7 +261,7 @@ void extracthalf(const char *debar, const char *directory,
     m_dup2(readfromfd,0);
     if (admininfo) close(p1[0]);
     if (taroption) { m_dup2(p2[1],1); close(p2[0]); close(p2[1]); }
-    execlp(GZIP,"gzip","-dc",(char*)0); ohshite("failed to exec gzip -dc");
+    execlp(GZIP,"gzip","-dc",(char*)0); ohshite(_("failed to exec gzip -dc"));
   }
   if (readfromfd != fileno(ar)) close(readfromfd);
   close(p2[1]);
@@ -260,10 +269,10 @@ void extracthalf(const char *debar, const char *directory,
   if (taroption && directory) {
     if (chdir(directory)) {
       if (errno == ENOENT) {
-        if (mkdir(directory,0777)) ohshite("failed to create directory");
-        if (chdir(directory)) ohshite("failed to chdir to directory after creating it");
+        if (mkdir(directory,0777)) ohshite(_("failed to create directory"));
+        if (chdir(directory)) ohshite(_("failed to chdir to directory after creating it"));
       } else {
-        ohshite("failed to chdir to directory");
+        ohshite(_("failed to chdir to directory"));
       }
     }
   }
@@ -276,7 +285,7 @@ void extracthalf(const char *debar, const char *directory,
       strcat(buffer, "f");
       m_dup2(p2[0],0);
       execlp(TAR,"tar",buffer,"-",(char*)0);
-      ohshite("failed to exec tar");
+      ohshite(_("failed to exec tar"));
     }
     close(p2[0]);
     waitsubproc(c3,"tar",0);
@@ -299,13 +308,13 @@ static void controlextractvextract(int admin,
   const char *debar, *directory;
   
   if (!(debar= *argv++))
-    badusage("--%s needs a .deb filename argument",cipaction->olong);
+    badusage(_("--%s needs a .deb filename argument"),cipaction->olong);
   if (!(directory= *argv++)) {
     if (admin) directory= EXTRACTCONTROLDIR;
-    else ohshit("--%s needs a target directory.\n"
-                "Perhaps you should be using " DPKG " --install ?",cipaction->olong);
+    else ohshit(_("--%s needs a target directory.\n"
+                "Perhaps you should be using dpkg --install ?"),cipaction->olong);
   } else if (*argv) {
-    badusage("--%s takes at most two arguments (.deb and directory",cipaction->olong);
+    badusage(_("--%s takes at most two arguments (.deb and directory"),cipaction->olong);
   }
   extracthalf(debar, directory, taroptions, admin);
 }
@@ -314,12 +323,15 @@ void do_fsystarfile(const char *const *argv) {
   const char *debar;
   
   if (!(debar= *argv++))
-    badusage("--%s needs a .deb filename argument",cipaction->olong);
+    badusage(_("--%s needs a .deb filename argument"),cipaction->olong);
   if (*argv)
-    badusage("--%s takes only one argument (.deb filename)",cipaction->olong);
+    badusage(_("--%s takes only one argument (.deb filename)"),cipaction->olong);
   extracthalf(debar,0,0,0);
 }
    
 void do_control(const char *const *argv) { controlextractvextract(1, "x", argv); }
 void do_extract(const char *const *argv) { controlextractvextract(0, "xp", argv); }
 void do_vextract(const char *const *argv) { controlextractvextract(0, "xpv", argv); }
+
+
+
index a3ddbc29b5c0b2bb81cb5f16c0a6caf3dd070f9b..438d76fdcffc4ae114e1aca77cd38a8bab190415 100644 (file)
 #include <limits.h>
 #include <ctype.h>
 
-#include "config.h"
-#include "dpkg.h"
+#include <config.h>
+#include <dpkg.h>
+#include <myopt.h>
 #include "dpkg-deb.h"
-#include "myopt.h"
 
 static void cu_info_prepare(int argc, void **argv) {
   pid_t c1;
@@ -44,15 +44,15 @@ static void cu_info_prepare(int argc, void **argv) {
   struct stat stab;
 
   directory= (char*)(argv[0]);
-  if (chdir("/")) { perror("failed to chdir to `/' for cleanup"); return; }
+  if (chdir("/")) { perror(_("failed to chdir to `/' for cleanup")); return; }
   if (lstat(directory,&stab) && errno==ENOENT) return;
-  if ((c1= fork()) == -1) { perror("failed to fork for cleanup"); return; }
+  if ((c1= fork()) == -1) { perror(_("failed to fork for cleanup")); return; }
   if (!c1) {
     execlp(RM,"rm","-rf",directory,(char*)0);
-    perror("failed to exec " RM " for cleanup"); _exit(1);
+    perror(_("failed to exec rm for cleanup")); _exit(1);
   }
-  if (waitpid(c1,&status,0) != c1) { perror("failed to wait for rm cleanup"); return; }
-  if (status) { fprintf(stderr,"rm cleanup failed, code %d\n",status); }
+  if (waitpid(c1,&status,0) != c1) { perror(_("failed to wait for rm cleanup")); return; }
+  if (status) { fprintf(stderr,_("rm cleanup failed, code %d\n"),status); }
 } 
 
 static void info_prepare(const char *const **argvp,
@@ -63,12 +63,12 @@ static void info_prepare(const char *const **argvp,
   pid_t c1;
   
   *debarp= *(*argvp)++;
-  if (!*debarp) badusage("--%s needs a .deb filename argument",cipaction->olong);
-  if (!tmpnam(dbuf)) ohshite("failed to make temporary filename");
+  if (!*debarp) badusage(_("--%s needs a .deb filename argument"),cipaction->olong);
+  if (!tmpnam(dbuf)) ohshite(_("failed to make temporary filename"));
   *directoryp= dbuf;
 
   if (!(c1= m_fork())) {
-    execlp(RM,"rm","-rf",dbuf,(char*)0); ohshite("failed to exec rm -rf");
+    execlp(RM,"rm","-rf",dbuf,(char*)0); ohshite(_("failed to exec rm -rf"));
   }
   waitsubproc(c1,"rm -rf",0);
   push_cleanup(cu_info_prepare,-1, 0,0, 1, (void*)dbuf);
@@ -91,19 +91,19 @@ static void info_spew(const char *debar, const char *directory,
     if (co) {
       if (!(c1= m_fork())) {
         m_dup2(fileno(co),0);
-        execlp(CAT,"cat",(char*)0); ohshite("failed to exec cat component");
+        execlp(CAT,"cat",(char*)0); ohshite(_("failed to exec cat component"));
       }
       waitsubproc(c1,"cat component",0);
     } else if (errno == ENOENT) {
-      if (fprintf(stderr, BACKEND ": `%.255s' contains no control component `%.255s'\n",
+      if (fprintf(stderr, _("dpkg-deb: `%.255s' contains no control component `%.255s'\n"),
                   debar, component) == EOF) werr("stderr");
       re= 1;
     } else {
-      ohshite("open component `%.255s' (in %.255s) failed in an unexpected way",
+      ohshite(_("open component `%.255s' (in %.255s) failed in an unexpected way"),
               component, directory);
     }
   }
-  if (re) ohshit("at least one requested control component missing");
+  if (re) ohshit(_("at least one requested control component missing"));
 }
 
 static void info_list(const char *debar, const char *directory) {
@@ -116,15 +116,15 @@ static void info_list(const char *debar, const char *directory) {
   int c;
 
   cdn= scandir(".", &cdlist, &ilist_select, alphasort);
-  if (cdn == -1) ohshite("cannot scan directory `%.255s'",directory);
+  if (cdn == -1) ohshite(_("cannot scan directory `%.255s'"),directory);
 
   while (cdn-- >0) {
     cdep= *cdlist++;
     if (stat(cdep->d_name,&stab))
-      ohshite("cannot stat `%.255s' (in `%.255s')",cdep->d_name,directory);
+      ohshite(_("cannot stat `%.255s' (in `%.255s')"),cdep->d_name,directory);
     if (S_ISREG(stab.st_mode)) {
       if (!(cc= fopen(cdep->d_name,"r")))
-        ohshite("cannot open `%.255s' (in `%.255s')",cdep->d_name,directory);
+        ohshite(_("cannot open `%.255s' (in `%.255s')"),cdep->d_name,directory);
       lines= 0; interpreter[0]= 0;
       if ((c= getc(cc))== '#') {
         if ((c= getc(cc))== '!') {
@@ -138,22 +138,22 @@ static void info_list(const char *debar, const char *directory) {
         }
       }
       while ((c= getc(cc))!= EOF) { if (c == '\n') lines++; }
-      if (ferror(cc)) ohshite("failed to read `%.255s' (in `%.255s')",
+      if (ferror(cc)) ohshite(_("failed to read `%.255s' (in `%.255s')"),
                               cdep->d_name,directory);
       fclose(cc);
-      if (printf(" %7ld bytes, %5d lines   %c  %-20.127s %.127s\n",
+      if (printf(_(" %7ld bytes, %5d lines   %c  %-20.127s %.127s\n"),
                  (long)stab.st_size, lines,
                  S_IXUSR & stab.st_mode ? '*' : ' ',
                  cdep->d_name, interpreter) == EOF)
         werr("stdout");
     } else {
-      if (printf("     not a plain file          %.255s\n",cdep->d_name) == EOF)
+      if (printf(_("     not a plain file          %.255s\n"),cdep->d_name) == EOF)
         werr("stdout");
     }
   }
   if (!(cc= fopen("control","r"))) {
-    if (errno != ENOENT) ohshite("failed to read `control' (in `%.255s')",directory);
-    if (!fputs("(no `control' file in control archive!)\n",stdout)) werr("stdout");
+    if (errno != ENOENT) ohshite(_("failed to read `control' (in `%.255s')"),directory);
+    if (fputs(_("(no `control' file in control archive!)\n"),stdout) < 0) werr("stdout");
   } else {
     lines= 1;
     while ((c= getc(cc))!= EOF) {
@@ -173,7 +173,7 @@ static void info_field(const char *debar, const char *directory,
   const char *const *fp;
   int doing, c, lno, fnl;
 
-  if (!(cc= fopen("control","r"))) ohshite("could not open the `control' component");
+  if (!(cc= fopen("control","r"))) ohshite(_("could not open the `control' component"));
   doing= 1; lno= 1;
   for (;;) {
     c= getc(cc);  if (c==EOF) { doing=0; break; }
@@ -203,7 +203,7 @@ static void info_field(const char *debar, const char *directory,
     }
     if (c == EOF) break;
   }
-  if (ferror(cc)) ohshite("failed during read of `control' component");
+  if (ferror(cc)) ohshite(_("failed during read of `control' component"));
   if (doing) putc('\n',stdout);
   if (ferror(stdout)) werr("stdout");
 }
@@ -235,6 +235,6 @@ void do_field(const char *const *argv) {
 void do_contents(const char *const *argv) {
   const char *debar;
   
-  if (!(debar= *argv++) || *argv) badusage("--contents takes exactly one argument");
+  if (!(debar= *argv++) || *argv) badusage(_("--contents takes exactly one argument"));
   extracthalf(debar, 0, "tv", 0);
 }
index ee2321aa14745d23e6525dd401b68ff957e4f5a5..5906edb70d3ab8ae7dadeaadc167b185e77c7f28 100644 (file)
 #include <ctype.h>
 #include <assert.h>
 
-#include "config.h"
-#include "dpkg.h"
-#include "version.h"
-#include "myopt.h"
+#include <config.h>
+#include <dpkg.h>
+#include <version.h>
+#include <myopt.h>
+
 #include "dpkg-deb.h"
 
 static void printversion(void) {
-  if (!fputs("Debian Linux `" BACKEND "' package archive backend "
-             "version " DPKG_VERSION_ARCH ".\n"
-             "Copyright (C) 1994-1996 Ian Jackson.  This is free software; see the\n"
-             "GNU General Public Licence version 2 or later for copying conditions.\n"
-             "There is NO warranty.  See dpkg-deb --licence for details.\n",
-             stdout)) werr("stdout");
+  if (fputs(_("Debian Linux `" BACKEND "' package archive backend version "), stdout) < 0) werr("stdout");
+  if (fputs(DPKG_VERSION_ARCH ".\n", stdout) < 0) werr("stdout");
+  if (fputs(_("Copyright (C) 1994-1996 Ian Jackson.  This is free software; see the\n"
+             "GNU General Public Licence version 2 or later for copying conditions.\n"
+             "There is NO warranty.  See dpkg-deb --licence for details.\n"),
+           stdout) < 0) werr("stdout");
 }
 
 static void usage(void) {
-  if (!fputs("\
-Usage: " BACKEND " -b|--build <directory> [<deb>]    Build an archive.\n\
-       " BACKEND " -c|--contents <deb>               List contents.\n\
-       " BACKEND " -I|--info <deb> [<cfile>...]      Show info to stdout.\n\
-       " BACKEND " -f|--field <deb> [<cfield>...]    Show field(s) to stdout.\n\
-       " BACKEND " -e|--control <deb> [<directory>]  Extract control info.\n\
-       " BACKEND " -x|--extract <deb> <directory>    Extract files.\n\
-       " BACKEND " -X|--vextract <deb> <directory>   Extract & list files.\n\
-       " BACKEND " --fsys-tarfile <deb>              Output filesystem tarfile.\n\
-       " BACKEND " -h|--help                         Display this message.\n\
-       " BACKEND " --version | --licence             Show version/licence.\n\
+  if (fputs(_("\
+Usage: dpkg-deb -b|--build <directory> [<deb>]    Build an archive.\n\
+       dpkg-deb -c|--contents <deb>               List contents.\n\
+       dpkg-deb -I|--info <deb> [<cfile>...]      Show info to stdout.\n\
+       dpkg-deb -f|--field <deb> [<cfield>...]    Show field(s) to stdout.\n\
+       dpkg-deb -e|--control <deb> [<directory>]  Extract control info.\n\
+       dpkg-deb -x|--extract <deb> <directory>    Extract files.\n\
+       dpkg-deb -X|--vextract <deb> <directory>   Extract & list files.\n\
+       dpkg-deb --fsys-tarfile <deb>              Output filesystem tarfile.\n\
+       dpkg-deb -h|--help                         Display this message.\n\
+       dpkg-deb --version | --licence             Show version/licence.\n\
 <deb> is the filename of a Debian format archive.\n\
 <cfile> is the name of an administrative file component.\n\
 <cfield> is the name of a field in the main `control' file.\n\
 Options:  -D for debugging output; --old or --new controls archive format;\n\
           --no-check to suppress control file check (build bad package).\n\
 \n\
-Use `" DPKG "' to install and remove packages from your system, or\n\
-`" DSELECT "' for user-friendly package management.  Packages unpacked\n\
-using `" BACKEND " --extract' will be incorrectly installed !\n",
-             stdout)) werr("stdout");
+Use `dpkg' to install and remove packages from your system, or\n\
+`dselect' for user-friendly package management.  Packages unpacked\n\
+using `dpkg-deb --extract' will be incorrectly installed !\n"),
+           stdout) < 0) werr("stdout");
 }
 
 const char thisname[]= BACKEND;
 const char printforhelp[]=
"Type " BACKEND " --help for help about manipulating *.deb files;\n"
"Type " DPKG " --help for help about installing and deinstalling packages.";
 N_("Type dpkg-deb --help for help about manipulating *.deb files;\n"
    "Type dpkg --help for help about installing and deinstalling packages.");
 
 int debugflag=0, nocheckflag=0, oldformatflag=BUILDOLDPKGFORMAT;
 const struct cmdinfo *cipaction=0;
@@ -126,7 +127,7 @@ static const struct cmdinfo cmdinfos[]= {
 
 static void setaction(const struct cmdinfo *cip, const char *value) {
   if (cipaction)
-    badusage("conflicting actions --%s and --%s",cip->olong,cipaction->olong);
+    badusage(_("conflicting actions --%s and --%s"),cip->olong,cipaction->olong);
   cipaction= cip;
   assert(cip-cmdinfos < sizeof(dofunctions)*sizeof(dofunction*));
   action= dofunctions[cip-cmdinfos];
@@ -135,13 +136,18 @@ static void setaction(const struct cmdinfo *cip, const char *value) {
 int main(int argc, const char *const *argv) {
   jmp_buf ejbuf;
 
+  setlocale(LC_ALL, "");
+  setlocale(LC_NUMERIC, "POSIX");
+  bindtextdomain(PACKAGE, LOCALEDIR);
+  textdomain(PACKAGE);
+
   if (setjmp(ejbuf)) { /* expect warning about possible clobbering of argv */
     error_unwind(ehflag_bombout); exit(2);
   }
   push_error_handler(&ejbuf,print_error_fatal,0);
 
   myopt(&argv,cmdinfos);
-  if (!cipaction) badusage("need an action option");
+  if (!cipaction) badusage(_("need an action option"));
 
   unsetenv("GZIP");
   action(argv);
diff --git a/dselect/.cvsignore b/dselect/.cvsignore
new file mode 100644 (file)
index 0000000..70845e0
--- /dev/null
@@ -0,0 +1 @@
+Makefile.in
diff --git a/dselect/Makefile.am b/dselect/Makefile.am
new file mode 100644 (file)
index 0000000..3e49b47
--- /dev/null
@@ -0,0 +1,74 @@
+## Process this file with automake to produce a Makefile.in
+
+AUTOMAKE_OPTIONS       = 1.1 foreign
+
+## Directory definitions
+
+localedir              = $(datadir)/locale
+
+## Various options
+
+CFLAGS                 = @CFLAGS@ @CWARNS@ -g $(XCFLAGS) -DLOCALEDIR=\"$(localedir)\"
+OPTCFLAGS              = @CFLAGS@ @OPTCFLAGS@ @CWARNS@ -g $(XCFLAGS) -DLOCALEDIR=\"$(localedir)\"
+LDFLAGS                        = @LDFLAGS@ $(XLDFLAGS)
+LIBS                   = @INTLLIBS@ @LIBS@ $(XLIBS)
+
+CXXFLAGS               = @CXXFLAGS@ @CWARNS@ -g $(XCXXFLAGS) -DLOCALEDIR=\"$(localedir)\"
+OPTCXXFLAGS            = @CXXFLAGS@ @OPTCFLAGS@ @CWARNS@ -g $(XCXXFLAGS) -DLOCALEDIR=\"$(localedir)\"
+
+DEFS                   = -I$(top_srcdir)/include -I$(top_srcdir) -I$(srcdir) \
+                         -I$(top_builddir) -I$(top_builddir)/include -I. \
+                         -I$(top_srcdir)/intl -I$(top_builddir)/intl @DEFS@
+## Automake variables
+
+bin_PROGRAMS           = dselect
+man_MANS               = dselect.8
+
+EXTRA_DIST             = keyoverride mkcurkeys.pl mkhelpmsgs.pl helpmsgs.src \
+                         checkunimp.pl $(man_MANS)
+
+dselect_SOURCES                = main.cc bindings.cc curkeys.cc helpmsgs.cc \
+                         basecmds.cc baselist.cc basetop.cc \
+                         pkgcmds.cc pkgdepcon.cc pkgdisplay.cc pkginfo.cc \
+                         pkgkeys.cc pkglist.cc pkgsublist.cc pkgtop.cc \
+                         methkeys.cc method.cc methparse.cc methlist.cc \
+                         dselect.h bindings.h pkglist.h method.h
+dselect_LDADD          = ../lib/libdpkg.la ../lib/myopt.o -lncurses
+
+
+BUILT_SOURCES          = curkeys.h helpmsgs.h helpmsgs.cc
+CLEANFILES             = curkeys.h.new helpmsgs.h.new helpmsgs.cc.new $(BUILT_SOURCES)
+
+DISTCLEANFILES         = updates status available *.old
+MAINTAINERCLEANFILES   = $(srcdir)/Makefile.in
+
+## Rules
+
+helpmsgs.h helpmsgs.cc: helpmsgs.src $(srcdir)/mkhelpmsgs.pl
+       perl $(srcdir)/mkhelpmsgs.pl $<
+
+curkeys.h: keyoverride $(srcdir)/mkcurkeys.pl
+       cursesfile=`echo '#include <curses.h>' | \
+                $(CC) -E - | grep 'curses.h' | head -1 | \
+                sed -e 's/^[^"]*"//; s/".*$$//'`; \
+       if [ "$$cursesfile" == "" ]; then echo "can't find curses file"; exit 1; fi; \
+       perl $(srcdir)/mkcurkeys.pl $< $$cursesfile > $@.new
+       mv $@.new $@
+
+$(DEP_FILES): helpmsgs.h curkeys.h
+
+## Optimize for speed, not space, for most commonly used files
+
+pkgdepcon.o: pkgdepcon.cc
+       $(CXX) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(OPTCXXFLAGS) -c $<
+
+pkgdisplay.o: pkgdisplay.cc
+       $(CXX) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(OPTCXXFLAGS) -c $<
+
+curkeys.o: curkeys.cc
+       $(CXX) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(OPTCXXFLAGS) -c $<
+
+dist-hook:
+       cp -p helpmsgs.h helpmsgs.cc curkeys.h $(distdir)/
+
+## End of file.
diff --git a/dselect/Makefile.in b/dselect/Makefile.in
deleted file mode 100644 (file)
index 1ef6f9c..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-# Copyright (C) 1994 Ian Murdock <imurdock@debian.org>
-# Copyright (C) 1994,1995 Ian Jackson <ijackson@nyx.cs.du.edu>
-#
-#   This is free software; you can redistribute it and/or modify
-#   it under the terms of the GNU General Public License as
-#   published by the Free Software Foundation; either version 2,
-#   or (at your option) any later version.
-#
-#   This is distributed in the hope that it will be useful, but
-#   WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#   GNU General Public License for more details.
-#
-#   You should have received a copy of the GNU General Public
-#   License along with dpkg; if not, write to the Free Software
-#   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-srcdir = @srcdir@
-VPATH = @srcdir@
-
-prefix = @prefix@
-exec_prefix = $(prefix)
-bindir = $(exec_prefix)/bin
-libdir = $(prefix)/lib
-mandir = $(prefix)/man
-man8dir = $(mandir)/man8
-man8 = 8
-
-SRC =                                                                       \
- main.cc        bindings.cc    curkeys.cc     helpmsgs.cc                   \
- basecmds.cc    baselist.cc    basetop.cc                                   \
- pkgcmds.cc     pkgdepcon.cc   pkgdisplay.cc  pkginfo.cc     pkgkeys.cc     \
- pkglist.cc     pkgsublist.cc  pkgtop.cc                                    \
- methkeys.cc    method.cc      methparse.cc   methlist.cc
-
-OBJ =                                                                       \
- main.o         bindings.o     curkeys.o      helpmsgs.o                    \
- basecmds.o     baselist.o     basetop.o                                    \
- pkgcmds.o      pkgdepcon.o    pkgdisplay.o   pkginfo.o      pkgkeys.o      \
- pkglist.o      pkgsublist.o   pkgtop.o                                     \
- methkeys.o     method.o       methparse.o    methlist.o
-
-INSTALL = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_DATA = @INSTALL_DATA@
-
-CC = @CC@
-CPLUSPLUS = @CXX@
-
-CFLAGS = @CFLAGS@ @CWARNS@ -g $(XCFLAGS)
-OPTCFLAGS = @OPTCFLAGS@
-LDFLAGS = $(XLDFLAGS)
-
-EXTERNLIBS = -lncurses
-LIBS = -L../lib -ldpkg $(EXTERNLIBS) $(XLIBS)
-ALL_CFLAGS = -I../include -I.. @DEFS@ $(CFLAGS)
-ALL_CFLAGS_OPT = $(ALL_CFLAGS) $(OPTCFLAGS)
-
-.SUFFIXES:     .cc .o .c
-
-.cc.o:
-               $(CPLUSPLUS) $(ALL_CFLAGS) -c $<
-
-.c.o:
-               $(CC) $(ALL_CFLAGS) -c $<
-
-all:           dselect
-
-dselect:       $(OBJ) ../lib/libdpkg.a
-               $(CC) $(LDFLAGS) -o dselect $(OBJ) $(LIBS)
-
-# These next few files are very heavily used, and should be optimised
-# for speed rather than space.  (ALL_CFLAGS_OPT usually means -O3.)
-pkgdepcon.o:   pkgdepcon.cc
-               $(CPLUSPLUS) $(ALL_CFLAGS_OPT) -c $<
-
-pkgdisplay.o:  pkgdisplay.cc
-               $(CPLUSPLUS) $(ALL_CFLAGS_OPT) -c $<
-
-curkeys.o:     curkeys.cc curkeys.inc
-               $(CPLUSPLUS) $(ALL_CFLAGS) -c curkeys.cc
-
-helpmsgs.h helpmsgs.cc:        helpmsgs.src mkhelpmsgs.pl
-               perl mkhelpmsgs.pl
-
-curkeys.inc:   keyoverride mkcurkeys.pl
-               perl mkcurkeys.pl keyoverride \
-                       `echo '#include <ncurses/curses.h>' | \
-                        $(CC) -E - | grep ncurses | head -1 | \
-                        sed -e 's/^[^"]*"//; s/".*$$//'` > curkeys.inc.new
-               mv curkeys.inc.new curkeys.inc
-
-kt:            kt.o
-               $(CC) $(LDFLAGS) -o kt kt.o $(LIBS)
-
-kt.o:          kt.c curkeys.inc
-
-clean:
-               rm -f curkeys.inc curkeys.inc.new
-               rm -f helpmsgs.h helpmsgs.cc helpmsgs.h.new helpmsgs.cc.new
-               rm -f *.o core dselect kt
-
-distclean:     clean
-               rm -f Makefile *.orig *~ *.~* ./#*#
-               rm -rf t updates status available *.old
-
-install:       all
-               $(INSTALL_PROGRAM) -s dselect $(bindir)/dselect
-
-# $(INSTALL_DATA) dselect.8 $(man8dir)/dselect.$(man8)
-
-$(OBJ):                        dselect.h ../config.h ../include/dpkg.h ../include/dpkg-db.h
-main.o:                                                ../version.h ../include/myopt.h
-method.o:                                      method.h
-pkgcmds.o pkgdepcon.o pkgdisplay.o pkgtop.o:   pkglist.h
-baselist.o bindings.o curkeys.o main.o:                bindings.h method.h pkglist.h
-methlist.o methkeys.o pkginfo.o pkgkeys.o:     bindings.h method.h pkglist.h
-pkglist.o pkgsublist.o methparse.o:            bindings.h method.h pkglist.h
-helpmsgs.o methlist.o pkginfo.o basecmds.o:    helpmsgs.h helpmsgs.cc
index 85d2d7f96c54f3797b6507a325ec574540e6868f..e113fbbe672996349b0bb72478ca637a26a8c9d8 100644 (file)
 
 #include <stdio.h>
 #include <string.h>
-#include <ncurses.h>
+#include <curses.h>
 #include <assert.h>
 #include <signal.h>
 
 extern "C" {
-#include "config.h"
-#include "dpkg.h"
-#include "dpkg-db.h"
+#include <config.h>
+#include <dpkg.h>
+#include <dpkg-db.h>
 }
 #include "dselect.h"
 #include "helpmsgs.h"
@@ -97,11 +97,12 @@ void baselist::kd_searchagain() {
 void baselist::kd_search() {
   werase(querywin);
   mvwaddstr(querywin,0,0, "Search for ? ");
-  echo();
+  echo(); /* fixme: ncurses documentation or implementation */
   /* fixme: make / RET do `search again' and / DEL to abort */
   if (wgetnstr(querywin,searchstring,sizeof(searchstring)-1) == ERR)
     searchstring[0]= 0;
-  noecho();
+  raise(SIGWINCH); /* fixme: ncurses and xterm arrow keys */
+  noecho(); /* fixme: ncurses */
   if (whatinfo_height) { touchwin(whatinfowin); refreshinfo(); }
   else if (info_height) { touchwin(infopad); refreshinfo(); }
   else if (thisstate_height) redrawthisstate();
index c3f97edfa95ee423ae9cc1aa426c79cd787f848b..19a4166537d26517a9db06e93b1d70fbb34fd280 100644 (file)
 
 #include <stdio.h>
 #include <string.h>
-#include <ncurses.h>
+#include <curses.h>
 #include <assert.h>
 #include <signal.h>
 #include <ctype.h>
 
 extern "C" {
-#include "config.h"
-#include "dpkg.h"
-#include "dpkg-db.h"
+#include <config.h>
+#include <dpkg.h>
+#include <dpkg-db.h>
 }
 #include "dselect.h"
 #include "bindings.h"
index 54b792750cf5817d42c246442df6e2eee9b2e44c..3493b47564bf55248637a04a7a63d9ec6df07bf1 100644 (file)
 
 #include <stdio.h>
 #include <string.h>
-#include <ncurses.h>
+#include <curses.h>
 #include <assert.h>
 #include <signal.h>
 #include <ctype.h>
 
 extern "C" {
-#include "config.h"
-#include "dpkg.h"
-#include "dpkg-db.h"
+#include <config.h>
+#include <dpkg.h>
+#include <dpkg-db.h>
 }
 #include "dselect.h"
 
index 4fb545072ef2c33466d4d226c5c53ecbec9a5848..ce7c0b688a796afc9fbfcee167d9056a8d52e492 100644 (file)
 
 #include <stdio.h>
 #include <string.h>
-#include <ncurses.h>
+#include <curses.h>
 #include <assert.h>
 #include <signal.h>
 
 extern "C" {
-#include "config.h"
-#include "dpkg.h"
-#include "dpkg-db.h"
+#include <config.h>
+#include <dpkg.h>
+#include <dpkg-db.h>
 }
 #include "dselect.h"
 #include "bindings.h"
index 532b2695dd5fba34db9e5348d225c63f56e647d2..f22c9b680fa0c06b11d9fdcb134533a1bba56a43 100644 (file)
 
 extern "C" {
 #include <ncurses/curses.h>
-#include "config.h"
-#include "dpkg.h"
-#include "dpkg-db.h"
+#include <config.h>
+#include <dpkg.h>
+#include <dpkg-db.h>
 }
 #include "dselect.h"
 #include "bindings.h"
 
 const keybindings::keyname keybindings::keynames[] = {
-#include "curkeys.inc"
+#include "curkeys.h"
 };
diff --git a/dselect/debugmake b/dselect/debugmake
deleted file mode 100755 (executable)
index 0270297..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-set -x
-make 'XCFLAGS=-g -O0' LDFLAGS=-g 'EXTERNLIBS= -lncurses_g -lefence' "$@"
index 7978c8b3a04389a7a891c2c0d59a06f338ff67d9..e11130917843942e03c7ea6862627be2e2d6d8d1 100644 (file)
@@ -25,6 +25,8 @@
 #define TOTAL_LIST_WIDTH 180
 #define MAX_DISPLAY_INFO 120
 
+#include <signal.h>
+
 struct helpmenuentry {
   char key;
   const struct helpmessage *msg;
diff --git a/dselect/kt.cc b/dselect/kt.cc
deleted file mode 100644 (file)
index d448a58..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-#include <stdio.h>
-#include <string.h>
-#include <assert.h>
-#include <ncurses/curses.h>
-
-struct kd { int v; const char *n; } kds[]= {
-#include "curkeys.inc"
-};
-
-int main(int argc, char **argv) {
-  int n=0, c, y,x;
-  struct kd *kdp;
-
-  initscr(); cbreak(); noecho(); nonl();
-  keypad(stdscr,TRUE);
-  getmaxyx(stdscr,y,x);
-  mvprintw(5,5,"q to quit; b to beep; (y%d x%d)",y,x);
-
-  for (;;) {
-    refresh();
-    c= getch(); if (c==ERR) { endwin(); perror("err"); exit(1); }
-    for (kdp=kds; kdp->v != -1 && kdp->v != c; kdp++);
-    n++; mvprintw(10 + (n%4),10,"n %10d  keycode %4d  %-10s  F0 + %4d",n,c,
-                  kdp->n, c-KEY_F0);
-    if (c == 'q') break;
-    if (c == 'b') beep();
-  }
-  endwin();
-  return 0;
-}
index e15d1b561b1ed1544a0a665013e78893e60356e9..dbad037b101f32c7b4777f8298865e2c6dc225a9 100644 (file)
 #include <ctype.h>
 #include <assert.h>
 
-#include <ncurses.h>
+#include <curses.h>
 #include <term.h>
 
 extern "C" {
-#include "config.h"
-#include "dpkg.h"
-#include "dpkg-db.h"
-#include "version.h"
-#include "myopt.h"
+#include <config.h>
+#include <dpkg.h>
+#include <dpkg-db.h>
+#include <version.h>
+#include <myopt.h>
 }
 #include "dselect.h"
 #include "bindings.h"
index cf3bca9ac4cf15d57651c1be5672f6b7eccd78b0..a0587feab13f3567d52726499263bfce015192b4 100644 (file)
 
 #include <stdio.h>
 #include <string.h>
-#include <ncurses.h>
+#include <curses.h>
 #include <assert.h>
 #include <signal.h>
 
 extern "C" {
-#include "config.h"
-#include "dpkg.h"
-#include "dpkg-db.h"
+#include <config.h>
+#include <dpkg.h>
+#include <dpkg-db.h>
 }
 #include "dselect.h"
 #include "bindings.h"
@@ -56,7 +56,7 @@ const keybindings::interpretation methodlist_kinterps[] = {
   { "redraw",          methodlist::kd_redraw,         0,    qa_noquit           },
   { "select-and-quit", methodlist::kd_quit,           0,    qa_quitchecksave    },
   { "abort",           methodlist::kd_abort,          0,    qa_quitnochecksave  },
-  {  0,                0,                                   qa_noquit           }
+  {  0,                0,                             0,    qa_noquit           }
 };
 
 #define C(x) ((x)-'a'+1)
index c81ce8e1c1834f49ce1c083c53390a4b14fe5887..f995189a7dbf29c9e0d9893f415849844ac615ac 100644 (file)
 
 #include <stdio.h>
 #include <string.h>
-#include <ncurses.h>
+#include <curses.h>
 #include <assert.h>
 #include <signal.h>
 
 extern "C" {
-#include "config.h"
-#include "dpkg.h"
-#include "dpkg-db.h"
+#include <config.h>
+#include <dpkg.h>
+#include <dpkg-db.h>
 }
 #include "dselect.h"
 #include "bindings.h"
index 67939ebaa57ad69aa2e5f4f7cc4cbcd9ef26a9c2..a835d0a50bea26bb0308248665134a3a68c316e6 100644 (file)
 #include <fcntl.h>
 #include <sys/file.h>
 
-#include <ncurses.h>
+#include <curses.h>
 
 extern "C" {
-#include "config.h"
-#include "dpkg.h"
-#include "dpkg-db.h"
+#include <config.h>
+#include <dpkg.h>
+#include <dpkg-db.h>
 }
 #include "dselect.h"
 #include "method.h"
index ffa280ee543be0d5e11701ebed32c7d8846914c8..4388415cc7d9ff4024ea360d29cfe95847963353 100644 (file)
 #include <ctype.h>
 #include <assert.h>
 
-#include <ncurses.h>
+#include <curses.h>
 
 extern "C" {
-#include "config.h"
-#include "dpkg.h"
-#include "dpkg-db.h"
+#include <config.h>
+#include <dpkg.h>
+#include <dpkg-db.h>
 }
 #include "dselect.h"
 #include "bindings.h"
@@ -47,12 +47,13 @@ int noptions=0;
 struct option *options=0, *coption=0;
 struct method *methods=0;
 
-static void badmethod(const char *pathname, const char *why) __NORETURN;
-static void badmethod(const char *pathname, const char *why) {
+static void badmethod(const char *pathname, const char *why) NONRETURNING;
+static void badmethod(const char *pathname, const char *why)
+{
   ohshit("syntax error in method options file `%.250s' -- %s", pathname, why);
 }
 
-static void eofmethod(const char *pathname, FILE *f, const char *why) __NORETURN;
+static void eofmethod(const char *pathname, FILE *f, const char *why) NONRETURNING;
 static void eofmethod(const char *pathname, FILE *f, const char *why) {
   if (ferror(f)) ohshite("error reading options file `%.250s'",pathname);
   badmethod(pathname,why);
@@ -98,6 +99,8 @@ void readmethods(const char *pathbase, option **optionspp, int *nread) {
     if (methodlen > IMETHODMAXLEN)
       ohshit("method `%.250s' has name that is too long (%d > %d characters)",
              dent->d_name, methodlen, IMETHODMAXLEN);
+    /* Check if there is a localized version of this method */
+    
     strcpy(pathmeth, dent->d_name);
     strcpy(pathmeth+methodlen, "/");
     pathinmeth= pathmeth+methodlen+1;
@@ -195,12 +198,12 @@ void readmethods(const char *pathbase, option **optionspp, int *nread) {
       
       if (debug) fprintf(debug," readmethods(`%s',...) new option"
                          " index=`%s' name=`%s' summary=`%.20s'"
-                         " strlen(description=%s)=%d"
+                         " strlen(description=%s)=%ld"
                          " method name=`%s' path=`%s' pathinmeth=`%s'\n",
                          pathbase,
                          opt->index, opt->name, opt->summary,
                          opt->description ? "`...'" : "null",
-                         opt->description ? strlen(opt->description) : -1,
+                         opt->description ? (long) strlen(opt->description) : -1,
                          opt->meth->name, opt->meth->path, opt->meth->pathinmeth);
       for (optinsert= optionspp;
            *optinsert && strcmp(opt->index,(*optinsert)->index) > 0;
index 192914297790be142b218778fa3ec586cd682505..045f8a155047c677ea8b2d3d82378f87e0422dca 100755 (executable)
 # License along with this; if not, write to the Free Software
 # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
-@ARGV == 2 || die;
+$#ARGV == 1 || die ("usage: mkcurkeys.pl <filename> <curses.h>");
 
 open(OV,"<$ARGV[0]") || die $!;
 while (<OV>) {
-    m/^#/ && next;
-    m/\S/ || next;
-    m/^(\w+)\s+(\S.*\S)\s+$/ || die;
+    chomp;
+    /^#/ && next;              # skip comments
+    /\S/ || next;              # ignore blank lines
+    /^(\w+)\s+(\S.*\S)\s*$/ || die ("cannot parse line:\n$_\n");
     $over{$1}= $2;
     $base{$1}= '';
 }
@@ -60,7 +61,7 @@ close(NCH);
 printf(<<'END') || die $!;
 /*
  * WARNING - THIS FILE IS GENERATED AUTOMATICALLY - DO NOT EDIT
- * It is generated by mkcurkeys.pl from <ncurses/curses.h>
+ * It is generated by mkcurkeys.pl from <curses.h>
  * and keyoverride.  If you want to override things try adding
  * them to keyoverride.
  */
index 878620fe7bee1ca23eaa0f42c6790325045bc83a..d6eb3140c5b11936a8abc4c8d8d35f405fb5b8e6 100755 (executable)
@@ -2,7 +2,7 @@
 
 $maxnlines= 22;
 
-open(SRC,"helpmsgs.src") || die $!;
+open(SRC,$ARGV[0]) || die $!;
 open(NC,">helpmsgs.cc.new") || die $!;
 open(NH,">helpmsgs.h.new") || die $!;
 
index 7950bb9b9d6fa7c94f7255a0b8ed16fb0b549cd1..a2e9d2915472e075288a202664ca98796a6ce004 100644 (file)
 
 #include <stdio.h>
 #include <string.h>
-#include <ncurses.h>
+#include <curses.h>
 #include <assert.h>
 #include <signal.h>
 
 extern "C" {
-#include "config.h"
-#include "dpkg.h"
-#include "dpkg-db.h"
+#include <config.h>
+#include <dpkg.h>
+#include <dpkg-db.h>
 }
 #include "dselect.h"
 #include "pkglist.h"
index a6abb3094c0529cd2f3b1530777fd184245b8620..9395b6626277cae40176050b1b1f60b5df87c647 100644 (file)
 
 #include <stdio.h>
 #include <string.h>
-#include <ncurses.h>
+#include <curses.h>
 #include <assert.h>
 
 extern "C" {
-#include "config.h"
-#include "dpkg.h"
-#include "dpkg-db.h"
+#include <config.h>
+#include <dpkg.h>
+#include <dpkg-db.h>
 }
 #include "dselect.h"
 #include "pkglist.h"
@@ -86,7 +86,7 @@ int packagelist::resolvesuggest() {
     int index;
     for (index=0; index<nitems; index++) {
       if (!table[index]->pkg->name) continue;
-      if (depdebug)
+      if (depdebug && debug)
         fprintf(debug,"packagelist[%p]::resolvesuggest() loop[%i] %s / %d\n",
                 this, index, table[index]->pkg->name, changemade);
       dependency *depends;
@@ -102,7 +102,7 @@ int packagelist::resolvesuggest() {
         if (depends->type != dep_provides) continue;
         changemade= checkdependers(depends->list->ed,changemade);
       }
-      if (depdebug)
+      if (depdebug && debug)
         fprintf(debug,"packagelist[%p]::resolvesuggest() loop[%i] %s / -> %d\n",
                 this, index, table[index]->pkg->name, changemade);
     }
@@ -119,7 +119,7 @@ static int dep_update_best_to_change_stop(perpackagestate *& best, pkginfo *tryt
   // There's no point trying to select a pure virtual package.
   if (!trythis->clientdata) return 0;
   
-  if (depdebug)
+  if (depdebug && debug)
     fprintf(debug,"update_best_to_change(best=%s{%d}, test=%s{%d});\n",
             best ? best->pkg->name : "", best ? (int)best->spriority : -1,
             trythis->name, trythis->clientdata->spriority);
@@ -150,7 +150,7 @@ static int dep_update_best_to_change_stop(perpackagestate *& best, pkginfo *tryt
   return 0;
   
  yes:
-  if (depdebug) fprintf(debug,"update_best_to_change(); yes\n");
+  if (depdebug && debug) fprintf(debug,"update_best_to_change(); yes\n");
 
   best=trythis->clientdata; return 0;
 }
@@ -167,7 +167,7 @@ int packagelist::deselect_one_of(pkginfo *per, pkginfo *ped, dependency *display
   er= per->clientdata;  // these can be changed by add
   ed= ped->clientdata;
   
-  if (depdebug)
+  if (depdebug && debug)
     fprintf(debug,"packagelist[%p]::deselect_one_of(): er %s{%d} ed %s{%d} [%p]\n",
             this, er->pkg->name, er->spriority, ed->pkg->name, ed->spriority, display);
   
@@ -184,7 +184,7 @@ int packagelist::deselect_one_of(pkginfo *per, pkginfo *ped, dependency *display
   
   else best= ed;                                      // ... failing that, the second
 
-  if (depdebug)
+  if (depdebug && debug)
     fprintf(debug,"packagelist[%p]::deselect_one_of(): best %s{%d}\n",
             this, best->pkg->name, best->spriority);
 
@@ -203,7 +203,7 @@ int packagelist::resolvedepcon(dependency *depends) {
   deppossi *possi, *provider;
   int r, foundany;
 
-  if (depdebug) {
+  if (depdebug && debug) {
     fprintf(debug,"packagelist[%p]::resolvedepcon([%p] %s --%s-->",
             this,depends,depends->up->name,relatestrings[depends->type]);
     for (possi=depends->list; possi; possi=possi->next)
@@ -237,7 +237,7 @@ int packagelist::resolvedepcon(dependency *depends) {
     for (possi= depends->list;
          possi && !deppossatisfied(possi,&fixbyupgrade);
          possi= possi->next);
-    if (depdebug)
+    if (depdebug && debug)
       fprintf(debug,"packagelist[%p]::resolvedepcon([%p]): depends found %s\n",
               this,depends,
               possi ? possi->ed->name : "[none]");
@@ -249,7 +249,7 @@ int packagelist::resolvedepcon(dependency *depends) {
     if (depends->type == dep_suggests) return r;
 
     if (fixbyupgrade) {
-      if (depdebug) fprintf(debug,"packagelist[%p]::resolvedepcon([%p]): "
+      if (depdebug && debug) fprintf(debug,"packagelist[%p]::resolvedepcon([%p]): "
                             "fixbyupgrade %s\n", this,depends,fixbyupgrade->pkg->name);
       best= fixbyupgrade;
     } else {
@@ -270,12 +270,12 @@ int packagelist::resolvedepcon(dependency *depends) {
         if (!foundany) addunavailable(possi);
       }
       if (!best) {
-        if (depdebug) fprintf(debug,"packagelist[%p]::resolvedepcon([%p]): "
+        if (depdebug && debug) fprintf(debug,"packagelist[%p]::resolvedepcon([%p]): "
                               "mustdeselect nobest\n", this,depends);
         return r;
       }
     }
-    if (depdebug)
+    if (depdebug && debug)
       fprintf(debug,"packagelist[%p]::resolvedepcon([%p]): select best=%s{%d}\n",
               this,depends, best->pkg->name, best->spriority);
     if (best->spriority >= sp_selecting) return r;
@@ -285,7 +285,7 @@ int packagelist::resolvedepcon(dependency *depends) {
     
   mustdeselect:
     best= depends->up->clientdata;
-    if (depdebug)
+    if (depdebug && debug)
       fprintf(debug,"packagelist[%p]::resolvedepcon([%p]): mustdeselect best=%s{%d}\n",
               this,depends, best->pkg->name, best->spriority);
 
@@ -298,20 +298,20 @@ int packagelist::resolvedepcon(dependency *depends) {
     
   case dep_conflicts:
 
-    if (depdebug)
+    if (depdebug && debug)
       fprintf(debug,"packagelist[%p]::resolvedepcon([%p]): conflict\n",
               this,depends);
     
     if (would_like_to_install(depends->up->clientdata->selected,depends->up) == 0)
       return 0;
 
-    if (depdebug)
+    if (depdebug && debug)
       fprintf(debug,"packagelist[%p]::resolvedepcon([%p]): conflict installing 1\n",
               this,depends);
 
     if (!deppossatisfied(depends->list,0)) return 0;
 
-    if (depdebug)
+    if (depdebug && debug)
       fprintf(debug,"packagelist[%p]::resolvedepcon([%p]): conflict satisfied - ouch\n",
               this,depends);
 
@@ -326,7 +326,7 @@ int packagelist::resolvedepcon(dependency *depends) {
       if (provider->up->up == depends->up) continue; // conflicts & provides same thing
       r= deselect_one_of(depends->up, provider->up->up, depends);  if (r) return r;
     }
-    if (depdebug)
+    if (depdebug && debug)
       fprintf(debug,"packagelist[%p]::resolvedepcon([%p]): no desel\n", this,depends);
     return 0;
     
@@ -365,7 +365,7 @@ int packagelist::deppossatisfied(deppossi *possi, perpackagestate **fixbyupgrade
       return 0;
     }
   }
-  if (possi->verrel != deppossi::dvr_none) return 0;
+  if (possi->verrel != dvr_none) return 0;
   deppossi *provider;
   if (possi->ed->installed.valid) {
     for (provider= possi->ed->installed.depended;
index 92c31a868abf89fc4279e73e546c7d0f46c93a27..16a4ff2865b3d6b0ecb6063de122207a30fe0e8e 100644 (file)
 
 #include <stdio.h>
 #include <string.h>
-#include <ncurses.h>
+#include <curses.h>
 #include <assert.h>
 #include <signal.h>
 
 extern "C" {
-#include "config.h"
-#include "dpkg.h"
-#include "dpkg-db.h"
+#include <config.h>
+#include <dpkg.h>
+#include <dpkg-db.h>
 }
 #include "dselect.h"
 #include "pkglist.h"
index 718bc1fbb067eb9f017e949859008901aa95659c..3ed653657fac9a9054bedc8e9d0873c13686baa2 100644 (file)
 
 #include <stdio.h>
 #include <string.h>
-#include <ncurses.h>
+#include <curses.h>
 #include <assert.h>
 #include <ctype.h>
 
 extern "C" {
-#include "config.h"
-#include "dpkg.h"
-#include "dpkg-db.h"
+#include <config.h>
+#include <dpkg.h>
+#include <dpkg-db.h>
 }
 #include "dselect.h"
 #include "bindings.h"
index 198b040b05e0ac779839749c43f466492c071752..35c9dd617051010d0aca5b7e972fe9d9e10b2414 100644 (file)
 
 #include <stdio.h>
 #include <string.h>
-#include <ncurses.h>
+#include <curses.h>
 #include <assert.h>
 #include <signal.h>
 
 extern "C" {
-#include "config.h"
-#include "dpkg.h"
-#include "dpkg-db.h"
+#include <config.h>
+#include <dpkg.h>
+#include <dpkg-db.h>
 }
 #include "dselect.h"
 #include "bindings.h"
@@ -72,7 +72,7 @@ const keybindings::interpretation packagelist_kinterps[] = {
   { "revert",           0,  packagelist::kd_revert_abort,     qa_noquit           },
   { "revertsuggest",    0,  packagelist::kd_revertsuggest,    qa_noquit           },
   { "revertdirect",     0,  packagelist::kd_revertdirect,     qa_noquit           },
-  {  0,                 0,                                    qa_noquit           }
+  {  0,                 0,  0,                                qa_noquit           }
 };
 
 #define C(x) ((x)-'a'+1)
index eabd60c33ab11e1d881ad2cb0b7b5e4ffe778a25..cdc3a2b086032f66bd95c8b5c44c674d3fb98aaf 100644 (file)
 
 #include <stdio.h>
 #include <string.h>
-#include <ncurses.h>
+#include <curses.h>
 #include <assert.h>
 #include <signal.h>
 
 extern "C" {
-#include "config.h"
-#include "dpkg.h"
-#include "dpkg-db.h"
+#include <config.h>
+#include <dpkg.h>
+#include <dpkg-db.h>
 }
 #include "dselect.h"
 #include "bindings.h"
index 75216f4e0378b81bdcb5ce63d4e3b17a6f953c0e..1c301f62f9865390d916f6fa245b277695816857 100644 (file)
 
 #include <stdio.h>
 #include <string.h>
-#include <ncurses.h>
+#include <curses.h>
 #include <assert.h>
 #include <signal.h>
 
 extern "C" {
-#include "config.h"
-#include "dpkg.h"
-#include "dpkg-db.h"
+#include <config.h>
+#include <dpkg.h>
+#include <dpkg-db.h>
 }
 #include "dselect.h"
 #include "bindings.h"
@@ -122,13 +122,13 @@ int packagelist::add(dependency *depends, showpriority displayimportance) {
        possi=possi->next, comma=(possi && possi->next ? ", " : " or ")) {
     info(comma);
     info(possi->ed->name);
-    if (possi->verrel != deppossi::dvr_none) {
+    if (possi->verrel != dvr_none) {
       switch (possi->verrel) {
-      case deppossi::dvr_earlierequal:  info(" (<= "); break;
-      case deppossi::dvr_laterequal:    info(" (>= "); break;
-      case deppossi::dvr_earlierstrict: info(" (<< "); break;
-      case deppossi::dvr_laterstrict:   info(" (>> "); break;
-      case deppossi::dvr_exact:         info(" (= "); break;
+      case dvr_earlierequal:  info(" (<= "); break;
+      case dvr_laterequal:    info(" (>= "); break;
+      case dvr_earlierstrict: info(" (<< "); break;
+      case dvr_laterstrict:   info(" (>> "); break;
+      case dvr_exact:         info(" (= "); break;
       default: internerr("unknown verrel");
       }
       info(versiondescribe(&possi->version,vdew_never));
@@ -139,7 +139,7 @@ int packagelist::add(dependency *depends, showpriority displayimportance) {
   add(depends->up,info.string(),displayimportance);
   for (possi=depends->list; possi; possi=possi->next) {
     add(possi->ed,info.string(),displayimportance);
-    if (possi->verrel == deppossi::dvr_none && depends->type != dep_provides) {
+    if (possi->verrel == dvr_none && depends->type != dep_provides) {
       // providers aren't relevant if a version was specified, or
       // if we're looking at a provider relationship already
       deppossi *provider;
index 00d642fc2bc2532eda46fb63bbfd7019993b6de7..80577786d9bd83a98a5c1b17e7bd95790417d416 100644 (file)
 
 #include <stdio.h>
 #include <string.h>
-#include <ncurses.h>
+#include <curses.h>
 #include <assert.h>
 #include <signal.h>
 #include <ctype.h>
 
 extern "C" {
-#include "config.h"
-#include "dpkg.h"
-#include "dpkg-db.h"
+#include <config.h>
+#include <dpkg.h>
+#include <dpkg-db.h>
 }
 #include "dselect.h"
 #include "pkglist.h"
diff --git a/dselect/rp b/dselect/rp
deleted file mode 100755 (executable)
index 6323488..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/bin/sh
-while cat p; do echo ===================; done
diff --git a/include/.cvsignore b/include/.cvsignore
new file mode 100644 (file)
index 0000000..70845e0
--- /dev/null
@@ -0,0 +1 @@
+Makefile.in
diff --git a/include/Makefile.am b/include/Makefile.am
new file mode 100644 (file)
index 0000000..031773a
--- /dev/null
@@ -0,0 +1,52 @@
+## Process this file with automake to produce a Makefile.in
+
+AUTOMAKE_OPTIONS       = 1.1 foreign
+
+## Directory definitions
+
+pkgincludedir          = $(includedir)/@PACKAGE@
+pkglocalstatedir       = $(localstatedir)/@PACKAGE@
+pkgsysconfdir          = $(sysconfdir)/@PACKAGE@
+
+methods_suffix         = methods
+pinfo_suffix           = info
+pupdates_suffix                = updates
+parts_suffix           = parts
+
+## Automake variables
+
+pkginclude_HEADERS     = dpkg.h dpkg-db.h tarfn.h
+noinst_HEADERS         = myopt.h
+EXTRA_DIST             = dpkg.h.in
+
+BUILT_SOURCES          = # dpkg.h
+CLEANFILES             = dpkg.h dpkg.h.new $(BUILT_SOURCES)
+
+MAINTAINERCLEANFILES   = $(srcdir)/Makefile.in
+
+## Rules
+
+.PHONY: install-data-local uninstall-local
+
+install-data-local:
+       $(mkinstalldirs) $(pkglocalstatedir)/{$(pinfo_suffix),$(pupdates_suffix)}
+
+uninstall-local:
+       -for d in $(pkglocalstatedir)/{$(pinfo_suffix),$(pupdates_suffix)} \
+               $(pkgincludedir) $(pkglocalstatedir) $(pkglocalstatedir); do \
+               [ -e $$d ] && rmdir $$d; \
+       done
+
+dpkg.h: stamp-dpkg.h
+stamp-dpkg.h: dpkg.h.in Makefile
+       sed 's:^\(#define ADMINDIR[     ]*"\).*\(".*\):\1$(pkglocalstatedir)\2:; \
+               s:^\(#define UPDATESDIR[        ]*"\).*\(".*\):\1$(pupdates_suffix)/\2:; \
+               s:^\(#define INFODIR[   ]*"\).*\(".*\):\1$(pinfo_suffix)/\2:; \
+               s:^\(#define PARTSDIR[  ]*"\).*\(".*\):\1$(parts_suffix)/\2:; \
+               s:^\(#define LIBDIR[    ]*"\).*\(".*\):\1$(pkglibdir)/\2:; \
+               s:^\(#define METHODSDIR[        ]*"\).*\(".*\):\1$(methods_suffix)\2:' \
+               < $< > dpkg.h.new
+       (cmp -s dpkg.h.new dpkg.h) || mv -f dpkg.h.new dpkg.h
+       touch $@
+
+## End of file.
diff --git a/include/Makefile.in b/include/Makefile.in
deleted file mode 100644 (file)
index b2c0ddc..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright (C) 1994 Ian Murdock <imurdock@debian.org>
-# Copyright (C) 1994,1995 Ian Jackson <ijackson@nyx.cs.du.edu>
-#
-#   This is free software; you can redistribute it and/or modify
-#   it under the terms of the GNU General Public License as
-#   published by the Free Software Foundation; either version 2,
-#   or (at your option) any later version.
-#
-#   This is distributed in the hope that it will be useful, but
-#   WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#   GNU General Public License for more details.
-#
-#   You should have received a copy of the GNU General Public
-#   License along with dpkg; if not, write to the Free Software
-#   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-all:
-
-clean:
-               rm -f core
-
-distclean:     clean
-               rm -f Makefile *.orig *~ *.~* ./#*#
-
-install:       all
index e84745d7bc3fc7c9867aa5b10d3c8d6f34670800..0a58faa9a3c0c2b05e9dec8585a2a7d36ac395b8 100644 (file)
 #include <stdio.h>
 #include <stdlib.h>
 
+struct versionrevision {
+  unsigned long epoch;
+  const char *version;
+  const char *revision;
+};  
+
 enum deptype {
   dep_suggests,
   dep_recommends,
@@ -35,36 +41,33 @@ enum deptype {
   dep_replaces
 };
 
-struct dependency { /* dy */
+enum depverrel {
+  dvrf_earlier=      0001,
+  dvrf_later=        0002,
+  dvrf_strict=       0010,
+  dvrf_orequal=      0020,
+  dvrf_builtup=      0100,
+  dvr_none=          0200,
+  dvr_earlierequal=  dvrf_builtup | dvrf_earlier | dvrf_orequal,
+  dvr_earlierstrict= dvrf_builtup | dvrf_earlier | dvrf_strict,
+  dvr_laterequal=    dvrf_builtup | dvrf_later   | dvrf_orequal,
+  dvr_laterstrict=   dvrf_builtup | dvrf_later   | dvrf_strict,
+  dvr_exact=         0400
+};
+
+struct dependency {
   struct pkginfo *up;
   struct dependency *next;
   struct deppossi *list;
   enum deptype type;
 };
 
-struct versionrevision {
-  unsigned long epoch;
-  char *version, *revision;
-};  
-
-struct deppossi { /* do */
+struct deppossi {
   struct dependency *up;
   struct pkginfo *ed;
   struct deppossi *next, *nextrev, *backrev;
-  enum depverrel {
-    dvrf_earlier=      0001,
-    dvrf_later=        0002,
-    dvrf_strict=       0010,
-    dvrf_orequal=      0020,
-    dvrf_builtup=      0100,
-    dvr_none=          0200,
-    dvr_earlierequal=  dvrf_builtup | dvrf_earlier | dvrf_orequal,
-    dvr_earlierstrict= dvrf_builtup | dvrf_earlier | dvrf_strict,
-    dvr_laterequal=    dvrf_builtup | dvrf_later   | dvrf_orequal,
-    dvr_laterstrict=   dvrf_builtup | dvrf_later   | dvrf_strict,
-    dvr_exact=         0400
-  } verrel;
   struct versionrevision version;
+  enum depverrel verrel;
   int cyclebreak;
 };
 
@@ -82,7 +85,10 @@ struct conffile {
 
 struct filedetails {
   struct filedetails *next;
-  char *name, *msdosname, *size, *md5sum;
+  char *name;
+  char *msdosname;
+  char *size;
+  char *md5sum;
 };
 
 struct pkginfoperfile { /* pif */
similarity index 92%
rename from include/dpkg.h
rename to include/dpkg.h.in
index d00f77fee1eca8bb4d9165b59eafc6ff0978ad01..4c91940c45fbc45db7b9140190ead5890a448c6d 100644 (file)
@@ -1,4 +1,3 @@
-
 /*
  * libdpkg - Debian packaging suite library routines
  * dpkg.h - general header for Debian package handling
@@ -27,6 +26,7 @@
 #include <stdarg.h>
 #include <stdio.h>
 #include <sys/types.h>
+#include <sys/sysinfo.h>
 
 #define ARCHIVEVERSION     "2.0"
 #define SPLITVERSION       "2.1"
 
 #define TARBLKSZ     512
 
+/* Take care of NLS matters.  */
+
+#if HAVE_LOCALE_H
+# include <locale.h>
+#endif
+#if !HAVE_SETLOCALE
+# define setlocale(Category, Locale) /* empty */
+#endif
+
+#if ENABLE_NLS
+# include <libintl.h>
+# define _(Text) gettext (Text)
+# define N_(Text) Text
+#else
+# undef bindtextdomain
+# define bindtextdomain(Domain, Directory) /* empty */
+# undef textdomain
+# define textdomain(Domain) /* empty */
+# define _(Text) Text
+# define N_(Text) Text
+#endif
+
 extern const char thisname[]; /* defined separately in each program */
 extern const char printforhelp[];
 
diff --git a/insert-version.pl b/insert-version.pl
deleted file mode 100755 (executable)
index 4b1451d..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/usr/bin/perl --
-chop($v=`pwd`);
-$v =~ s,^.*/dpkg-,, || die;
-$v =~ s,/\w+$,,;
-$v =~ m,^[-0-9.]+$, || die;
-while (<STDIN>) {
-    $_= $1.$v.$2."\n" if
-        m|^(#define DPKG_VERSION ")[-0-9.]+(" /\* This line modified by Makefile \*/)$|;
-    $_= $1.$v.$2."\n" if
-        m/^(\$version= ')[-0-9.]+('; # This line modified by Makefile)$/;
-    $_= $1.$v.$2."\n" if
-        m/^(version=")[-0-9.]+("; # This line modified by Makefile)$/;
-    print || die;
-}
diff --git a/install.sh b/install.sh
deleted file mode 100755 (executable)
index 0ff4b6a..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-#!/bin/sh
-
-#
-# install - install a program, script, or datafile
-# This comes from X11R5; it is not part of GNU.
-#
-# $XConsortium: install.sh,v 1.2 89/12/18 14:47:22 jim Exp $
-#
-# This script is compatible with the BSD install script, but was written
-# from scratch.
-#
-
-
-# set DOITPROG to echo to test this script
-
-# Don't use :- since 4.3BSD and earlier shells don't like it.
-doit="${DOITPROG-}"
-
-
-# put in absolute paths if you don't have them in your path; or use env. vars.
-
-mvprog="${MVPROG-mv}"
-cpprog="${CPPROG-cp}"
-chmodprog="${CHMODPROG-chmod}"
-chownprog="${CHOWNPROG-chown}"
-chgrpprog="${CHGRPPROG-chgrp}"
-stripprog="${STRIPPROG-strip}"
-rmprog="${RMPROG-rm}"
-
-instcmd="$mvprog"
-chmodcmd=""
-chowncmd=""
-chgrpcmd=""
-stripcmd=""
-rmcmd="$rmprog -f"
-mvcmd="$mvprog"
-src=""
-dst=""
-
-while [ x"$1" != x ]; do
-    case $1 in
-       -c) instcmd="$cpprog"
-           shift
-           continue;;
-
-       -m) chmodcmd="$chmodprog $2"
-           shift
-           shift
-           continue;;
-
-       -o) chowncmd="$chownprog $2"
-           shift
-           shift
-           continue;;
-
-       -g) chgrpcmd="$chgrpprog $2"
-           shift
-           shift
-           continue;;
-
-       -s) stripcmd="$stripprog"
-           shift
-           continue;;
-
-       *)  if [ x"$src" = x ]
-           then
-               src=$1
-           else
-               dst=$1
-           fi
-           shift
-           continue;;
-    esac
-done
-
-if [ x"$src" = x ]
-then
-       echo "install:  no input file specified"
-       exit 1
-fi
-
-if [ x"$dst" = x ]
-then
-       echo "install:  no destination specified"
-       exit 1
-fi
-
-
-# If destination is a directory, append the input filename; if your system
-# does not like double slashes in filenames, you may need to add some logic
-
-if [ -d $dst ]
-then
-       dst="$dst"/`basename $src`
-fi
-
-# Make a temp file name in the proper directory.
-
-dstdir=`dirname $dst`
-dsttmp=$dstdir/#inst.$$#
-
-# Move or copy the file name to the temp name
-
-$doit $instcmd $src $dsttmp
-
-# and set any options; do chmod last to preserve setuid bits
-
-if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; fi
-if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; fi
-if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; fi
-if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; fi
-
-# Now rename the file to the real destination.
-
-$doit $rmcmd $dst
-$doit $mvcmd $dsttmp $dst
-
-
-exit 0
diff --git a/lib/.cvsignore b/lib/.cvsignore
new file mode 100644 (file)
index 0000000..70845e0
--- /dev/null
@@ -0,0 +1 @@
+Makefile.in
diff --git a/lib/Makefile.am b/lib/Makefile.am
new file mode 100644 (file)
index 0000000..4a8de2d
--- /dev/null
@@ -0,0 +1,43 @@
+## Process this file with automake to produce a Makefile.in
+
+AUTOMAKE_OPTIONS       = 1.1 foreign
+
+## Directory definitions
+
+docdir                 = $(prefix)/doc
+pkgdocdir              = $(docdir)/@PACKAGE@
+copyingfile            = $(pkgdocdir)/copyright
+
+## Various options
+
+CFLAGS                 = @CFLAGS@ @CWARNS@ -g $(XCFLAGS)
+OPTCFLAGS              = @CFLAGS@ @OPTCFLAGS@ @CWARNS@ -g $(XCFLAGS)
+LDFLAGS                        = @LDFLAGS@ $(XLDFLAGS)
+LIBS                   = @LIBS@ $(XLIBS)
+
+CXXFLAGS               = @CXXFLAGS@ @CWARNS@ -g $(XCXXFLAGS)
+OPTCXXFLAGS            = @CXXFLAGS@ @OPTCFLAGS@ @CWARNS@ -g $(XCXXFLAGS)
+
+DEFS                   = -I$(top_srcdir)/include -I$(top_srcdir) -I$(srcdir) \
+                         -I$(top_builddir) -I$(top_builddir)/include -I. \
+                         -I$(top_srcdir)/intl -I$(top_builddir)/intl @DEFS@ \
+                         -DCOPYINGFILE=\"$(copyingfile)\"
+
+## Automake variables
+
+lib_LTLIBRARIES                = libdpkg.la
+noinst_OBJECTS         = myopt.o
+
+libdpkg_la_SOURCES     = ehandle.c mlib.c parse.c parsehelp.c fields.c dump.c \
+                         nfmalloc.c varbuf.c database.c vercmp.c \
+                         compat.c lock.c dbmodify.c showcright.c \
+                         tarfn.c parsedump.h
+libdpkg_la_LDFLAGS     = -version-info 0:0:0 -rpath $(libdir)
+
+EXTRA_DIST             = myopt.c
+
+all: myopt.o
+
+MAINTAINERCLEANFILES   = $(srcdir)/Makefile.in
+
+## End of file.
diff --git a/lib/Makefile.in b/lib/Makefile.in
deleted file mode 100644 (file)
index 50d8dd5..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-# Copyright (C) 1994 Ian Murdock <imurdock@debian.org>
-# Copyright (C) 1994,1995 Ian Jackson <ijackson@nyx.cs.du.edu>
-#
-#   This is free software; you can redistribute it and/or modify
-#   it under the terms of the GNU General Public License as
-#   published by the Free Software Foundation; either version 2,
-#   or (at your option) any later version.
-#
-#   This is distributed in the hope that it will be useful, but
-#   WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#   GNU General Public License for more details.
-#
-#   You should have received a copy of the GNU General Public
-#   License along with dpkg; if not, write to the Free Software
-#   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-srcdir = @srcdir@
-VPATH = @srcdir@
-
-prefix = @prefix@
-copyingfile = $(prefix)/doc/dpkg/copyright
-
-SRC =  ehandle.c mlib.c parse.c parsehelp.c fields.c dump.c nfmalloc.c \
-       varbuf.c database.c myopt.c vercmp.c compat.c lock.c dbmodify.c \
-       showcright.c tarfn.c star.c
-OBJ =  ehandle.o mlib.o parse.o parsehelp.o fields.o dump.o nfmalloc.o \
-       varbuf.o database.o myopt.o vercmp.o compat.o lock.o dbmodify.o \
-       showcright.o tarfn.o star.o
-
-INSTALL = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_DATA = @INSTALL_DATA@
-
-CC = @CC@
-
-CFLAGS = @CFLAGS@ @CWARNS@ $(XCFLAGS) -g # fixme: remove -g
-OPTCFLAGS = @OPTCFLAGS@
-LDFLAGS = -s $(XLDFLAGS)
-ALL_CFLAGS = -I../include -I.. @DEFS@ $(CFLAGS)
-ALL_CFLAGS_OPT = $(ALL_CFLAGS) $(OPTCFLAGS)
-
-AR = ar crv
-RANLIB = @RANLIB@
-
-.SUFFIXES:     .c .o
-
-all:           libdpkg.a
-
-libdpkg.a:     $(OBJ)
-               $(AR) libdpkg.a $(OBJ)
-               $(RANLIB) libdpkg.a
-
-showcright.o:  showcright.c
-               $(CC) -DCOPYINGFILE=\"$(copyingfile)\" $(ALL_CFLAGS) -c $<
-
-.c.o:
-               $(CC) $(ALL_CFLAGS) -c $<
-
-# These next few files are very heavily used, and should be optimised
-# for speed rather than space.  (ALL_CFLAGS_OPT usually means -O3.)
-database.o:    database.c
-               $(CC) $(ALL_CFLAGS_OPT) -c $<
-
-fields.o:      fields.c
-               $(CC) $(ALL_CFLAGS_OPT) -c $<
-
-nfmalloc.o:    nfmalloc.c
-               $(CC) $(ALL_CFLAGS_OPT) -c $<
-
-parse.o:       parse.c
-               $(CC) $(ALL_CFLAGS_OPT) -c $<
-
-parsehelp.o:   parsehelp.c
-               $(CC) $(ALL_CFLAGS_OPT) -c $<
-
-varbuf.o:      varbuf.c
-               $(CC) $(ALL_CFLAGS_OPT) -c $<
-
-clean:
-               rm -f *.o core libdpkg.a
-
-distclean:     clean
-               rm -f Makefile *.orig *~ *.~* ./#*#
-
-install:       all
-
-dump.o fields.o parse.o parsehelp.o vercmp.o:  parsedump.h
-$(OBJ):                        ../include/dpkg.h ../include/dpkg-db.h
-myopt.o:               ../include/myopt.h
-tarfn.o star.o:                ../include/tarfn.h
index 90abd4e8ad2abf59b65df3aaf6ac9daeb333a5bd..b5cd17cb1dd6c803f54184f59ceea593e4ae4d77 100644 (file)
@@ -30,8 +30,8 @@
 #include <sys/stat.h>
 #include <unistd.h>
 
-#include "config.h"
-#include "dpkg.h"
+#include <config.h>
+#include <dpkg.h>
 
 #ifndef HAVE_VSNPRINTF
 int vsnprintf (char *buf, size_t maxsize, const char *fmt, va_list al) {
@@ -43,15 +43,15 @@ int vsnprintf (char *buf, size_t maxsize, const char *fmt, va_list al) {
 
   if (maxsize == 0) return -1;
   if (!file) {
-    file= tmpfile(); if (!file) ohshite("unable to open tmpfile for vsnprintf");
+    file= tmpfile(); if (!file) ohshite(_("unable to open tmpfile for vsnprintf"));
   } else {
-    if (fseek(file,0,0)) ohshite("unable to rewind at start of vsnprintf");
-    if (ftruncate(fileno(file),0)) ohshite("unable to truncate in vsnprintf");
+    if (fseek(file,0,0)) ohshite(_("unable to rewind at start of vsnprintf"));
+    if (ftruncate(fileno(file),0)) ohshite(_("unable to truncate in vsnprintf"));
   }
-  if (vfprintf(file,fmt,al) == EOF) ohshite("write error in vsnprintf");
-  if (fflush(file)) ohshite("unable to flush in vsnprintf");
-  if (fstat(fileno(file),&stab)) ohshite("unable to stat in vsnprintf");
-  if (fseek(file,0,0)) ohshite("unable to rewind in vsnprintf");
+  if (vfprintf(file,fmt,al) == EOF) ohshite(_("write error in vsnprintf"));
+  if (fflush(file)) ohshite(_("unable to flush in vsnprintf"));
+  if (fstat(fileno(file),&stab)) ohshite(_("unable to stat in vsnprintf"));
+  if (fseek(file,0,0)) ohshite(_("unable to rewind in vsnprintf"));
   want= stab.st_size;
   if (want >= maxsize) {
     want= maxsize-1; retval= -1;
@@ -59,7 +59,7 @@ int vsnprintf (char *buf, size_t maxsize, const char *fmt, va_list al) {
     retval= want;
   }
   nr= fread(buf,1,want-1,file);
-  if (nr != want-1) ohshite("read error in vsnprintf truncated");
+  if (nr != want-1) ohshite(_("read error in vsnprintf truncated"));
   buf[want]= 0;
 
   return retval;
@@ -72,7 +72,7 @@ extern const int sys_nerr;
 const char *strerror(int e) {
   static char buf[100];
   if (e >= 0 && e < sys_nerr) return sys_errlist[e];
-  sprintf(buf, "System error no.%d", e);
+  sprintf(buf, _("System error no.%d"), e);
   return buf;
 }
 #endif
@@ -82,7 +82,7 @@ extern const char *const sys_siglist[];
 const char *strsignal(int e) {
   static char buf[100];
   if (e >= 0 && e < NSIG) return sys_siglist[e];
-  sprintf(buf, "Signal no.%d", e);
+  sprintf(buf, _("Signal no.%d"), e);
   return buf;
 }
 #endif
index e2043116126d78348a730882a469c589db436c51..dc6f25b5e06116a57e3ba9b1aa25e1cb04953e35 100644 (file)
@@ -22,9 +22,9 @@
 #include <ctype.h>
 #include <string.h>
 
-#include "config.h"
-#include "dpkg.h"
-#include "dpkg-db.h"
+#include <config.h>
+#include <dpkg.h>
+#include <dpkg-db.h>
 
 #define BINS (1 << 7)
  /* This must always be a power of two.  If you change it
@@ -233,7 +233,7 @@ void hashreport(FILE *file) {
   }
   for (i=npackages; i>0 && freq[i]==0; i--);
   while (i>=0) { fprintf(file,"size %7d occurs %5d times\n",i,freq[i]); i--; }
-  if (ferror(file)) ohshite("failed write during hashreport");
+  if (ferror(file)) ohshite(_("failed write during hashreport"));
 }
 
 /*
@@ -255,3 +255,10 @@ void hashreport(FILE *file) {
  * xgames xherc xmach32 xmach8 xmono xnet xs3 xsvga xtexstuff xv
  * xvga16 xxgdb zip
  */
+
+
+
+
+
+
+
index 819d4db479c4b1eb7b2a4a8d0f94f503aa547d21..c21c3b5393587f641f46a69226553fef1e4249cf 100644 (file)
@@ -33,9 +33,9 @@
 #include <ctype.h>
 #include <assert.h>
 
-#include "config.h"
-#include "dpkg.h"
-#include "dpkg-db.h"
+#include <config.h>
+#include <dpkg.h>
+#include <dpkg-db.h>
 
 char *statusfile=0, *availablefile=0;
 
@@ -54,12 +54,12 @@ static int ulist_select(const struct dirent *de) {
   for (p= de->d_name, l=0; *p; p++, l++)
     if (!isdigit(*p)) return 0;
   if (l > IMPORTANTMAXLEN)
-    ohshit("updates directory contains file `%.250s' whose name is too long "
-           "(length=%d, max=%d)", de->d_name, l, IMPORTANTMAXLEN);
+    ohshit(_("updates directory contains file `%.250s' whose name is too long "
+           "(length=%d, max=%d)"), de->d_name, l, IMPORTANTMAXLEN);
   if (updateslength == -1) updateslength= l;
   else if (l != updateslength)
-    ohshit("updates directory contains files with different length names "
-           "(both %d and %d)", l, updateslength);
+    ohshit(_("updates directory contains files with different length names "
+           "(both %d and %d)"), l, updateslength);
   return 1;
 }
 
@@ -72,7 +72,7 @@ static void cleanupdates(void) {
   *updatefnrest= 0;
   updateslength= -1;
   cdn= scandir(updatefnbuf, &cdlist, &ulist_select, alphasort);
-  if (cdn == -1) ohshite("cannot scan updates directory `%.255s'",updatefnbuf);
+  if (cdn == -1) ohshite(_("cannot scan updates directory `%.255s'"),updatefnbuf);
 
   if (cdn) {
     
@@ -88,7 +88,7 @@ static void cleanupdates(void) {
       for (i=0; i<cdn; i++) {
         strcpy(updatefnrest, cdlist[i]->d_name);
         if (unlink(updatefnbuf))
-          ohshite("failed to remove incorporated update file %.255s",updatefnbuf);
+          ohshite(_("failed to remove incorporated update file %.255s"),updatefnbuf);
         free(cdlist[i]);
       }
     }
@@ -105,14 +105,14 @@ static void createimptmp(void) {
   onerr_abort++;
   
   importanttmp= fopen(importanttmpfile,"w");
-  if (!importanttmp) ohshite("unable to create %.250s",importanttmpfile);
+  if (!importanttmp) ohshite(_("unable to create %.250s"),importanttmpfile);
   for (i=0; i<512; i++) fputs("#padding\n",importanttmp);
   if (ferror(importanttmp))
-    ohshite("unable to fill %.250s with padding",importanttmpfile);
+    ohshite(_("unable to fill %.250s with padding"),importanttmpfile);
   if (fflush(importanttmp))
-    ohshite("unable flush %.250s after padding",importanttmpfile);
+    ohshite(_("unable flush %.250s after padding"),importanttmpfile);
   if (fseek(importanttmp,0,SEEK_SET))
-    ohshite("unable seek to start of %.250s after padding",importanttmpfile);
+    ohshite(_("unable seek to start of %.250s after padding"),importanttmpfile);
 
   onerr_abort--;
 }
@@ -140,14 +140,14 @@ enum modstatdb_rw modstatdb_init(const char *adir, enum modstatdb_rw readwritere
   case msdbrw_needsuperuser:
   case msdbrw_needsuperuserlockonly:
     if (getuid() || geteuid())
-      ohshit("requested operation requires superuser privilege");
+      ohshit(_("requested operation requires superuser privilege"));
     /* fall through */
   case msdbrw_write: case msdbrw_writeifposs:
     if (access(adir,W_OK)) {
       if (errno != EACCES)
-        ohshite("unable to access dpkg status area");
+        ohshite(_("unable to access dpkg status area"));
       else if (readwritereq == msdbrw_write)
-        ohshit("operation requires read/write access to dpkg status area");
+        ohshit(_("operation requires read/write access to dpkg status area"));
       cstatus= msdbrw_readonly;
     } else {
       lockdatabase(adir);
@@ -194,7 +194,7 @@ static void checkpoint(void) {
     sprintf(updatefnrest, IMPORTANTFMT, i);
     assert(strlen(updatefnrest)<=IMPORTANTMAXLEN); /* or we've made a real mess */
     if (unlink(updatefnbuf))
-      ohshite("failed to remove my own update file %.255s",updatefnbuf);
+      ohshite(_("failed to remove my own update file %.255s"),updatefnbuf);
   }
   nextupdate= 0;
 }
@@ -226,18 +226,18 @@ void modstatdb_note(struct pkginfo *pkg) {
   varbufreset(&uvb);
   varbufrecord(&uvb, pkg, &pkg->installed);
   if (fwrite(uvb.buf, 1, uvb.used, importanttmp) != uvb.used)
-    ohshite("unable to write updated status of `%.250s'", pkg->name);
+    ohshite(_("unable to write updated status of `%.250s'"), pkg->name);
   if (fflush(importanttmp))
-    ohshite("unable to flush updated status of `%.250s'", pkg->name);
+    ohshite(_("unable to flush updated status of `%.250s'"), pkg->name);
   if (ftruncate(fileno(importanttmp), uvb.used))
-    ohshite("unable to truncate for updated status of `%.250s'", pkg->name);
+    ohshite(_("unable to truncate for updated status of `%.250s'"), pkg->name);
   if (fsync(fileno(importanttmp)))
-    ohshite("unable to fsync updated status of `%.250s'", pkg->name);
+    ohshite(_("unable to fsync updated status of `%.250s'"), pkg->name);
   if (fclose(importanttmp))
-    ohshite("unable to close updated status of `%.250s'", pkg->name);
+    ohshite(_("unable to close updated status of `%.250s'"), pkg->name);
   sprintf(updatefnrest, IMPORTANTFMT, nextupdate);
   if (rename(importanttmpfile, updatefnbuf))
-    ohshite("unable to install updated status of `%.250s'", pkg->name);
+    ohshite(_("unable to install updated status of `%.250s'"), pkg->name);
   assert(strlen(updatefnrest)<=IMPORTANTMAXLEN); /* or we've made a real mess */
 
   nextupdate++;  
diff --git a/lib/debugmake b/lib/debugmake
deleted file mode 100755 (executable)
index 57ac0b1..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-set -x
-make 'XCFLAGS=-g -DMDEBUG -O0' LDFLAGS=-g 'LIBS= -lefence -L../lib -ldpkg' "$@"
index 5309bc7c86c6fd487ae7c2226cc7b16861177d9b..a43be264eef655a29b859ae8fdaf688d10c05fa9 100644 (file)
@@ -28,9 +28,9 @@
 #include <ctype.h>
 #include <assert.h>
 
-#include "config.h"
-#include "dpkg.h"
-#include "dpkg-db.h"
+#include <config.h>
+#include <dpkg.h>
+#include <dpkg-db.h>
 #include "parsedump.h"
 
 void w_name(struct varbuf *vb,
@@ -218,7 +218,7 @@ void writerecord(FILE *file, const char *filename,
   varbufinit(&vb);
   varbufrecord(&vb,pigp,pifp);
   varbufaddc(&vb,'\0');
-  if (!fputs(vb.buf,file))
+  if (fputs(vb.buf,file) < 0)
     ohshite("failed to write details of `%.50s' to `%.250s'", pigp->name, filename);
 }
 
@@ -232,6 +232,7 @@ void writedb(const char *filename, int available, int mustsync) {
   const char *which;
   FILE *file;
   struct varbuf vb;
+  int old_umask;
 
   which= available ? "available" : "status";
   oldfn= m_malloc(strlen(filename)+sizeof(OLDDBEXT));
@@ -240,11 +241,13 @@ void writedb(const char *filename, int available, int mustsync) {
   strcpy(newfn,filename); strcat(newfn,NEWDBEXT);
   varbufinit(&vb);
 
+  old_umask = umask(022);
   file= fopen(newfn,"w");
-  if (!file) ohshite("failed to open `%s' for writing %s information",filename,which);
+  umask(old_umask);
+  if (!file) ohshite(_("failed to open `%s' for writing %s information"),filename,which);
   
   if (setvbuf(file,writebuf,_IOFBF,sizeof(writebuf)))
-    ohshite("unable to set buffering on status file");
+    ohshite(_("unable to set buffering on status file"));
 
   it= iterpkgstart();
   while ((pigp= iterpkgnext(it)) != 0) {
@@ -254,25 +257,25 @@ void writedb(const char *filename, int available, int mustsync) {
     if (!pifp->valid) blankpackageperfile(pifp);
     varbufrecord(&vb,pigp,pifp);
     varbufaddc(&vb,'\n'); varbufaddc(&vb,0);
-    if (!fputs(vb.buf,file))
-      ohshite("failed to write %s record about `%.50s' to `%.250s'",
+    if (fputs(vb.buf,file) < 0)
+      ohshite(_("failed to write %s record about `%.50s' to `%.250s'"),
               which, pigp->name, filename);
     varbufreset(&vb);      
   }
   varbuffree(&vb);
   if (mustsync) {
     if (fflush(file))
-      ohshite("failed to flush %s information to `%.250s'", which, filename);
+      ohshite(_("failed to flush %s information to `%.250s'"), which, filename);
     if (fsync(fileno(file)))
-      ohshite("failed to fsync %s information to `%.250s'", which, filename);
+      ohshite(_("failed to fsync %s information to `%.250s'"), which, filename);
   }
-  if (fclose(file)) ohshite("failed to close `%.250s' after writing %s information",
+  if (fclose(file)) ohshite(_("failed to close `%.250s' after writing %s information"),
                             filename, which);
   unlink(oldfn);
   if (link(filename,oldfn) && errno != ENOENT)
-    ohshite("failed to link `%.250s' to `%.250s' for backup of %s info",
+    ohshite(_("failed to link `%.250s' to `%.250s' for backup of %s info"),
             filename, oldfn, which);
   if (rename(newfn,filename))
-    ohshite("failed to install `%.250s' as `%.250s' containing %s info",
+    ohshite(_("failed to install `%.250s' as `%.250s' containing %s info"),
             newfn, filename, which);
 }
index f0843b9d70b42d74961a116b9ee197277fc00c75..1b8bb925eaddbabfacc05e7b1b662313cd8f5e23 100644 (file)
@@ -27,9 +27,9 @@
 #include <stdarg.h>
 #include <assert.h>
 
-#include "config.h"
-#include "dpkg.h"
-#include "dpkg-db.h"
+#include <config.h>
+#include <dpkg.h>
+#include <dpkg-db.h>
 
 static const char *errmsg; /* points to errmsgbuf or malloc'd */
 static char errmsgbuf[4096];
@@ -77,7 +77,7 @@ void push_error_handler(jmp_buf *jbufp,
   necp= malloc(sizeof(struct errorcontext));
   if (!necp) {
     int e= errno;
-    strcpy(errmsgbuf, "out of memory pushing error handler: ");
+    strcpy(errmsgbuf, (_("out of memory pushing error handler: ")));
     strcat(errmsgbuf, strerror(e));  errmsg= errmsgbuf;
     if (econtext) longjmp(*econtext->jbufp,1);
     fprintf(stderr, "%s: %s\n", thisname, errmsgbuf); exit(2);
@@ -92,7 +92,7 @@ void push_error_handler(jmp_buf *jbufp,
 }
 
 static void print_error_cleanup(const char *emsg, const char *contextstring) {
-  fprintf(stderr, "%s: error while cleaning up:\n %s\n",thisname,emsg);
+  fprintf(stderr, _("%s: error while cleaning up:\n %s\n"),thisname,emsg);
 }
 
 static void run_cleanups(struct errorcontext *econ, int flagsetin) {
@@ -107,7 +107,7 @@ static void run_cleanups(struct errorcontext *econ, int flagsetin) {
      
   if (++preventrecurse > 3) {
     onerr_abort++;
-    fprintf(stderr, DPKG ": too many nested errors during error recovery !!\n");
+    fprintf(stderr, _("dpkg: too many nested errors during error recovery !!\n"));
     flagset= 0;
   } else {
     flagset= flagsetin;
@@ -180,7 +180,7 @@ void push_cleanup(void (*call1)(int argc, void **argv), int mask1,
   cep= malloc(sizeof(struct cleanupentry) + sizeof(char*)*(nargs+1));
   if (!cep) {
     if (nargs > sizeof(emergency.args)/sizeof(void*))
-      ohshite("out of memory for new cleanup entry with many arguments");
+      ohshite(_("out of memory for new cleanup entry with many arguments"));
     e= errno; cep= &emergency.ce;
   }
   cep->calls[0].call= call1; cep->calls[0].mask= mask1;
@@ -261,16 +261,18 @@ void badusage(const char *fmt, ...) {
   vsprintf(errmsgbuf,fmt,al);
   va_end(al);
   strcat(errmsgbuf,"\n\n");
-  strcat(errmsgbuf,printforhelp);
+  strcat(errmsgbuf,gettext(printforhelp));
   errmsg= errmsgbuf; 
   longjmp(*econtext->jbufp,1);
 }
 
 void werr(const char *fn) {
-  ohshite("error writing `%.250s'",fn);
+  ohshite(_("error writing `%.250s'"),fn);
 }
 
 void do_internerr(const char *string, int line, const char *file) {
-  fprintf(stderr,"%s:%d: internal error `%s'\n",file,line,string);
+  fprintf(stderr,_("%s:%d: internal error `%s'\n"),file,line,string);
   abort();
 }
+
+
index a2b26fb8a8467fd136e1e7090ac45237e7d10b75..47e186ac48253ab7a4fbb0c48312f3cfbc8f69f9 100644 (file)
 #include <ctype.h>
 #include <string.h>
 
-#include "config.h"
-#include "dpkg.h"
-#include "dpkg-db.h"
+#include <config.h>
+#include <dpkg.h>
+#include <dpkg-db.h>
 #include "parsedump.h"
 
-static int convert_string(const char *filename, int lno, const char *what, int otherwise,
-                          FILE *warnto, int *warncount, const struct pkginfo *pigp,
-                          const char *startp, const struct namevalue *nvip,
-                          const char **endpp) {
+static int convert_string
+(const char *filename, int lno, const char *what, int otherwise,
+ FILE *warnto, int *warncount, const struct pkginfo *pigp,
+ const char *startp, const struct namevalue *nvip,
+ const char **endpp) 
+{
   const char *ep;
   int c, l;
 
@@ -42,12 +44,12 @@ static int convert_string(const char *filename, int lno, const char *what, int o
   while (nvip->name && (strncasecmp(nvip->name,startp,l) || nvip->name[l])) nvip++;
   if (!nvip->name) {
     if (otherwise != -1) return otherwise;
-    parseerr(0,filename,lno, warnto,warncount,pigp,0, "`%.*s' is not allowed for %s",
+    parseerr(0,filename,lno, warnto,warncount,pigp,0, _("`%.*s' is not allowed for %s"),
              l > 50 ? 50 : l, startp, what);
   }
   while (isspace(c)) c= *++ep;
   if (c && !endpp)
-    parseerr(0,filename,lno, warnto,warncount,pigp,0, "junk after %s",what);
+    parseerr(0,filename,lno, warnto,warncount,pigp,0, _("junk after %s"),what);
   if (endpp) *endpp= ep;
   return nvip->value;
 }
@@ -57,7 +59,7 @@ void f_name(struct pkginfo *pigp, struct pkginfoperfile *pifp, enum parsedbflags
             const char *value, const struct fieldinfo *fip) {
   const char *e;
   if ((e= illegal_packagename(value,0)) != 0)
-    parseerr(0,filename,lno, warnto,warncount,pigp,0, "invalid package name (%.250s)",e);
+    parseerr(0,filename,lno, warnto,warncount,pigp,0, _("invalid package name (%.250s)"),e);
   pigp->name= nfstrsave(value);
   findpackage(value); /* We discard the value from findpackage, but calling it
                        * forces an entry in the hash table to be made if it isn't
@@ -76,10 +78,10 @@ void f_filecharf(struct pkginfo *pigp, struct pkginfoperfile *pifp,
 
   if (!*value)
     parseerr(0,filename,lno, warnto,warncount,pigp,0,
-             "empty file details field `%s'",fip->name);
+             _("empty file details field `%s'"),fip->name);
   if (!(flags & pdb_recordavailable))
     parseerr(0,filename,lno, warnto,warncount,pigp,0,
-             "file details field `%s' not allowed in status file",fip->name);
+             _("file details field `%s' not allowed in status file"),fip->name);
   allowextend= !pigp->files;
   fdpp= &pigp->files;
   cpos= nfstrsave(value);
@@ -89,8 +91,8 @@ void f_filecharf(struct pkginfo *pigp, struct pkginfoperfile *pifp,
     fdp= *fdpp;
     if (!fdp) {
       if (!allowextend)
-        parseerr(0,filename,lno, warnto,warncount,pigp,0, "too many values "
-                 "in file details field `%s' (compared to others)",fip->name);
+        parseerr(0,filename,lno, warnto,warncount,pigp,0, _("too many values "
+                 "in file details field `%s' (compared to others)"),fip->name);
       fdp= nfmalloc(sizeof(struct filedetails));
       fdp->next= 0;
       fdp->name= fdp->msdosname= fdp->size= fdp->md5sum= 0;
@@ -102,8 +104,8 @@ void f_filecharf(struct pkginfo *pigp, struct pkginfoperfile *pifp,
     cpos= space;
   }
   if (*fdpp)
-    parseerr(0,filename,lno, warnto,warncount,pigp,0, "too few values "
-             "in file details field `%s' (compared to others)",fip->name);
+    parseerr(0,filename,lno, warnto,warncount,pigp,0, _("too few values "
+             "in file details field `%s' (compared to others)"),fip->name);
 }
 
 void f_charfield(struct pkginfo *pigp, struct pkginfoperfile *pifp,
@@ -151,7 +153,7 @@ void f_status(struct pkginfo *pigp, struct pkginfoperfile *pifp,
 
   if (flags & pdb_rejectstatus)
     parseerr(0,filename,lno, warnto,warncount,pigp,0,
-             "value for `status' field not allowed in this context");
+             _("value for `status' field not allowed in this context"));
   if (flags & pdb_recordavailable) return;
   
   pigp->want= convert_string(filename,lno,"first (want) word in `status' field", -1,
@@ -173,8 +175,8 @@ void f_version(struct pkginfo *pigp, struct pkginfoperfile *pifp,
   const char *emsg;
   
   emsg= parseversion(&pifp->version,value);
-  if (emsg) parseerr(0,filename,lno, warnto,warncount,pigp,0, "error "
-                     "in Version string `%.250s': %.250s",value,emsg);
+  if (emsg) parseerr(0,filename,lno, warnto,warncount,pigp,0, _("error "
+                     "in Version string `%.250s': %.250s"),value,emsg);
 }  
 
 void f_revision(struct pkginfo *pigp, struct pkginfoperfile *pifp,
@@ -184,7 +186,7 @@ void f_revision(struct pkginfo *pigp, struct pkginfoperfile *pifp,
   char *newversion;
 
   parseerr(0,filename,lno, warnto,warncount,pigp,1,
-           "obsolete `Revision' or `Package-Revision' field used");
+           _("obsolete `Revision' or `Package-Revision' field used"));
   if (!*value) return;
   if (pifp->version.revision && *pifp->version.revision) {
     newversion= nfmalloc(strlen(pifp->version.version)+strlen(pifp->version.revision)+2);
@@ -202,12 +204,12 @@ void f_configversion(struct pkginfo *pigp, struct pkginfoperfile *pifp,
   
   if (flags & pdb_rejectstatus)
     parseerr(0,filename,lno, warnto,warncount,pigp,0,
-             "value for `config-version' field not allowed in this context");
+             _("value for `config-version' field not allowed in this context"));
   if (flags & pdb_recordavailable) return;
 
   emsg= parseversion(&pigp->configversion,value);
-  if (emsg) parseerr(0,filename,lno, warnto,warncount,pigp,0, "error "
-                     "in Config-Version string `%.250s': %.250s",value,emsg);
+  if (emsg) parseerr(0,filename,lno, warnto,warncount,pigp,0, _("error "
+                     "in Config-Version string `%.250s': %.250s"),value,emsg);
 }
 
 void f_conffiles(struct pkginfo *pigp, struct pkginfoperfile *pifp,
@@ -222,19 +224,19 @@ void f_conffiles(struct pkginfo *pigp, struct pkginfoperfile *pifp,
   while (*value) {
     c= *value++;
     if (c == '\n') continue;
-    if (c != ' ') parseerr(0,filename,lno, warnto,warncount,pigp,0, "value for"
-                           " `conffiles' has line starting with non-space `%c'", c);
+    if (c != ' ') parseerr(0,filename,lno, warnto,warncount,pigp,0, _("value for"
+                           " `conffiles' has line starting with non-space `%c'"), c);
     for (endent= value; (c= *endent)!=0 && c != '\n'; endent++);
     for (endfn= endent; *endfn != ' '; endfn--);
     if (endfn <= value+1 || endfn >= endent-1)
       parseerr(0,filename,lno, warnto,warncount,pigp,0,
-               "value for `conffiles' has malformatted line `%.*s'",
+               _("value for `conffiles' has malformatted line `%.*s'"),
                (int)(endent-value > 250 ? 250 : endent-value), value);
     newlink= nfmalloc(sizeof(struct conffile));
     value= skip_slash_dotslash(value);
     namelen= (int)(endfn-value);
     if (namelen <= 0) parseerr(0,filename,lno, warnto,warncount,pigp,0,
-                               "root or null directory is listed as a conffile");
+                               _("root or null directory is listed as a conffile"));
     newlink->name= nfmalloc(namelen+2);
     newlink->name[0]= '/';
     memcpy(newlink->name+1,value,namelen);
@@ -277,11 +279,11 @@ void f_dependency(struct pkginfo *pigp, struct pkginfoperfile *pifp,
       }
       varbufaddc(&depname,0);
       if (!*depname.buf)
-        parseerr(0,filename,lno, warnto,warncount,pigp,0, "`%s' field, missing"
-                 " package name, or garbage where package name expected", fip->name);
+        parseerr(0,filename,lno, warnto,warncount,pigp,0, _("`%s' field, missing"
+                 " package name, or garbage where package name expected"), fip->name);
       emsg= illegal_packagename(depname.buf,0);
-      if (emsg) parseerr(0,filename,lno, warnto,warncount,pigp,0, "`%s' field,"
-                         " invalid package name `%.255s': %s",
+      if (emsg) parseerr(0,filename,lno, warnto,warncount,pigp,0, _("`%s' field,"
+                         " invalid package name `%.255s': %s"),
                          fip->name,depname.buf,emsg);
       dop= nfmalloc(sizeof(struct deppossi));
       dop->up= dyp;
@@ -311,14 +313,14 @@ void f_dependency(struct pkginfo *pigp, struct pkginfoperfile *pifp,
             p++;
           } else if (c2 == '<' || c2 == '>') {
             parseerr(0,filename,lno, warnto,warncount,pigp,0,
-                    "`%s' field, reference to `%.255s':\n"
-                    " bad version relationship %c%c",
+                    _("`%s' field, reference to `%.255s':\n"
+                    " bad version relationship %c%c"),
                     fip->name,depname.buf,c1,c2);
             dop->verrel= dvr_none;
           } else {
             parseerr(0,filename,lno, warnto,warncount,pigp,1,
-                     "`%s' field, reference to `%.255s':\n"
-                     " `%c' is obsolete, use `%c=' or `%c%c' instead",
+                     _("`%s' field, reference to `%.255s':\n"
+                     " `%c' is obsolete, use `%c=' or `%c%c' instead"),
                      fip->name,depname.buf,c1,c1,c1,c1);
             dop->verrel |= (dvrf_orequal | dvrf_builtup);
           }
@@ -327,15 +329,15 @@ void f_dependency(struct pkginfo *pigp, struct pkginfoperfile *pifp,
           p++;
         } else {
           parseerr(0,filename,lno, warnto,warncount,pigp,1,
-                   "`%s' field, reference to `%.255s':\n"
-                   " implicit exact match on version number, suggest using `=' instead",
+                   _("`%s' field, reference to `%.255s':\n"
+                   " implicit exact match on version number, suggest using `=' instead"),
                    fip->name,depname.buf);
           dop->verrel= dvr_exact;
         }
         if (!isspace(*p) && !isalnum(*p)) {
           parseerr(0,filename,lno, warnto,warncount,pigp,1,
-                   "`%s' field, reference to `%.255s':\n"
-                   " version value starts with non-alphanumeric, suggest adding a space",
+                   _("`%s' field, reference to `%.255s':\n"
+                   " version value starts with non-alphanumeric, suggest adding a space"),
                    fip->name,depname.buf);
         }
         while (isspace(*p)) p++;
@@ -344,16 +346,16 @@ void f_dependency(struct pkginfo *pigp, struct pkginfoperfile *pifp,
           p++;
         }
         if (*p == '(') parseerr(0,filename,lno, warnto,warncount,pigp,0,
-                                "`%s' field, reference to `%.255s': "
-                                "version contains `('",fip->name,depname.buf);
+                                _("`%s' field, reference to `%.255s': "
+                                "version contains `('"),fip->name,depname.buf);
         else if (*p == 0) parseerr(0,filename,lno, warnto,warncount,pigp,0,
-                                   "`%s' field, reference to `%.255s': "
-                                   "version unterminated",fip->name,depname.buf);
+                                   _("`%s' field, reference to `%.255s': "
+                                   "version unterminated"),fip->name,depname.buf);
         varbufaddc(&version,0);
         emsg= parseversion(&dop->version,version.buf);
         if (emsg) parseerr(0,filename,lno, warnto,warncount,pigp,0,
-                           "`%s' field, reference to `%.255s': "
-                           "error in version: %.255s",fip->name,depname.buf,emsg);
+                           _("`%s' field, reference to `%.255s': "
+                           "error in version: %.255s"),fip->name,depname.buf,emsg);
         p++; while (isspace(*p)) p++;
       } else {
         dop->verrel= dvr_none;
@@ -361,14 +363,14 @@ void f_dependency(struct pkginfo *pigp, struct pkginfoperfile *pifp,
       }
       if (!*p || *p == ',') break;
       if (*p != '|')
-        parseerr(0,filename,lno, warnto,warncount,pigp,0, "`%s' field, syntax"
-                 " error after reference to package `%.255s'",
+        parseerr(0,filename,lno, warnto,warncount,pigp,0, _("`%s' field, syntax"
+                 " error after reference to package `%.255s'"),
                  fip->name, dop->ed->name);
       if (fip->integer == dep_conflicts ||
           fip->integer == dep_provides ||
           fip->integer == dep_replaces)
         parseerr(0,filename,lno, warnto,warncount,pigp,0,
-                 "alternatives (`|') not allowed in %s field",
+                 _("alternatives (`|') not allowed in %s field"),
                  fip->name);
       p++; while (isspace(*p)) p++;
     }
index e0af62a784c3efbfe493ba9c8d3853e9bd8ecd14..624646823834907818d3d58828ba7e1c33053010 100644 (file)
@@ -28,9 +28,9 @@
 #include <fcntl.h>
 #include <sys/file.h>
 
-#include "config.h"
-#include "dpkg.h"
-#include "dpkg-db.h"
+#include <config.h>
+#include <dpkg.h>
+#include <dpkg-db.h>
 
 static char *dblockfile= 0;
 static int dblockfd= -1;
@@ -44,7 +44,7 @@ static void cu_unlockdb(int argc, void **argv) {
   fl.l_start= 0;
   fl.l_len= 1;
   if (fcntl(dblockfd,F_SETLK,&fl) == -1)
-    ohshite("unable to unlock dpkg status database");
+    ohshite(_("unable to unlock dpkg status database"));
 }
 
 void unlockdatabase(const char *admindir) {
@@ -65,8 +65,8 @@ void lockdatabase(const char *admindir) {
     dblockfd= open(dblockfile, O_RDWR|O_CREAT|O_TRUNC, 0660);
     if (dblockfd == -1) {
       if (errno == EPERM)
-        ohshit("you do not have permission to lock the dpkg status database");
-      ohshite("unable to open/create status database lockfile");
+        ohshit(_("you do not have permission to lock the dpkg status database"));
+      ohshite(_("unable to open/create status database lockfile"));
     }
   }
   fl.l_type= F_WRLCK;
@@ -75,8 +75,8 @@ void lockdatabase(const char *admindir) {
   fl.l_len= 1;
   if (fcntl(dblockfd,F_SETLK,&fl) == -1) {
     if (errno == EWOULDBLOCK || errno == EAGAIN)
-      ohshit("status database area is locked - another dpkg/dselect is running");
-    ohshite("unable to lock dpkg status database");
+      ohshit(_("status database area is locked - another dpkg/dselect is running"));
+    ohshite(_("unable to lock dpkg status database"));
   }
   push_cleanup(cu_unlockdb,~0, 0,0, 0);
 }
index 5fee2a4060ff663c7058f5f086b8b7162a4e62b1..df8acc8532968b26cdf4fbd3b371c44034a349a1 100644 (file)
@@ -28,8 +28,8 @@
 #include <sys/wait.h>
 #include <sys/types.h>
 
-#include "config.h"
-#include "dpkg.h"
+#include <config.h>
+#include <dpkg.h>
 
 /* Incremented when we do some kind of generally necessary operation, so that
  * loops &c know to quit if we take an error exit.  Decremented again afterwards.
@@ -44,7 +44,7 @@ void *m_malloc(size_t amount) {
   
   onerr_abort++;
   r= malloc(amount);
-  if (!r) ohshite("malloc failed (%ld bytes)",(long)amount);
+  if (!r) ohshite(_("malloc failed (%ld bytes)"),(long)amount);
   onerr_abort--;
   
 #ifdef MDEBUG
@@ -57,14 +57,14 @@ void *m_malloc(size_t amount) {
 void *m_realloc(void *r, size_t amount) {
   onerr_abort++;
   r= realloc(r,amount);
-  if (!r) ohshite("realloc failed (%ld bytes)",(long)amount);
+  if (!r) ohshite(_("realloc failed (%ld bytes)"),(long)amount);
   onerr_abort--;
 
   return r;
 }
 
 static void print_error_forked(const char *emsg, const char *contextstring) {
-  fprintf(stderr, "%s (subprocess): %s\n", thisname, emsg);
+  fprintf(stderr, _("%s (subprocess): %s\n"), thisname, emsg);
 }
 
 static void cu_m_fork(int argc, void **argv) {
@@ -77,7 +77,7 @@ static void cu_m_fork(int argc, void **argv) {
 int m_fork(void) {
   pid_t r;
   r= fork();
-  if (r == -1) { onerr_abort++; ohshite("fork failed"); }
+  if (r == -1) { onerr_abort++; ohshite(_("fork failed")); }
   if (r > 0) return r;
   push_cleanup(cu_m_fork,~0, 0,0, 0);
   set_error_display(print_error_forked,0);
@@ -90,27 +90,27 @@ void m_dup2(int oldfd, int newfd) {
   if (dup2(oldfd,newfd) == newfd) return;
 
   onerr_abort++;
-  if (newfd < 3) ohshite("failed to dup for std%s",stdstrings[newfd]);
-  ohshite("failed to dup for fd %d",newfd);
+  if (newfd < 3) ohshite(_("failed to dup for std%s"),stdstrings[newfd]);
+  ohshite(_("failed to dup for fd %d"),newfd);
 }
 
 void m_pipe(int *fds) {
   if (!pipe(fds)) return;
   onerr_abort++;
-  ohshite("failed to create pipe");
+  ohshite(_("failed to create pipe"));
 }
 
 void checksubprocerr(int status, const char *description, int sigpipeok) {
   int n;
   if (WIFEXITED(status)) {
     n= WEXITSTATUS(status); if (!n) return;
-    ohshit("subprocess %s returned error exit status %d",description,n);
+    ohshit(_("subprocess %s returned error exit status %d"),description,n);
   } else if (WIFSIGNALED(status)) {
     n= WTERMSIG(status); if (!n || (sigpipeok && n==SIGPIPE)) return;
-    ohshit("subprocess %s killed by signal (%s)%s",
+    ohshit(_("subprocess %s killed by signal (%s)%s"),
            description, strsignal(n), WCOREDUMP(status) ? ", core dumped" : "");
   } else {
-    ohshit("subprocess %s failed with wait status code %d",description,status);
+    ohshit(_("subprocess %s failed with wait status code %d"),description,status);
   }
 }
 
@@ -119,6 +119,6 @@ void waitsubproc(pid_t pid, const char *description, int sigpipeok) {
   int status;
 
   while ((r= waitpid(pid,&status,0)) == -1 && errno == EINTR);
-  if (r != pid) { onerr_abort++; ohshite("wait for %s failed",description); }
+  if (r != pid) { onerr_abort++; ohshite(_("wait for %s failed"),description); }
   checksubprocerr(status,description,sigpipeok);
 }
index b3c216739d072f1670c61332f7f317aaf49f3452..3a2d4a9c7f39807bac631b8392baca8fdd638fd7 100644 (file)
@@ -21,9 +21,9 @@
 
 #include <string.h>
 
-#include "config.h"
-#include "myopt.h"
-#include "dpkg.h"
+#include <config.h>
+#include <myopt.h>
+#include <dpkg.h>
 
 void myopt(const char *const **argvp, const struct cmdinfo *cmdinfos) {
   const struct cmdinfo *cip;
@@ -45,28 +45,28 @@ void myopt(const char *const **argvp, const struct cmdinfo *cmdinfos) {
         if (!strncmp(p,cip->olong,l) &&
             (p[l]== ((cip->takesvalue==2) ? '-' : '='))) { value=p+l+1; break; }
       }
-      if (!cip->olong) badusage("unknown option --%s",p);
+      if (!cip->olong) badusage(_("unknown option --%s"),p);
       if (cip->takesvalue) {
         if (!value) {
           value= *(*argvp)++;
-          if (!value) badusage("--%s option takes a value",cip->olong);
+          if (!value) badusage(_("--%s option takes a value"),cip->olong);
         }
         if (cip->call) cip->call(cip,value);
         else *cip->sassignto= value;
       } else {
-        if (value) badusage("--%s option does not take a value",cip->olong);
+        if (value) badusage(_("--%s option does not take a value"),cip->olong);
         if (cip->call) cip->call(cip,0);
         else *cip->iassignto= cip->arg;
       }
     } else {
       while (*p) {
         for (cip= cmdinfos; (cip->olong || cip->oshort) && *p != cip->oshort; cip++);
-        if (!cip->oshort) badusage("unknown option -%c",*p);
+        if (!cip->oshort) badusage(_("unknown option -%c"),*p);
         p++;
         if (cip->takesvalue) {
           if (!*p) {
             value= *(*argvp)++;
-            if (!value) badusage("-%c option takes a value",cip->oshort);
+            if (!value) badusage(_("-%c option takes a value"),cip->oshort);
           } else {
             value= p; p="";
             if (*value == '=') value++;
@@ -74,7 +74,7 @@ void myopt(const char *const **argvp, const struct cmdinfo *cmdinfos) {
           if (cip->call) cip->call(cip,value);
           else *cip->sassignto= value;
         } else {
-          if (*p == '=') badusage("-%c option does not take a value",cip->oshort);
+          if (*p == '=') badusage(_("-%c option does not take a value"),cip->oshort);
           if (cip->call) cip->call(cip,0);
           else *cip->iassignto= cip->arg;
         }
index 225e698464462156991a0db6130b1ea164edd6c5..d2703b13e9ecc00689c95369d4a77122b3c6809a 100644 (file)
@@ -22,9 +22,9 @@
 #include <stdlib.h>
 #include <string.h>
 
-#include "config.h"
-#include "dpkg.h"
-#include "dpkg-db.h"
+#include <config.h>
+#include <dpkg.h>
+#include <dpkg-db.h>
 
 #define ABLOCKSIZE 65536
 #define UNIQUE      4096
index 728756aeb172cd93f5fd7c33d447b7596af67d1b..c1b4164a11f270e6d6109f1e3807882df7ec39e1 100644 (file)
@@ -24,9 +24,9 @@
 #include <ctype.h>
 #include <stdarg.h>
 
-#include "config.h"
-#include "dpkg.h"
-#include "dpkg-db.h"
+#include <config.h>
+#include <dpkg.h>
+#include <dpkg-db.h>
 #include "parsedump.h"
 
 const struct fieldinfo fieldinfos[]= {
@@ -87,11 +87,11 @@ int parsedb(const char *filename, enum parsedbflags flags,
   if (warncount) *warncount= 0;
   newpifp= (flags & pdb_recordavailable) ? &newpig.available : &newpig.installed;
   file= fopen(filename,"r");
-  if (!file) ohshite("failed to open package info file `%.255s' for reading",filename);
+  if (!file) ohshite(_("failed to open package info file `%.255s' for reading"),filename);
 
   if (!donep) /* Reading many packages, use a nice big buffer. */
     if (setvbuf(file,readbuf,_IOFBF,sizeof(readbuf)))
-      ohshite("unable to set buffering on status file");
+      ohshite(_("unable to set buffering on status file"));
 
   push_cleanup(cu_parsedb,~0, 0,0, 1,(void*)file);
   varbufinit(&field); varbufinit(&value);
@@ -118,16 +118,16 @@ int parsedb(const char *filename, enum parsedbflags flags,
       while (c != EOF && c != '\n' && isspace(c)) c= getc(file);
       if (c == EOF)
         parseerr(file,filename,lno, warnto,warncount,&newpig,0,
-                 "EOF after field name `%.50s'",field.buf);
+                 _("EOF after field name `%.50s'"),field.buf);
       if (c == '\n')
         parseerr(file,filename,lno, warnto,warncount,&newpig,0,
-                 "newline in field name `%.50s'",field.buf);
+                 _("newline in field name `%.50s'"),field.buf);
       if (c == MSDOS_EOF_CHAR)
         parseerr(file,filename,lno, warnto,warncount,&newpig,0,
-                 "MSDOS EOF (^Z) in field name `%.50s'", field.buf);
+                 _("MSDOS EOF (^Z) in field name `%.50s'"), field.buf);
       if (c != ':')
         parseerr(file,filename,lno, warnto,warncount,&newpig,0,
-                 "field name `%.50s' must be followed by colon", field.buf);
+                 _("field name `%.50s' must be followed by colon"), field.buf);
       varbufreset(&value);
       for (;;) {
         c= getc(file);
@@ -135,11 +135,11 @@ int parsedb(const char *filename, enum parsedbflags flags,
       }
       if (c == EOF)
         parseerr(file,filename,lno, warnto,warncount,&newpig,0,
-                 "EOF before value of field `%.50s' (missing final newline)",
+                 _("EOF before value of field `%.50s' (missing final newline)"),
                  field.buf);
       if (c == MSDOS_EOF_CHAR)
         parseerr(file,filename,lno, warnto,warncount,&newpig,0,
-                 "MSDOS EOF char in value of field `%.50s' (missing newline?)",
+                 _("MSDOS EOF char in value of field `%.50s' (missing newline?)"),
                  field.buf);
       for (;;) {
         if (c == '\n' || c == MSDOS_EOF_CHAR) {
@@ -150,7 +150,7 @@ int parsedb(const char *filename, enum parsedbflags flags,
           c= '\n';
         } else if (c == EOF) {
           parseerr(file,filename,lno, warnto,warncount,&newpig,0,
-                   "EOF during value of field `%.50s' (missing final newline)",
+                   _("EOF during value of field `%.50s' (missing final newline)"),
                    field.buf);
         }
         varbufaddc(&value,c);
@@ -167,17 +167,17 @@ int parsedb(const char *filename, enum parsedbflags flags,
       if (fip->name) {
         if (*ip++)
           parseerr(file,filename,lno, warnto,warncount,&newpig,0,
-                   "duplicate value for `%s' field", fip->name);
+                   _("duplicate value for `%s' field"), fip->name);
         fip->rcall(&newpig,newpifp,flags,filename,lno-1,warnto,warncount,value.buf,fip);
       } else {
         if (strlen(fieldname)<2)
           parseerr(file,filename,lno, warnto,warncount,&newpig,0,
-                   "user-defined field name `%s' too short", fieldname);
+                   _("user-defined field name `%s' too short"), fieldname);
         larpp= &newpifp->arbs;
         while ((arp= *larpp) != 0) {
           if (!strcasecmp(arp->name,fieldname))
             parseerr(file,filename,lno, warnto,warncount,&newpig,0,
-                     "duplicate value for user-defined field `%.50s'", fieldname);
+                     _("duplicate value for user-defined field `%.50s'"), fieldname);
           larpp= &arp->next;
         }
         arp= nfmalloc(sizeof(struct arbitraryfield));
@@ -190,7 +190,7 @@ int parsedb(const char *filename, enum parsedbflags flags,
     } /* loop per field */
     if (pdone && donep)
       parseerr(file,filename,lno, warnto,warncount,&newpig,0,
-               "several package info entries found, only one allowed");
+               _("several package info entries found, only one allowed"));
     parsemustfield(file,filename,lno, warnto,warncount,&newpig,0,
                    &newpig.name, "package name");
     if ((flags & pdb_recordavailable) || newpig.status != stat_notinstalled) {
@@ -218,7 +218,7 @@ int parsedb(const char *filename, enum parsedbflags flags,
       if (newpig.configversion.version) {
         if (newpig.status == stat_installed || newpig.status == stat_notinstalled)
           parseerr(file,filename,lno, warnto,warncount,&newpig,0,
-                   "Configured-Version for package with inappropriate Status");
+                   _("Configured-Version for package with inappropriate Status"));
       } else {
         if (newpig.status == stat_installed) newpig.configversion= newpifp->version;
       }
@@ -232,7 +232,7 @@ int parsedb(const char *filename, enum parsedbflags flags,
         newpig.status == stat_notinstalled &&
         newpifp->conffiles) {
       parseerr(file,filename,lno, warnto,warncount,&newpig,1,
-               "Package which in state not-installed has conffiles, forgetting them");
+               _("Package which in state not-installed has conffiles, forgetting them"));
       newpifp->conffiles= 0;
     }
 
@@ -280,10 +280,10 @@ int parsedb(const char *filename, enum parsedbflags flags,
     if (c == EOF) break;
     if (c == '\n') lno++;
   }
-  if (ferror(file)) ohshite("failed to read from `%.255s'",filename);
+  if (ferror(file)) ohshite(_("failed to read from `%.255s'"),filename);
   pop_cleanup(0);
-  if (fclose(file)) ohshite("failed to close after read: `%.255s'",filename);
-  if (donep && !pdone) ohshit("no package information in `%.255s'",filename);
+  if (fclose(file)) ohshite(_("failed to close after read: `%.255s'"),filename);
+  if (donep && !pdone) ohshit(_("no package information in `%.255s'"),filename);
 
   varbuffree(&field); varbuffree(&value);
   return pdone;
index c6b81f7dbbb3d3c276356336a63534a9794d9869..58ddeb4bedfdc86b3e7be10f146cebe40c0bc7d8 100644 (file)
 #include <ctype.h>
 #include <string.h>
 
-#include "config.h"
-#include "dpkg.h"
-#include "dpkg-db.h"
+#include <config.h>
+#include <dpkg.h>
+#include <dpkg-db.h>
 #include "parsedump.h"
 
-void parseerr(FILE *file, const char *filename, int lno, FILE *warnto, int *warncount,
-              const struct pkginfo *pigp, int warnonly,
-              const char *fmt, ...) {
+void parseerr
+(FILE *file, const char *filename, int lno, FILE *warnto, int *warncount,
+ const struct pkginfo *pigp, int warnonly,
+ const char *fmt, ...) 
+{
   va_list al;
   char buf1[768], buf2[1000], *p, *q;
-  if (file && ferror(file)) ohshite("failed to read `%s' at line %d",filename,lno);
-  sprintf(buf1, "%s, in file `%.255s' near line %d",
-          warnonly ? "warning" : "parse error", filename, lno);
+  if (file && ferror(file)) ohshite(_("failed to read `%s' at line %d"),filename,lno);
+  sprintf(buf1, _("%s, in file `%.255s' near line %d"),
+          warnonly ? _("warning") : _("parse error"), filename, lno);
   if (pigp && pigp->name) {
-    sprintf(buf2, " package `%.255s'", pigp->name);
+    sprintf(buf2, _(" package `%.255s'"), pigp->name);
     strcat(buf1,buf2);
   }
   for (p=buf1, q=buf2; *p; *q++= *p++) if (*p == '%') *q++= '%';
@@ -48,7 +50,7 @@ void parseerr(FILE *file, const char *filename, int lno, FILE *warnto, int *warn
   if (warnto) {
     strcat(q,"\n");
     if (vfprintf(warnto,buf2,al) == EOF)
-      ohshite("failed to write parsing warning");
+      ohshite(_("failed to write parsing warning"));
   }
   va_end(al);
 }
@@ -109,9 +111,9 @@ const char *illegal_packagename(const char *p, const char **ep) {
   static char buf[150];
   int c;
   
-  if (!*p) return "may not be empty string";
-  if (!isalnum(*p)) return "must start with an alphanumeric";
-  if (!*++p) return "must be at least two characters";
+  if (!*p) return _("may not be empty string");
+  if (!isalnum(*p)) return _("must start with an alphanumeric");
+  if (!*++p) return _("must be at least two characters");
   while ((c= *p++)!=0)
     if (!isalnum(c) && !strchr(alsoallowed,c)) break;
   if (!c) return 0;
@@ -119,8 +121,8 @@ const char *illegal_packagename(const char *p, const char **ep) {
     while (isspace(*p)) p++;
     *ep= p; return 0;
   }
-  sprintf(buf,
-          "character `%c' not allowed - only letters, digits and %s allowed",
+  snprintf(buf, sizeof(buf),
+          _("character `%c' not allowed - only letters, digits and %s allowed"),
           c, alsoallowed);
   return buf;
 }
@@ -141,9 +143,11 @@ int informativeversion(const struct versionrevision *version) {
           (version->revision && *version->revision));
 }
 
-void varbufversion(struct varbuf *vb,
-                   const struct versionrevision *version,
-                   enum versiondisplayepochwhen vdew) {
+void varbufversion
+(struct varbuf *vb,
+ const struct versionrevision *version,
+ enum versiondisplayepochwhen vdew) 
+{
   switch (vdew) {
   case vdew_never:
     break;
@@ -164,8 +168,10 @@ void varbufversion(struct varbuf *vb,
   }
 }
 
-const char *versiondescribe(const struct versionrevision *version,
-                            enum versiondisplayepochwhen vdew) {
+const char *versiondescribe
+(const struct versionrevision *version,
+ enum versiondisplayepochwhen vdew)
+{
   static struct varbuf bufs[10];
   static int bufnum=0;
 
@@ -185,14 +191,14 @@ const char *parseversion(struct versionrevision *rversion, const char *string) {
   char *hyphen, *colon, *eepochcolon;
   unsigned long epoch;
 
-  if (!*string) return "version string is empty";
+  if (!*string) return _("version string is empty");
   
   colon= strchr(string,':');
   if (colon) {
     epoch= strtoul(string,&eepochcolon,10);
-    if (colon != eepochcolon) return "epoch in version is not number";
-    if (!*++colon) return "nothing after colon in version number";
-    string= colon+1;
+    if (colon != eepochcolon) return _("epoch in version is not number");
+    if (!*++colon) return _("nothing after colon in version number");
+    string= colon;
     rversion->epoch= epoch;
   } else {
     rversion->epoch= 0;
@@ -205,16 +211,18 @@ const char *parseversion(struct versionrevision *rversion, const char *string) {
   return 0;
 }
 
-void parsemustfield(FILE *file, const char *filename, int lno,
-                    FILE *warnto, int *warncount,
-                    const struct pkginfo *pigp, int warnonly,
-                    char **value, const char *what) {
+void parsemustfield
+(FILE *file, const char *filename, int lno,
+ FILE *warnto, int *warncount,
+ const struct pkginfo *pigp, int warnonly,
+ char **value, const char *what) 
+{
   if (!*value) {
-    parseerr(file,filename,lno, warnto,warncount,pigp,warnonly, "missing %s",what);
+    parseerr(file,filename,lno, warnto,warncount,pigp,warnonly, _("missing %s"),what);
     *value= nfstrsave("");
   } else if (!**value) {
     parseerr(file,filename,lno, warnto,warncount,pigp,warnonly,
-             "empty value for %s",what);
+             _("empty value for %s"),what);
   }
 }
 
index 57de25f240e1cfe0e6d2a9739a9ac114b52d41f7..6abfa50fce780f94a16ef9866eaf51d9c48781b4 100644 (file)
 #include <unistd.h>
 #include <fcntl.h>
 
-#include "config.h"
-#include "dpkg.h"
+#include <config.h>
+#include <dpkg.h>
 
 void showcopyright(const struct cmdinfo *c, const char *v) {
   int fd;
   fd= open(COPYINGFILE,O_RDONLY);
-  if (fd < 0) ohshite("cannot open GPL file " COPYINGFILE);
+  if (fd < 0) ohshite(_("cannot open GPL file /usr/doc/dpkg/copyright"));
   m_dup2(fd,0);
   execlp(CAT,CAT,"-",(char*)0);
-  ohshite("unable to exec cat for displaying GPL file");
+  ohshite(_("unable to exec cat for displaying GPL file"));
 }
index e43ddf09bbbb07fff5999f393291e69c2b2f3ec2..7965cb412944d0635046cdf3b20faa9d0d07d65b 100644 (file)
@@ -1,4 +1,7 @@
-#include "tarfn.h"
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+#include <tarfn.h>
 #include <stdlib.h>
 #include <stdio.h>
 #include <unistd.h>
@@ -76,7 +79,11 @@ static int
 SetModes(TarInfo * i)
 {
        struct utimbuf t;
+#ifdef HAVE_LCHOWN
+       lchown(i->Name, i->UserID, i->GroupID);
+#else
        chown(i->Name, i->UserID, i->GroupID);
+#endif
        chmod(i->Name, i->Mode & ~S_IFMT);
        t.actime = time(0);
        t.modtime = i->ModTime;
index 5a16a164277fb8d071ef5bca6dd7c83ed8880217..8b049005f4a6d6a412af546f93efd8a4f15d90de 100644 (file)
@@ -5,12 +5,13 @@
  * This is free software under the GNU General Public License.
  */
 #include <stdlib.h>
+#include <string.h>
 #include <stdio.h>
 #include <unistd.h>
 #include <pwd.h>
 #include <grp.h>
 #include <errno.h>
-#include "tarfn.h"
+#include <tarfn.h>
 
 struct TarHeader {
        char Name[100];
index 5d1785c561cfcb176c2a765c63d98ee55c28f062..60c19abdc5c018878ff80505478ea6a54ff4a7ad 100644 (file)
  */
 
 #include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
 
-#include "config.h"
-#include "dpkg.h"
-#include "dpkg-db.h"
+#include <config.h>
+#include <dpkg.h>
+#include <dpkg-db.h>
 
 void varbufaddc(struct varbuf *v, int c) {
   if (v->used >= v->size) varbufextend(v);
@@ -71,7 +73,7 @@ void varbufextend(struct varbuf *v) {
 
   newsize= v->size + 80 + v->used;
   newbuf= realloc(v->buf,newsize);
-  if (!newbuf) ohshite("failed to realloc for variable buffer");
+  if (!newbuf) ohshite(_("failed to realloc for variable buffer"));
   v->size= newsize;
   v->buf= newbuf;
 }
index 2e18877f8a815d08e7169f2a3b2e9c8460037c9b..fecc74562ad1a9361776fa8c0f1f1585cbb09b7a 100644 (file)
@@ -22,9 +22,9 @@
 #include <ctype.h>
 #include <string.h>
 
-#include "config.h"
-#include "dpkg.h"
-#include "dpkg-db.h"
+#include <config.h>
+#include <dpkg.h>
+#include <dpkg-db.h>
 #include "parsedump.h"
 
 int epochsdiffer(const struct versionrevision *a,
@@ -66,7 +66,7 @@ int versioncompare(const struct versionrevision *version,
   int r;
 
   if (version->epoch > refversion->epoch) return 1;
-  if (version->epoch < refversion->epoch) return 1;
+  if (version->epoch < refversion->epoch) return -1;
   r= verrevcmp(version->version,refversion->version);  if (r) return r;
   return verrevcmp(version->revision,refversion->revision);
 }
diff --git a/main/.cvsignore b/main/.cvsignore
new file mode 100644 (file)
index 0000000..70845e0
--- /dev/null
@@ -0,0 +1 @@
+Makefile.in
diff --git a/main/Makefile.am b/main/Makefile.am
new file mode 100644 (file)
index 0000000..d90f5c6
--- /dev/null
@@ -0,0 +1,59 @@
+## Process this file with automake to produce a Makefile.in
+
+AUTOMAKE_OPTIONS       = 1.1 foreign
+
+## Directory definitions
+
+localedir              = $(datadir)/locale
+
+## Various options
+
+CFLAGS                 = @CFLAGS@ @CWARNS@ -g $(XCFLAGS) -DLOCALEDIR=\"$(localedir)\"
+OPTCFLAGS              = @CFLAGS@ @OPTCFLAGS@ @CWARNS@ -g $(XCFLAGS) -DLOCALEDIR=\"$(localedir)\"
+LDFLAGS                        = @LDFLAGS@ $(XLDFLAGS)
+LIBS                   = @INTLLIBS@ @LIBS@ $(XLIBS)
+
+CXXFLAGS               = @CXXFLAGS@ @CWARNS@ -g $(XCXXFLAGS) -DLOCALEDIR=\"$(localedir)\"
+OPTCXXFLAGS            = @CXXFLAGS@ @OPTCFLAGS@ @CWARNS@ -g $(XCXXFLAGS) -DLOCALEDIR=\"$(localedir)\"
+
+DEFS                   = -I$(top_srcdir)/include -I$(top_srcdir) -I$(srcdir) \
+                         -I$(top_builddir) -I$(top_builddir)/include -I. \
+                         -I$(top_srcdir)/intl -I$(top_builddir)/intl @DEFS@
+
+## Automake variables
+
+bin_PROGRAMS           = dpkg
+man_MANS               = dpkg.8
+
+dpkg_SOURCES           = main.c enquiry.c filesdb.c archives.c processarc.c \
+                         cleanup.c select.c packages.c configure.c remove.c \
+                         help.c depcon.c errors.c update.c main.h filesdb.h \
+                         archives.h
+dpkg_LDADD             = ../lib/libdpkg.la ../lib/myopt.o
+
+BUILT_SOURCES          = archtable.h
+CLEANFILES             = archtable.h.new $(BUILT_SOURCES)
+
+DISTCLEANFILES         = updates status available *.old
+MAINTAINERCLEANFILES   = $(srcdir)/Makefile.in
+
+EXTRA_DIST             = dpkg.8
+
+## Rules
+
+filesdb.o: filesdb.c
+       $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(OPTCFLAGS) -c $<
+
+$(DEP_FILES): archtable.h
+
+archtable.h: $(top_srcdir)/archtable
+       expand $(top_srcdir)/archtable | \
+        perl -ne 'print "  { \"$$1\",$$2\"$$3\",$$4\"$$5\" },\n" \
+                  if m/^\s*(\w+)(\s+)(\w+)(\s+)(\w+)\s*$$/' \
+               >$@.new
+       mv $@.new $@
+
+dist-hook:
+       cp -p  archtable.h $(distdir)/
+
+## End of file.
diff --git a/main/Makefile.in b/main/Makefile.in
deleted file mode 100644 (file)
index 1b4adc1..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-# Copyright (C) 1994 Ian Murdock <imurdock@debian.org>
-# Copyright (C) 1994,1995 Ian Jackson <ijackson@nyx.cs.du.edu>
-#
-#   This is free software; you can redistribute it and/or modify
-#   it under the terms of the GNU General Public License as
-#   published by the Free Software Foundation; either version 2,
-#   or (at your option) any later version.
-#
-#   This is distributed in the hope that it will be useful, but
-#   WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#   GNU General Public License for more details.
-#
-#   You should have received a copy of the GNU General Public
-#   License along with dpkg; if not, write to the Free Software
-#   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-srcdir = @srcdir@
-VPATH = @srcdir@
-
-prefix = @prefix@
-exec_prefix = $(prefix)
-bindir = $(exec_prefix)/bin
-libdir = $(prefix)/lib
-mandir = $(prefix)/man
-man8dir = $(mandir)/man8
-man8 = 8
-
-SRC = main.c enquiry.c filesdb.c archives.c processarc.c cleanup.c select.c \
-      packages.c configure.c remove.c help.c depcon.c errors.c update.c
-
-OBJ = main.o enquiry.o filesdb.o archives.o processarc.o cleanup.o select.o \
-      packages.o configure.o remove.o help.o depcon.o errors.o update.o
-
-INSTALL = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_DATA = @INSTALL_DATA@
-
-CC = @CC@
-
-CFLAGS = @CFLAGS@ @CWARNS@ -g $(XCFLAGS)
-OPTCFLAGS = @OPTCFLAGS@
-LDFLAGS = $(XLDFLAGS)
-LIBS = -L../lib -ldpkg $(XLIBS)
-ALL_CFLAGS = -I../include -I.. @DEFS@ $(CFLAGS)
-ALL_CFLAGS_OPT = $(ALL_CFLAGS) $(OPTCFLAGS)
-
-.SUFFIXES:     .c .o
-
-.c.o:
-               $(CC) $(ALL_CFLAGS) -c $<
-
-all:           dpkg
-
-dpkg:          $(OBJ) ../lib/libdpkg.a
-               $(CC) $(LDFLAGS) -o dpkg $(OBJ) $(LIBS)
-
-# This next file is very heavily used, and should be optimised
-# for speed rather than space.  (ALL_CFLAGS_OPT usually means -O3.)
-filesdb.o:     filesdb.c
-               $(CC) $(ALL_CFLAGS_OPT) -c $<
-
-archtable.inc: ../archtable
-               expand ../archtable | \
-                perl -ne 'print "  { \"$$1\",$$2\"$$3\",$$4\"$$5\" },\n" \
-                          if m/^\s*(\w+)(\s+)(\w+)(\s+)(\w+)\s*$$/' \
-                       >archtable.inc.new
-               mv archtable.inc.new archtable.inc
-
-clean:
-               rm -f *.o core dpkg *.new archtable.inc
-
-distclean:     clean
-               rm -f Makefile *.orig *~ *.~* ./#*#
-               rm -rf t updates status available *.old
-
-install:       all
-               $(INSTALL_PROGRAM) -s dpkg $(bindir)/dpkg
-               $(INSTALL_DATA) dpkg.8 $(man8dir)/dpkg.$(man8)
-
-$(OBJ):                        main.h ../config.h ../include/dpkg.h ../include/dpkg-db.h
-main.o:                                                ../version.h
-main.o enquiry.o errors.o update.o:            ../include/myopt.h
-enquiry.o:                                     filesdb.h archtable.inc
-filesdb.o:                                     filesdb.h
-packages.o remove.o configure.o:               filesdb.h ../include/myopt.h
-archives.o processarc.o help.o:                        filesdb.h ../include/myopt.h
-archives.o processarc.o:                       archives.h ../include/tarfn.h
index 5a1fa04c7bf5f97b4226fd359605c26f61c5f3fa..5b7769ce88d40dea8b2d3311f2cbb3f9250127cb 100644 (file)
@@ -19,6 +19,7 @@
  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
 
+#include <errno.h>
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
 #include <sys/stat.h>
 #include <sys/types.h>
 
-#include "config.h"
-#include "dpkg.h"
-#include "dpkg-db.h"
-#include "myopt.h"
-#include "tarfn.h"
+#include <config.h>
+#include <dpkg.h>
+#include <dpkg-db.h>
+#include <tarfn.h>
+#include <myopt.h>
 
 #include "filesdb.h"
 #include "main.h"
@@ -119,7 +120,7 @@ int tarfileread(void *ud, char *buf, int len) {
   int r;
   r= fread(buf,1,len,tc->backendpipe);
   if (r != len && ferror(tc->backendpipe))
-    ohshite("error reading from " BACKEND " pipe");
+    ohshite(_("error reading from dpkg-deb pipe"));
   return r;
 }
 
@@ -156,14 +157,14 @@ static void newtarobject_utime(const char *path, struct TarInfo *ti) {
   utb.actime= currenttime;
   utb.modtime= ti->ModTime;
   if (utime(path,&utb))
-    ohshite("error setting timestamps of `%.255s'",ti->Name);
+    ohshite(_("error setting timestamps of `%.255s'"),ti->Name);
 }
 
 static void newtarobject_allmodes(const char *path, struct TarInfo *ti) {
   if (chown(path,ti->UserID,ti->GroupID))
-    ohshite("error setting ownership of `%.255s'",ti->Name);
+    ohshite(_("error setting ownership of `%.255s'"),ti->Name);
   if (chmod(path,ti->Mode & ~S_IFMT))
-    ohshite("error setting permissions of `%.255s'",ti->Name);
+    ohshite(_("error setting permissions of `%.255s'"),ti->Name);
   newtarobject_utime(path,ti);
 }
 
@@ -244,8 +245,8 @@ int tarobject(struct TarInfo *ti) {
   if (nifd->namenode->divert && nifd->namenode->divert->camefrom) {
     divpkg= nifd->namenode->divert->pkg;
     forcibleerr(fc_overwritediverted,
-                "trying to overwrite `%.250s', which is the "
-                "diverted version of `%.250s'%.10s%.100s%.10s",
+                _("trying to overwrite `%.250s', which is the "
+                "diverted version of `%.250s'%.10s%.100s%.10s"),
                 nifd->namenode->name,
                 nifd->namenode->divert->camefrom->name,
                 divpkg ? " (package: " : "",
@@ -270,7 +271,7 @@ int tarobject(struct TarInfo *ti) {
   if (statr) {
     /* The lstat failed. */
     if (errno != ENOENT && errno != ENOTDIR)
-      ohshite("unable to stat `%.255s' (which I was about to install)",ti->Name);
+      ohshite(_("unable to stat `%.255s' (which I was about to install)"),ti->Name);
     /* OK, so it doesn't exist.
      * However, it's possible that we were in the middle of some other
      * backup/restore operation and were rudely interrupted.
@@ -278,14 +279,14 @@ int tarobject(struct TarInfo *ti) {
      */
     if (rename(fnametmpvb.buf,fnamevb.buf)) {
       if (errno != ENOENT && errno != ENOTDIR)
-        ohshite("unable to clean up mess surrounding `%.255s' before "
-                "installing another version",ti->Name);
+        ohshite(_("unable to clean up mess surrounding `%.255s' before "
+                "installing another version"),ti->Name);
       debug(dbg_eachfiledetail,"tarobject nonexistent");
     } else {
       debug(dbg_eachfiledetail,"tarobject restored tmp to main");
       statr= lstat(fnamevb.buf,&stab);
-      if (statr) ohshite("unable to stat restored `%.255s' before installing"
-                         " another version", ti->Name);
+      if (statr) ohshite(_("unable to stat restored `%.255s' before installing"
+                         " another version"), ti->Name);
     }
   } else {
     debug(dbg_eachfiledetail,"tarobject already exists");
@@ -316,7 +317,7 @@ int tarobject(struct TarInfo *ti) {
   case HardLink:
     break;
   default:
-    ohshit("archive contained object `%.255s' of unknown type 0x%x",ti->Name,ti->Type);
+    ohshit(_("archive contained object `%.255s' of unknown type 0x%x"),ti->Name,ti->Type);
   }
 
   if (!existingdirectory) {
@@ -351,12 +352,12 @@ int tarobject(struct TarInfo *ti) {
           otherpkg->clientdata->replacingfilesandsaid= 1;
         } else {
           if (S_ISDIR(stab.st_mode)) {
-            forcibleerr(fc_overwritedir, "trying to overwrite directory `%.250s' "
-                        "in package %.250s with nondirectory",
+            forcibleerr(fc_overwritedir, _("trying to overwrite directory `%.250s' "
+                        "in package %.250s with nondirectory"),
                         nifd->namenode->name,otherpkg->name);
           } else {
             forcibleerr(fc_overwrite,
-                        "trying to overwrite `%.250s', which is also in package %.250s",
+                        _("trying to overwrite `%.250s', which is also in package %.250s"),
                         nifd->namenode->name,otherpkg->name);
           }
         }
@@ -384,7 +385,7 @@ int tarobject(struct TarInfo *ti) {
              ti->Mode & (S_IRUSR|S_IRGRP|S_IROTH));
     if (fd < 0) ohshite("unable to create `%.255s'",ti->Name);
     thefile= fdopen(fd,"w");
-    if (!thefile) { close(fd); ohshite("unable to fdopen for `%.255s'",ti->Name); }
+    if (!thefile) { close(fd); ohshite(_("unable to fdopen for `%.255s'"),ti->Name); }
     push_cleanup(cu_closefile,ehflag_bombout, 0,0, 1,(void*)thefile);
     debug(dbg_eachfiledetail,"tarobject NormalFile[01] open size=%lu",
           (unsigned long)ti->Size);
@@ -393,33 +394,39 @@ int tarobject(struct TarInfo *ti) {
       r= fread(databuf,1,TARBLKSZ,tc->backendpipe);
       if (r<TARBLKSZ) {
         if (ferror(tc->backendpipe)) {
-          ohshite("error reading " BACKEND " during `%.255s'",ti->Name);
+          ohshite(_("error reading dpkg-deb during `%.255s'"),ti->Name);
         } else {
           errno= 0;
           return -1;
         }
       }
       if (fwrite(databuf,1,wsz,thefile) != wsz)
-        ohshite("error writing to `%.255s'",ti->Name);
+        ohshite(_("error writing to `%.255s'"),ti->Name);
     }
     if (fchown(fd,ti->UserID,ti->GroupID))
-      ohshite("error setting ownership of `%.255s'",ti->Name);
+      ohshite(_("error setting ownership of `%.255s'"),ti->Name);
+    /* We flush the stream here to avoid any future
+     * writes, which will mask any setuid or setgid
+     * attemps by fchmod below.
+     */
+    if (fflush(thefile) == EOF)
+      ohshite(_("error flushing `%.255s'"),ti->Name);
     if (fchmod(fd,ti->Mode & ~S_IFMT))
-      ohshite("error setting permissions of `%.255s'",ti->Name);
+      ohshite(_("error setting permissions of `%.255s'"),ti->Name);
     pop_cleanup(ehflag_normaltidy); /* thefile= fdopen(fd) */
     if (fclose(thefile))
-      ohshite("error closing/writing `%.255s'",ti->Name);
+      ohshite(_("error closing/writing `%.255s'"),ti->Name);
     newtarobject_utime(fnamenewvb.buf,ti);
     break;
   case FIFO:
     if (mkfifo(fnamenewvb.buf,ti->Mode & S_IFMT))
-      ohshite("error creating pipe `%.255s'",ti->Name);
+      ohshite(_("error creating pipe `%.255s'"),ti->Name);
     debug(dbg_eachfiledetail,"tarobject FIFO");
     newtarobject_allmodes(fnamenewvb.buf,ti);
     break;
   case CharacterDevice: case BlockDevice:
     if (mknod(fnamenewvb.buf,ti->Mode & S_IFMT,ti->Device))
-      ohshite("error creating device `%.255s'",ti->Name);
+      ohshite(_("error creating device `%.255s'"),ti->Name);
     debug(dbg_eachfiledetail,"tarobject CharacterDevice|BlockDevice");
     newtarobject_allmodes(fnamenewvb.buf,ti);
     break;
@@ -428,28 +435,32 @@ int tarobject(struct TarInfo *ti) {
     varbufaddstr(&hardlinkfn,instdir); varbufaddc(&hardlinkfn,'/');
     varbufaddstr(&hardlinkfn,ti->LinkName); varbufaddc(&hardlinkfn,0);
     if (link(hardlinkfn.buf,fnamenewvb.buf))
-      ohshite("error creating hard link `%.255s'",ti->Name);
+      ohshite(_("error creating hard link `%.255s'"),ti->Name);
     debug(dbg_eachfiledetail,"tarobject HardLink");
     newtarobject_allmodes(fnamenewvb.buf,ti);
     break;
   case SymbolicLink:
     /* We've already cheched for an existing directory. */
     if (symlink(ti->LinkName,fnamenewvb.buf))
-      ohshite("error creating symbolic link `%.255s'",ti->Name);
+      ohshite(_("error creating symbolic link `%.255s'"),ti->Name);
     debug(dbg_eachfiledetail,"tarobject SymbolicLink creating");
+#ifdef HAVE_LCHOWN
+    if (lchown(fnamenewvb.buf,ti->UserID,ti->GroupID))
+#else
     if (chown(fnamenewvb.buf,ti->UserID,ti->GroupID))
-      ohshite("error setting ownership of symlink `%.255s'",ti->Name);
+#endif
+      ohshite(_("error setting ownership of symlink `%.255s'"),ti->Name);
     break;
   case Directory:
     /* We've already checked for an existing directory. */
     if (mkdir(fnamenewvb.buf,
               ti->Mode & (S_IRUSR|S_IRGRP|S_IROTH | S_IXUSR|S_IXGRP|S_IXOTH)))
-      ohshite("error creating directory `%.255s'",ti->Name);
+      ohshite(_("error creating directory `%.255s'"),ti->Name);
     debug(dbg_eachfiledetail,"tarobject Directory creating");
     newtarobject_allmodes(fnamenewvb.buf,ti);
     break;
   default:
-    internerr("bad tar type, but already checked");
+    internerr(_("bad tar type, but already checked"));
   }
   /*
    * Now we have extracted the new object in .dpkg-new (or, if the
@@ -479,7 +490,7 @@ int tarobject(struct TarInfo *ti) {
       debug(dbg_eachfiledetail,"tarobject directory, nonatomic");
       nifd->namenode->flags |= fnnf_no_atomic_overwrite;
       if (rename(fnamevb.buf,fnametmpvb.buf))
-        ohshite("unable to move aside `%.255s' to install new version",ti->Name);
+        ohshite(_("unable to move aside `%.255s' to install new version"),ti->Name);
     } else if (S_ISLNK(stab.st_mode)) {
       /* We can't make a symlink with two hardlinks, so we'll have to copy it.
        * (Pretend that making a copy of a symlink is the same as linking to it.)
@@ -492,19 +503,23 @@ int tarobject(struct TarInfo *ti) {
       } while (r == symlinkfn.size);
       symlinkfn.used= r; varbufaddc(&symlinkfn,0);
       if (symlink(symlinkfn.buf,fnametmpvb.buf))
-        ohshite("unable to make backup symlink for `%.255s'",ti->Name);
+        ohshite(_("unable to make backup symlink for `%.255s'"),ti->Name);
+#ifdef HAVE_LCHOWN
+      if (lchown(fnametmpvb.buf,stab.st_uid,stab.st_gid))
+#else
       if (chown(fnametmpvb.buf,stab.st_uid,stab.st_gid))
-        ohshite("unable to chown backup symlink for `%.255s'",ti->Name);
+#endif
+        ohshite(_("unable to chown backup symlink for `%.255s'"),ti->Name);
     } else {
       debug(dbg_eachfiledetail,"tarobject nondirectory, `link' backup");
       if (link(fnamevb.buf,fnametmpvb.buf))
-        ohshite("unable to make backup link of `%.255s' before installing new version",
+        ohshite(_("unable to make backup link of `%.255s' before installing new version"),
                 ti->Name);
     }
   }
 
   if (rename(fnamenewvb.buf,fnamevb.buf))
-    ohshite("unable to install new version of `%.255s'",ti->Name);
+    ohshite(_("unable to install new version of `%.255s'"),ti->Name);
 
   nifd->namenode->flags |= fnnf_elide_other_lists;
 
@@ -518,19 +533,19 @@ static int try_remove_can(struct deppossi *pdep,
   struct packageinlist *newdeconf;
   
   if (force_depends(pdep)) {
-    fprintf(stderr, DPKG ": warning - "
-            "ignoring dependency problem with removal of %s:\n%s",
+    fprintf(stderr, _("dpkg: warning - "
+            "ignoring dependency problem with removal of %s:\n%s"),
             fixbyrm->name, why);
     return 1;
   } else if (f_autodeconf) {
     if (pdep->up->up->installed.essential) {
       if (fc_removeessential) {
-        fprintf(stderr, DPKG ": warning - considering deconfiguration of essential\n"
-                " package %s, to enable removal of %s.\n",
+        fprintf(stderr, _("dpkg: warning - considering deconfiguration of essential\n"
+                " package %s, to enable removal of %s.\n"),
                 pdep->up->up->name,fixbyrm->name);
       } else {
-        fprintf(stderr, DPKG ": no, %s is essential, will not deconfigure\n"
-                " it in order to enable removal of %s.\n",
+        fprintf(stderr, _("dpkg: no, %s is essential, will not deconfigure\n"
+                " it in order to enable removal of %s.\n"),
                 pdep->up->up->name,fixbyrm->name);
         return 0;
       }
@@ -542,7 +557,7 @@ static int try_remove_can(struct deppossi *pdep,
     deconfigure= newdeconf;
     return 1;
   } else {
-    fprintf(stderr, DPKG ": no, cannot remove %s (--auto-deconfigure will help):\n%s",
+    fprintf(stderr, _("dpkg: no, cannot remove %s (--auto-deconfigure will help):\n%s"),
             fixbyrm->name, why);
     return 0;
   }
@@ -576,11 +591,11 @@ void check_conflict(struct dependency *dep, struct pkginfo *pkg,
           (!fixbyrm->installed.essential || fc_removeessential)))) {
       assert(fixbyrm->clientdata->istobe == itb_normal);
       fixbyrm->clientdata->istobe= itb_remove;
-      fprintf(stderr, DPKG ": considering removing %s in favour of %s ...\n",
+      fprintf(stderr, _("dpkg: considering removing %s in favour of %s ...\n"),
               fixbyrm->name, pkg->name);
       if (fixbyrm->status != stat_installed) {
         fprintf(stderr,
-                "%s is not properly installed - ignoring any dependencies on it.\n",
+                _("%s is not properly installed - ignoring any dependencies on it.\n"),
                 fixbyrm->name);
         pdep= 0;
       } else {
@@ -607,8 +622,8 @@ void check_conflict(struct dependency *dep, struct pkginfo *pkg,
                 continue;
               if (depisok(pdep->up, &removalwhy, 0,0)) continue;
               varbufaddc(&removalwhy,0);
-              fprintf(stderr, DPKG
-                      ": may have trouble removing %s, as it provides %s ...\n",
+              fprintf(stderr, _("dpkg"
+                      ": may have trouble removing %s, as it provides %s ...\n"),
                       fixbyrm->name, providecheck->list->ed->name);
               if (!try_remove_can(pdep,fixbyrm,removalwhy.buf))
                 goto break_from_both_loops_at_once;
@@ -622,11 +637,11 @@ void check_conflict(struct dependency *dep, struct pkginfo *pkg,
       }
       if (!pdep && (fixbyrm->eflag & eflagf_reinstreq)) {
         if (fc_removereinstreq) {
-          fprintf(stderr, DPKG ": package %s requires reinstallation, but will"
-                  " remove anyway as you request.\n", fixbyrm->name);
+          fprintf(stderr, _("dpkg: package %s requires reinstallation, but will"
+                  " remove anyway as you request.\n"), fixbyrm->name);
         } else {
-          fprintf(stderr, DPKG ": package %s requires reinstallation, "
-                  "will not remove.\n", fixbyrm->name);
+          fprintf(stderr, _("dpkg: package %s requires reinstallation, "
+                  "will not remove.\n"), fixbyrm->name);
           pdep= &flagdeppossi;
         }
       }
@@ -634,7 +649,7 @@ void check_conflict(struct dependency *dep, struct pkginfo *pkg,
         /* This conflict is OK - we'll remove the conflictor. */
         *conflictorp= fixbyrm;
         varbuffree(&conflictwhy); varbuffree(&removalwhy);
-        fprintf(stderr, DPKG ": yes, will remove %s in favour of %s.\n",
+        fprintf(stderr, _("dpkg: yes, will remove %s in favour of %s.\n"),
                 fixbyrm->name, pkg->name);
         return;
       }
@@ -642,11 +657,11 @@ void check_conflict(struct dependency *dep, struct pkginfo *pkg,
     }
   }
   varbufaddc(&conflictwhy,0);
-  fprintf(stderr, DPKG ": regarding %s containing %s:\n%s",
+  fprintf(stderr, _("dpkg: regarding %s containing %s:\n%s"),
           pfilename, pkg->name, conflictwhy.buf);
   if (!force_conflicts(dep->list))
-    ohshit("conflicting packages - not installing %.250s",pkg->name);
-  fprintf(stderr, DPKG ": warning - ignoring conflict, may proceed anyway !\n");
+    ohshit(_("conflicting packages - not installing %.250s"),pkg->name);
+  fprintf(stderr, _("dpkg: warning - ignoring conflict, may proceed anyway !\n"));
   varbuffree(&conflictwhy);
   
   return;
@@ -683,7 +698,7 @@ void archivefiles(const char *const *argv) {
   if (f_recursive) {
     
     if (!*argv)
-      badusage("--%s --recursive needs at least one path argument",cipaction->olong);
+      badusage(_("--%s --recursive needs at least one path argument"),cipaction->olong);
     
     m_pipe(pi);
     if (!(fc= m_fork())) {
@@ -712,23 +727,23 @@ void archivefiles(const char *const *argv) {
       arglist[i++]= "-print0";
       arglist[i++]= 0;
       execvp(FIND, (char* const*)arglist);
-      ohshite("failed to exec " FIND " for --recursive");
+      ohshite(_("failed to exec find for --recursive"));
     }
 
     nfiles= 0;
-    pf= fdopen(pi[0],"r");  if (!pf) ohshite("failed to fdopen find's pipe");
+    pf= fdopen(pi[0],"r");  if (!pf) ohshite(_("failed to fdopen find's pipe"));
     close(pi[1]);
     varbufreset(&findoutput);
     while ((c= fgetc(pf)) != EOF) {
       varbufaddc(&findoutput,c);
       if (!c) nfiles++;
     }
-    if (ferror(pf)) ohshite("error reading find's pipe");
-    if (fclose(pf)) ohshite("error closing find's pipe");
+    if (ferror(pf)) ohshite(_("error reading find's pipe"));
+    if (fclose(pf)) ohshite(_("error closing find's pipe"));
     waitsubproc(fc,"find",0);
 
-    if (!nfiles) ohshit("searched, but found no packages (files matching "
-                        ARCHIVE_FILENAME_PATTERN ")");
+    if (!nfiles) ohshit(_("searched, but found no packages (files matching "
+                        "*.deb"));
 
     varbufaddc(&findoutput,0);
     varbufaddc(&findoutput,0);
@@ -744,7 +759,7 @@ void archivefiles(const char *const *argv) {
 
   } else {
 
-    if (!*argv) badusage("--%s needs at least one package archive file argument",
+    if (!*argv) badusage(_("--%s needs at least one package archive file argument"),
                          cipaction->olong);
     argp= argv;
     
@@ -791,7 +806,7 @@ void archivefiles(const char *const *argv) {
   case act_avail:
     break;
   default:
-    internerr("unknown action");
+    internerr(_("unknown action"));
   }
 
   modstatdb_shutdown();
index a7057805ead9e6e3426bfb6a7213a9744c417294..0db14809dbd6904b90fe407d3e82105c90eb50b8 100644 (file)
@@ -19,6 +19,7 @@
  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
 
+#include <errno.h>
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
 #include <sys/stat.h>
 #include <sys/types.h>
 
-#include "config.h"
-#include "dpkg.h"
-#include "dpkg-db.h"
-#include "myopt.h"
-#include "tarfn.h"
+#include <config.h>
+#include <dpkg.h>
+#include <dpkg-db.h>
+#include <tarfn.h>
+#include <myopt.h>
 
 #include "filesdb.h"
 #include "main.h"
@@ -80,20 +81,20 @@ void cu_installnew(int argc, void **argv) {
        */
       debug(dbg_eachfiledetail,"cu_installnew restoring nonatomic");
       if (unlinkorrmdir(fnamevb.buf) && errno != ENOENT && errno != ENOTDIR)
-        ohshite("unable to remove newly-installed version of `%.250s' to allow"
-                " reinstallation of backup copy",namenode->name);
+        ohshite(_("unable to remove newly-installed version of `%.250s' to allow"
+                " reinstallation of backup copy"),namenode->name);
     } else {
       debug(dbg_eachfiledetail,"cu_installnew restoring atomic");
     }
     /* Either we can do an atomic restore, or we've made room: */
     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);
   } else {
     debug(dbg_eachfiledetail,"cu_installnew not restoring");
   }
   /* Whatever, we delete <foo>.dpkg-new now, if it still exists. */
   if (unlinkorrmdir(fnamenewvb.buf) && errno != ENOENT && errno != ENOTDIR)
-    ohshite("unable to remove newly-extracted version of `%.250s'",namenode->name);
+    ohshite(_("unable to remove newly-extracted version of `%.250s'"),namenode->name);
 
   cleanup_pkg_failed--; cleanup_conflictor_failed--;
 }
index dbd79f562713c49ccf2bc19b9036f3a654881b58..6565fde65036d42ab2c85fcb6ab09c15fa5dea87 100644 (file)
@@ -19,6 +19,8 @@
  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
 
+#include <errno.h>
+#include <signal.h>
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
 #include <assert.h>
 #include <sys/wait.h>
 
-#include "config.h"
-#include "dpkg.h"
-#include "dpkg-db.h"
-#include "myopt.h"
+#include <config.h>
+#include <dpkg.h>
+#include <dpkg-db.h>
 
 #include "filesdb.h"
 #include "main.h"
@@ -76,10 +77,10 @@ void deferred_configure(struct pkginfo *pkg) {
   const char *s;
   
   if (pkg->status == stat_notinstalled)
-    ohshit("no package named `%s' is installed, cannot configure",pkg->name);
+    ohshit(_("no package named `%s' is installed, cannot configure"),pkg->name);
   if (pkg->status != stat_unpacked && pkg->status != stat_halfconfigured)
-    ohshit("package %.250s is not ready for configuration\n"
-           " cannot configure (current status `%.250s')",
+    ohshit(_("package %.250s is not ready for configuration\n"
+           " cannot configure (current status `%.250s')"),
            pkg->name, statusinfos[pkg->status].name);
   
   if (dependtry > 1) { if (findbreakcycle(pkg,0)) sincenothing= 0; }
@@ -95,14 +96,14 @@ void deferred_configure(struct pkginfo *pkg) {
     sincenothing= 0;
     varbufaddc(&aemsgs,0);
     fprintf(stderr,
-            DPKG ": dependency problems prevent configuration of %s:\n%s",
+            _("dpkg: dependency problems prevent configuration of %s:\n%s"),
             pkg->name, aemsgs.buf);
     varbuffree(&aemsgs);
-    ohshit("dependency problems - leaving unconfigured");
+    ohshit(_("dependency problems - leaving unconfigured"));
   } else if (aemsgs.used) {
     varbufaddc(&aemsgs,0);
     fprintf(stderr,
-            DPKG ": %s: dependency problems, but configuring anyway as you request:\n%s",
+            _("dpkg: %s: dependency problems, but configuring anyway as you request:\n%s"),
             pkg->name, aemsgs.buf);
   }
   varbuffree(&aemsgs);
@@ -110,10 +111,10 @@ void deferred_configure(struct pkginfo *pkg) {
 
   if (pkg->eflag & eflagf_reinstreq)
     forcibleerr(fc_removereinstreq,
-                "Package is in a very bad inconsistent state - you should\n"
-                " reinstall it before attempting configuration.");
+                _("Package is in a very bad inconsistent state - you should\n"
+                " reinstall it before attempting configuration."));
 
-  printf("Setting up %s (%s) ...\n",pkg->name,
+  printf(_("Setting up %s (%s) ...\n"),pkg->name,
          versiondescribe(&pkg->installed.version,vdew_never));
 
   if (f_noact) {
@@ -161,7 +162,7 @@ void deferred_configure(struct pkginfo *pkg) {
       /* If the .dpkg-new file is no longer there, ignore this one. */
       if (lstat(cdr2.buf,&stab)) {
         if (errno == ENOENT) continue;
-        ohshite("unable to stat new dist conffile `%.250s'",cdr2.buf);
+        ohshite(_("unable to stat new dist conffile `%.250s'"),cdr2.buf);
       }
       md5hash(pkg,newdisthash,cdr2.buf);
 
@@ -170,13 +171,13 @@ void deferred_configure(struct pkginfo *pkg) {
        */
       if (!stat(cdr.buf,&stab)) {
         if (chown(cdr2.buf,stab.st_uid,stab.st_gid))
-          ohshite("unable to change ownership of new dist conffile `%.250s'",cdr2.buf);
+          ohshite(_("unable to change ownership of new dist conffile `%.250s'"),cdr2.buf);
         if (chmod(cdr2.buf,stab.st_mode & 07777))
           if (errno != ENOENT)
-            ohshite("unable to set mode of new dist conffile `%.250s'",cdr2.buf);
+            ohshite(_("unable to set mode of new dist conffile `%.250s'"),cdr2.buf);
       } else {
         if (errno != ENOENT)
-          ohshite("unable to stat current installed conffile `%.250s'",cdr.buf);
+          ohshite(_("unable to stat current installed conffile `%.250s'"),cdr.buf);
       }
 
       if (!strcmp(currenthash,newdisthash)) {
@@ -208,57 +209,57 @@ void deferred_configure(struct pkginfo *pkg) {
 
         do {
           
-          fprintf(stderr, "\nConfiguration file `%s'", conff->name);
+          fprintf(stderr, _("\nConfiguration file `%s'"), conff->name);
           if (strcmp(conff->name,cdr.buf))
-            fprintf(stderr," (actually `%s')",cdr.buf);
+            fprintf(stderr,_(" (actually `%s')"),cdr.buf);
 
           if (cfof_isnew) {
 
             fprintf(stderr,
-                    "\n"
+                    _("\n"
                     " ==> File on system created by you or by a script.\n"
-                    " ==> File also in package provided by package maintainer.\n");
+                    " ==> File also in package provided by package maintainer.\n"));
 
           } else {
             
             fprintf(stderr, useredited ?
-                    "\n ==> Modified (by you or by a script) since installation.\n" :
-                    "\n     Not modified since installation.\n");
+                    _("\n ==> Modified (by you or by a script) since installation.\n") :
+                    _("\n     Not modified since installation.\n"));
 
             fprintf(stderr, distedited ?
-                    " ==> Package distributor has shipped an updated version.\n" :
-                    "     Version in package is the same as at last installation.\n");
+                    _(" ==> Package distributor has shipped an updated version.\n") :
+                    _("     Version in package is the same as at last installation.\n"));
 
           }
           
           fprintf(stderr,
-                  "   What would you like to do about it ?  Your options are:\n"
+                  _("   What would you like to do about it ?  Your options are:\n"
                   "    Y or I  : install the package maintainer's version\n"
                   "    N or O  : keep your currently-installed version\n"
-                  "      Z     : background this process to examine the situation\n");
+                  "      Z     : background this process to examine the situation\n"));
 
           if (what & cfof_keep)
-            fprintf(stderr, " The default action is to keep your current version.\n");
+            fprintf(stderr, _(" The default action is to keep your current version.\n"));
           else if (what & cfof_install)
-            fprintf(stderr, " The default action is to install the new version.\n");
+            fprintf(stderr, _(" The default action is to install the new version.\n"));
 
           s= strrchr(conff->name,'/');
           if (!s || !*++s) s= conff->name;
           fprintf(stderr, "*** %s (Y/I/N/O/Z) %s ? ",
                   s,
-                  (what & cfof_keep) ? "[default=N]" :
-                  (what & cfof_install) ? "[default=Y]" : "[no default]");
+                  (what & cfof_keep) ? _("[default=N]") :
+                  (what & cfof_install) ? _("[default=Y]") : _("[no default]"));
 
           if (ferror(stderr))
-            ohshite("error writing to stderr, discovered before conffile prompt");
+            ohshite(_("error writing to stderr, discovered before conffile prompt"));
 
           cc= 0;
           while ((c= getchar()) != EOF && c != '\n')
             if (!isspace(c) && !cc) cc= tolower(c);
 
           if (c == EOF) {
-            if (ferror(stdin)) ohshite("read error on stdin at conffile prompt");
-            ohshit("EOF on stdin at conffile prompt");
+            if (ferror(stdin)) ohshite(_("read error on stdin at conffile prompt"));
+            ohshit(_("EOF on stdin at conffile prompt"));
           }
 
           if (!cc) {
@@ -273,29 +274,29 @@ void deferred_configure(struct pkginfo *pkg) {
             strcpy(cdr2rest, DPKGNEWEXT);
             
             fprintf(stderr,
-          "Your currently installed version of the file is in:\n"
+          _("Your currently installed version of the file is in:\n"
           " %s\n"
           "The version contained in the new version of the package is in:\n"
           " %s\n"
           "If you decide to take care of the update yourself, perhaps by editing\n"
           " the installed version, you should choose `N' when you return, so that\n"
-          " I do not mess up your careful work.\n",
+          " I do not mess up your careful work.\n"),
                     cdr.buf, cdr2.buf);
 
             s= getenv(NOJOBCTRLSTOPENV);
             if (s && *s) {
-              fputs("Type `exit' when you're done.\n",stderr);
+              fputs(_("Type `exit' when you're done.\n"),stderr);
               if (!(c1= m_fork())) {
                 s= getenv(SHELLENV);
                 if (!s || !*s) s= DEFAULTSHELL;
                 execlp(s,s,"-i",(char*)0);
-                ohshite("failed to exec shell (%.250s)",s);
+                ohshite(_("failed to exec shell (%.250s)"),s);
               }
               while ((r= waitpid(c1,&status,0)) == -1 && errno == EINTR);
-              if (r != c1) { onerr_abort++; ohshite("wait for shell failed"); }
+              if (r != c1) { onerr_abort++; ohshite(_("wait for shell failed")); }
             } else {
-              fputs("Don't forget to foreground (`fg') this "
-                    "process when you're done !\n",stderr);
+              fputs(_("Don't forget to foreground (`fg') this "
+                    "process when you're done !\n"),stderr);
               kill(-getpgid(0),SIGTSTP);
             }
           }
@@ -315,7 +316,7 @@ void deferred_configure(struct pkginfo *pkg) {
         strcpy(cdr2rest,DPKGOLDEXT);
         if (unlink(cdr2.buf) && errno != ENOENT)
           fprintf(stderr,
-                  DPKG ": %s: warning - failed to remove old backup `%.250s': %s\n",
+                  _("dpkg: %s: warning - failed to remove old backup `%.250s': %s\n"),
                   pkg->name, cdr2.buf, strerror(errno));
         cdr.used--;
         varbufaddstr(&cdr,DPKGDISTEXT);
@@ -323,7 +324,7 @@ void deferred_configure(struct pkginfo *pkg) {
         strcpy(cdr2rest,DPKGNEWEXT);
         if (rename(cdr2.buf,cdr.buf))
           fprintf(stderr,
-                  DPKG ": %s: warning - failed to rename `%.250s' to `%.250s': %s\n",
+                  _("dpkg: %s: warning - failed to rename `%.250s' to `%.250s': %s\n"),
                   pkg->name, cdr2.buf, cdr.buf, strerror(errno));
         break;
 
@@ -331,32 +332,32 @@ void deferred_configure(struct pkginfo *pkg) {
         strcpy(cdr2rest,DPKGNEWEXT);
         if (unlink(cdr2.buf))
           fprintf(stderr,
-                  DPKG ": %s: warning - failed to remove `%.250s': %s\n",
+                  _("dpkg: %s: warning - failed to remove `%.250s': %s\n"),
                   pkg->name, cdr2.buf, strerror(errno));
         break;
 
       case cfo_install | cfof_backup:
         strcpy(cdr2rest,DPKGDISTEXT);
         if (unlink(cdr2.buf) && errno != ENOENT)
-          fprintf(stderr, DPKG
-                  ": %s: warning - failed to remove old distrib version `%.250s': %s\n",
+          fprintf(stderr,
+                  _("dpkg: %s: warning - failed to remove old distrib version `%.250s': %s\n"),
                   pkg->name, cdr2.buf, strerror(errno));
         strcpy(cdr2rest,DPKGOLDEXT);
         if (unlink(cdr2.buf) && errno != ENOENT)
-          fprintf(stderr, DPKG
-                  ": %s: warning - failed to remove `%.250s' (before overwrite): %s\n",
+          fprintf(stderr,
+                  _("dpkg: %s: warning - failed to remove `%.250s' (before overwrite): %s\n"),
                   pkg->name, cdr2.buf, strerror(errno));
         if (link(cdr.buf,cdr2.buf))
-          fprintf(stderr, DPKG
-                  ": %s: warning - failed to link `%.250s' to `%.250s': %s\n",
+          fprintf(stderr,
+                  _("dpkg: %s: warning - failed to link `%.250s' to `%.250s': %s\n"),
                   pkg->name, cdr.buf, cdr2.buf, strerror(errno));
         /* fall through */
       case cfo_install:
-        printf("Installing new version of config file %s ...\n",conff->name);
+        printf(_("Installing new version of config file %s ...\n"),conff->name);
       case cfo_newconff:
         strcpy(cdr2rest,DPKGNEWEXT);
         if (rename(cdr2.buf,cdr.buf))
-          ohshite("unable to install `%.250s' as `%.250s'",cdr2.buf,cdr.buf);
+          ohshite(_("unable to install `%.250s' as `%.250s'"),cdr2.buf,cdr.buf);
         break;
 
       default:
@@ -412,8 +413,8 @@ int conffderef(struct pkginfo *pkg, struct varbuf *result, const char *in) {
     debug(dbg_conffdetail,"conffderef in=`%s' current working=`%s'", in, result->buf);
     if (lstat(result->buf,&stab)) {
       if (errno != ENOENT)
-        fprintf(stderr, DPKG ": %s: warning - unable to stat config file `%s'\n"
-                " (= `%s'): %s\n",
+        fprintf(stderr, _("dpkg: %s: warning - unable to stat config file `%s'\n"
+                " (= `%s'): %s\n"),
                 pkg->name, in, result->buf, strerror(errno));
       debug(dbg_conffdetail,"conffderef nonexistent");
       return 0;
@@ -423,8 +424,8 @@ int conffderef(struct pkginfo *pkg, struct varbuf *result, const char *in) {
     } else if (S_ISLNK(stab.st_mode)) {
       debug(dbg_conffdetail,"conffderef symlink loopprotect=%d",loopprotect);
       if (loopprotect++ >= 25) {
-        fprintf(stderr, DPKG ": %s: warning - config file `%s' is a circular link\n"
-                " (= `%s')\n", pkg->name, in, result->buf);
+        fprintf(stderr, _("dpkg: %s: warning - config file `%s' is a circular link\n"
+                " (= `%s')\n"), pkg->name, in, result->buf);
         return -1;
       }
       need= 255;
@@ -436,8 +437,8 @@ int conffderef(struct pkginfo *pkg, struct varbuf *result, const char *in) {
         }
         r= readlink(result->buf,linkreadbuf,linkreadbufsize-1);
         if (r < 0) {
-          fprintf(stderr, DPKG ": %s: warning - unable to readlink conffile `%s'\n"
-                  " (= `%s'): %s\n",
+          fprintf(stderr, _("dpkg: %s: warning - unable to readlink conffile `%s'\n"
+                  " (= `%s'): %s\n"),
                   pkg->name, in, result->buf, strerror(errno));
           return -1;
         }
@@ -454,9 +455,9 @@ int conffderef(struct pkginfo *pkg, struct varbuf *result, const char *in) {
       } else {
         for (r=result->used-2; r>0 && result->buf[r] != '/'; r--);
         if (r < 0) {
-          fprintf(stderr, DPKG
-                  ": %s: warning - conffile `%.250s' resolves to degenerate filename\n"
-                  " (`%s' is a symlink to `%s')\n",
+          fprintf(stderr,
+                  _("dpkg: %s: warning - conffile `%.250s' resolves to degenerate filename\n"
+                  " (`%s' is a symlink to `%s')\n"),
                   pkg->name, in, result->buf, linkreadbuf);
           return -1;
         }
@@ -468,8 +469,8 @@ int conffderef(struct pkginfo *pkg, struct varbuf *result, const char *in) {
       varbufaddstr(result,linkreadbuf);
       varbufaddc(result,0);
     } else {
-      fprintf(stderr, DPKG ": %s: warning - conffile `%.250s' is not a plain"
-              " file or symlink (= `%s')\n",
+      fprintf(stderr, _("dpkg: %s: warning - conffile `%.250s' is not a plain"
+              " file or symlink (= `%s')\n"),
               pkg->name, in, result->buf);
       return -1;
     }
@@ -490,12 +491,12 @@ static void md5hash(struct pkginfo *pkg, char hashbuf[33], const char *fn) {
     if (!(c1= m_fork())) {
       m_dup2(fd,0); m_dup2(p1[1],1); close(p1[0]);
       execlp(MD5SUM,MD5SUM,(char*)0);
-      ohshite("failed to exec md5sum");
+      ohshite(_("failed to exec md5sum"));
     }
     close(p1[1]); close(fd);
     file= fdopen(p1[0],"r");
     push_cleanup(cu_closefile,ehflag_bombout, 0,0, 1,(void*)file);
-    if (!file) ohshite("unable to fdopen for md5sum of `%.250s'",fn);
+    if (!file) ohshite(_("unable to fdopen for md5sum of `%.250s'"),fn);
     ok= 1;
     memset(hashbuf,0,33);
     if (fread(hashbuf,1,32,file) != 32) ok=0;
@@ -503,16 +504,16 @@ static void md5hash(struct pkginfo *pkg, char hashbuf[33], const char *fn) {
     if (getc(file) != EOF) ok=0;
     waitsubproc(c1,"md5sum",0);
     if (strspn(hashbuf,"0123456789abcdef") != 32) ok=0;
-    if (ferror(file)) ohshite("error reading pipe from md5sum");
-    if (fclose(file)) ohshite("error closing pipe from md5sum");
+    if (ferror(file)) ohshite(_("error reading pipe from md5sum"));
+    if (fclose(file)) ohshite(_("error closing pipe from md5sum"));
     pop_cleanup(ehflag_normaltidy); /* file= fdopen(p1[0]) */
     pop_cleanup(ehflag_normaltidy); /* m_pipe() */
     pop_cleanup(ehflag_normaltidy); /* fd= open(cdr.buf) */
-    if (!ok) ohshit("md5sum gave malformatted output `%.250s'",hashbuf);
+    if (!ok) ohshit(_("md5sum gave malformatted output `%.250s'"),hashbuf);
   } else if (errno == ENOENT) {
     strcpy(hashbuf,NONEXISTENTFLAG);
   } else {
-    fprintf(stderr, DPKG ": %s: warning - unable to open conffile %s for hash: %s\n",
+    fprintf(stderr, _("dpkg: %s: warning - unable to open conffile %s for hash: %s\n"),
             pkg->name, fn, strerror(errno));
     strcpy(hashbuf,"-");
   }
diff --git a/main/debugmake b/main/debugmake
deleted file mode 100755 (executable)
index 7c142c5..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-set -x
-make XCFLAGS=-g LDFLAGS=-g 'LIBS= -lefence -L../lib -ldpkg' "$@"
index b59c2cd493808c1b7eac54dfbb368aaa15757585..06bea47842dfd8be7aae0ca6469569d10fa081c9 100644 (file)
  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
 
+#include <errno.h>
 #include <unistd.h>
 #include <sys/stat.h>
 #include <sys/types.h>
 #include <assert.h>
 
-#include "config.h"
-#include "dpkg.h"
-#include "dpkg-db.h"
+#include <config.h>
+#include <dpkg.h>
+#include <dpkg-db.h>
 
 #include "main.h"
 
@@ -69,7 +70,7 @@ static int foundcyclebroken(struct cyclesofarlink *thislink,
     postinstfilename= pkgadminfile(sol->pkg,POSTINSTFILE);
     if (lstat(postinstfilename,&stab)) {
       if (errno == ENOENT) break;
-      ohshite("unable to check for existence of `%.250s'",postinstfilename);
+      ohshite(_("unable to check for existence of `%.250s'"),postinstfilename);
     }
   }
   /* Now we have either a package with no postinst, or the other
@@ -132,10 +133,10 @@ int findbreakcycle(struct pkginfo *pkg, struct cyclesofarlink *sofar) {
 void describedepcon(struct varbuf *addto, struct dependency *dep) {
   varbufaddstr(addto,dep->up->name);
   switch (dep->type) {
-  case dep_depends:     varbufaddstr(addto, " depends on ");     break;
-  case dep_predepends:  varbufaddstr(addto, " pre-depends on "); break;
-  case dep_recommends:  varbufaddstr(addto, " recommends ");     break;
-  case dep_conflicts:   varbufaddstr(addto, " conflicts with "); break;
+  case dep_depends:     varbufaddstr(addto, _(" depends on "));     break;
+  case dep_predepends:  varbufaddstr(addto, _(" pre-depends on ")); break;
+  case dep_recommends:  varbufaddstr(addto, _(" recommends "));     break;
+  case dep_conflicts:   varbufaddstr(addto, _(" conflicts with ")); break;
   default:              internerr("unknown deptype");
   }
   varbufdependency(addto, dep);
@@ -209,14 +210,14 @@ int depisok(struct dependency *dep, struct varbuf *whynot,
     for (possi= dep->list; possi; possi= possi->next) {
       switch (possi->ed->clientdata->istobe) {
       case itb_remove:
-        sprintf(linebuf,"  %.250s is to be removed.\n",possi->ed->name);
+        sprintf(linebuf,_("  %.250s is to be removed.\n"),possi->ed->name);
         break;
       case itb_deconfigure:
-        sprintf(linebuf,"  %.250s is to be deconfigured.\n",possi->ed->name);
+        sprintf(linebuf,_("  %.250s is to be deconfigured.\n"),possi->ed->name);
         break;
       case itb_installnew:
         if (versionsatisfied(&possi->ed->available,possi)) return 1;
-        sprintf(linebuf,"  %.250s is to be installed, but is version %.250s.\n",
+        sprintf(linebuf,_("  %.250s is to be installed, but is version %.250s.\n"),
                 possi->ed->name,
                 versiondescribe(&possi->ed->available.version,vdew_nonambig));
         break;
@@ -224,7 +225,7 @@ int depisok(struct dependency *dep, struct varbuf *whynot,
         switch (possi->ed->status) {
         case stat_installed:
           if (versionsatisfied(&possi->ed->installed,possi)) return 1;
-          sprintf(linebuf,"  %.250s is installed, but is version %.250s.\n",
+          sprintf(linebuf,_("  %.250s is installed, but is version %.250s.\n"),
                   possi->ed->name,
                   versiondescribe(&possi->ed->installed.version,vdew_nonambig));
           break;
@@ -239,17 +240,17 @@ int depisok(struct dependency *dep, struct varbuf *whynot,
         case stat_halfconfigured:
           if (allowunconfigd) {
             if (!informativeversion(&possi->ed->configversion)) {
-              sprintf(linebuf, "  %.250s is unpacked, but has never been configured.\n",
+              sprintf(linebuf, _("  %.250s is unpacked, but has never been configured.\n"),
                       possi->ed->name);
               break;
             } else if (!versionsatisfied(&possi->ed->installed, possi)) {
-              sprintf(linebuf, "  %.250s is unpacked, but is version %.250s.\n",
+              sprintf(linebuf, _("  %.250s is unpacked, but is version %.250s.\n"),
                       possi->ed->name,
                       versiondescribe(&possi->ed->available.version,vdew_nonambig));
               break;
             } else if (!versionsatisfied3(&possi->ed->configversion,
                                           &possi->version,possi->verrel)) {
-              sprintf(linebuf, "  %.250s latest configured version is %.250s.\n",
+              sprintf(linebuf, _("  %.250s latest configured version is %.250s.\n"),
                       possi->ed->name,
                       versiondescribe(&possi->ed->configversion,vdew_nonambig));
               break;
@@ -258,8 +259,8 @@ int depisok(struct dependency *dep, struct varbuf *whynot,
             }
           }
         default:
-          sprintf(linebuf, "  %.250s is %s.\n",
-                  possi->ed->name, statusstrings[possi->ed->status]);
+          sprintf(linebuf, _("  %.250s is %s.\n"),
+                  possi->ed->name, gettext(statusstrings[possi->ed->status]));
           break;
         }
         break;
@@ -294,18 +295,18 @@ int depisok(struct dependency *dep, struct varbuf *whynot,
              */
             continue; 
           case itb_remove:
-            sprintf(linebuf, "  %.250s provides %.250s but is to be removed.\n",
+            sprintf(linebuf, _("  %.250s provides %.250s but is to be removed.\n"),
                     provider->up->up->name, possi->ed->name);
             break;
           case itb_deconfigure:
-            sprintf(linebuf, "  %.250s provides %.250s but is to be deconfigured.\n",
+            sprintf(linebuf, _("  %.250s provides %.250s but is to be deconfigured.\n"),
                     provider->up->up->name, possi->ed->name);
             break;
           case itb_normal: case itb_preinstall:
             if (provider->up->up->status == stat_installed) return 1;
-            sprintf(linebuf, "  %.250s provides %.250s but is %s.\n",
+            sprintf(linebuf, _("  %.250s provides %.250s but is %s.\n"),
                     provider->up->up->name, possi->ed->name,
-                    statusstrings[provider->up->up->status]);
+                    gettext(statusstrings[provider->up->up->status]));
             break;
           default:
             internerr("unknown istobe provider");
@@ -348,7 +349,7 @@ int depisok(struct dependency *dep, struct varbuf *whynot,
         break;
       case itb_installnew:
         if (!versionsatisfied(&possi->ed->available, possi)) break;
-        sprintf(linebuf, "  %.250s (version %.250s) is to be installed.\n",
+        sprintf(linebuf, _("  %.250s (version %.250s) is to be installed.\n"),
                 possi->ed->name,
                 versiondescribe(&possi->ed->available.version,vdew_nonambig));
         varbufaddstr(whynot, linebuf);
@@ -362,10 +363,10 @@ int depisok(struct dependency *dep, struct varbuf *whynot,
           break;
         default:
           if (!versionsatisfied(&possi->ed->installed, possi)) break;
-          sprintf(linebuf, "  %.250s (version %.250s) is %s.\n",
+          sprintf(linebuf, _("  %.250s (version %.250s) is %s.\n"),
                   possi->ed->name,
                   versiondescribe(&possi->ed->installed.version,vdew_nonambig),
-                  statusstrings[possi->ed->status]);
+                  gettext(statusstrings[possi->ed->status]));
           varbufaddstr(whynot, linebuf);
           if (!canfixbyremove) return 0;
           nconflicts++;
@@ -387,7 +388,7 @@ int depisok(struct dependency *dep, struct varbuf *whynot,
         if (provider->up->type != dep_provides) continue;
         if (provider->up->up->clientdata->istobe != itb_installnew) continue;
         if (provider->up->up == dep->up) continue; /* conflicts and provides the same */
-        sprintf(linebuf, "  %.250s provides %.250s and is to be installed.\n",
+        sprintf(linebuf, _("  %.250s provides %.250s and is to be installed.\n"),
                 provider->up->up->name, possi->ed->name);
         varbufaddstr(whynot, linebuf);
         /* We can't remove the one we're about to install: */
@@ -418,9 +419,9 @@ int depisok(struct dependency *dep, struct varbuf *whynot,
           case stat_notinstalled: case stat_configfiles:
             continue;
           default:
-            sprintf(linebuf, "  %.250s provides %.250s and is %s.\n",
+            sprintf(linebuf, _("  %.250s provides %.250s and is %s.\n"),
                     provider->up->up->name, possi->ed->name,
-                    statusstrings[provider->up->up->status]);
+                    gettext(statusstrings[provider->up->up->status]));
             varbufaddstr(whynot, linebuf);
             if (!canfixbyremove) return 0;
             nconflicts++;
index 9d4de130715c3a0359d43694c92a87eb574bcbab..2eb475a4cb03f1886ce4d486a8f957bf6bbb8f04 100644 (file)
-.TH dpkg 8
+.\" Hey Emacs! This file is -*- nroff -*- source.
+.TH DPKG 8 "April 12, 1998" "Debian Project" "Debian GNU/Linux"
 .SH NAME
-dpkg - a low-level package manager for Debian GNU/Linux
+dpkg - a medium-level package manager for Debian GNU/Linux
 
 .SH SYNOPSIS
-
-.B dpkg
-[options] action
-
-.SH WARNING WARNING WARNING
-
-This manual was inaccurate when it was written and is now also out of
-date.
-
-It should
-.I not
-be used by package maintainers wishing to understand how
 .B dpkg
-will install their packages.
+[\fIoptions\fP] \fIaction\fP
 
-It may be useful to users wishing to understand
-.BR "dpkg"'s
+.SH WARNING
+This manual is intended for users wishing to understand \fBdpkg\fP's
 command line options and package states in more detail than that
-provided by
-.BR "dpkg --help" .
+provided by \fBdpkg --help\fP.
 
-The descriptions of what
-.B dpkg
-does when installing and removing packages are particularly
-inadequate.  For detailed information about this please refer to the
-Debian Packaging Guidelines, available under
-.I guidelines
-in the GNU Info system.
+It should \fInot\fP be used by package maintainers wishing to
+understand how \fBdpkg\fP will install their packages.  The
+descriptions of what \fBdpkg\fP does when installing and removing
+packages are particularly inadequate.  For detailed information about
+this, please refer to the \fIPackage Management System\fP topic under
+\fIdebian-faq\fP in the GNU Info system.  For information about
+creating Debian packages, see the \fIDebian Package Management
+Tools\fP topic in the same place.
 
 .SH DESCRIPTION
+\fBdpkg\fP is a medium-level tool to install, build, remove and manage
+Debian GNU/Linux packages. The primary and more user-friendly
+front-end for \fBdpkg\fP is \fBdselect\fP(8).  \fBdpkg\fP itself is
+controlled entirely via command line parameters, which consist of exactly
+one action and zero or more options. The action-parameter tells dpkg
+what to do and options control the behavior of the action in some way.
+
+\fBdpkg\fP can be also be used as a front-end to \fBdpkg-deb\fP.
+The following
+are \fBdpkg-deb\fP actions, and if they are encountered, \fBdpkg\fP
+just runs \fBdpkg-deb\fP with the parameters given to it:
+.nf
+    \fB-b\fP, \fB--build\fP,
+    \fB-c\fP, \fB--contents\fP,
+    \fB-I\fP, \fB--info\fP,
+    \fB-f\fP, \fB--field\fP,
+    \fB-e\fP, \fB--control\fP,
+    \fB-x\fP, \fB--extract\fP,
+    \fB-X\fP, \fB--vextract\fP, and
+    \fB--fsys-tarfile\fP.
+.fi
+Please refer to \fBdpkg-deb\fP(8) for information about these actions.
 
-.B dpkg
-is a medium-level tool to install, build, remove and manage Debian
-GNU/Linux packages. The primary and more user-friendly front-end
-for
-.B dpkg
-is
-.B dselect(8).
-.B dpkg
-itself is totally controlled via command line parameters, whose include
-one or more options and exactly one action. The action-parameter tells
-dpkg what to do and options control the behaviour of the action in some
-way.
+.SH INFORMATION ABOUT PACKAGES
+\fBdpkg\fP maintains some usable information about available
+packages. The information is divided in three classes: \fBstates\fP,
+\fBselection states\fP and \fBflags\fP.  These values are intended to
+be changed mainly with \fBdselect\fP.
+.SS PACKAGE STATES
+.TP
+.B installed
+The package is unpacked and configured OK.
+.TP
+.B half-installed
+The installation of the package has been started, but not completed for
+some reason.
+.TP
+.B not-installed
+The package is not installed on your system.
+.TP
+.B unpacked
+The package is unpacked, but not configured.
+.TP
+.B half-configured
+The package is unpacked and configuration has been started, but not yet
+completed for some reason.
+.TP
+.B config-files
+Only the configuration files of the package exist on the system.
+.SS PACKAGE SELECTION STATES
+.TP
+.B install
+The package is selected for installation.
+.TP
+.B deinstall
+The package is selected for deinstallation (i.e. we want to remove all
+files, except configuration files).
+.TP
+.B purge
+The package is selected to be purged (i.e. we want to remove everything,
+even configuration files).
+.SS PACKAGE FLAGS
+.TP
+.B hold
+A package marked to be on \fBhold\fP is not handled by \fBdpkg\fP,
+unless forced to do that with option \fB--force-hold\fP.
+.TP
+.B reinst-required
+A package marked \fBreinst-required\fP is broken and requires
+reinstallation. These packages cannot be removed, unless forced with
+option \fB--force-reinstreq\fP.
 
-.B dpkg
-can be also be used as a front-end to
-.B dpkg-deb.
-Actions
-.B -b
-,
-.B --build
-,
-.B -c
-,
-.B --contents
-,
-.B -I
-,
-.B --info
-,
-.B -f
-,
-.B --field
-,
-.B -e
-,
-.B --control
-,
-.B -x
-,
-.B --extract
-,
-.B -X
-,
-.B --vextract
-and
-.B --fsys-tarfile
-are
-.B dpkg-deb
-actions and if they are encountered,
-.B dpkg
-just runs
-.B dpkg-deb
-with the parameters given to it. Please refer to
-.B dpkg-deb(8)
-for information about these actions.
-
-.SS ACTIONS
-
-.TP
-.B dpkg -i | --install <package file name> ...
-Install specified packages. If
-.B --recursive
-or
-.B -R
-option is specified,
-.I <package file name>
-must refer to a directory instead.
+.SH ACTIONS
+.TP
+\fBdpkg -i\fP | \fB--install\fP \fIpackage_file\fP...
+Install the package. If \fB--recursive\fP or \fB-R\fP option is
+specified, \fIpackage_file\fP must refer to a directory instead.
 
 Installation consists of the following steps:
 .br
-.B 1.
-Extract the controlfiles of the new package.
+
+\fB1.\fP Extract the control files of the new package.
 .br
-.B 2.
-If another version of the same package was installed before the
-new installation, execute
-.I prerm
-script of the old package.
+
+\fB2.\fP If another version of the same package was installed before
+the new installation, execute \fIprerm\fP script of the old package.
 .br
-.B 3.
-Run
-.I preinst
-script, if provided by the package.
+
+\fB3.\fP Run \fIpreinst\fP script, if provided by the package.
 .br
-.B 4.
-Unpack the files and at the same time, backup the old files
-so that if something goes wrong, we can restore them.
+
+\fB4.\fP Unpack the new files, and at the same time back up the old
+files, so that if something goes wrong, they can be restored.
 .br
-.B 5.
-If another version of the same package was installed before
-the new installation, execute the
-.I postrm
-script of the old package. Note that this script is executed after the
-.I preinst
+
+\fB5.\fP If another version of the same package was installed before
+the new installation, execute the \fIpostrm\fP script of the old
+package. Note that this script is executed after the \fIpreinst\fP
 script of the new package, because new files are written at the same
-time, old files are removed.
+time old files are removed.
 .br
-.B 6.
-eonfigure the package. See
-.B --configure
-for detailed information about how this is done.
-.TP
-.B dpkg --unpack <package file name> ...
-Unpack package, but don't configure it. If
-.B --recursive
-or
-.B -R
-option is specified,
-.I <package file name>
-must refer to a directory instead.
+
+\fB6.\fP Configure the package. See \fB--configure\fP for detailed
+information about how this is done.
 .TP
-.B dpkg --configure     <package name> ... | -a|--pending
-Reconfigure an unpacked package.
-If
-.B -a
-or
-.B --pending
-is given instead of package name, all unpacked, but unconfigured
+\fBdpkg --unpack \fP\fIpackage_file\fP ...
+Unpack the package, but don't configure it. If \fB--recursive\fP or
+\fB-R\fP option is specified, \fIpackage_file\fP must refer to a
+directory instead.
+.TP
+\fBdpkg --configure \fP\fIpackage\fP ... | \fB-a\fP | \fB--pending\fP
+Reconfigure an unpacked package.  If \fB-a\fP or \fB--pending\fP is
+given instead of \fIpackage\fP, all unpacked but unconfigured
 packages are configured.
 
 Configuring consists of the following steps:
 .br
-.B 1.
-Unpack the configuration files and at the same time, backup the old
-configuration files, so that we can restore them, if
-something goes
-wrong.
+
+\fB1.\fP Unpack the configuration files, and at the same time back up
+the old configuration files, so that they can be restored if
+something goes wrong.
 .br
-.B 2.
-Run
-.I postinst
-script, if provided by the package.
-.TP
-.B dpkg -r|--remove | --purge <package name> ... | -a|--pending
-Remove an installed package.
-.B --purge
-removes everything, including configuration files,
-.B --remove
-removes everything, but not configuration files. (configuration files are
-the files listed in
-.I conffiles
--control file). If
-.B -a
-or
-.B --pending
-is given instead of package name all packages unpacked, but marked to be
-removed or purged are removed or purged (in file
-.I /var/lib/dpkg/status
-).
+
+\fB2.\fP Run \fIpostinst\fP script, if provided by the package.
+.TP
+\fBdpkg -r\fP | \fB--remove\fP | \fB --purge \fP\fIpackage\fP ... | \fB-a\fP | \fB--pending\fP
+Remove an installed package.  \fB-r\fP or \fB--remove\fP remove
+everything except configuration files.  This may avoid having to
+reconfigure the package if it is reinstalled later.  (Configuration
+files are the files listed in the \fIdebian/conffiles\fP control
+file).  \fB--purge\fP removes everything, including configuration
+files.  If \fB-a\fP or \fB--pending\fP is given instead of a package
+name, then all packages unpacked, but marked to be removed or purged
+in file \fI/var/lib/dpkg/status\fP, are removed or purged,
+respectively.
 
 Removing of a package consists of the following steps:
 .br
-.B 1.
-Run prerm script
+
+\fB1.\fP Run \fIprerm\fP script
 .br
-.B 2.
-Remove the installed files
+
+\fB2.\fP Remove the installed files
 .br
-.B 3.
-Run postrm script
+
+\fB3.\fP Run \fIpostrm\fP script
 .br
 .TP
-.B dpkg -A | --avail <package file name> ...
-Update 
-.B dpkg
-and
-.B dselect's
-idea of which packages are available with information about the package
-.I <package file name>.
-If
-.B --recursive
-or
-.B -R
-option is specified,
-.I <package file name>
+.BI "dpkg  --print-avail " package
+Display details about \fIpackage\fP, as found in
+\fI/var/lib/dpkg/available\fP.
+.TP
+\fBdpkg --update-avail\fP | \fB--merge-avail\fP \fIPackages-file\fP
+Update \fBdpkg\fP's and \fBdselect\fP's idea of which packages are
+available.  With action \fB--merge-avail\fP, old information is
+combined with information from \fIPackages-file\fP.  With action
+\fB--update-avail\fP, old information is replaced with the information
+in the \fIPackages-file\fP.  The \fIPackages-file\fP distributed with
+Debian GNU/Linux is simply named \fIPackages\fP.  \fBdpkg\fP keeps its
+record of available packages in \fI/var/lib/dpkg/available\fP.
+.TP
+\fBdpkg -A\fP | \fB--record-avail\fP \fIpackage_file\fP ...
+Update \fBdpkg\fP and \fBdselect\fP's idea of which packages are
+available with information from the package \fIpackage_file\fP.  If
+\fB--recursive\fP or \fB-R\fP option is specified, \fIpackage_file\fP
 must refer to a directory instead.
 .TP
-.B dpkg --update-avail | --merge-avail <Packages-file>
-Update
-.B dpkg's
-and
-.B dselect's
-idea of which packages are available. With action 
-.B --merge-avail,
-information is combined from the old information and from the
-.I <Packages-file>.
-With action
-.B --update-avail,
-old information is replaced with the information in the
-.I <Packages-file>.
-The
-.I <Packages-file>
-distributed with Debian GNU/Linux is simply named
-.I Packages.
+.B dpkg --forget-old-unavail
+Forget about uninstalled unavailable packages.
+.TP
+.B dpkg --clear-avail
+Erase the existing information about what packages are available.
+.TP
+\fBdpkg -l\fP | \fB--list\fP \fIpackage-name-pattern\fP ...
+List packages matching given pattern. If no \fIpackage-name-pattern\fP
+is given, list all packages in \fI/var/lib/dpkg/available\fP.  Normal
+shell wildchars are allowed in \fIpackage-name-pattern\fP.  (You will
+probably have to quote \fIpackage-name-pattern\fP to prevent the shell
+from performing filename expansion.  For example, \fBdpkg -l 'libc5*'\fP will list all the package names starting with "libc5".)
+.TP
+\fBdpkg -s\fP | \fB--status\fP \fIpackage-name\fP ...
+Report status of specified package. This just displays the entry in
+the installed package status database.
+.TP
+\fBdpkg -C\fP | \fB--audit\fP
+Searches for packages that have been installed only partially on your
+system.  \fBdpkg\fP will suggest what to do with them to get them
+working.
+.TP
+\fBdpkg --get-selections\fP [\fIpattern\fP...]
+Get list of package selections, and write it to stdout.
+.TP
+.B dpkg --set-selections
+Set package selections using file read from stdin.
 .TP
 .B dpkg --yet-to-unpack
 Searches for packages selected for installation, but which for some
 reason still haven't been installed.
 .TP
-.B dpkg -l|--list [<package-name-pattern> ...]
-List packages matching given pattern. If no
-.B <package-name-pattern>
-is given, list all packages in
-.I /var/lib/dpkg/available.
-Normal shell wildchars are allowed in
-.B <package-name-pattern>.
-.TP
-.B dpkg -L|--listfiles <package-name> ...
-List files installed to your system from a package
-.B <package-name>.
+\fBdpkg -L\fP | \fB--listfiles\fP \fIpackage\fP ...
+List files installed to your system from \fBpackage\fP.
 However, note that files created by package-specific
 installation-scripts are not listed.
 .TP
-.B dpkg -C|--audit
-Searches for packages that have been installed only partially on your
-system.
-.B dpkg
-will suggest what to do with them to get them working.
-.TP
-.B dpkg -S|--search <filename-search-pattern> ...
+\fBdpkg -S\fP | \fB--search\fP \fIfilename-search-pattern\fP ...
 Search for a filename from installed packages. All standard shell
 wildchars can be used in the pattern.
 .TP
-.B dpkg -s|--status <package-name> ...
-Report status of specified package. This just displays the entry in from
-the installed package status database.
+.B dpkg --print-architecture
+Print target architecture (for example, "i386").  This option uses
+\fBgcc\fP.
+.TP
+.B dpkg --print-gnu-build-architecture
+Print GNU version of target architecture (for example, "i486").
+.TP
+.B dpkg --print-installation-architecture
+Print host architecture for installation.
+.TP
+.B dpkg --compare-versions \fIver1 op ver2\fP
+Compare version numbers, where \fIop\fP is a binary operator.  \fBdpkg\fP
+returns success (zero result) if the specified condition is satisfied,
+and failure (nonzero result) otherwise.  There are
+two groups of operators, which differ in how they treat a missing
+\fIver1\fP or \fIver2\fP.  These treat no version as earlier than any
+version: \fBlt le eq ne ge gt\fP.  These treat no version as later
+than any version: \fBlt-nl le-nl ge-nl gt-nl\fP.  These are provided
+only for compatibility with control file syntax: \fB< << <= = >= >>
+>\fP.
 .TP
 .B dpkg --help
-Display a brief help.
+Display a brief help message.
 .TP
-.B dpkg --licence
-Display licence of
-.B dpkg.
+.B dpkg --force-help
+Give help about the \fB--force-\fP\fIthing\fP options.
 .TP
-.B dpkg --version
-Display version information.
+.BR "dpkg -Dh " | " --debug=help"
+Give help about debugging options.
 .TP
-.B dpkg-deb-actions
-See
-.B dpkg-deb(8)
-for more information about these actions.
-
-.B dpkg -b|--build <directory> [<filename>]
-- Build a Debian GNU/Linux package.
-.br
-.B dpkg -c|--contents <filename>
-- List contents of Debian GNU/Linux package.
-.br
-.B dpkg -e|--control <filename> [<directory>]
-- Extract control-information from a package.
-.br
-.B dpkg -x|--extract <filename> <directory>
-- Extract the files contained by package.
+\fBdpkg --licence\fP | \fBdpkg --license\fP
+Display \fBdpkg\fP licence.
+.TP
+\fBdpkg --version\fP
+Display \fBdpkg\fP version information.
+.TP
+\fBdpkg-deb-actions\fP
+See \fBdpkg-deb\fP(8) for more information about the following actions.
+
+.nf
+\fBdpkg -b\fP | \fB--build\fP \fIdirectory\fP [\fIfilename\fP]
+    Build a Debian GNU/Linux package.
+\fBdpkg -c\fP | \fB--contents\fP \fIfilename\fP
+    List contents of Debian GNU/Linux package.
+\fBdpkg -e\fP | \fB--control\fP \fIfilename\fP [\fIdirectory\fP]
+    Extract control-information from a package.
+\fBdpkg -x\fP | \fB--extract\fP \fIfilename directory\fP
+    Extract the files contained by package.
+\fBdpkg -f\fP | \fB--field\fP  \fIfilename\fP [\fIcontrol-field\fP] ...
+    Display control field(s) of a package.
+\fBdpkg --fsys-tarfile\fP \fIfilename\fP
+    Display the filesystem tar-file contained by a
+    Debian package.
+\fBdpkg -I\fP | \fB--info\fP \fIfilename\fP [\fIcontrol-file\fP]
+    Show information about a package.
+\fBdpkg -X\fP | \fB--vextract\fP \fIfilename\fP \fIdirectory\fP
+    Extract and display the filenames contained by a
+    package.
+.fi
+
+.SH OPTIONS
 .br
-.B dpkg -f|--field <filename> [<control-field>...]
-- Display control field(s) of a package.
-.br
-.B dpkg --fsys-tarfile <filename>
-- Display the filesystem tar-file contained by a Debian package.
-.br
-.B dpkg -I|--info <filename> [<control-file>]
-- Show information about a package.
-.br
-.B dpkg -X|--vextract <filename> <directory>
-- Extract and display the filenames contained by a package.
-
-.SS OPTIONS
-
 .TP
-.B -B | --auto-deconfigure
-While a package is removed, there is a possibility that another
+.BR -B | --auto-deconfigure
+When a package is removed, there is a possibility that another
 installed package depended on the removed package. Specifying this
-option will cause automatical deconfiguration of the package which
+option will cause automatic deconfiguration of the package which
 depended on the removed package.
 .TP
-.B -Dh | --debug=help
-Give help about debugging options.
-.TP
-.B -D<octal> | --debug=<octal>
-Set debugging on.
-.B <octal>
-is a octal number formed by bitwise-orring desired values together from
-the list below (note that these values may change in future releases).
+\fB-D\fIoctal\fP | \fB--debug=\fP\fIoctal\fP
+Set debugging on.  \fIoctal\fP is formed by bitwise-orring desired
+values together from the list below (note that these values may change
+in future releases).  \fB-Dh\fP or \fB--debug=help\fP display these
+debugging values.
 
  number  description
     1   Generally helpful progress information
@@ -327,287 +314,236 @@ the list below (note that these values may change in future releases).
   200   Lots of output for each configuration file
    40   Dependencies and conflicts
   400   Lots of dependencies/conflicts output
- 1000   Lots of drivel about eg the dpkg/info dir
+ 1000   Lots of drivel about e.g. the dpkg/info dir
  2000   Insane amounts of drivel
 .TP
-.B --force-<things> | --no-force-<things> | --refuse-<things>
-Force or refuse (no-force and refuse stands for the same thing) to do
-some things.
-.B <things>
-is a comma separated list of things specified below:
+\fB--force-\fP\fIthings\fP | \fB--no-force-\fP\fIthings\fP | \fB--refuse-\fP\fIthings\fP
+
+Force or refuse (\fBno-force\fP and \fBrefuse\fP mean the same thing)
+to do some things.  \fIthings\fP is a comma separated list of things
+specified below.  \fB--force-help\fP displays a message describing them.
+Things marked with (*) are forced by default.
 
-.I downgrade(*):
+\fIWarning: These options are mostly intended to be used by experts
+only. Using them without fully understanding their effects may break
+your whole system.\fP
+
+\fBauto-select\fP(*):
+Select packages to install them, and deselect packages to remove them.
+
+\fBdowngrade\fP(*):
 Install a package, even if newer version of it is already installed.
 
-.I configure-any:
-Configure also unpacked, but unconfigured packages on whose current
-package depends on.
+\fBconfigure-any\fP:
+Configure also any unpacked but unconfigured packages on which the current
+package depends.
 
-.I remove-reinstreq:
-Remove a package, even if it's broken and marked to require
-reinstallation. This may, for example, cause parts of the package to
-remain on the system, which will then be forgotten by
-.B dpkg.
+\fBhold\fP:
+Process packages even when marked "hold".
 
-.I hold:
-Don't care, wheter a package is on hold or not.
+\fBremove-reinstreq\fP:
+Remove a package, even if it's broken and marked to require
+reinstallation.  This may, for example, cause parts of the package to
+remain on the system, which will then be forgotten by \fBdpkg\fP.
 
-.I remove-essential:
-Remove, even if the package is considered essential. Essential packages
-contains mostly very basic unix commands and such. Removing them might
+\fBremove-essential\fP:
+Remove, even if the package is considered essential. Essential
+packages contain mostly very basic Unix commands. Removing them might
 cause the whole system to stop working, so use with caution.
 
-.I conflicts:
+\fBdepends\fP:
+Turn all dependency problems into warnings.
+
+\fBdepends-version\fP:
+Don't care about versions when checking dependencies.
+
+\fBconflicts\fP:
 Install, even if it conflicts with another package. This is dangerous,
 for it will usually cause overwriting of some files.
 
-.I depends:
-Remove, even if another package depends on this one. This will usually
-break the other package.
+\fBoverwrite\fP(*):
+Overwrite one package's file with another's file.
 
-.I depends-version:
-Don't care about versions when checking depencies. This will usually
-break the other package.
+\fBoverwrite-dir\fP
+Overwrite one package's directory with another's file.
 
-Things marked with (*) are forced by default.
-.I Warning:
-These options are mostly intended to be used by experts only. Using them
-without fully understanding their effects may break your whole system.
+\fBoverwrite-diverted\fP:
+Overwrite a diverted file with an undiverted version.
+
+\fBarchitecture\fP:
+Process even packages with the wrong architecture.
+
+\fBbad-path\fP:
+\fBPATH\fP is missing important programs, so problems are likely.
+
+\fBnot-root\fP:
+Try to (de)install things even when not root.
 
 .TP
-.B --ignore-depends=<package>,...
-Ignore depency-checking for specified packages (actually, checking is
+\fB--ignore-depends\fP=\fIpackage\fP,...
+Ignore dependency-checking for specified packages (actually, checking is
 performed, but only warnings about conflicts are given, nothing else).
 .TP
-.B --largemem | --smallmem
-Tells
-.B dpkg
-wheter to preserve memory or consume it as much as needed.
+\fB--largemem\fP | \fB--smallmem\fP
+Tells \fBdpkg\fP whether to preserve memory (e.g. with less than 4 MB
+of RAM) or consume as much as needed.
 .TP
-.B --new | --old
-Select new or old package format. This is a
-.B dpkg-deb(8)
+\fB--new\fP | \fB--old\fP
+Select new or old binary package format. This is a \fBdpkg-deb\fP(8)
 option.
 .TP
 .B --nocheck
 Don't read or check contents of control file while building a package.
-This is a
-.B dpkg-deb(8)
-option.
+This is a \fBdpkg-deb\fP(8) option.
 .TP
 .B --no-act
-Do everything, which is supposed to be done, but don't write any
-changes. This is used to see, what would happen with specified action,
-without actually modifying anything.
-
-Be sure to give
-.B --no-act
-before action-parameter, or you might end up with undesirable results.
-(e.g.
-.B dpkg --purge foo --no-act
-will first purge package foo and then try to purge package --no-act,
-even though you propably expected it to actually do nothing)
-.TP
-.B -R | --recursive
-Recursively handle all regular files matching pattern
-.I *.deb
-found at specified directories and all of its subdirectories. This
-can be used with 
-.B -i
-,
-.B -A
-,
-.B --install
-,
-.B --unpack
-and
-.B --avail
-actions.
-.TP
-.B -G
-Don't install package, if newer version of the same package is already
-installed. This is an alias to 
-.B--refuse-downgrade.
-.TP
-.B -R|--root=<dir> | --admindir=<dir> | --instdir=<dir>
-Change default directories.
-.B admindir
-defaults to
-.I /var/lib/dpkg
-and contains many files that give information about status of installed
-or uninstalled packages, etc.
-.B instdir
-defaults to
-.I /
-and refers to the directory where packages are to be installed.
-.B instdir
-is also the directory passed to
-.B chroot(2)
-before running package's installation scripts, which means that the
-scripts see
-.B instdir
-as a root directory.
-Changing
-.B root
-changes
-.B instdir
-to
-.I <dir>
-and
-.B admindir
-to
-.I <dir>/var/lib/dpkg.
-.TP
-.B -O | --selected-only
-Only process the packages that are selected for installation. The actual
-marking is done with
-.B dselect
-or by
-.B dpkg,
-when it handles packages. i.e. When, for example a package is removed,
-it will be marked selected for installation, etc.
-.TP
-.B -E | --skip-same-version
-Don't install the package, if the same version of the package is already
+Do everything which is supposed to be done, but don't write any
+changes. This is used to see what would happen with the specified
+action, without actually modifying anything.
+
+Be sure to give \fB--no-act\fP before the action-parameter, or you might
+end up with undesirable results.  (e.g.  \fBdpkg --purge foo
+--no-act\fP will first purge package foo and then try to purge package
+--no-act, even though you probably expected it to actually do nothing)
+.TP
+\fB-R\fP | \fB--recursive\fP
+Recursively handle all regular files matching pattern \fB*.deb\fP
+found at specified directories and all of its subdirectories. This can
+be used with \fB-i\fP, \fB-A\fP, \fB--install\fP, \fB--unpack\fP and
+\fB--avail\fP actions.
+.TP
+\fB-G\fP
+Don't install a package if a newer version of the same package is already
+installed. This is an alias of \fB--refuse-downgrade.\fP
+.TP
+\fB-R\fP | \fB--root=\fP\fIdir\fP | \fB--admindir=\fP\fIdir\fP | \fB--instdir=\fP\fIdir\fP
+Change default directories.  \fBadmindir\fP defaults to
+\fI/var/lib/dpkg\fP and contains many files that give information
+about status of installed or uninstalled packages, etc.  \fBinstdir\fP
+defaults to \fI/\fP and refers to the directory where packages are to
+be installed.  \fBinstdir\fP is also the directory passed to
+\fBchroot\fP(2) before running \fIpackage\fP's installation scripts, which
+means that the scripts see \fBinstdir\fP as a root directory.
+Changing \fBroot\fP changes \fBinstdir\fP to \fIdir\fP and
+\fBadmindir\fP to \fIdir\fP\fB/var/lib/dpkg\fP.
+.TP
+\fB-O\fP | \fB--selected-only\fP
+Only process the packages that are selected for installation. The
+actual marking is done with \fBdselect\fP or by \fBdpkg\fP, when it
+handles packages.  For example, when a package is removed, it will
+be marked selected for installation.
+.TP
+.BR -E " | " --skip-same-version
+Don't install the package if the same version of the package is already
 installed.
 
-.SH INFORMATION ABOUT PACKAGES
-.B dpkg
-maintains some usable information about available packages. The
-information is divided in three classes:
-.B states
-,
-.B selection states
-and
-.B flags.
-These values are intended to be changed mainly with
-.B dselect.
-.SS PACKAGE STATES
-.TP
-.B installed
-The package is unpacked and configured ok.
-.TP
-.B half-installed
-The installation of the package has been started, but not completed for
-some reason.
-.TP
-.B not-installed
-The package is not installed on your system.
-.TP
-.B unpacked
-The package is unpacked, but not configured.
-.TP
-.B half-configured
-The package is unpacked and configuration has been started, but not yet
-completed for some reason.
-.TP
-.B config-files
-Only the configuration files of the package exist on the system.
-.SS PACKAGE SELECTION STATES
-.TP
-.B install
-The package is selected for installation.
-.TP
-.B deinstall
-The package is selected for deinstallation (i.e. we want to remove all
-files, except configuration files).
-.TP
-.B purge
-The package is selected to be purged (i.e. we want to remove everything,
-even configuration files).
-.SS PACKAGE FLAGS
-.TP
-.B hold
-A package marked to be on
-.B hold
-is not handled by
-.B dpkg,
-unless forced to do that with option
-.B --force-hold.
-.TP
-.B reinst-required
-A package marked
-.B reinst-required
-is broken and requires reinstallation. These packages cannot be removed,
-unless forced with option
-.B --force-reinstreq.
-
 .SH FILES
 The files listed here are in their default directories, see option
-.B --admindir
-to see how to change locations of these files.
+\fB--admindir\fP to see how to change locations of these files.
 .TP
 .I /var/lib/dpkg/available
 List of available packages.
 .TP
 .I /var/lib/dpkg/status
 Statuses of available packages. This file contains information about
-wheter a package is marked for removing or not, wheter it is installed
-or not, etc. See section
-.B INFORMATION ABOUT PACKAGES
+whether a package is marked for removing or not, whether it is
+installed or not, etc. See section \fBINFORMATION ABOUT PACKAGES\fP
 for more info.
+.P
+The following files are components of a binary package.  See \fBdeb\fP(5)
+for more information about them:
 .TP
 .I control
-See
-.B deb(5)
-for more information about this file.
 .TP
 .I conffiles
-.B dpkg.
-See
-.B deb(5)
-for more information about this file.
 .TP
 .I preinst
-See
-.B deb(5)
-for more information about this file.
 .TP
 .I postinst
-See
-.B deb(5)
-for more information about this file.
 .TP
 .I prerm
-See
-.B deb(5)
-for more information about this file.
 .TP
 .I postrm
-See
-.B deb(5)
-for more information about this file.
 
 .SH ENVIRONMENT VARIABLES
 .TP
 .B DPKG_NO_TSTP
-Define this to something, if you prefer
-.B dpkg
-starting a new shell rather than suspending
-.B dpkg,
-while doing a shell escape.
+Define this to something if you prefer \fBdpkg\fP starting a new
+shell rather than suspending \fBdpkg\fP, while doing a shell escape.
 .TP
 .B SHELL
-The program
-.B dpkg
-will execute while starting a new shell.
+The program \fBdpkg\fP will execute while starting a new shell.
+
+.SH EXAMPLES
+To list packages related to the editor vi:
+.br
+\fB     dpkg -l '*vi*'\fP
+.br
+
+To see the entries in \fI/var/lib/dpkg/available\fP on two packages:
+.br
+\fB     dpkg --print-avail elvis vim | less\fP
+.br
+
+To search the listing of packages yourself:
+.br
+\fB     less /var/lib/dpkg/available\fP
+.br
+
+To remove an installed elvis package:
+.br
+\fB     dpkg -r elvis\fP
+.br
+
+To install a package, you first need to find it in an archive or
+CDROM.  The "available" file shows that the vim package is in section
+"editors":
+.br
+\fB     cd /cdrom/hamm/hamm/binary/editors\fP
+\fB     dpkg -i vim_4.5-3.tar.gz\fP
+.br
+
+To make a local copy of the package selection states:
+.br
+\fB     dpkg --get-selections >myselections\fP
+.br
+
+You might transfer this file to another computer, and install it there
+with:
+.br
+\fB     dpkg --set-selections <myselections\fP
+.br
 
+Ordinarily, you will find that \fBdselect\fP(8) provides a more
+convenient way to modify the package selection states.
+.br
 .SH SEE ALSO
-.B deb(5)
-,
-.B dpkg-deb(8)
-,
-.B dselect(8)
+\fBdselect\fP(8),
+\fBdpkg-deb\fP(8),
+\fBdeb\fP(5),
 and
-.B deb-control(5)
+\fBdeb-control\fP(5)
 
 .SH BUGS
 
-.B --no-act
-usually gives less information that might be helpful.
-.SH AUTHOR
-.B dpkg
-is written by Ian Jackson (ian@chiark.chu.cam.ac.uk). Manual page added
-by Juho Vuori (javuori@cc.helsinki.fi).
-
-
+\fB--no-act\fP usually gives less information than might be helpful.
+
+.SH AUTHORS
+.nf
+\fBdpkg\fP was written by:
+    Ian Jackson <ian@chiark.chu.cam.ac.uk>
+    Klee Dienes <klee@debian.org>
+    Erick Branderhorst <branderhorst@heel.fgg.eur.nl>
+    Miquel van Smoorenburg <miquels@cistron.nl>
+    Kim-Minh Kaplan <kkaplan@cdfhp3.in2p3.fr>
+    Michael Shields <shields@crosslink.net>
+    Bruce Perens <bruce@pixar.com>
+    Streeter <streeter@cae.wisc.edu>
+    Matt Welsh <mdw@sunsite.unc.edu>
+    Ian Murdock <imurdock@debian.org>
+    Colin Plumb
+    Branko Lankester
+.fi
+The manual page was written by Juho Vuori
+<javuori@cc.helsinki.fi> and updated by Jim Van Zandt
+<jrv@vanzandt.mv.com>.
index 23b6231ec97da3546d12ef2251b715c5e4d6c4d4..36bd031f6d41d0bb0c29157145c0d1fbf2fae0d4 100644 (file)
 #include <assert.h>
 #include <unistd.h>
 
-#include "config.h"
-#include "dpkg.h"
-#include "dpkg-db.h"
-#include "myopt.h"
+#include <config.h>
+#include <dpkg.h>
+#include <dpkg-db.h>
+#include <myopt.h>
 
 #include "filesdb.h"
 #include "main.h"
@@ -60,12 +60,12 @@ static void list1package(struct pkginfo *pkg, int *head) {
   const char *pdesc;
     
   if (!*head) {
-    fputs("\
+    fputs(_("\
 Desired=Unknown/Install/Remove/Purge\n\
 | Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed\n\
 |/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)\n\
 ||/ Name            Version        Description\n\
-+++-===============-==============-============================================\n",
++++-===============-==============-============================================\n"),
           stdout);
     *head= 1;
   }
@@ -118,7 +118,7 @@ void listpackages(const char *const *argv) {
         list1package(pkg,&head); found++;
       }
       if (!found)
-        fprintf(stderr,"No packages found matching %s.\n",thisarg);
+        fprintf(stderr,_("No packages found matching %s.\n"),thisarg);
     }
   }
   if (ferror(stdout)) werr("stdout");
@@ -143,24 +143,24 @@ static int bsyn_status(struct pkginfo *pkg, const struct badstatinfo *bsi) {
 static const struct badstatinfo badstatinfos[]= {
   {
     bsyn_reinstreq, 0,
-    "The following packages are in a mess due to serious problems during\n"
+    N_("The following packages are in a mess due to serious problems during\n"
     "installation.  They must be reinstalled for them (and any packages\n"
-    "that depend on them) to function properly:\n"
+    "that depend on them) to function properly:\n")
   }, {
     bsyn_status, stat_unpacked,
-    "The following packages have been unpacked but not yet configured.\n"
-    "They must be configured using " DPKG " --configure or the configure\n"
-    "menu option in " DSELECT " for them to work:\n"
+    N_("The following packages have been unpacked but not yet configured.\n"
+    "They must be configured using dpkg --configure or the configure\n"
+    "menu option in dselect for them to work:\n")
   }, {
     bsyn_status, stat_halfconfigured,
-    "The following packages are only half configured, probably due to problems\n"
+    N_("The following packages are only half configured, probably due to problems\n"
     "configuring them the first time.  The configuration should be retried using\n"
-    DPKG " --configure <package> or the configure menu option in " DSELECT ":\n"
+    "dpkg --configure <package> or the configure menu option in " DSELECT ":\n")
   }, {
     bsyn_status, stat_halfinstalled,
-    "The following packages are only half installed, due to problems during\n"
+    N_("The following packages are only half installed, due to problems during\n"
     "installation.  The installation can probably be completed by retrying it;\n"
-    "the packages can be removed using " DSELECT " or " DPKG " --remove:\n"
+    "the packages can be removed using dselect or dpkg --remove:\n")
   }, {
     0
   }
@@ -183,7 +183,7 @@ void audit(const char *const *argv) {
   const struct badstatinfo *bsi;
   int head;
 
-  if (*argv) badusage("--audit does not take any arguments");
+  if (*argv) badusage(_("--audit does not take any arguments"));
 
   modstatdb_init(admindir,msdbrw_readonly);
 
@@ -193,7 +193,7 @@ void audit(const char *const *argv) {
     while ((pkg= iterpkgnext(it))) {
       if (!bsi->yesno(pkg,bsi)) continue;
       if (!head) {
-        fputs(bsi->explanation,stdout);
+        fputs(gettext(bsi->explanation),stdout);
         head= 1;
       }
       describebriefly(pkg);
@@ -234,7 +234,7 @@ void unpackchk(const char *const *argv) {
   char buf[20];
   int width;
   
-  if (*argv) badusage("--yet-to-unpack does not take any arguments");
+  if (*argv) badusage(_("--yet-to-unpack does not take any arguments"));
 
   modstatdb_init(admindir,msdbrw_readonly);
 
@@ -287,7 +287,7 @@ void unpackchk(const char *const *argv) {
       putchar('\n');
     }
   } else {
-    printf(" %d packages, from the following sections:",totalcount);
+    printf(_(" %d packages, from the following sections:"),totalcount);
     width= 0;
     for (se= sectionentries; se; se= se->next) {
       sprintf(buf,"%d",se->count);
@@ -307,9 +307,9 @@ static int searchoutput(struct filenamenode *namenode) {
 
   if (namenode->divert) {
     for (i=0; i<2; i++) {
-      if (namenode->divert->pkg) printf("diversion by %s",namenode->divert->pkg->name);
-      else printf("local diversion");
-      printf(" %s: %s\n", i ? "to" : "from",
+      if (namenode->divert->pkg) printf(_("diversion by %s"),namenode->divert->pkg->name);
+      else printf(_("local diversion"));
+      printf(" %s: %s\n", i ? _("to") : _("from"),
              i ?
              (namenode->divert->useinstead
               ? namenode->divert->useinstead->name
@@ -342,7 +342,7 @@ void searchfiles(const char *const *argv) {
   static struct varbuf vb;
   
   if (!*argv)
-    badusage("--search needs at least one file name pattern argument");
+    badusage(_("--search needs at least one file name pattern argument"));
 
   modstatdb_init(admindir,msdbrw_readonly);
   ensure_allinstfiles_available_quiet();
@@ -370,7 +370,7 @@ void searchfiles(const char *const *argv) {
       iterfileend(it);
     }
     if (!found) {
-      fprintf(stderr,DPKG ": %s not found.\n",thisarg);
+      fprintf(stderr,_("dpkg: %s not found.\n"),thisarg);
       if (ferror(stderr)) werr("stderr");
     } else {
       if (ferror(stdout)) werr("stdout");
@@ -386,7 +386,7 @@ void enqperpackage(const char *const *argv) {
   struct filenamenode *namenode;
   
   if (!*argv)
-    badusage("--%s needs at least one package name argument", cipaction->olong);
+    badusage(_("--%s needs at least one package name argument"), cipaction->olong);
 
   failures= 0;
   modstatdb_init(admindir,msdbrw_readonly);
@@ -403,7 +403,7 @@ void enqperpackage(const char *const *argv) {
           !pkg->files &&
           pkg->want == want_unknown &&
           !informative(pkg,&pkg->installed)) {
-        printf("Package `%s' is not installed and no info is available.\n",pkg->name);
+        printf(_("Package `%s' is not installed and no info is available.\n"),pkg->name);
         failures++;
       } else {
         writerecord(stdout, "<stdout>", pkg, &pkg->installed);
@@ -412,7 +412,7 @@ void enqperpackage(const char *const *argv) {
 
     case act_printavail:
       if (!informative(pkg,&pkg->available)) {
-        printf("Package `%s' is not available.\n",pkg->name);
+        printf(_("Package `%s' is not available.\n"),pkg->name);
         failures++;
       } else {
         writerecord(stdout, "<stdout>", pkg, &pkg->available);
@@ -422,7 +422,7 @@ void enqperpackage(const char *const *argv) {
     case act_listfiles:
       switch (pkg->status) {
       case stat_notinstalled: 
-        printf("Package `%s' is not installed.\n",pkg->name);
+        printf(_("Package `%s' is not installed.\n"),pkg->name);
         failures++;
         break;
         
@@ -431,15 +431,15 @@ void enqperpackage(const char *const *argv) {
         ensure_diversions();
         file= pkg->clientdata->files;
         if (!file) {
-          printf("Package `%s' does not contain any files (!)\n",pkg->name);
+          printf(_("Package `%s' does not contain any files (!)\n"),pkg->name);
         } else {
           while (file) {
             namenode= file->namenode;
             puts(namenode->name);
             if (namenode->divert && !namenode->divert->camefrom) {
-              if (!namenode->divert->pkg) printf("locally diverted");
-              else if (pkg == namenode->divert->pkg) printf("package diverts others");
-              else printf("diverted by %s",namenode->divert->pkg->name);
+              if (!namenode->divert->pkg) printf(_("locally diverted"));
+              else if (pkg == namenode->divert->pkg) printf(_("package diverts others"));
+              else printf(_("diverted by %s"),namenode->divert->pkg->name);
               printf(" to: %s\n",namenode->divert->useinstead->name);
             }
             file= file->next;
@@ -458,21 +458,49 @@ void enqperpackage(const char *const *argv) {
   }
 
   if (failures) {
-    puts("Use " DPKG " --info (= " BACKEND " --info) to examine archive files,\n"
-         "and " DPKG " --contents (= " BACKEND " --contents) to list their contents.");
+    puts(_("Use dpkg --info (= dpkg-deb --info) to examine archive files,\n"
+         "and dpkg --contents (= dpkg-deb --contents) to list their contents."));
     if (ferror(stdout)) werr("stdout");
   }
 }
 
+void assertepoch(const char *const *argv) {
+  static struct versionrevision epochversion = {~0UL,0,0};
+  struct pkginfo *pkg;
+
+  if (*argv) badusage("--assert-working-epoch does not take any arguments");
+
+  modstatdb_init(admindir,msdbrw_readonly);
+  pkg= findpackage("dpkg");
+  if (epochversion.epoch == ~0UL) {
+    epochversion.epoch= 0;
+    epochversion.version= nfstrsave("1.4.0.7");
+    epochversion.revision= 0;
+  }
+  switch (pkg->status) {
+  case stat_installed:
+    break;
+  case stat_unpacked: case stat_halfconfigured: case stat_halfinstalled:
+    if (versionsatisfied3(&pkg->configversion,&epochversion,dvr_laterequal))
+      break;
+    printf("Version of dpkg with working epoch support not yet configured.\n"
+           " Please use `dpkg --configure dpkg', and then try again.\n");
+    exit(1);
+  default:
+    printf("dpkg not recorded as installed, cannot check for epoch support !\n");
+    exit(1);
+  }
+}
+
 void assertpredep(const char *const *argv) {
   static struct versionrevision predepversion = {~0UL,0,0};
   struct pkginfo *pkg;
   
-  if (*argv) badusage("--assert-support-predepends does not take any arguments");
+  if (*argv) badusage(_("--assert-support-predepends does not take any arguments"));
 
   modstatdb_init(admindir,msdbrw_readonly);
   pkg= findpackage("dpkg");
-  if (!predepversion.epoch == ~0UL) {
+  if (predepversion.epoch == ~0UL) {
     predepversion.epoch= 0;
     predepversion.version= nfstrsave("1.1.0");
     predepversion.revision= 0;
@@ -483,11 +511,11 @@ void assertpredep(const char *const *argv) {
   case stat_unpacked: case stat_halfconfigured: case stat_halfinstalled:
     if (versionsatisfied3(&pkg->configversion,&predepversion,dvr_laterequal))
       break;
-    printf("Version of dpkg with Pre-Depends support not yet configured.\n"
-           " Please use `dpkg --configure dpkg', and then try again.\n");
+    printf(_("Version of dpkg with Pre-Depends support not yet configured.\n"
+           " Please use `dpkg --configure dpkg', and then try again.\n"));
     exit(1);
   default:
-    printf("dpkg not recorded as installed, cannot check for Pre-Depends support !\n");
+    printf(_("dpkg not recorded as installed, cannot check for Pre-Depends support !\n"));
     exit(1);
   }
 }
@@ -510,7 +538,7 @@ void predeppackage(const char *const *argv) {
   struct dependency *dep;
   struct deppossi *possi, *provider;
 
-  if (*argv) badusage("--predep-package does not take any argument");
+  if (*argv) badusage(_("--predep-package does not take any argument"));
 
   modstatdb_init(admindir,msdbrw_readonly);
   clear_istobes(); /* We use clientdata->istobe to detect loops */
@@ -562,8 +590,8 @@ void predeppackage(const char *const *argv) {
       varbufreset(&vb);
       describedepcon(&vb,dep);
       varbufaddc(&vb,0);
-      fprintf(stderr, DPKG ": cannot see how to satisfy pre-dependency:\n %s\n",vb.buf);
-      ohshit("cannot satisfy pre-dependencies for %.250s (wanted due to %.250s)",
+      fprintf(stderr, _("dpkg: cannot see how to satisfy pre-dependency:\n %s\n"),vb.buf);
+      ohshit(_("cannot satisfy pre-dependencies for %.250s (wanted due to %.250s)"),
              dep->up->name,startpkg->name);
     }
     pkg->clientdata->istobe= itb_preinstall;
@@ -583,14 +611,14 @@ static void badlgccfn(const char *compiler, const char *output, const char *why)
      NONRETURNING;
 static void badlgccfn(const char *compiler, const char *output, const char *why) {
   fprintf(stderr,
-          DPKG ": unexpected output from `%s --print-libgcc-file-name':\n"
-          " `%s'\n",
+          _("dpkg: unexpected output from `%s --print-libgcc-file-name':\n"
+          " `%s'\n"),
           compiler,output);
-  ohshit("compiler libgcc filename not understood: %.250s",why);
+  ohshit(_("compiler libgcc filename not understood: %.250s"),why);
 }
 
 void printinstarch(const char *const *argv) {
-  if (*argv) badusage("--print-installation-architecture does not take any argument");
+  if (*argv) badusage(_("--print-installation-architecture does not take any argument"));
 
   if (printf("%s\n",architecture) == EOF) werr("stdout");
   if (fflush(stdout)) werr("stdout");
@@ -598,7 +626,7 @@ void printinstarch(const char *const *argv) {
 
 void printarch(const char *const *argv) {
   static const struct { const char *from, *to, *gnu; } archtable[]= {
-#include "archtable.inc"
+#include "archtable.h"
     { 0,0,0 }
   }, *archp;
                   
@@ -610,30 +638,30 @@ void printarch(const char *const *argv) {
   ptrdiff_t ll;
   char *p, *q;
 
-  if (*argv) badusage("--print-architecture does not take any argument");
+  if (*argv) badusage(_("--print-architecture does not take any argument"));
 
   ccompiler= getenv("CC");
   if (!ccompiler) ccompiler= "gcc";
   varbufinit(&vb);
   m_pipe(p1);
-  ccpipe= fdopen(p1[0],"r"); if (!ccpipe) ohshite("failed to fdopen CC pipe");
+  ccpipe= fdopen(p1[0],"r"); if (!ccpipe) ohshite(_("failed to fdopen CC pipe"));
   if (!(c1= m_fork())) {
     m_dup2(p1[1],1); close(p1[0]); close(p1[1]);
     execlp(ccompiler,ccompiler,"--print-libgcc-file-name",(char*)0);
-    ohshite("failed to exec C compiler `%.250s'",ccompiler);
+    ohshite(_("failed to exec C compiler `%.250s'"),ccompiler);
   }
   close(p1[1]);
   while ((c= getc(ccpipe)) != EOF) varbufaddc(&vb,c);
-  if (ferror(ccpipe)) ohshite("error reading from CC pipe");
+  if (ferror(ccpipe)) ohshite(_("error reading from CC pipe"));
   waitsubproc(c1,"gcc --print-libgcc-file-name",0);
-  if (!vb.used) badlgccfn(ccompiler,"","empty output");
+  if (!vb.used) badlgccfn(ccompiler,"",_("empty output"));
   varbufaddc(&vb,0);
-  if (vb.buf[vb.used-2] != '\n') badlgccfn(ccompiler,vb.buf,"no newline");
+  if (vb.buf[vb.used-2] != '\n') badlgccfn(ccompiler,vb.buf,_("no newline"));
   vb.used-= 2; varbufaddc(&vb,0);
   p= strstr(vb.buf,"/gcc-lib/");
-  if (!p) badlgccfn(ccompiler,vb.buf,"no gcc-lib component");
+  if (!p) badlgccfn(ccompiler,vb.buf,_("no gcc-lib component"));
   p+= 9;
-  q= strchr(p,'-'); if (!q) badlgccfn(ccompiler,vb.buf,"no hyphen after gcc-lib");
+  q= strchr(p,'-'); if (!q) badlgccfn(ccompiler,vb.buf,_("no hyphen after gcc-lib"));
   ll= q-p;
   for (archp=archtable;
        archp->from && !(strlen(archp->from) == ll && !strncmp(archp->from,p,ll));
@@ -645,7 +673,7 @@ void printarch(const char *const *argv) {
   }
   if (!arch) {
     *q= 0; arch= p;
-    fprintf(stderr,DPKG ": warning, architecture `%s' not in remapping table\n",arch);
+    fprintf(stderr, _("dpkg: warning, architecture `%s' not in remapping table\n"),arch);
   }
   if (printf("%s\n",arch) == EOF) werr("stdout");
   if (fflush(stdout)) werr("stdout");
@@ -656,7 +684,7 @@ void cmpversions(const char *const *argv) {
     const char *string;
     /* These values are exit status codes, so 0=true, 1=false */
     int if_lesser, if_equal, if_greater;
-    int if_none_a, if_none_b, if_none_both;
+    int if_none_a, if_none_both, if_none_b;
   };
 
   static const struct relationinfo relationinfos[]= {
@@ -667,15 +695,15 @@ void cmpversions(const char *const *argv) {
     { "ne",        0,1,0, 0,1,0  },
     { "ge",        1,0,0, 1,0,0  },
     { "gt",        1,1,0, 1,1,0  },
-    { "le-nl",     0,0,1, 1,0,0  }, /* Here none
-    { "lt-nl",     0,1,1, 1,1,0  },  * is counted
-    { "ge-nl",     1,0,0, 0,0,1  },  * than any version.
-    { "gt-nl",     1,1,0, 0,1,1  },  */
-    { "<",         0,0,1, 0,0,1  }, /* For compatibility
-    { "<=",        0,0,1, 0,0,1  },  * with dpkg
-    { "<<",        0,1,1, 0,1,1  },  * control file
-    { "=",         1,0,1, 1,0,1  },  * syntax
-    { ">",         1,0,0, 1,0,0  },  */
+    { "le-nl",     0,0,1, 1,0,0  }, /* Here none        */
+    { "lt-nl",     0,1,1, 1,1,0  }, /* is counted       */
+    { "ge-nl",     1,0,0, 0,0,1  }, /* than any version.*/
+    { "gt-nl",     1,1,0, 0,1,1  }, /*                  */
+    { "<",         0,0,1, 0,0,1  }, /* For compatibility*/
+    { "<=",        0,0,1, 0,0,1  }, /* with dpkg        */
+    { "<<",        0,1,1, 0,1,1  }, /* control file     */
+    { "=",         1,0,1, 1,0,1  }, /* syntax           */
+    { ">",         1,0,0, 1,0,0  }, /*                  */
     { ">=",        1,0,0, 1,0,0  },
     { ">>",        1,1,0, 1,1,0  },
     {  0                         }
@@ -687,17 +715,17 @@ void cmpversions(const char *const *argv) {
   int r;
   
   if (!argv[0] || !argv[1] || !argv[2] || argv[3])
-    badusage("--cmpversions takes three arguments:"
-             " <version> <relation> <version>");
+    badusage(_("--cmpversions takes three arguments:"
+             " <version> <relation> <version>"));
 
   for (rip=relationinfos; rip->string && strcmp(rip->string,argv[1]); rip++);
 
-  if (!rip->string) badusage("--cmpversions bad relation");
+  if (!rip->string) badusage(_("--cmpversions bad relation"));
 
   if (*argv[0] && strcmp(argv[0],"<unknown>")) {
     emsg= parseversion(&a,argv[0]);
     if (emsg) {
-      if (printf("version a has bad syntax: %s\n",emsg) == EOF) werr("stdout");
+      if (printf(_("version a has bad syntax: %s\n"),emsg) == EOF) werr("stdout");
       if (fflush(stdout)) werr("stdout");
       exit(1);
     }
@@ -707,7 +735,7 @@ void cmpversions(const char *const *argv) {
   if (*argv[2] && strcmp(argv[2],"<unknown>")) {
     emsg= parseversion(&b,argv[2]);
     if (emsg) {
-      if (printf("version b has bad syntax: %s\n",emsg) == EOF) werr("stdout");
+      if (printf(_("version b has bad syntax: %s\n"),emsg) == EOF) werr("stdout");
       if (fflush(stdout)) werr("stdout");
       exit(1);
     }
index 495a16e518bf5c0daf121ecad9ec20821cd2c3e6..07eb2db7408bf07c7797985322fa7ce045dc76e6 100644 (file)
 #include <limits.h>
 #include <ctype.h>
 
-#include "config.h"
-#include "dpkg.h"
-#include "dpkg-db.h"
-#include "myopt.h"
+#include <config.h>
+#include <dpkg.h>
+#include <dpkg-db.h>
+#include <myopt.h>
 
 #include "main.h"
 
@@ -57,7 +57,7 @@ void print_error_perpackage(const char *emsg, const char *arg) {
           arg, cipaction->olong, emsg);
   nr= malloc(sizeof(struct error_report));
   if (!nr) {
-    perror(DPKG ": failed to allocate memory for new entry in list of failed packages.");
+    perror(_("dpkg: failed to allocate memory for new entry in list of failed packages."));
     onerr_abort++;
     nr= &emergency;
   }
@@ -67,20 +67,20 @@ void print_error_perpackage(const char *emsg, const char *arg) {
   lastreport= &nr->next;
     
   if (nerrs++ < 20) return;
-  fprintf(stderr, DPKG ": too many errors, stopping\n");
+  fprintf(stderr, _("dpkg: too many errors, stopping\n"));
   onerr_abort++;
 }
 
 int reportbroken_retexitstatus(void) {
   if (reports) {
-    fputs("Errors were encountered while processing:\n",stderr);
+    fputs(_("Errors were encountered while processing:\n"),stderr);
     while (reports) {
       fprintf(stderr," %s\n",reports->what);
       reports= reports->next;
     }
   }
   if (onerr_abort) {
-    fputs("Processing was halted because there were too many errors.\n",stderr);
+    fputs(_("Processing was halted because there were too many errors.\n"),stderr);
   }
   return nerrs || onerr_abort ? 1 : 0;
 }
@@ -88,7 +88,7 @@ int reportbroken_retexitstatus(void) {
 int skip_due_to_hold(struct pkginfo *pkg) {
   if (pkg->want != want_hold) return 0;
   if (fc_hold) {
-    fprintf(stderr, "Package %s was on hold, processing it anyway as you request\n",
+    fprintf(stderr, _("Package %s was on hold, processing it anyway as you request\n"),
             pkg->name);
     return 0;
   }
@@ -101,7 +101,7 @@ void forcibleerr(int forceflag, const char *fmt, ...) {
   va_list al;
   va_start(al,fmt);
   if (forceflag) {
-    fputs(DPKG " - warning, overriding problem because --force enabled:\n ",stderr);
+    fputs(_("dpkg - warning, overriding problem because --force enabled:\n "),stderr);
     vfprintf(stderr,fmt,al);
     fputc('\n',stderr);
   } else {
index 8a0a786f66f12a1e4656004c788eb40b91464569..c53db0eea68bc5b15af59da0109b07efcfdfa912 100644 (file)
@@ -25,9 +25,9 @@
 #include <errno.h>
 #include <sys/stat.h>
 
-#include "config.h"
-#include "dpkg.h"
-#include "dpkg-db.h"
+#include <config.h>
+#include <dpkg.h>
+#include <dpkg-db.h>
 
 #include "filesdb.h"
 #include "main.h"
@@ -113,13 +113,13 @@ void ensure_packagefiles_available(struct pkginfo *pkg) {
 
   if (!file) {
     if (errno != ENOENT)
-      ohshite("unable to open files list file for package `%.250s'",pkg->name);
+      ohshite(_("unable to open files list file for package `%.250s'"),pkg->name);
     onerr_abort--;
     if (pkg->status != stat_configfiles) {
       if (saidread == 1) putc('\n',stderr);
       fprintf(stderr,
-              DPKG ": serious warning: files list file for package `%.250s' missing,"
-              " assuming package has no files currently installed.\n", pkg->name);
+              _("dpkg: serious warning: files list file for package `%.250s' missing,"
+              " assuming package has no files currently installed.\n"), pkg->name);
     }
     pkg->clientdata->files= 0;
     pkg->clientdata->fileslistvalid= 1;
@@ -129,7 +129,7 @@ void ensure_packagefiles_available(struct pkginfo *pkg) {
   push_cleanup(cu_closefile,ehflag_bombout, 0,0, 1,(void*)file);
   
   if (setvbuf(file,stdiobuf,_IOFBF,sizeof(stdiobuf)))
-    ohshite("unable to set buffering on `%.250s'",filelistfile);
+    ohshite(_("unable to set buffering on `%.250s'"),filelistfile);
   
   lendp= &pkg->clientdata->files;
   varbufreset(&fnvb);
@@ -139,7 +139,7 @@ void ensure_packagefiles_available(struct pkginfo *pkg) {
      * avoid copying where possible.
      */
     l= strlen(linebuf);
-    if (l == 0) ohshit("fgets gave an empty null-terminated string from `%.250s'",
+    if (l == 0) ohshit(_("fgets gave an empty null-terminated string from `%.250s'"),
                        filelistfile);
     l--;
     if (linebuf[l] != '\n') {
@@ -157,7 +157,7 @@ void ensure_packagefiles_available(struct pkginfo *pkg) {
       thefilename= fnvb.buf;
     }
     if (!*thefilename)
-      ohshit("files list file for package `%.250s' contains empty filename",pkg->name);
+      ohshit(_("files list file for package `%.250s' contains empty filename"),pkg->name);
     newent= nfmalloc(sizeof(struct fileinlist));
     newent->namenode= findnamenode(thefilename);
     newent->next= 0;
@@ -165,12 +165,12 @@ void ensure_packagefiles_available(struct pkginfo *pkg) {
     lendp= &newent->next;
   }
   if (ferror(file))
-    ohshite("error reading files list file for package `%.250s'",pkg->name);
+    ohshite(_("error reading files list file for package `%.250s'"),pkg->name);
   pop_cleanup(ehflag_normaltidy); /* file= fopen() */
   if (fclose(file))
-    ohshite("error closing files list file for package `%.250s'",pkg->name);
+    ohshite(_("error closing files list file for package `%.250s'"),pkg->name);
   if (fnvb.used)
-    ohshit("files list file for package `%.250s' is truncated",pkg->name);
+    ohshit(_("files list file for package `%.250s' is truncated"),pkg->name);
 
   onerr_abort--;
 
@@ -201,7 +201,7 @@ void ensure_allinstfiles_available(void) {
   if (allpackagesdone) return;
   if (saidread<2) {
     saidread=1;
-    printf(f_largemem>0 ? "(Reading database ... " : "(Scanning database ... ");
+    printf(f_largemem>0 ? _("(Reading database ... ") : _("(Scanning database ... "));
   }
   it= iterpkgstart();
   while ((pkg= iterpkgnext(it)) != 0) ensure_packagefiles_available(pkg);
@@ -209,7 +209,7 @@ void ensure_allinstfiles_available(void) {
   allpackagesdone= 1;
 
   if (saidread==1) {
-    printf("%d files and directories currently installed.)\n",nfiles);
+    printf(_("%d files and directories currently installed.)\n"),nfiles);
     saidread=2;
   }
 }
@@ -240,7 +240,7 @@ void write_filelist_except(struct pkginfo *pkg, struct fileinlist *list, int lea
   
   file= fopen(newvb.buf,"w+");
   if (!file)
-    ohshite("unable to create updated files list file for package %s",pkg->name);
+    ohshite(_("unable to create updated files list file for package %s"),pkg->name);
   push_cleanup(cu_closefile,ehflag_bombout, 0,0, 1,(void*)file);
   while (list) {
     if (!(leaveout && (list->namenode->flags & fnnf_elide_other_lists))) {
@@ -250,16 +250,16 @@ void write_filelist_except(struct pkginfo *pkg, struct fileinlist *list, int lea
     list= list->next;
   }
   if (ferror(file))
-    ohshite("failed to write to updated files list file for package %s",pkg->name);
+    ohshite(_("failed to write to updated files list file for package %s"),pkg->name);
   if (fflush(file))
-    ohshite("failed to flush updated files list file for package %s",pkg->name);
+    ohshite(_("failed to flush updated files list file for package %s"),pkg->name);
   if (fsync(fileno(file)))
-    ohshite("failed to sync updated files list file for package %s",pkg->name);
+    ohshite(_("failed to sync updated files list file for package %s"),pkg->name);
   pop_cleanup(ehflag_normaltidy); /* file= fopen() */
   if (fclose(file))
-    ohshite("failed to close updated files list file for package %s",pkg->name);
+    ohshite(_("failed to close updated files list file for package %s"),pkg->name);
   if (rename(newvb.buf,vb.buf))
-    ohshite("failed to install updated files list file for package %s",pkg->name);
+    ohshite(_("failed to install updated files list file for package %s"),pkg->name);
 
   note_must_reread_files_inpackage(pkg);
 }
@@ -323,13 +323,13 @@ void ensure_diversions(void) {
   
   file= fopen(vb.buf,"r");
   if (!file) {
-    if (errno != ENOENT) ohshite("failed to open diversions file");
+    if (errno != ENOENT) ohshite(_("failed to open diversions file"));
     if (!diversionsfile) { onerr_abort--; return; }
   } else if (diversionsfile) {
     if (fstat(fileno(diversionsfile),&stab1))
-      ohshite("failed to fstat previous diversions file");
+      ohshite(_("failed to fstat previous diversions file"));
     if (fstat(fileno(file),&stab2))
-      ohshite("failed to fstat diversions file");
+      ohshite(_("failed to fstat diversions file"));
     if (stab1.st_dev == stab2.st_dev && stab1.st_ino == stab2.st_ino) {
       fclose(file); onerr_abort--; return;
     }
@@ -349,33 +349,33 @@ void ensure_diversions(void) {
     oialtname= nfmalloc(sizeof(struct diversion));
 
     l= strlen(linebuf);
-    if (l == 0) ohshit("fgets gave an empty string from diversions [i]");
-    if (linebuf[--l] != '\n') ohshit("diversions file has too-long line or EOF [i]");
+    if (l == 0) ohshit(_("fgets gave an empty string from diversions [i]"));
+    if (linebuf[--l] != '\n') ohshit(_("diversions file has too-long line or EOF [i]"));
     linebuf[l]= 0;
     oialtname->camefrom= findnamenode(linebuf);
     
     if (!fgets(linebuf,sizeof(linebuf),file))
-      if (ferror(file)) ohshite("read error in diversions [ii]");
-      else ohshit("unexpected EOF in diversions [ii]");
+      if (ferror(file)) ohshite(_("read error in diversions [ii]"));
+      else ohshit(_("unexpected EOF in diversions [ii]"));
     l= strlen(linebuf);
-    if (l == 0) ohshit("fgets gave an empty string from diversions [ii]");
-    if (linebuf[--l] != '\n') ohshit("diversions file has too-long line or EOF [ii]");
+    if (l == 0) ohshit(_("fgets gave an empty string from diversions [ii]"));
+    if (linebuf[--l] != '\n') ohshit(_("diversions file has too-long line or EOF [ii]"));
     linebuf[l]= 0;
     oicontest->useinstead= findnamenode(linebuf);
     
     if (!fgets(linebuf,sizeof(linebuf),file))
-      if (ferror(file)) ohshite("read error in diversions [iii]");
-      else ohshit("unexpected EOF in diversions [iii]");
+      if (ferror(file)) ohshite(_("read error in diversions [iii]"));
+      else ohshit(_("unexpected EOF in diversions [iii]"));
     l= strlen(linebuf);
-    if (l == 0) ohshit("fgets gave an empty string from diversions [iii]");
-    if (linebuf[--l] != '\n') ohshit("diversions file has too-long line or EOF [ii]");
+    if (l == 0) ohshit(_("fgets gave an empty string from diversions [iii]"));
+    if (linebuf[--l] != '\n') ohshit(_("diversions file has too-long line or EOF [ii]"));
     linebuf[l]= 0;
 
     oicontest->pkg= oialtname->pkg=
       strcmp(linebuf,":") ? findpackage(linebuf) : 0;
 
     if (oialtname->camefrom->divert || oicontest->useinstead->divert)
-      ohshit("conflicting diversions involving `%.250s' or `%.250s'",
+      ohshit(_("conflicting diversions involving `%.250s' or `%.250s'"),
              oialtname->camefrom->name, oicontest->useinstead->name);
 
     oialtname->camefrom->divert= oicontest;
@@ -384,7 +384,7 @@ void ensure_diversions(void) {
     oicontest->next= diversions;
     diversions= oicontest;
   }
-  if (ferror(file)) ohshite("read error in diversions [i]");
+  if (ferror(file)) ohshite(_("read error in diversions [i]"));
 
   diversionsfile= file;
   onerr_abort--;
index edccc5d88b5172d14580aa36107ca3fe9428e0ce..5c1a68c67f285e1441ffd4b09cc7103edb8ab9a1 100644 (file)
@@ -19,6 +19,7 @@
  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
 
+#include <errno.h>
 #include <unistd.h>
 #include <dirent.h>
 #include <assert.h>
 #include <sys/stat.h>
 #include <sys/types.h>
 #include <sys/wait.h>
+#include <signal.h>
 
-#include "config.h"
-#include "dpkg.h"
-#include "dpkg-db.h"
-#include "myopt.h"
+#include <config.h>
+#include <dpkg.h>
+#include <dpkg-db.h>
 
 #include "filesdb.h"
 #include "main.h"
 
 const char *const statusstrings[]= {
-  "not installed", "unpacked but not configured",
-  "broken due to postinst failure",
-  "installed",
-  "broken due to failed removal",
-  "not installed but configs remain"
+  N_("not installed"), N_("unpacked but not configured"),
+  N_("broken due to postinst failure"),
+  N_("installed"),
+  N_("broken due to failed removal"),
+  N_("not installed but configs remain")
 };
 
 struct filenamenode *namenodetouse(struct filenamenode *namenode, struct pkginfo *pkg) {
@@ -77,7 +78,7 @@ void checkpath(void) {
   long l;
 
   path= getenv("PATH");
-  if (!path) fputs(DPKG " - warning: PATH is not set.\n", stderr);
+  if (!path) fputs(_("dpkg - warning: PATH is not set.\n"), stderr);
   
   for (clp=checklist; *clp; clp++) {
     s= path;
@@ -92,14 +93,14 @@ void checkpath(void) {
       s= p; if (s) s++;
     }
     if (!s) {
-      fprintf(stderr,DPKG ": `%s' not found on PATH.\n",*clp);
+      fprintf(stderr,_("dpkg: `%s' not found on PATH.\n"),*clp);
       warned++;
     }
   }
 
   if (warned)
-    forcibleerr(fc_badpath,"%d expected program(s) not found on PATH.\nNB: root's "
-                "PATH should usually contain /usr/local/sbin, /usr/sbin and /sbin.",
+    forcibleerr(fc_badpath,_("%d expected program(s) not found on PATH.\nNB: root's "
+                "PATH should usually contain /usr/local/sbin, /usr/sbin and /sbin."),
                 warned);
 }
 
@@ -163,7 +164,7 @@ const char *pkgadminfile(struct pkginfo *pkg, const char *whichfile) {
 static void preexecscript(const char *path, char *const *argv) {
   if (*instdir) {
     /* fixme: won't work right when instdir != admindir */
-    if (chroot(instdir)) ohshite("failed to chroot to `%.250s'",instdir);
+    if (chdir(instdir) || chroot(instdir)) ohshite("failed to chroot to `%.250s'",instdir);
   }
   if (f_debug & dbg_scripts) {
     fprintf(stderr,"D0%05o: fork/exec %s (",dbg_scripts,path);
@@ -178,7 +179,7 @@ static char *const *vbuildarglist(const char *scriptname, va_list ap) {
   int i;
 
   i=0;
-  bufs[i++]= (char*)scriptname; /* yes, cast away cost because exec wants it that way */
+  bufs[i++]= (char*)scriptname; /* yes, cast away const because exec wants it that way */
   for (;;) {
     assert(i < PKGSCRIPTMAXARGS);
     nextarg= va_arg(ap,char*);
@@ -206,7 +207,7 @@ static void cu_restorescriptsignals(int argc, void **argv) {
   int i;
   for (i=0; i<NSCRIPTCATCHSIGNALS; i++) {
     if (sigaction(script_catchsignallist[i],&script_uncatchsignal[i],0)) {
-      fprintf(stderr,"error un-catching signal %s: %s\n",
+      fprintf(stderr,_("error un-catching signal %s: %s\n"),
               strsignal(script_catchsignallist[i]),strerror(errno));
       onerr_abort++;
     }
@@ -224,7 +225,7 @@ static void script_catchsignals(void) {
   catchsig.sa_flags= 0;
   for (i=0; i<NSCRIPTCATCHSIGNALS; i++)
     if (sigaction(script_catchsignallist[i],&catchsig,&script_uncatchsignal[i]))
-      ohshite("unable to ignore signal %s before running script",
+      ohshite(_("unable to ignore signal %s before running script"),
               strsignal(script_catchsignallist[i]));
   push_cleanup(cu_restorescriptsignals,~0, 0,0, 0);
   onerr_abort--;
@@ -233,7 +234,7 @@ static void script_catchsignals(void) {
 static void setexecute(const char *path, struct stat *stab) {
   if ((stab->st_mode & 0555) == 0555) return;
   if (!chmod(path,0755)) return;
-  ohshite("unable to set execute permissions on `%.250s'",path);
+  ohshite(_("unable to set execute permissions on `%.250s'"),path);
 }
 
 int maintainer_script_installed(struct pkginfo *pkg, const char *scriptname,
@@ -257,14 +258,14 @@ int maintainer_script_installed(struct pkginfo *pkg, const char *scriptname,
       debug(dbg_scripts,"maintainer_script_installed nonexistent %s",scriptname);
       return 0;
     }
-    ohshite("unable to stat installed %s script `%.250s'",description,scriptpath);
+    ohshite(_("unable to stat installed %s script `%.250s'"),description,scriptpath);
   }
   setexecute(scriptpath,&stab);
   c1= m_fork();
   if (!c1) {
     preexecscript(scriptpath,arglist);
-    execv(scriptpath,arglist);
-    ohshite("unable to execute %s",buf);
+    execv(scriptpath+strlen(instdir),arglist);
+    ohshite(_("unable to execute %s"),buf);
   }
   script_catchsignals(); /* This does a push_cleanup() */
   waitsubproc(c1,buf,0);
@@ -293,14 +294,14 @@ int maintainer_script_new(const char *scriptname, const char *description,
       debug(dbg_scripts,"maintainer_script_new nonexistent %s `%s'",scriptname,cidir);
       return 0;
     }
-    ohshite("unable to stat new %s script `%.250s'",description,cidir);
+    ohshite(_("unable to stat new %s script `%.250s'"),description,cidir);
   }
   setexecute(cidir,&stab);
   c1= m_fork();
   if (!c1) {
     preexecscript(cidir,arglist);
-    execv(cidir,arglist);
-    ohshite("unable to execute new %s",buf);
+    execv(cidir+strlen(instdir),arglist);
+    ohshite(_("unable to execute new %s"),buf);
   }
   script_catchsignals(); /* This does a push_cleanup() */
   waitsubproc(c1,buf,0);
@@ -334,59 +335,59 @@ int maintainer_script_alternative(struct pkginfo *pkg,
       return 0;
     }
     fprintf(stderr,
-            DPKG ": warning - unable to stat %s `%.250s': %s\n",
+            _("dpkg: warning - unable to stat %s `%.250s': %s\n"),
             buf,oldscriptpath,strerror(errno));
   } else {
     setexecute(oldscriptpath,&stab);
     c1= m_fork();
     if (!c1) {
       preexecscript(oldscriptpath,arglist);
-      execv(oldscriptpath,arglist);
-      ohshite("unable to execute %s",buf);
+      execv(oldscriptpath+strlen(instdir),arglist);
+      ohshite(_("unable to execute %s"),buf);
     }
     script_catchsignals(); /* This does a push_cleanup() */
     while ((r= waitpid(c1,&status,0)) == -1 && errno == EINTR);
-    if (r != c1) ohshite("wait for %s failed",buf);
+    if (r != c1) ohshite(_("wait for %s failed"),buf);
     pop_cleanup(ehflag_normaltidy);
     if (WIFEXITED(status)) {
       n= WEXITSTATUS(status); if (!n) return 1;
-      fprintf(stderr, DPKG ": warning - %s returned error exit status %d\n",buf,n);
+      fprintf(stderr, _("dpkg: warning - %s returned error exit status %d\n"),buf,n);
     } else if (WIFSIGNALED(status)) {
       n= WTERMSIG(status);
-      fprintf(stderr, DPKG ": warning - %s killed by signal (%s)%s\n",
+      fprintf(stderr, _("dpkg: warning - %s killed by signal (%s)%s\n"),
               buf, strsignal(n), WCOREDUMP(status) ? ", core dumped" : "");
     } else {
-      ohshit("%s failed with unknown wait status code %d",buf,status);
+      ohshit(_("%s failed with unknown wait status code %d"),buf,status);
     }
     ensure_diversions();
   }
-  fprintf(stderr, DPKG " - trying script from the new package instead ...\n");
+  fprintf(stderr, _("dpkg - trying script from the new package instead ...\n"));
 
   arglist= buildarglist(scriptname,
                         iffallback,versiondescribe(&pkg->installed.version,
                                                    vdew_nonambig),
                         (char*)0);
   strcpy(cidirrest,scriptname);
-  sprintf(buf,"new %s script",description);
+  sprintf(buf,_("new %s script"),description);
 
   if (stat(cidir,&stab))
     if (errno == ENOENT)
-      ohshit("there is no script in the new version of the package - giving up");
+      ohshit(_("there is no script in the new version of the package - giving up"));
     else
-      ohshite("unable to stat %s `%.250s'",buf,cidir);
+      ohshite(_("unable to stat %s `%.250s'"),buf,cidir);
 
   setexecute(cidir,&stab);
 
   c1= m_fork();
   if (!c1) {
     preexecscript(cidir,arglist);
-    execv(cidir,arglist);
-    ohshite("unable to execute %s",buf);
+    execv(cidir+strlen(instdir),arglist);
+    ohshite(_("unable to execute %s"),buf);
   }
   script_catchsignals(); /* This does a push_cleanup() */
   waitsubproc(c1,buf,0);
   pop_cleanup(ehflag_normaltidy);
-  fprintf(stderr, DPKG ": ... it looks like that went OK.\n");
+  fprintf(stderr, _("dpkg: ... it looks like that went OK.\n"));
 
   ensure_diversions();
   return 1;
@@ -465,11 +466,11 @@ void ensure_pathname_nonexisting(const char *pathname) {
     if (errno == ENOTDIR) return;
   }
   if (errno != ENOTEMPTY) /* Huh ? */
-    ohshite("failed to rmdir/unlink `%.255s'",pathname);
+    ohshite(_("failed to rmdir/unlink `%.255s'"),pathname);
   c1= m_fork();
   if (!c1) {
     execlp(RM,"rm","-rf","--",pathname,(char*)0);
-    ohshite("failed to exec " RM " for cleanup");
+    ohshite(_("failed to exec rm for cleanup"));
   }
   debug(dbg_eachfile,"ensure_pathname_nonexisting running rm -rf");
   waitsubproc(c1,"rm cleanup",0);
index 71e345442691903c060572451a3574b9fdf483ad..047ff388ae65634b11c91daabc6f501c369eeb7d 100644 (file)
 #include <limits.h>
 #include <ctype.h>
 
-#include "config.h"
-#include "dpkg.h"
-#include "dpkg-db.h"
-#include "version.h"
-#include "myopt.h"
+#include <config.h>
+#include <dpkg.h>
+#include <dpkg-db.h>
+#include <version.h>
+#include <myopt.h>
 
 #include "main.h"
 
 static void printversion(void) {
-  if (!fputs("Debian Linux `" DPKG "' package management program version "
-              DPKG_VERSION_ARCH ".\n"
-             "Copyright 1994-1996 Ian Jackson, Bruce Perens.  This is free software;\n"
+  if (fputs(_("Debian Linux `dpkg' package management program version "), stdout) < 0)
+      werr("stdout");
+  if (fputs( DPKG_VERSION_ARCH ".\n", stdout) < 0) werr("stdout");
+  if (fputs(_("Copyright 1994-1996 Ian Jackson, Bruce Perens.  This is free software;\n"
              "see the GNU General Public Licence version 2 or later for copying\n"
-             "conditions.  There is NO warranty.  See dpkg --licence for details.\n",
-             stdout)) werr("stdout");
+             "conditions.  There is NO warranty.  See dpkg --licence for details.\n"),
+             stdout) < 0) werr("stdout");
 }
 /*
    options that need fixing:
-  " DPKG " --yet-to-unpack                 \n\
+  dpkg --yet-to-unpack                 \n\
   */
 static void usage(void) {
-  if (!fputs("\
+  if (fprintf (stdout, _("\
 Usage: \n\
-  " DPKG " -i|--install      <.deb file name> ... | -R|--recursive <dir> ...\n\
-  " DPKG " --unpack          <.deb file name> ... | -R|--recursive <dir> ...\n\
-  " DPKG " -A|--record-avail <.deb file name> ... | -R|--recursive <dir> ...\n\
-  " DPKG " --configure           <package name> ... | -a|--pending\n\
-  " DPKG " -r|--remove | --purge <package name> ... | -a|--pending\n\
-  " DPKG " --get-selections [<pattern> ...]   get list of selections to stdout\n\
-  " DPKG " --set-selections                   set package selections from stdin\n\
-  " DPKG " --update-avail <Packages-file>     replace available packages info\n\
-  " DPKG " --merge-avail <Packages-file>      merge with info from file\n\
-  " DPKG " --clear-avail                      erase existing available info\n\
-  " DPKG " --forget-old-unavail               forget uninstalled unavailable pkgs\n\
-  " DPKG " -s|--status <package-name> ...     display package status details\n\
-  " DPKG " --print-avail <package-name> ...   display available version details\n\
-  " DPKG " -L|--listfiles <package-name> ...  list files `owned' by package(s)\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 " --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\
+  dpkg -i|--install      <.deb file name> ... | -R|--recursive <dir> ...\n\
+  dpkg --unpack          <.deb file name> ... | -R|--recursive <dir> ...\n\
+  dpkg -A|--record-avail <.deb file name> ... | -R|--recursive <dir> ...\n\
+  dpkg --configure           <package name> ... | -a|--pending\n\
+  dpkg -r|--remove | --purge <package name> ... | -a|--pending\n\
+  dpkg --get-selections [<pattern> ...]   get list of selections to stdout\n\
+  dpkg --set-selections                   set package selections from stdin\n\
+  dpkg --update-avail <Packages-file>     replace available packages info\n\
+  dpkg --merge-avail <Packages-file>      merge with info from file\n\
+  dpkg --clear-avail                      erase existing available info\n\
+  dpkg --forget-old-unavail               forget uninstalled unavailable pkgs\n\
+  dpkg -s|--status <package-name> ...     display package status details\n\
+  dpkg --print-avail <package-name> ...   display available version details\n\
+  dpkg -L|--listfiles <package-name> ...  list files `owned' by package(s)\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 --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 " BACKEND " --help.)\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\
+For internal use: dpkg --assert-support-predepends | --predep-package |\n\
+  --assert-working-epoch\n\
 \n\
 Options:
-  --admindir=<directory>     Use <directory> instead of " ADMINDIR "\n\
+  --admindir=<directory>     Use <directory> instead of %s\n\
   --root=<directory>         Install on alternative system rooted elsewhere\n\
   --instdir=<directory>      Change inst'n root without changing admin dir\n\
   -O|--selected-only         Skip packages not selected for install/upgrade\n\
@@ -95,36 +97,37 @@ Options:
   -B|--auto-deconfigure      Install even if it would break some other package\n\
   --largemem | --smallmem    Optimise for large (>4Mb) or small (<4Mb) RAM use\n\
   --no-act                   Just say what we would do - don't do it\n\
-  -D|--debug=<octal>         Enable debugging - see -Dhelp or --debug=help
+  -D|--debug=<octal>         Enable debugging - see -Dhelp or --debug=help\n\
   --ignore-depends=<package>,... Ignore dependencies involving <package>\n\
   --force-...                    Override problems - see --force-help\n\
   --no-force-...|--refuse-...    Stop when problems encountered\n\
 \n\
 Comparison operators for --compare-versions are:\n\
  lt le eq ne ge gt       (treat no version as earlier than any version);\n\
- lt-nl le-nl ge-nl gt-nl (tread no version as later than any version);\n\
+ lt-nl le-nl ge-nl gt-nl (treat no version as later than any version);\n\
  < << <= = >= >> >       (only for compatibility with control file syntax).\n\
 \n\
-Use `" DSELECT "' for user-friendly package management.\n",
-             stdout)) werr("stdout");
+Use `dselect' for user-friendly package management.\n"),
+           BACKEND, ADMINDIR) < 0) werr ("stdout");
 }
 
-const char thisname[]= DPKG;
+const char thisname[]= "dpkg";
 const char architecture[]= ARCHITECTURE;
-const char printforhelp[]= "\
-Type " DPKG " --help for help about installing and deinstalling packages [*];\n\
-Use " DSELECT " for user-friendly package management;\n\
-Type " DPKG " -Dhelp for a list of " DPKG " debug flag values;\n\
-Type " DPKG " --force-help for a list of forcing options;\n\
-Type " BACKEND " --help for help about manipulating *.deb files;\n\
-Type " DPKG " --licence for copyright licence and lack of warranty (GNU GPL) [*].\n\
+const char printforhelp[]= N_("\
+Type dpkg --help for help about installing and deinstalling packages [*];\n\
+Use dselect for user-friendly package management;\n\
+Type dpkg -Dhelp for a list of dpkg debug flag values;\n\
+Type dpkg --force-help for a list of forcing options;\n\
+Type dpkg-deb --help for help about manipulating *.deb files;\n\
+Type dpkg --licence for copyright licence and lack of warranty (GNU GPL) [*].\n\
 \n\
-Options marked [*] produce a lot of output - pipe it through `less' or `more' !";
+Options marked [*] produce a lot of output - pipe it through `less' or `more' !");
 
 const struct cmdinfo *cipaction= 0;
 int f_pending=0, f_recursive=0, f_alsoselect=1, f_skipsame=0, f_noact=0;
 int f_autodeconf=0, f_largemem=0;
 unsigned long f_debug=0;
+/* Change fc_overwrite to 1 to enable force-overwrite by default */
 int fc_downgrade=1, fc_configureany=0, fc_hold=0, fc_removereinstreq=0, fc_overwrite=1;
 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;
@@ -165,7 +168,7 @@ static void versiononly(const struct cmdinfo *cip, const char *value) {
 
 static void setaction(const struct cmdinfo *cip, const char *value) {
   if (cipaction)
-    badusage("conflicting actions --%s and --%s",cip->olong,cipaction->olong);
+    badusage(_("conflicting actions --%s and --%s"),cip->olong,cipaction->olong);
   cipaction= cip;
 }
 
@@ -173,7 +176,7 @@ static void setdebug(const struct cmdinfo *cpi, const char *value) {
   char *endp;
 
   if (*value == 'h') {
-    if (!fputs(
+    if (fputs(
 DPKG " debugging option, --debug=<octal> or -D<octal>:\n\n\
  number  ref. in source   description\n\
       1   general           Generally helpful progress information\n\
@@ -188,7 +191,7 @@ DPKG " debugging option, --debug=<octal> or -D<octal>:\n\n\
    2000   stupidlyverbose   Insane amounts of drivel\n\n\
 Debugging options are be mixed using bitwise-or.\n\
 Note that the meanings and values are subject to change.\n",
-             stderr)) werr("stderr");
+             stdout) < 0) werr("stdout");
     exit(0);
   }
   
@@ -217,14 +220,14 @@ static void ignoredepends(const struct cmdinfo *cip, const char *value) {
     if (*p != ',') continue;
     *p++= 0;
     if (!*p || *p==',' || p==copy+1)
-      badusage("null package name in --ignore-depends comma-separated list `%.250s'",
+      badusage(_("null package name in --ignore-depends comma-separated list `%.250s'"),
                value);
   }
   p= copy;
   while (*p) {
     pnerr= illegal_packagename(value,0);
-    if (pnerr) ohshite("--ignore-depends requires a legal package name. "
-                       "`%.250s' is not; %s", value, pnerr);
+    if (pnerr) ohshite(_("--ignore-depends requires a legal package name. "
+                       "`%.250s' is not; %s"), value, pnerr);
     ni= m_malloc(sizeof(struct packageinlist));
     ni->pkg= findpackage(value);
     ni->next= ignoredependss;
@@ -239,8 +242,7 @@ static void setforce(const struct cmdinfo *cip, const char *value) {
   const struct forceinfo *fip;
 
   if (!strcmp(value,"help")) {
-    if (!fputs(
-DPKG " forcing options - control behaviour when problems found:\n\
+    if (fputs(_("dpkg forcing options - control behaviour when problems found:\n\
   warn but continue:  --force-<thing>,<thing>,...\n\
   stop with error:    --refuse-<thing>,<thing>,... | --no-force-<thing>,...\n\
  Forcing things:\n\
@@ -250,7 +252,7 @@ DPKG " forcing options - control behaviour when problems found:\n\
   hold                   Process incidental packages even when on hold\n\
   bad-path               PATH is missing important programs, problems likely\n\
   not-root               Try to (de)install things even when not root\n\
-  overwrite [*]          Overwrite a file from one package with another\n\
+  overwrite              Overwrite a file from one package with another\n\
   overwrite-diverted     Overwrite a diverted file with an undiverted version\n\
   depends-version [!]    Turn dependency version problems into warnings\n\
   depends [!]            Turn all dependency problems into warnings\n\
@@ -261,8 +263,8 @@ DPKG " forcing options - control behaviour when problems found:\n\
   remove-essential [!]   Remove an essential package\n\
 \n\
 WARNING - use of options marked [!] can seriously damage your installation.\n\
-Forcing options marked [*] are enabled by default.\n",
-               stderr)) werr("stderr");
+Forcing options marked [*] are enabled by default.\n"),
+               stdout) < 0) werr("stdout");
     exit(0);
   }
 
@@ -272,7 +274,7 @@ Forcing options marked [*] are enabled by default.\n",
     for (fip=forceinfos; fip->name; fip++)
       if (!strncmp(fip->name,value,l) && strlen(fip->name)==l) break;
     if (!fip->name)
-      badusage("unknown force/refuse option `%.*s'", l<250 ? l : 250, value);
+      badusage(_("unknown force/refuse option `%.*s'"), l<250 ? l : 250, value);
     *fip->opt= cip->arg;
     if (!comma) break;
     value= ++comma;
@@ -316,6 +318,7 @@ static const struct cmdinfo cmdinfos[]= {
   ACTION( "print-architecture",              0,  act_printarch,     printarch       ),
   ACTION( "print-gnu-build-architecture",    0,  act_printgnuarch,  printarch       ),
   ACTION( "assert-support-predepends",       0,  act_assertpredep,  assertpredep    ),
+  ACTION( "assert-working-epoch",            0,  act_assertepoch,   assertepoch     ),
   ACTION( "print-installation-architecture", 0,  act_printinstarch, printinstarch   ),
   ACTION( "predep-package",                  0,  act_predeppackage, predeppackage   ),
   ACTION( "compare-versions",                0,  act_cmpversions,   cmpversions     ),
@@ -347,7 +350,7 @@ static const struct cmdinfo cmdinfos[]= {
 
 static void execbackend(int argc, const char *const *argv) {
   execvp(BACKEND, (char* const*) argv);
-  ohshite("failed to exec " BACKEND);
+  ohshite(_("failed to exec dpkg-deb"));
 }
 
 int main(int argc, const char *const *argv) {
@@ -356,6 +359,10 @@ int main(int argc, const char *const *argv) {
   const char *argp, *const *blongopts, *const *argvs;
   static void (*actionfunction)(const char *const *argv);
 
+  setlocale(LC_ALL, "");
+  bindtextdomain(PACKAGE, LOCALEDIR);
+  textdomain(PACKAGE);
+
   if (setjmp(ejbuf)) { /* expect warning about possible clobbering of argv */
     error_unwind(ehflag_bombout); exit(2);
   }
@@ -379,7 +386,7 @@ int main(int argc, const char *const *argv) {
   }
 
   myopt(&argv,cmdinfos);
-  if (!cipaction) badusage("need an action option");
+  if (!cipaction) badusage(_("need an action option"));
 
   setvbuf(stdout,0,_IONBF,0);
   filesdbinit();
index fb1e50e509e353452fc79822631bb0a49738551c..3c9c747ad73fd33dab559bdf41a5155116d781d1 100644 (file)
@@ -53,7 +53,8 @@ enum action { act_unset, act_install, act_unpack, act_avail, act_configure,
               act_unpackchk, act_status, act_searchfiles, act_audit, act_listfiles,
               act_assertpredep, act_printarch, act_predeppackage, act_cmpversions,
               act_printinstarch, act_compareversions, act_printavail, act_avclear,
-              act_forgetold, act_getselections, act_setselections, act_printgnuarch };
+              act_forgetold, act_getselections, act_setselections, act_printgnuarch,
+              act_assertepoch };
 
 enum conffopt {
   cfof_prompt        =     001,
@@ -110,6 +111,7 @@ void audit(const char *const *argv);
 void unpackchk(const char *const *argv);
 void searchfiles(const char *const *argv);
 void enqperpackage(const char *const *argv);
+void assertepoch(const char *const *argv);
 void assertpredep(const char *const *argv);
 void predeppackage(const char *const *argv);
 void printarch(const char *const *argv);
index a876216487ca9bbe31b930c3f2166fcd7d8ed720..3dea58bbe90483c0e6ba3fd45a075fccdbc1ecd0 100644 (file)
 #include <string.h>
 #include <assert.h>
 
-#include "config.h"
-#include "dpkg.h"
-#include "dpkg-db.h"
-#include "myopt.h"
+#include <config.h>
+#include <dpkg.h>
+#include <dpkg-db.h>
+#include <myopt.h>
 
 #include "filesdb.h"
 #include "main.h"
@@ -76,7 +76,7 @@ void packages(const char *const *argv) {
   if (f_pending) {
 
     if (*argv)
-      badusage("--%s --pending does not take any non-option arguments",cipaction->olong);
+      badusage(_("--%s --pending does not take any non-option arguments"),cipaction->olong);
 
     it= iterpkgstart();
     while ((pkg= iterpkgnext(it)) != 0) {
@@ -106,15 +106,15 @@ void packages(const char *const *argv) {
   } else {
         
     if (!*argv)
-      badusage("--%s needs at least one package name argument", cipaction->olong);
+      badusage(_("--%s needs at least one package name argument"), cipaction->olong);
     
     while ((thisarg= *argv++) != 0) {
       pkg= findpackage(thisarg);
       if (pkg->status == stat_notinstalled) {
         l= strlen(pkg->name);
         if (l >= sizeof(DEBEXT) && !strcmp(pkg->name+l-sizeof(DEBEXT)+1,DEBEXT))
-          badusage("you must specify packages by their own names,"
-                   " not by quoting the names of the files they come in");
+          badusage(_("you must specify packages by their own names,"
+                   " not by quoting the names of the files they come in"));
       }
       add_to_queue(pkg);
     }
@@ -147,12 +147,12 @@ void process_queue(void) {
       /* Remove it from the queue - this is a second copy ! */
       switch (cipaction->arg) {
       case act_configure: case act_remove: case act_purge:
-        printf("Package %s listed more than once, only processing once.\n",
+        printf(_("Package %s listed more than once, only processing once.\n"),
                rundown->pkg->name);
         break;
       case act_install:
-        printf("More than one copy of package %s has been unpacked\n"
-               " in this run !  Only configuring it once.\n",
+        printf(_("More than one copy of package %s has been unpacked\n"
+               " in this run !  Only configuring it once.\n"),
                rundown->pkg->name);
         break;
       default:
@@ -261,13 +261,13 @@ static int deppossi_ok_found(struct pkginfo *possdependee,
   }
   thisf= 0;
   if (possdependee == removing) {
-    varbufaddstr(oemsgs,"  Package ");
+    varbufaddstr(oemsgs,_("  Package "));
     varbufaddstr(oemsgs,possdependee->name);
     if (providing) {
-      varbufaddstr(oemsgs," which provides ");
+      varbufaddstr(oemsgs,_(" which provides "));
       varbufaddstr(oemsgs,providing->name);
     }
-    varbufaddstr(oemsgs," is to be removed.\n");
+    varbufaddstr(oemsgs,_(" is to be removed.\n"));
     *matched= 1;
     if (fc_depends) thisf= (dependtry >= 4) ? 2 : 1;
     debug(dbg_depcondetail,"      removing possdependee, returning %d",thisf);
@@ -279,9 +279,9 @@ static int deppossi_ok_found(struct pkginfo *possdependee,
   case stat_halfconfigured:
     assert(possdependee->installed.valid);
     if (checkversion && !versionsatisfied(&possdependee->installed,checkversion)) {
-      varbufaddstr(oemsgs,"  Version of ");
+      varbufaddstr(oemsgs,_("  Version of "));
       varbufaddstr(oemsgs,possdependee->name);
-      varbufaddstr(oemsgs," on system is ");
+      varbufaddstr(oemsgs,_(" on system is "));
       varbufaddstr(oemsgs,versiondescribe(&possdependee->installed.version,
                                           vdew_nonambig));
       varbufaddstr(oemsgs,".\n");
@@ -300,31 +300,31 @@ static int deppossi_ok_found(struct pkginfo *possdependee,
       debug(dbg_depcondetail,"      unpacked/halfconfigured, defer");
       return 1;
     } else if (!removing && fc_configureany && !skip_due_to_hold(possdependee)) {
-      fprintf(stderr, DPKG
-              ": also configuring `%s' (required by `%s')\n",
+      fprintf(stderr,
+              _("dpkg: also configuring `%s' (required by `%s')\n"),
               possdependee->name, requiredby->name);
       add_to_queue(possdependee); sincenothing=0; return 1;
     } else {
-      varbufaddstr(oemsgs,"  Package ");
+      varbufaddstr(oemsgs,_("  Package "));
       varbufaddstr(oemsgs,possdependee->name);
       if (providing) {
-        varbufaddstr(oemsgs," which provides ");
+        varbufaddstr(oemsgs,_(" which provides "));
         varbufaddstr(oemsgs,providing->name);
       }
-      varbufaddstr(oemsgs," is not configured yet.\n");
+      varbufaddstr(oemsgs,_(" is not configured yet.\n"));
       if (fc_depends) thisf= (dependtry >= 4) ? 2 : 1;
       debug(dbg_depcondetail,"      not configured/able - returning %d",thisf);
       (*interestingwarnings)++;
       return thisf;
     }
   default:
-    varbufaddstr(oemsgs,"  Package ");
+    varbufaddstr(oemsgs,_("  Package "));
     varbufaddstr(oemsgs,possdependee->name);
     if (providing) {
-      varbufaddstr(oemsgs," which provides ");
+      varbufaddstr(oemsgs,_(" which provides "));
       varbufaddstr(oemsgs,providing->name);
     }
-    varbufaddstr(oemsgs," is not installed.\n");
+    varbufaddstr(oemsgs,_(" is not installed.\n"));
     if (fc_depends) thisf= (dependtry >= 4) ? 2 : 1;
     debug(dbg_depcondetail,"      not installed - returning %d",thisf);
     (*interestingwarnings)++;
@@ -383,13 +383,13 @@ int dependencies_ok(struct pkginfo *pkg, struct pkginfo *removing,
     case 2:
       varbufaddstr(aemsgs, " ");
       varbufaddstr(aemsgs, pkg->name);
-      varbufaddstr(aemsgs, " depends on ");
+      varbufaddstr(aemsgs, _(" depends on "));
       varbufdependency(aemsgs, dep);
       if (interestingwarnings) {
         /* Don't print the line about the package to be removed if
          * that's the only line.
          */
-        varbufaddstr(aemsgs, "; however:\n");
+        varbufaddstr(aemsgs, _("; however:\n"));
         varbufaddc(&oemsgs, 0);
         varbufaddstr(aemsgs, oemsgs.buf);
       } else {
index e9bad04ad5c39f62d4c4130f73f4b5a2f9b6679d..bf5f9d3fc886649b0de357147f15833c8e0598a9 100644 (file)
@@ -19,6 +19,7 @@
  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
 
+#include <errno.h>
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
 #include <sys/types.h>
 #include <sys/wait.h>
 
-#include "config.h"
-#include "dpkg.h"
-#include "dpkg-db.h"
-#include "myopt.h"
-#include "tarfn.h"
+#include <config.h>
+#include <dpkg.h>
+#include <dpkg-db.h>
+#include <tarfn.h>
+#include <myopt.h>
 
 #include "filesdb.h"
 #include "main.h"
@@ -57,7 +58,7 @@ void process_archive(const char *filename) {
   static int p1[2];
   static char cidirtmpnambuf[L_tmpnam+100];
   static char *cidirbuf=0, *reasmbuf=0;
-  static struct fileinlist *newconffiles;
+  static struct fileinlist *newconffiles, *newfileslist;
   static enum pkgstatus oldversionstatus;
   static struct varbuf infofnvb, fnvb, depprobwhy;
   static struct tarcontext tc;
@@ -68,7 +69,7 @@ void process_archive(const char *filename) {
   char *cidir, *cidirrest, *p;
   char pfilenamebuf[35], conffilenamebuf[MAXCONFFILENAME];
   const char *pfilename, *newinfofilename;
-  struct fileinlist *newconff, **newconffileslastp, *newfileslist;
+  struct fileinlist *newconff, **newconffileslastp;
   struct fileinlist *cfile;
   struct reversefilelistiter rlistit;
   struct conffile *searchconff, **iconffileslastp, *newiconff;
@@ -101,7 +102,7 @@ void process_archive(const char *filename) {
     pfilename= filename;
   }
 
-  if (stat(filename,&stab)) ohshite("cannot access archive");
+  if (stat(filename,&stab)) ohshite(_("cannot access archive"));
 
   if (!f_noact) {
     /* We can't `tentatively-reassemble' packages. */
@@ -111,15 +112,15 @@ void process_archive(const char *filename) {
       strcat(reasmbuf,"/" REASSEMBLETMP);
     }
     if (unlink(reasmbuf) && errno != ENOENT)
-      ohshite("error ensuring `%.250s' doesn't exist",reasmbuf);
+      ohshite(_("error ensuring `%.250s' doesn't exist"),reasmbuf);
     push_cleanup(cu_pathname,~0, 0,0, 1,(void*)reasmbuf);
     c1= m_fork();
     if (!c1) {
       execlp(SPLITTER, SPLITTER,"-Qao",reasmbuf,filename,(char*)0);
-      ohshite("failed to exec " SPLITTER " to see if it's part of a multiparter");
+      ohshite(_("failed to exec dpkg-split to see if it's part of a multiparter"));
     }
     while ((r= waitpid(c1,&status,0)) == -1 && errno == EINTR);
-    if (r != c1) { onerr_abort++; ohshite("wait for " SPLITTER " failed"); }
+    if (r != c1) { onerr_abort++; ohshite(_("wait for dpkg-split failed")); }
     switch (WIFEXITED(status) ? WEXITSTATUS(status) : -1) {
     case 0:
       /* It was a part - is it complete ? */
@@ -140,7 +141,7 @@ void process_archive(const char *filename) {
   
   if (f_noact) {
     cidir= cidirtmpnambuf;
-    if (!tmpnam(cidir)) ohshite("unable to get unique filename for control info");
+    if (!tmpnam(cidir)) ohshite(_("unable to get unique filename for control info"));
     strcat(cidir,"/");
   } else {
     /* We want it to be on the same filesystem so that we can
@@ -162,7 +163,7 @@ void process_archive(const char *filename) {
   if (!c1) {
     cidirrest[-1]= 0;
     execlp(BACKEND, BACKEND,"--control",filename,cidir,(char*)0);
-    ohshite("failed to exec " BACKEND " to extract control information");
+    ohshite(_("failed to exec dpkg-deb to extract control information"));
   }
   waitsubproc(c1,BACKEND " --control",0);
   strcpy(cidirrest,CONTROLFILE);
@@ -176,7 +177,7 @@ void process_archive(const char *filename) {
   sprintf(pkg->files->size,"%lu",(unsigned long)stab.st_size);
 
   if (cipaction->arg == act_avail) {
-    printf("Recorded info about %s from %s.\n",pkg->name,pfilename);
+    printf(_("Recorded info about %s from %s.\n"),pkg->name,pfilename);
     pop_cleanup(ehflag_normaltidy);
     return;
   }
@@ -185,7 +186,7 @@ void process_archive(const char *filename) {
       strcmp(pkg->available.architecture,"all") &&
       strcmp(pkg->available.architecture,architecture))
     forcibleerr(fc_architecture,
-                "package architecture (%s) does not match system (%s)",
+                _("package architecture (%s) does not match system (%s)"),
                 pkg->available.architecture,architecture);
     
   if (!pkg->installed.valid) blankpackageperfile(&pkg->installed);
@@ -202,10 +203,10 @@ void process_archive(const char *filename) {
 
   if (pkg->want != want_install) {
     if (f_alsoselect) {
-      printf("Selecting previously deselected package %s.\n",pkg->name);
+      printf(_("Selecting previously deselected package %s.\n"),pkg->name);
       pkg->want= want_install;
     } else {
-      printf("Skipping deselected package %s.\n",pkg->name);
+      printf(_("Skipping deselected package %s.\n"),pkg->name);
       return;
     }
   }
@@ -216,13 +217,13 @@ void process_archive(const char *filename) {
       needepochs= epochsdiffer(&pkg->available.version,&pkg->installed.version) ?
         vdew_always : vdew_never;
       if (fc_downgrade) {
-        fprintf(stderr, DPKG " - warning: downgrading %.250s from %.250s to %.250s.\n",
+        fprintf(stderr, _("dpkg - warning: downgrading %.250s from %.250s to %.250s.\n"),
                 pkg->name,
                 versiondescribe(&pkg->installed.version,needepochs),
                 versiondescribe(&pkg->available.version,needepochs));
       } else {
-        fprintf(stderr, "Will not downgrade"
-                " %.250s from version %.250s to %.250s, skipping.\n",
+        fprintf(stderr, _("Will not downgrade"
+                " %.250s from version %.250s to %.250s, skipping.\n"),
                 pkg->name,
                 versiondescribe(&pkg->installed.version,needepochs),
                 versiondescribe(&pkg->available.version,needepochs));
@@ -231,7 +232,7 @@ void process_archive(const char *filename) {
       }
     } else if (r == 0 && f_skipsame && /* same version fully installed ? */
                pkg->status == stat_installed && !(pkg->eflag &= eflagf_reinstreq)) {
-      fprintf(stderr, "Version %.250s of %.250s already installed, skipping.\n",
+      fprintf(stderr, _("Version %.250s of %.250s already installed, skipping.\n"),
               versiondescribe(&pkg->installed.version,vdew_never),
               pkg->name);
       pop_cleanup(ehflag_normaltidy);
@@ -264,11 +265,11 @@ void process_archive(const char *filename) {
     case dep_predepends:
       if (!depisok(dsearch,&depprobwhy,0,1)) {
         varbufaddc(&depprobwhy,0);
-        fprintf(stderr, DPKG ": regarding %s containing %s, pre-dependency problem:\n%s",
+        fprintf(stderr, _("dpkg: regarding %s containing %s, pre-dependency problem:\n%s"),
                 pfilename, pkg->name, depprobwhy.buf);
         if (!force_depends(dsearch->list))
-          ohshit("pre-dependency problem - not installing %.250s",pkg->name);
-        fprintf(stderr, DPKG ": warning - ignoring pre-dependency problem !\n");
+          ohshit(_("pre-dependency problem - not installing %.250s"),pkg->name);
+        fprintf(stderr, _("dpkg: warning - ignoring pre-dependency problem !\n"));
       }
     }
   }
@@ -282,12 +283,12 @@ void process_archive(const char *filename) {
   filesdbinit();
   
   if (pkg->status != stat_notinstalled && pkg->status != stat_configfiles)
-    printf("Preparing to replace %s %s (using %s) ...\n",
+    printf(_("Preparing to replace %s %s (using %s) ...\n"),
            pkg->name,
            versiondescribe(&pkg->installed.version,vdew_nonambig),
            pfilename);
   else
-    printf("Unpacking %s (from %s) ...\n",pkg->name,pfilename);
+    printf(_("Unpacking %s (from %s) ...\n"),pkg->name,pfilename);
 
   if (f_noact) {
     pop_cleanup(ehflag_normaltidy);
@@ -307,7 +308,7 @@ void process_archive(const char *filename) {
       p= conffilenamebuf + strlen(conffilenamebuf);
       assert(p != conffilenamebuf);
       if (p[-1] != '\n')
-        ohshit("name of conffile (starting `%.250s') is too long (>%d characters)",
+        ohshit(_("name of conffile (starting `%.250s') is too long (>%d characters)"),
                conffilenamebuf, MAXCONFFILENAME);
       while (p > conffilenamebuf && isspace(p[-1])) --p;
       if (p == conffilenamebuf) continue;
@@ -361,11 +362,11 @@ void process_archive(const char *filename) {
       }
       newconff->namenode->flags |= fnnf_new_conff;
     }
-    if (ferror(conff)) ohshite("read error in %.250s",cidir);
+    if (ferror(conff)) ohshite(_("read error in %.250s"),cidir);
     pop_cleanup(ehflag_normaltidy); /* conff= fopen() */
-    if (fclose(conff)) ohshite("error closing %.250s",cidir);
+    if (fclose(conff)) ohshite(_("error closing %.250s"),cidir);
   } else {
-    if (errno != ENOENT) ohshite("error trying to open %.250s",cidir);
+    if (errno != ENOENT) ohshite(_("error trying to open %.250s"),cidir);
   }
 
   /* All the old conffiles are marked with a flag, so that we don't delete
@@ -397,7 +398,7 @@ void process_archive(const char *filename) {
        conflictor->status == stat_installed)) {
 
     for (deconpil= deconfigure; deconpil; deconpil= deconpil->next) {
-      printf("De-configuring %s, so that we can remove %s ...\n",
+      printf(_("De-configuring %s, so that we can remove %s ...\n"),
              deconpil->pkg->name, conflictor->name);
       deconpil->pkg->status= stat_halfconfigured;
       modstatdb_note(deconpil->pkg);
@@ -454,7 +455,7 @@ void process_archive(const char *filename) {
                           "upgrade", versiondescribe(&pkg->installed.version,
                                                      vdew_nonambig),
                           (char*)0);
-    printf("Unpacking replacement %.250s ...\n",pkg->name);
+    printf(_("Unpacking replacement %.250s ...\n"),pkg->name);
   }
   
   /*
@@ -530,7 +531,7 @@ void process_archive(const char *filename) {
   if (!c1) {
     m_dup2(p1[1],1); close(p1[0]); close(p1[1]);
     execlp(BACKEND, BACKEND, "--fsys-tarfile", filename, (char*)0);
-    ohshite("unable to exec " BACKEND " to get filesystem archive");
+    ohshite(_("unable to exec dpkg-deb to get filesystem archive"));
   }
   close(p1[1]);
 
@@ -538,18 +539,18 @@ void process_archive(const char *filename) {
   push_cleanup(cu_fileslist,~0, 0,0, 1,(void*)&newfileslist);
   tc.pkg= pkg;
   tc.backendpipe= fdopen(p1[0],"r");
-  if (!tc.backendpipe) ohshite("unable to fdopen " BACKEND " extract pipe");
+  if (!tc.backendpipe) ohshite(_("unable to fdopen dpkg-deb extract pipe"));
   push_cleanup(cu_backendpipe,~ehflag_bombout, 0,0, 1,(void*)&tc.backendpipe);
 
   r= TarExtractor((void*)&tc, &tf);
   if (r) {
     if (errno) {
-      ohshite("error reading " BACKEND " tar output");
+      ohshite(_("error reading dpkg-deb tar output"));
     } else if (feof(tc.backendpipe)) {
       waitsubproc(c1,BACKEND " --fsys-tarfile (EOF)",1);
-      ohshit("unexpected EOF in filesystem tarfile - corrupted package archive");
+      ohshit(_("unexpected EOF in filesystem tarfile - corrupted package archive"));
     } else {
-      ohshit("corrupted filesystem tarfile - corrupted package archive");
+      ohshit(_("corrupted filesystem tarfile - corrupted package archive"));
     }
   }
   tmpf= tc.backendpipe;
@@ -606,7 +607,7 @@ void process_archive(const char *filename) {
       if (errno == ENOTDIR) continue;
     }
     fprintf(stderr,
-            DPKG ": warning - unable to delete old file `%.250s': %s\n",
+            _("dpkg: warning - unable to delete old file `%.250s': %s\n"),
             namenode->name, strerror(errno));
   }
 
@@ -628,7 +629,7 @@ void process_archive(const char *filename) {
   infodirlen= infofnvb.used;
   varbufaddc(&infofnvb,0);
   dsd= opendir(infofnvb.buf);
-  if (!dsd) ohshite("cannot read info directory");
+  if (!dsd) ohshite(_("cannot read info directory"));
   push_cleanup(cu_closedir,~0, 0,0, 1,(void*)dsd);
   while ((de= readdir(dsd)) != 0) {
     debug(dbg_veryverbose, "process_archive info file `%s'", de->d_name);
@@ -641,7 +642,7 @@ void process_archive(const char *filename) {
     p++; /* skip past the full stop */
     if (!strcmp(p,LISTFILE)) continue; /* We do the list separately */
     if (strlen(p) > MAXCONTROLFILENAME)
-      ohshit("old version of package has overly-long info file name starting `%.250s'",
+      ohshit(_("old version of package has overly-long info file name starting `%.250s'"),
              de->d_name);
     infofnvb.used= infodirlen;
     varbufaddstr(&infofnvb,de->d_name);
@@ -653,17 +654,17 @@ void process_archive(const char *filename) {
     } else if (errno == ENOENT) {
       /* Right, no new version. */
       if (unlink(infofnvb.buf))
-        ohshite("unable to remove obsolete info file `%.250s'",infofnvb.buf);
+        ohshite(_("unable to remove obsolete info file `%.250s'"),infofnvb.buf);
       debug(dbg_scripts, "process_archive info unlinked %s",infofnvb.buf);
     } else {
-      ohshite("unable to install (supposed) new info file `%.250s'",cidir);
+      ohshite(_("unable to install (supposed) new info file `%.250s'"),cidir);
     }
   }
   pop_cleanup(ehflag_normaltidy); /* closedir */
   
   *cidirrest= 0; /* the directory itself */
   dsd= opendir(cidir);
-  if (!dsd) ohshite("unable to open temp control directory");
+  if (!dsd) ohshite(_("unable to open temp control directory"));
   push_cleanup(cu_closedir,~0, 0,0, 1,(void*)dsd);
   while ((de= readdir(dsd))) {
     if (strchr(de->d_name,'.')) {
@@ -672,27 +673,27 @@ void process_archive(const char *filename) {
       continue;
     }
     if (strlen(de->d_name) > MAXCONTROLFILENAME)
-      ohshit("package contains overly-long control info file name (starting `%.50s')",
+      ohshit(_("package contains overly-long control info file name (starting `%.50s')"),
              de->d_name);
     strcpy(cidirrest,de->d_name);
     /* First we check it's not a directory. */
     if (!rmdir(cidir))
-      ohshit("package control info contained directory `%.250s'",cidir);
+      ohshit(_("package control info contained directory `%.250s'"),cidir);
     else if (errno != ENOTDIR)
-      ohshite("package control info rmdir of `%.250s' didn't say not a dir",de->d_name);
+      ohshite(_("package control info rmdir of `%.250s' didn't say not a dir"),de->d_name);
     if (!strcmp(de->d_name,CONTROLFILE)) {
       debug(dbg_scripts,"process_archive tmp.ci script/file `%s' is control",cidir);
       continue; /* ignore the control file */
     }
     if (!strcmp(de->d_name,LISTFILE)) {
-      fprintf(stderr, DPKG ": warning - package %s"
-              " contained list as info file", pkg->name);
+      fprintf(stderr, _("dpkg: warning - package %s"
+              " contained list as info file"), pkg->name);
       continue;
     }
     /* Right, install it */
     newinfofilename= pkgadminfile(pkg,de->d_name);
     if (rename(cidir,newinfofilename))
-      ohshite("unable to install new info file `%.250s' as `%.250s'",
+      ohshite(_("unable to install new info file `%.250s' as `%.250s'"),
               cidir,newinfofilename);
     debug(dbg_scripts,"process_archive tmp.ci script/file `%s' installed as `%s'",
           cidir, newinfofilename);
@@ -843,7 +844,7 @@ void process_archive(const char *filename) {
     otherpkg->clientdata->istobe= itb_normal;
     if (pdep) continue;
 
-    printf("(Noting disappearance of %s, which has been completely replaced.)\n",
+    printf(_("(Noting disappearance of %s, which has been completely replaced.)\n"),
            otherpkg->name);
     debug(dbg_general, "process_archive disappearing %s",otherpkg->name);
     /* No, we're disappearing it.  This is the wrong time to go and
@@ -863,7 +864,7 @@ void process_archive(const char *filename) {
     varbufaddstr(&fnvb,"/" INFODIR);
     infodirbaseused= fnvb.used;
     varbufaddc(&fnvb,0);
-    dsd= opendir(fnvb.buf); if (!dsd) ohshite("cannot read info directory");
+    dsd= opendir(fnvb.buf); if (!dsd) ohshite(_("cannot read info directory"));
     push_cleanup(cu_closedir,~0, 0,0, 1,(void*)dsd);
 
     debug(dbg_general, "process_archive disappear cleaning info directory");
@@ -879,7 +880,7 @@ void process_archive(const char *filename) {
       varbufaddstr(&fnvb,de->d_name);
       varbufaddc(&fnvb,0);
       if (unlink(fnvb.buf))
-        ohshite("unable to delete disappearing control info file `%.250s'",fnvb.buf);
+        ohshite(_("unable to delete disappearing control info file `%.250s'"),fnvb.buf);
       debug(dbg_scripts, "process_archive info unlinked %s",fnvb.buf);
     }
     pop_cleanup(ehflag_normaltidy); /* closedir */
index 37e9743853f8fee7260739999f82eff9eec5f0f1..ee713c1a2313a1c5387bc37bef7e14c7664098e3 100644 (file)
@@ -19,6 +19,7 @@
  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
 
+#include <errno.h>
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
 #include <string.h>
 #include <assert.h>
 
-#include "config.h"
-#include "dpkg.h"
-#include "dpkg-db.h"
-#include "myopt.h"
+#include <config.h>
+#include <dpkg.h>
+#include <dpkg-db.h>
+#include <myopt.h>
 
 #include "filesdb.h"
 #include "main.h"
@@ -73,17 +74,17 @@ void deferred_remove(struct pkginfo *pkg) {
   debug(dbg_general,"deferred_remove package %s",pkg->name);
   
   if (pkg->status == stat_notinstalled) {
-    fprintf(stderr, DPKG
-            " - warning: ignoring request to remove %.250s which isn't installed.\n",
+    fprintf(stderr,
+            _("dpkg - warning: ignoring request to remove %.250s which isn't installed.\n"),
             pkg->name);
     pkg->clientdata->istobe= itb_normal;
     return;
   } else if (!f_pending &&
              pkg->status == stat_configfiles &&
              cipaction->arg != act_purge) {
-    fprintf(stderr, DPKG
-            " - warning: ignoring request to remove %.250s, only the config\n"
-            " files of which are on the system.  Use --purge to remove them too.\n",
+    fprintf(stderr,
+            _("dpkg - warning: ignoring request to remove %.250s, only the config\n"
+            " files of which are on the system.  Use --purge to remove them too.\n"),
             pkg->name);
     pkg->clientdata->istobe= itb_normal;
     return;
@@ -91,8 +92,8 @@ void deferred_remove(struct pkginfo *pkg) {
 
   assert(pkg->installed.valid);
   if (pkg->installed.essential && pkg->status != stat_configfiles)
-    forcibleerr(fc_removeessential, "This is an essential package -"
-                " it should not be removed.");
+    forcibleerr(fc_removeessential, _("This is an essential package -"
+                " it should not be removed."));
 
   if (!f_pending)
     pkg->want= (cipaction->arg == act_purge) ? want_purge : want_deinstall;
@@ -117,13 +118,13 @@ void deferred_remove(struct pkginfo *pkg) {
     sincenothing= 0;
     varbufaddc(&raemsgs,0);
     fprintf(stderr,
-            DPKG ": dependency problems prevent removal of %s:\n%s",
+            _("dpkg: dependency problems prevent removal of %s:\n%s"),
             pkg->name, raemsgs.buf);
-    ohshit("dependency problems - not removing");
+    ohshit(_("dependency problems - not removing"));
   } else if (raemsgs.used) {
     varbufaddc(&raemsgs,0);
     fprintf(stderr,
-            DPKG ": %s: dependency problems, but removing anyway as you request:\n%s",
+            _("dpkg: %s: dependency problems, but removing anyway as you request:\n%s"),
             pkg->name, raemsgs.buf);
   }
   varbuffree(&raemsgs);
@@ -131,14 +132,14 @@ void deferred_remove(struct pkginfo *pkg) {
 
   if (pkg->eflag & eflagf_reinstreq)
     forcibleerr(fc_removereinstreq,
-                "Package is in a very bad inconsistent state - you should\n"
-                " reinstall it before attempting a removal.");
+                _("Package is in a very bad inconsistent state - you should\n"
+                " reinstall it before attempting a removal."));
 
   ensure_allinstfiles_available();
   filesdbinit();
 
   if (f_noact) {
-    printf("Would remove or purge %s ...\n",pkg->name);
+    printf(_("Would remove or purge %s ...\n"),pkg->name);
     pkg->status= stat_notinstalled;
     pkg->clientdata->istobe= itb_normal;
     return;
@@ -146,7 +147,7 @@ void deferred_remove(struct pkginfo *pkg) {
 
   oldconffsetflags(pkg->installed.conffiles);
     
-  printf("Removing %s ...\n",pkg->name);
+  printf(_("Removing %s ...\n"),pkg->name);
   if (pkg->status == stat_halfconfigured || pkg->status == stat_installed) {
 
     if (pkg->status == stat_installed || pkg->status == stat_halfconfigured) {
@@ -241,23 +242,39 @@ void removal_bulk(struct pkginfo *pkg) {
       debug(dbg_eachfiledetail, "removal_bulk removing `%s'", fnvb.buf);
       if (!rmdir(fnvb.buf) || errno == ENOENT || errno == ELOOP) continue;
       if (errno == ENOTEMPTY) {
-        fprintf(stderr, DPKG
-                " - warning: while removing %.250s, directory `%.250s' not empty "
-                "so not removed.\n",
+        fprintf(stderr,
+                _("dpkg - warning: while removing %.250s, directory `%.250s' not empty "
+                "so not removed.\n"),
                 pkg->name, namenode->name);
         push_leftover(&leftover,namenode);
         continue;
       } else if (errno == EBUSY || errno == EPERM) {
-        fprintf(stderr, DPKG " - warning: while removing %.250s,"
+        fprintf(stderr, _("dpkg - warning: while removing %.250s,"
                 " unable to remove directory `%.250s':"
-                " %s - directory may be a mount point ?\n",
+                " %s - directory may be a mount point ?\n"),
                 pkg->name, namenode->name, strerror(errno));
         push_leftover(&leftover,namenode);
         continue;
       }
-      if (errno != ENOTDIR) ohshite("cannot remove `%.250s'",fnvb.buf);
+      if (errno != ENOTDIR) ohshite(_("cannot remove `%.250s'"),fnvb.buf);
       debug(dbg_eachfiledetail, "removal_bulk unlinking `%s'", fnvb.buf);
-      if (unlink(fnvb.buf)) ohshite("cannot remove file `%.250s'",fnvb.buf);
+      {
+        /*
+         * If file to remove is a device or s[gu]id, change its mode
+         * so that a malicious user cannot use it even if it's linked
+         * to another file
+         */
+        struct stat stat_buf;
+        if (stat(fnvb.buf,&stat_buf)==0) {
+          if (S_ISCHR(stat_buf.st_mode) || S_ISBLK(stat_buf.st_mode)) {
+            chmod(fnvb.buf,0);
+          }
+          if (stat_buf.st_mode & (S_ISUID|S_ISGID)) {
+            chmod(fnvb.buf,stat_buf.st_mode & ~(S_ISUID|S_ISGID));
+          }
+        }
+      }
+      if (unlink(fnvb.buf)) ohshite(_("cannot remove file `%.250s'"),fnvb.buf);
     }
     write_filelist_except(pkg,leftover,0);
     maintainer_script_installed(pkg, POSTRMFILE, "post-removal",
@@ -267,7 +284,7 @@ void removal_bulk(struct pkginfo *pkg) {
     varbufaddstr(&fnvb,"/" INFODIR);
     infodirbaseused= fnvb.used;
     varbufaddc(&fnvb,0);
-    dsd= opendir(fnvb.buf); if (!dsd) ohshite("cannot read info directory");
+    dsd= opendir(fnvb.buf); if (!dsd) ohshite(_("cannot read info directory"));
     push_cleanup(cu_closedir,~0, 0,0, 1,(void*)dsd);
     foundpostrm= 0;
 
@@ -288,7 +305,7 @@ void removal_bulk(struct pkginfo *pkg) {
       varbufaddstr(&fnvb,de->d_name);
       varbufaddc(&fnvb,0);
       if (unlink(fnvb.buf))
-        ohshite("unable to delete control info file `%.250s'",fnvb.buf);
+        ohshite(_("unable to delete control info file `%.250s'"),fnvb.buf);
       debug(dbg_scripts, "removal_bulk info unlinked %s",fnvb.buf);
     }
     pop_cleanup(ehflag_normaltidy); /* closedir */
@@ -303,7 +320,7 @@ void removal_bulk(struct pkginfo *pkg) {
     postrmfilename= pkgadminfile(pkg,POSTRMFILE);
     if (!lstat(postrmfilename,&stab)) foundpostrm= 1;
     else if (errno == ENOENT) foundpostrm= 0;
-    else ohshite("unable to check existence of `%.250s'",postrmfilename);
+    else ohshite(_("unable to check existence of `%.250s'"),postrmfilename);
 
   }
   
@@ -318,7 +335,7 @@ void removal_bulk(struct pkginfo *pkg) {
 
   } else if (pkg->want == want_purge) {
 
-    printf("Purging configuration files for %s ...\n",pkg->name);
+    printf(_("Purging configuration files for %s ...\n"),pkg->name);
     ensure_packagefiles_available(pkg); /* We may have modified this above. */
 
     /* We're about to remove the configuration, so remove the note
@@ -362,7 +379,7 @@ void removal_bulk(struct pkginfo *pkg) {
       if (r == -1) continue;
       conffnameused= fnvb.used-1;
       if (unlink(fnvb.buf) && errno != ENOENT && errno != ENOTDIR)
-        ohshite("cannot remove old config file `%.250s' (= `%.250s')",
+        ohshite(_("cannot remove old config file `%.250s' (= `%.250s')"),
                 conff->name, fnvb.buf);
       p= strrchr(fnvb.buf,'/'); if (!p) continue;
       *p= 0;
@@ -377,7 +394,7 @@ void removal_bulk(struct pkginfo *pkg) {
         debug(dbg_conffdetail, "removal_bulk conffile no dsd %s %s",
               fnvb.buf, strerror(e)); errno= e;
         if (errno == ENOENT || errno == ENOTDIR) continue;
-        ohshite("cannot read config file dir `%.250s' (from `%.250s')",
+        ohshite(_("cannot read config file dir `%.250s' (from `%.250s')"),
                 fnvb.buf, conff->name);
       }
       debug(dbg_conffdetail, "removal_bulk conffile cleaning dsd %s", fnvb.buf);
@@ -412,7 +429,7 @@ void removal_bulk(struct pkginfo *pkg) {
         debug(dbg_conffdetail, "removal_bulk conffile dsd entry removing `%s'",
               removevb.buf);
         if (unlink(removevb.buf) && errno != ENOENT && errno != ENOTDIR)
-          ohshite("cannot remove old backup config file `%.250s' (of `%.250s')",
+          ohshite(_("cannot remove old backup config file `%.250s' (of `%.250s')"),
                   removevb.buf, conff->name);
       }
       pop_cleanup(ehflag_normaltidy); /* closedir */
@@ -441,13 +458,13 @@ void removal_bulk(struct pkginfo *pkg) {
     varbufaddstr(&fnvb,"." LISTFILE);
     varbufaddc(&fnvb,0);
     debug(dbg_general, "removal_bulk purge done, removing list `%s'",fnvb.buf);
-    if (unlink(fnvb.buf) && errno != ENOENT) ohshite("cannot remove old files list");
+    if (unlink(fnvb.buf) && errno != ENOENT) ohshite(_("cannot remove old files list"));
     
     fnvb.used= pkgnameused;
     varbufaddstr(&fnvb,"." POSTRMFILE);
     varbufaddc(&fnvb,0);
     debug(dbg_general, "removal_bulk purge done, removing postrm `%s'",fnvb.buf);
-    if (unlink(fnvb.buf) && errno != ENOENT) ohshite("can't remove old postrm script");
+    if (unlink(fnvb.buf) && errno != ENOENT) ohshite(_("can't remove old postrm script"));
 
     pkg->status= stat_notinstalled;
 
index 0f94c60983c548a1353e2356b3bef115e3e83fff..4d6a80dab4922bafdc5c2e4e51a36571198a3830 100644 (file)
 #include <fnmatch.h>
 #include <ctype.h>
 
-#include "config.h"
-#include "dpkg.h"
-#include "dpkg-db.h"
-#include "myopt.h"
+#include <config.h>
+#include <dpkg.h>
+#include <dpkg-db.h>
 
 #include "filesdb.h"
 #include "main.h"
@@ -78,7 +77,7 @@ void getselections(const char *const *argv) {
         getsel1package(pkg); found++;
       }
       if (!found)
-        fprintf(stderr,"No packages found matching %s.\n",thisarg);
+        fprintf(stderr,_("No packages found matching %s.\n"),thisarg);
     }
   }
   if (ferror(stdout)) werr("stdout");
@@ -93,7 +92,7 @@ void setselections(const char *const *argv) {
   struct varbuf namevb;
   struct varbuf selvb;
 
-  if (*argv) badusage("--set-selections does not take any argument");
+  if (*argv) badusage(_("--set-selections does not take any argument"));
 
   modstatdb_init(admindir,msdbrw_write);
 
@@ -112,13 +111,13 @@ void setselections(const char *const *argv) {
     while (!isspace(c)) {
       varbufaddc(&namevb,c);
       c= getchar();
-      if (c == EOF) ohshit("unexpected eof in package name at line %d",lno);
-      if (c == '\n') ohshit("unexpected end of line in package name at line %d",lno);
+      if (c == EOF) ohshit(_("unexpected eof in package name at line %d"),lno);
+      if (c == '\n') ohshit(_("unexpected end of line in package name at line %d"),lno);
     }
     while (c != EOF && isspace(c)) {
       c= getchar();
-      if (c == EOF) ohshit("unexpected eof after package name at line %d",lno);
-      if (c == '\n') ohshit("unexpected end of line after package name at line %d",lno);
+      if (c == EOF) ohshit(_("unexpected eof after package name at line %d"),lno);
+      if (c == '\n') ohshit(_("unexpected end of line after package name at line %d"),lno);
     }
     while (c != EOF && !isspace(c)) {
       varbufaddc(&selvb,c);
@@ -127,20 +126,20 @@ void setselections(const char *const *argv) {
     while (c != EOF && c != '\n') {
       c= getchar();
       if (!isspace(c))
-        ohshit("unexpected data after package and selection at line %d",lno);
+        ohshit(_("unexpected data after package and selection at line %d"),lno);
     }
     varbufaddc(&namevb,0);
     varbufaddc(&selvb,0);
     e= illegal_packagename(namevb.buf,0);
-    if (e) ohshit("illegal package name at line %d: %.250s",lno,e);
+    if (e) ohshit(_("illegal package name at line %d: %.250s"),lno,e);
     for (nvp=wantinfos; nvp->name && strcmp(nvp->name,selvb.buf); nvp++);
-    if (!nvp->name) ohshit("unknown wanted status at line %d: %.250s",lno,selvb.buf);
+    if (!nvp->name) ohshit(_("unknown wanted status at line %d: %.250s"),lno,selvb.buf);
     pkg= findpackage(namevb.buf);
     pkg->want= nvp->value;
     if (c == EOF) break;
     lno++;
   }
-  if (ferror(stdin)) ohshite("read error on standard input");
+  if (ferror(stdin)) ohshite(_("read error on standard input"));
   modstatdb_shutdown();
   varbufreset(&namevb);
   varbufreset(&selvb);
index ad4b4faf6b9d5aa2c884cc1f782aec7985c9b4f5..797d519ff75fa0a17a724212b5e3f4b8b8d828f3 100644 (file)
@@ -19,6 +19,7 @@
  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
 
+#include <errno.h>
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
 #include <assert.h>
 #include <unistd.h>
 
-#include "config.h"
-#include "dpkg.h"
-#include "dpkg-db.h"
-#include "myopt.h"
+#include <config.h>
+#include <dpkg.h>
+#include <dpkg-db.h>
+#include <myopt.h>
 
 #include "main.h"
 
@@ -40,11 +41,11 @@ void updateavailable(const char *const *argv) {
 
   switch (cipaction->arg) {
   case act_avclear:
-    if (sourcefile) badusage("--%s takes no arguments",cipaction->olong);
+    if (sourcefile) badusage(_("--%s takes no arguments"),cipaction->olong);
     break;
   case act_avreplace: case act_avmerge:
     if (!sourcefile || argv[1])
-      badusage("--%s needs exactly one Packages file argument",cipaction->olong);
+      badusage(_("--%s needs exactly one Packages file argument"),cipaction->olong);
     break;
   default:
     internerr("bad cipaction->arg in updateavailable");
@@ -53,19 +54,19 @@ void updateavailable(const char *const *argv) {
   if (!f_noact) {
     if (access(admindir,W_OK)) {
       if (errno != EACCES)
-        ohshite("unable to access dpkg status area for bulk available update");
+        ohshite(_("unable to access dpkg status area for bulk available update"));
       else
-        ohshit("bulk available update requires write access to dpkg status area");
+        ohshit(_("bulk available update requires write access to dpkg status area"));
     }
     lockdatabase(admindir);
   }
   
   switch (cipaction->arg) {
   case act_avreplace:
-    printf("Replacing available packages info, using %s.\n",sourcefile);
+    printf(_("Replacing available packages info, using %s.\n"),sourcefile);
     break;
   case act_avmerge:
-    printf("Updating available packages info, using %s.\n",sourcefile);
+    printf(_("Updating available packages info, using %s.\n"),sourcefile);
     break;
   case act_avclear:
     break;
@@ -89,7 +90,7 @@ void updateavailable(const char *const *argv) {
   }
 
   if (cipaction->arg != act_avclear)
-    printf("Information about %d package(s) was updated.\n",count);
+    printf(_("Information about %d package(s) was updated.\n"),count);
 }
 
 void forgetold(const char *const *argv) {
@@ -97,7 +98,7 @@ void forgetold(const char *const *argv) {
   struct pkginfo *pkg;
   enum pkgwant oldwant;
 
-  if (*argv) badusage("--forget-old-unavail takes no arguments");
+  if (*argv) badusage(_("--forget-old-unavail takes no arguments"));
 
   modstatdb_init(admindir, f_noact ? msdbrw_readonly : msdbrw_write);
 
diff --git a/md5sum/.cvsignore b/md5sum/.cvsignore
new file mode 100644 (file)
index 0000000..70845e0
--- /dev/null
@@ -0,0 +1 @@
+Makefile.in
diff --git a/md5sum/Makefile.am b/md5sum/Makefile.am
new file mode 100644 (file)
index 0000000..db6e592
--- /dev/null
@@ -0,0 +1,33 @@
+## Process this file with automake to produce a Makefile.in
+
+AUTOMAKE_OPTIONS       = 1.1 foreign
+
+## Directory definitions
+
+localedir              = $(datadir)/locale
+
+## Various options
+
+CFLAGS                 = @CFLAGS@ @CWARNS@ -g $(XCFLAGS) -DLOCALEDIR=\"$(localedir)\"
+OPTCFLAGS              = @CFLAGS@ @OPTCFLAGS@ @CWARNS@ -g $(XCFLAGS) -DLOCALEDIR=\"$(localedir)\"
+LDFLAGS                        = @LDFLAGS@ $(XLDFLAGS)
+LIBS                   = @INTLLIBS@ @LIBS@ $(XLIBS)
+
+CXXFLAGS               = @CXXFLAGS@ @CWARNS@ -g $(XCXXFLAGS) -DLOCALEDIR=\"$(localedir)\"
+OPTCXXFLAGS            = @CXXFLAGS@ @OPTCFLAGS@ @CWARNS@ -g $(XCXXFLAGS) -DLOCALEDIR=\"$(localedir)\"
+
+DEFS                   = -I$(top_srcdir)/include -I$(top_srcdir) -I$(srcdir) \
+                         -I$(top_builddir) -I$(top_builddir)/include -I. \
+                         -I$(top_srcdir)/intl -I$(top_builddir)/intl @DEFS@
+
+MAINTAINERCLEANFILES   = $(srcdir)/Makefile.in
+
+## Automake variables
+
+bin_PROGRAMS           = md5sum
+man_MANS               = md5sum.1
+
+md5sum_SOURCES         = md5.c md5sum.c md5.h
+EXTRA_DIST             = md5sum.1
+
+## End of file.
diff --git a/md5sum/Makefile.in b/md5sum/Makefile.in
deleted file mode 100644 (file)
index 0cd7f85..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-# (-*- Fundamental -*-)
-
-srcdir = @srcdir@
-VPATH = @srcdir@
-
-prefix = @prefix@
-exec_prefix = $(prefix)
-bindir = $(exec_prefix)/bin
-mandir = $(prefix)/man/man1
-
-SRC = md5.c md5sum.c
-OBJ = md5.o md5sum.o
-HDR = md5.h
-
-INSTALL = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_DATA = @INSTALL_DATA@
-
-CC = @CC@
-
-CFLAGS = @CFLAGS@ $(XCFLAGS)
-LDFLAGS = $(XLDFLAGS)
-LIBS = -L../lib $(XLIBS)
-ALL_CFLAGS = -I../lib -I.. @DEFS@ $(CFLAGS)
-
-.SUFFIXES:     .c .o
-
-.c.o:
-               $(CC) $(ALL_CFLAGS) -c $<
-
-all:           md5sum
-
-md5sum:                md5.o md5sum.o
-               $(CC) $(LDFLAGS) -o md5sum md5.o md5sum.o
-
-clean:
-               rm -f *.o core md5sum
-
-distclean:     clean
-               rm -f Makefile *.orig *~ *.~* ./#*#
-
-install:       all
-               $(INSTALL_PROGRAM) -s md5sum $(bindir)/md5sum
-               $(INSTALL_DATA) md5sum.1 $(mandir)/md5sum.1
index cec2be761bad66b79d2927539f2e9b44b7610c3d..f5a0fdf855363db0f422504629ea58ec3eb61c65 100644 (file)
@@ -9,13 +9,36 @@
  * Written March 1993 by Branko Lankester
  * Modified June 1993 by Colin Plumb for altered md5.c.
  * Modified Feburary 1995 by Ian Jackson for use with Colin Plumb's md5.c.
+ * Hacked (modified is too nice a word) January 1997 by Galen Hazelwood
+ *   to support GNU gettext.
  * This file is in the public domain.
  */
 #include <stdio.h>
 #include <string.h>
+#include <getopt.h>
 #include "config.h"
 #include "md5.h"
 
+/* Take care of NLS matters.  */
+
+#if HAVE_LOCALE_H
+# include <locale.h>
+#endif
+#if !HAVE_SETLOCALE
+# define setlocale(Category, Locale) /* empty */
+#endif
+
+#if ENABLE_NLS
+# include <libintl.h>
+# define _(Text) gettext (Text)
+#else
+# undef bindtextdomain
+# define bindtextdomain(Domain, Directory) /* empty */
+# undef textdomain
+# define textdomain(Domain) /* empty */
+# define _(Text) Text
+#endif
+
 #ifdef UNIX
 #define        FOPRTXT "r"
 #define        FOPRBIN "r"
 extern char *optarg;
 extern int optind;
 
-void usage();
-void print_digest();
+void usage(void);
+void print_digest(unsigned char *p);
 int mdfile(FILE *fp, unsigned char *digest);
 int do_check(FILE *chkf);
+int hex_digit(int c);
+int get_md5_line(FILE *fp, unsigned char *digest, char *file);
 
 char *progname;
 int verbose = 0;
@@ -46,9 +71,13 @@ main(int argc, char **argv)
 {
        int opt, rc = 0;
        int check = 0;
-       FILE *fp;
+       FILE *fp = NULL;
        unsigned char digest[16];
 
+       setlocale(LC_ALL, "");
+       bindtextdomain(PACKAGE, LOCALEDIR);
+       textdomain(PACKAGE);
+
        progname = *argv;
        while ((opt = getopt(argc, argv, "cbvp:h")) != EOF) {
                switch (opt) {
@@ -74,7 +103,7 @@ main(int argc, char **argv)
        }
        if (argc == 0) {
                if (mdfile(stdin, digest)) {
-                       fprintf(stderr, "%s: read error on stdin\n", progname);
+                       fprintf(stderr, _("%s: read error on stdin\n"), progname);
                        exit(2);
                }
                print_digest(digest);
@@ -92,7 +121,7 @@ main(int argc, char **argv)
                        continue;
                }
                if (mdfile(fp, digest)) {
-                       fprintf(stderr, "%s: error reading %s\n", progname, *argv);
+                       fprintf(stderr, _("%s: error reading %s\n"), progname, *argv);
                        rc = 2;
                } else {
                        print_digest(digest);
@@ -106,13 +135,13 @@ main(int argc, char **argv)
 void
 usage()
 {
-       fprintf(stderr, "usage: md5sum [-bv] [-c [file]] | [file...]\n");
-       fprintf(stderr, "Generates or checks MD5 Message Digests\n");
-       fprintf(stderr, "    -c  check message digests (default is generate)\n");
-       fprintf(stderr, "    -v  verbose, print file names when checking\n");
-       fprintf(stderr, "    -b  read files in binary mode\n");
-       fprintf(stderr, "The input for -c should be the list of message digests and file names\n");
-       fprintf(stderr, "that is printed on stdout by this program when it generates digests.\n");
+        fputs(_("usage: md5sum [-bv] [-c [file]] | [file...]\n\
+Generates or checks MD5 Message Digests\n\
+    -c  check message digests (default is generate)\n\
+    -v  verbose, print file names when checking\n\
+    -b  read files in binary mode\n\
+The input for -c should be the list of message digests and file names\n\
+that is printed on stdout by this program when it generates digests.\n"), stderr);
        exit(2);
 }
 
@@ -179,7 +208,7 @@ get_md5_line(FILE *fp, unsigned char *digest, char *file)
        else if (*p == '*')
                rc = 2;
        else {
-               fprintf(stderr, "%s: unrecognized line: %s", progname, buf);
+               fprintf(stderr, _("%s: unrecognized line: %s"), progname, buf);
                return 0;
        }
        ++p;
@@ -213,12 +242,12 @@ do_check(FILE *chkf)
                else
                        fp = fopen(filename, FOPRTXT);
                if (fp == NULL) {
-                       fprintf(stderr, "%s: can't open %s\n", progname, filename);
+                       fprintf(stderr, _("%s: can't open %s\n"), progname, filename);
                        ex = 2;
                        continue;
                }
                if (mdfile(fp, file_digest)) {
-                       fprintf(stderr, "%s: error reading %s\n", progname, filename);
+                       fprintf(stderr, _("%s: error reading %s\n"), progname, filename);
                        ex = 2;
                        fclose(fp);
                        continue;
@@ -226,21 +255,22 @@ do_check(FILE *chkf)
                fclose(fp);
                if (memcmp(chk_digest, file_digest, 16) != 0) {
                        if (verbose)
-                               fprintf(stderr, "FAILED\n");
+                               fprintf(stderr, _("FAILED\n"));
                        else
-                               fprintf(stderr, "%s: MD5 check failed for '%s'\n", progname, filename);
+                               fprintf(stderr, _("%s: MD5 check failed for '%s'\n"), progname, filename);
                        ++failed;
                } else if (verbose)
-                       fprintf(stderr, "OK\n");
+                       fprintf(stderr, _("OK\n"));
                ++checked;
        }
        if (verbose && failed)
-               fprintf(stderr, "%s: %d of %d file(s) failed MD5 check\n", progname, failed, checked);
+               fprintf(stderr, _("%s: %d of %d file(s) failed MD5 check\n"), progname, failed, checked);
        if (!checked) {
-               fprintf(stderr, "%s: no files checked\n", progname);
+               fprintf(stderr, _("%s: no files checked\n"), progname);
                return 3;
        }
        if (!ex && failed)
                ex = 1;
        return ex;
 }
+
diff --git a/methods/.cvsignore b/methods/.cvsignore
new file mode 100644 (file)
index 0000000..70845e0
--- /dev/null
@@ -0,0 +1 @@
+Makefile.in
diff --git a/methods/Makefile.am b/methods/Makefile.am
new file mode 100644 (file)
index 0000000..f338c4d
--- /dev/null
@@ -0,0 +1,87 @@
+## Process this file with automake to produce a Makefile.in
+
+AUTOMAKE_OPTIONS       = 1.1 foreign
+
+## Directory definitions
+
+pkglibdir              = $(libdir)/@PACKAGE@
+pkglocalstatedir       = $(sharedstatedir)/@PACKAGE@
+
+methodsdir             = $(pkglibdir)/methods
+methodsdatadir         = $(pkglocalstatedir)/methods
+methodsmnt             = $(methodsdatadir)/mnt
+
+## Automake variables
+
+MSCRIPTS               = setup update install
+METHODS                        = disk floppy
+DESCS                  = disk.desc.harddisk disk.desc.mounted disk.desc.cdrom \
+                         disk.desc.nfs floppy.desc.floppy
+
+MAINTAINERCLEANFILES   = $(srcdir)/Makefile.in
+
+## Rules
+
+.PHONY: install-data-local install-methods-data install-descs-data \
+       install-exec-local dist-hook uninstall-local
+
+install-data-local: install-methods-data install-descs-data
+       $(mkinstalldirs) $(methodsmnt)
+
+install-methods-data:
+       set -e; for m in $(METHODS); do \
+               $(mkinstalldirs) $(methodsdir)/$$m $(methodsdatadir)/$$m; \
+               $(INSTALL_DATA) $(srcdir)/$$m.names $(methodsdir)/$$m/names; \
+       done
+
+install-descs-data:
+       set -e; for x in $(DESCS); do \
+               d=`echo $$x | sed 's:.*/\([^/]*\)$$:\1:; s:\.:/:'`; \
+               $(INSTALL_DATA) $(srcdir)/$$x $(methodsdir)/$$d; \
+       done
+
+install-exec-local:
+       set -e; for m in $(METHODS); do \
+               $(mkinstalldirs) $(methodsdir)/$$m $(methodsdatadir)/$$m; \
+       done
+       set -e; for m in $(METHODS); do \
+               for s in $(MSCRIPTS); do \
+                       $(INSTALL_PROGRAM) $(srcdir)/$$m.$$s $(methodsdir)/$$m/$$s; \
+               done; \
+       done
+
+uninstall-local:
+       -for m in $(METHODS); do \
+               rm -f $(methodsdir)/$$m/names; \
+               [ -e $(methodsdir)/$$m ] && rmdir $(methodsdir)/$$m; \
+       done
+       -for x in $(DESCS); do \
+               d=`echo $$x | sed 's:\.:/:'`; \
+               dir=`echo $$d | sed 's:\(.*\)/[^/]*$$:\1:'`; \
+               rm -f $(methodsdir)/$$d; \
+               [ -e $$dir ] && rmdir $$dir; \
+       done
+       -for m in $(METHODS); do \
+               for s in $(MSCRIPTS); do \
+                       rm -f $(methodsdir)/$$m/$$s; \
+               done; \
+               [ -e $(methodsdir)/$$m ] && rmdir $(methodsdir)/$$m; \
+               [ -e $(methodsdatadir)/$$m ] && rmdir $(methodsdatadir)/$$m; \
+               [ -e $(methodsmnt)/$$m ] && rmdir $(methodsmnt)/$$m; \
+       done
+       -[ -e $(methodsmnt) ] && rmdir $(methodsmnt)
+       -[ -e $(methodsdir) ] && rmdir $(methodsdir)
+       -[ -e $(methodsdatadir) ] && rmdir $(methodsdatadir)
+
+dist-hook:
+       set -e; for m in $(METHODS); do \
+               cp -p $(srcdir)/$$m.names $(distdir)/; \
+               for s in $(MSCRIPTS); do \
+                       cp -p $(srcdir)/$$m.$$s $(distdir)/; \
+               done; \
+       done
+       for d in $(DESCS); do \
+               cp -p $(srcdir)/$$d $(distdir)/; \
+       done
+
+## End of file.
diff --git a/methods/Makefile.in b/methods/Makefile.in
deleted file mode 100644 (file)
index 47b5d83..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-# Copyright (C) 1994 Ian Murdock <imurdock@debian.org>
-# Copyright (C) 1994,1995 Ian Jackson <ijackson@nyx.cs.du.edu>
-#
-#   This is free software; you can redistribute it and/or modify
-#   it under the terms of the GNU General Public License as
-#   published by the Free Software Foundation; either version 2,
-#   or (at your option) any later version.
-#
-#   This is distributed in the hope that it will be useful, but
-#   WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#   GNU General Public License for more details.
-#
-#   You should have received a copy of the GNU General Public
-#   License along with dpkg; if not, write to the Free Software
-#   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-srcdir = @srcdir@
-VPATH = @srcdir@
-
-prefix = @prefix@
-libdir = $(prefix)/lib
-dpkglibdir = $(libdir)/dpkg
-methodsdir = $(dpkglibdir)/methods
-datadir = /var/lib/dpkg
-methodsdatadir = $(datadir)/methods
-methodsmnt = $(datadir)/methods/mnt
-
-SCRIPTS = setup update install
-METHODS = disk floppy
-DESCS =        disk.desc.harddisk disk.desc.mounted disk.desc.cdrom \
-       disk.desc.nfs floppy.desc.floppy
-
-INSTALL = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_DATA = @INSTALL_DATA@
-
-all:
-
-install:
-               set -e; for m in $(METHODS) ; do \
-                       d=$(methodsdir)/$$m ; \
-                       test -d $$d || mkdir $$d ; \
-                       e=$(methodsdatadir)/$$m ; \
-                       test -d $$e || mkdir $$e ; \
-                       $(INSTALL_DATA) $$m.names $$d/names ; \
-                       for s in $(SCRIPTS) ; do \
-                               $(INSTALL_PROGRAM) $$m.$$s $$d/$$s ; \
-                       done ; \
-               done
-               set -e; for x in $(DESCS) ; do \
-                       d=`echo $$x | sed -e 's:\.:/:'` ; \
-                       $(INSTALL_DATA) $$x $(methodsdir)/$$d ; \
-               done
-
-clean:
-               rm -f core
-
-distclean:     clean
-               rm -f Makefile *.orig *~ *.~* ./#*#
index f23620e7499cc99f86bedf4329a25ed6c2257926..f47d129792814d8f7537df7e586808b92711d0db 100644 (file)
@@ -107,7 +107,7 @@ package by using `dpkg --install --auto-deconfigure'\'' by hand.
        ' -- "$p_mountpoint$p_main_binary" "$predep"
 done
 
-for f in main ctb nf lcl
+for f in main ctb nf nus lcl
 do
        eval 'this_binary=$p_'$f'_binary'
        if [ -z "$this_binary" ]; then continue; fi
index 2ba78cedc748e7f02779201c54cf591fa242f75b..8bbb5cfe25e2e8d8e5363dd8a818721202e06e81 100644 (file)
@@ -129,11 +129,12 @@ If you make a mistake, use the interrupt key ($intrkey) to abort.
 "
 
 # State variables, `best first'
-#  {main,ctb,nf,lcl}_{packages,binary}
+#  {main,ctb,nf,nus,lcl}_{packages,binary}
 #   Empty before we've found them or if they're not available,
 #   set to the relevant bit under mountpoint otherwise.
 #  hierbase
-#   A directory containing a Debian FTP site mirror tree.
+#   A directory containing a Debian FTP site mirror tree for ONE distribution.
+#      eg /pub/debian/dists/stable
 #  mountpoint
 #   The mountpoint for the filesystem containing the stuff
 #   empty or unset if we don't know yet, or if we haven't mounted anything;
@@ -145,14 +146,12 @@ If you make a mistake, use the interrupt key ($intrkey) to abort.
 #  defaultdevice
 #   The default block device to mount.
 
-p_usedevel=no
 if [ -f shvar.$option ]
 then
        . ./shvar.$option
        defaultdevice="$p_blockdev"
        defaultnfsserver="$p_nfsserver"
        defaultnfsrempath="$p_nfsrempath"
-       usedevel="$p_usedevel"
 fi
 
 if [ $option = cdrom ]
@@ -261,7 +260,7 @@ then
        do
                echo -n "
 What is the pathname on the NFS server of the filesystem with
-the Debian files ? [$defaultnfsrempath]  "
+the Debian files? [$defaultnfsrempath]  "
                read response
                if [ -z "$response" -a -n "$defaultnfsrempath" ]
                then
@@ -337,7 +336,8 @@ do
        then
                echo \
 "I would like to know where on the CD-ROM the top level of the Debian
-distribution is - this will usually contain the Packages-Master file.
+distribution is (eg. 'dists/stable') - this directory usually contains the 
+Packages-Master file.
 
 If the CD-ROM is badly organised and doesn't have a straightforward copy of
 the distribution you may answer \`none' and we'll go through the parts
@@ -347,15 +347,18 @@ I need individually."
 "In order to make it easy for me to find the relevant files I'd ideally
 like to install from a straightforward copy of the Debian distribution.
 To use this I'll need to know where the top level of that copy of the
-distribution is - this directory usually contains the Packages-Master file.
+distribution is (eg. 'debian/dists/stable') - this directory usually 
+contains the Packages-Master file.
 
 If you do not have a straightforward copy of the distribution available
 just answer \`none' and we'll go through the parts I need individually."
        fi
        defhierbase=none
+# maybe ask for debian/dists and then show and ask for available dists 
+# eg. {stable,frozen,unstable,bo,hamm,slink}
        if [ -n "$p_hierbase" ]
        then
-               if [ -d "$mountpoint/$p_hierbase/stable/binary-i386" ]
+               if [ -d "$mountpoint/$p_hierbase/main/binary-$iarch" ]
                then
                        echo "
 Last time you said \`$p_hierbase', and that looks plausible."
@@ -363,14 +366,22 @@ Last time you said \`$p_hierbase', and that looks plausible."
                else
                        echo "
 Last time you said \`$p_hierbase', but that doesn't look plausible,
-since \`$p_hierbase/stable/binary' doesn't seem to exist."
+since \`$p_hierbase/main/binary-$iarch' doesn't seem to exist."
                fi
        fi
-       if [ none = "$defhierbase" -a -d "$mountpoint/debian/stable/binary-i386" ]
+       if [ none = "$defhierbase" ]
        then
-               echo "
-\`/debian' exists and looks plausible, so that's the default."
-               defhierbase=/debian
+               if [ -d "$mountpoint/debian/dists/stable/main/binary-$iarch" ]
+               then
+                       echo "
+\`/debian/dists/stable' exists and looks plausible, so that's the default."
+                       defhierbase=/debian/dists/stable
+               elif [ -d "$mountpoint/dists/stable/main/binary-$iarch" ]
+               then
+                       echo "
+\`/dists/stable' exists and looks plausible, so that's the default."
+                       defhierbase=/dists/stable
+               fi
        fi
        echo -n \
 "Distribution top level ? [$defhierbase]  "
@@ -383,38 +394,16 @@ since \`$p_hierbase/stable/binary' doesn't seem to exist."
        then
                hierbase=""
                break
-       elif [ -d "$mountpoint/$response/stable/binary-i386" ]
+       elif [ -d "$mountpoint/$response/main/binary-$iarch" ]
        then
-               hierbase="`echo \"$response\" | sed -e 's:/$::; s:^/*:/:'`"
+               hierbase="`echo \"$response\" | sed -e 's:/*$::; s:^/*:/:'`"
                break
        fi
        echo \
-"$response/stable/binary-i386 does not exist.
+"$response/main/binary-$iarch does not exist.
 "
 done
 
-whichmain=stable
-if [ -n "$hierbase" ]
-then
-       if [ -d "$mountpoint/$hierbase/unstable/binary-$iarch" ]
-       then
-               echo \
-'
-Both a stable released distribution and a work-in-progress
-development tree are available for installation.  Would you like to
-use the unreleased development tree (this is only recommended for
-experts who like to live dangerously and want to help with testing) ?'
-               yesno "$p_usedevel" 'Use unreleased development distribution ?'
-               usedevel="$yesno"
-               if [ "$usedevel" = yes ]
-               then
-                       whichmain=development
-               fi
-       else
-               usedevel=no
-       fi
-       echo
-fi
 
 case "$hierbase" in
 /* )   ;;
@@ -424,13 +413,16 @@ esac
 
 check_binary () {
        # args: area-in-messages directory
-       if ! [ -d "$mountpoint$2" ]
+       # eg:   main             "$hierbase/main/binary-$iarch"
+       # checks wether $2 contains *.deb
+       if ! [ -d "$mountpoint$2/" ]
        then
                echo "\`$2' does not exist."
                return
        fi
-       if ! find "$mountpoint$2" -follow -name '*.deb' -print \
-               2>/dev/null | head -1 | grep . >/dev/null
+
+       if ! ( find "$mountpoint$2/" -follow -name '*.deb' -print \
+               | head -1 ) 2>/dev/null  | grep . >/dev/null
        then
                echo "\`$2' does not contain any *.deb packages.  Hmmpf."
                return
@@ -442,12 +434,16 @@ check_binary () {
 find_area () {
        # args: area-in-messages area-in-vars subdirectory-in-hier
        #       last-time-binary last-time-packages
+       # eg:   main             main         main
+       #       "$p_main_binary" "$p_main_packages"
+
        this_binary=''
        this_packages=''
        if [ -n "$hierbase" ]
        then
                check_binary $1 "$hierbase/$3/binary-$iarch"
        fi
+
        if [ $option = cdrom -a $2 = nf -a -z "$this_binary" ]
        then
                echo '
@@ -457,13 +453,18 @@ This is because these programs have copyrights that prevent
 distribution for profit on a CD-ROM - ie they are not free software.
 If you wish to install these programs you'\''ll have to get them from an
 alternative source.'
+       elif [ $2 = lcl -a -z "$this_binary" ]
+       then
+               echo '
+Note: By default there is no `local'\'' directory. It is intended for 
+packages you made yourself.'
        fi
        while [ -z "$this_binary" ]
        do
                defaultbinary="$4"
                echo "
 Which directory contains the *.deb packages from the $1 distribution
-area (this directory is named \`$3/binary' on the distribution site) ?
+area (this directory is named \`$3/binary-$iarch' on the distribution site) ?
 Say \`none' if this area is not available."
                if [ $2 != main -a -z "$defaultbinary" ]
                then
@@ -507,7 +508,7 @@ installations, and is very useful for upgrades.
 If you overlooked it when downloading you should do get it now and
 return to this installation procedure when you have done so: you will
 find one Packages file and one Packages.gz file -- either will do --
-in the \`binary' subdirectory of each area on the FTP sites and
+in the \`binary-$iarch' subdirectory of each area on the FTP sites and
 CD-ROMs.  Alternatively (and this will be rather slow) I can scan the
 packages in the distribution area - say \`scan' if you want me to do so.
 
@@ -535,9 +536,10 @@ Where is the _$1_ \`Packages' file (if none is available, say \`none')
        eval $2'_packages="$this_packages"'
 }
 
-find_area main main "$whichmain" "$p_main_binary" "$p_main_packages"
+find_area main main main "$p_main_binary" "$p_main_packages"
 find_area contrib ctb contrib "$p_ctb_binary" "$p_ctb_packages"
 find_area non-free nf non-free "$p_nf_binary" "$p_nf_packages"
+find_area non-US nus non-US "$p_nus_binary" "$p_nus_packages"
 find_area local lcl local "$p_lcl_binary" "$p_lcl_packages"
 
 echo -n '
@@ -553,16 +555,20 @@ outputparam p_nfsserver "$nfsserver"
 outputparam p_nfsrempath "$nfsrempath"
 outputparam p_nfs "$nfs"
 outputparam p_hierbase "$hierbase"
-outputparam p_usedevel "$usedevel"
+
 outputparam p_main_packages "$main_packages"
 outputparam p_main_binary "$main_binary"
 outputparam p_ctb_packages "$ctb_packages"
 outputparam p_ctb_binary "$ctb_binary"
 outputparam p_nf_packages "$nf_packages"
 outputparam p_nf_binary "$nf_binary"
+outputparam p_nus_packages "$nus_packages"
+outputparam p_nus_binary "$nus_binary"
 outputparam p_lcl_packages "$lcl_packages"
 outputparam p_lcl_binary "$lcl_binary"
 
 mv shvar.$option.new shvar.$option
 
 xit=0
+
+
index def5f37a35ab9fa21f57baf0665b6cfec6fc986b..932ee30b0cd8071b308cf2b2acf4a3e078371ee5 100644 (file)
@@ -10,7 +10,8 @@ cd "$vardir/methods/disk"
 . ./shvar.$option
 
 if [ -z "$p_main_packages" -a -z "$p_ctb_packages" -a \
-     -z "$p_nf_packages" -a -z "$p_lcl_packages " ]
+     -z "$p_nf_packages" -a -z "$p_nus_packages " -a \
+     -z "$p_lcl_packages" ]
 then
        echo '
 No Packages files available, cannot update available packages list.
@@ -21,7 +22,7 @@ fi
 
 xit=1
 trap '
-       rm -f packages-{main,ctb,nf,lcl}
+       rm -f packages-{main,ctb,nf,nus,lcl}
        if [ -n "$umount" ]
        then
                umount "$umount" >/dev/null 2>&1
@@ -43,7 +44,7 @@ fi
 
 updatetype=update
 
-for f in main ctb nf lcl
+for f in main ctb nf nus lcl
 do
        eval 'this_packages=$p_'$f'_packages'
        case "$this_packages" in
@@ -88,3 +89,4 @@ echo -n 'Update OK.  Hit RETURN.  '
 read response
 
 xit=0
+
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
diff --git a/mkinstalldirs b/mkinstalldirs
deleted file mode 100755 (executable)
index 0e29377..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/bin/sh
-# Make directory hierarchy. 
-# Written by Noah Friedman <friedman@prep.ai.mit.edu>
-# Public domain.
-
-defaultIFS='   
-'
-IFS="${IFS-${defaultIFS}}"
-
-errstatus=0
-
-for file in ${1+"$@"} ; do 
-   oIFS="${IFS}"
-   # Some sh's can't handle IFS=/ for some reason.
-   IFS='%'
-   set - `echo ${file} | sed -e 's@/@%@g' -e 's@^%@/@'`
-   IFS="${oIFS}"
-
-   pathcomp=''
-
-   for d in ${1+"$@"} ; do
-     pathcomp="${pathcomp}${d}"
-
-     if test ! -d "${pathcomp}"; then
-        echo "mkdir $pathcomp" 1>&2
-        mkdir "${pathcomp}" || errstatus=$?
-     fi
-
-     pathcomp="${pathcomp}/"
-   done
-done
-
-exit $errstatus
-
-# eof
diff --git a/po/.cvsignore b/po/.cvsignore
new file mode 100644 (file)
index 0000000..6d0f3f9
--- /dev/null
@@ -0,0 +1,6 @@
+Makefile.in
+cat-id-tbl.c
+dpkg.pot
+en.fmo
+fr.gmo
+stamp-cat-id
diff --git a/po/ChangeLog b/po/ChangeLog
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/po/POTFILES b/po/POTFILES
new file mode 100644 (file)
index 0000000..b0bdaed
--- /dev/null
@@ -0,0 +1,37 @@
+       ../lib/compat.c \
+       ../lib/database.c \
+       ../lib/dbmodify.c \
+       ../lib/dump.c \
+       ../lib/ehandle.c \
+       ../lib/fields.c \
+       ../lib/lock.c \
+       ../lib/mlib.c \
+       ../lib/myopt.c \
+       ../lib/parse.c \
+       ../lib/parsehelp.c \
+       ../lib/showcright.c \
+       ../lib/varbuf.c \
+       ../dpkg/archives.c \
+       ../dpkg/cleanup.c \
+       ../dpkg/configure.c \
+       ../dpkg/depcon.c \
+       ../dpkg/enquiry.c \
+       ../dpkg/errors.c \
+       ../dpkg/filesdb.c \
+       ../dpkg/help.c \
+       ../dpkg/main.c \
+       ../dpkg/packages.c \
+       ../dpkg/processarc.c \
+       ../dpkg/remove.c \
+       ../dpkg/select.c \
+       ../dpkg/update.c \
+       ../dpkg-deb/build.c \
+       ../dpkg-deb/extract.c \
+       ../dpkg-deb/info.c \
+       ../dpkg-deb/main.c \
+       ../split/info.c \
+       ../split/join.c \
+       ../split/main.c \
+       ../split/queue.c \
+       ../split/split.c \
+       ../md5sum/md5sum.c
diff --git a/po/POTFILES.in b/po/POTFILES.in
new file mode 100644 (file)
index 0000000..e691686
--- /dev/null
@@ -0,0 +1,43 @@
+# This is the list of all source files with translatable strings.
+
+lib/compat.c
+lib/database.c
+lib/dbmodify.c
+lib/dump.c
+lib/ehandle.c
+lib/fields.c
+lib/lock.c
+lib/mlib.c
+lib/myopt.c
+lib/parse.c
+lib/parsehelp.c
+lib/showcright.c
+lib/varbuf.c
+
+main/archives.c
+main/cleanup.c
+main/configure.c
+main/depcon.c
+main/enquiry.c
+main/errors.c
+main/filesdb.c
+main/help.c
+main/main.c
+main/packages.c
+main/processarc.c
+main/remove.c
+main/select.c
+main/update.c
+
+dpkg-deb/build.c
+dpkg-deb/extract.c
+dpkg-deb/info.c
+dpkg-deb/main.c
+
+split/info.c
+split/join.c
+split/main.c
+split/queue.c
+split/split.c
+
+md5sum/md5sum.c
diff --git a/po/en.po b/po/en.po
new file mode 100644 (file)
index 0000000..a4d3fb5
--- /dev/null
+++ b/po/en.po
@@ -0,0 +1,3539 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR Free Software Foundation, Inc.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 1998-11-01 17:14+0000\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"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: ENCODING\n"
+
+#: lib/compat.c:46
+msgid "unable to open tmpfile for vsnprintf"
+msgstr "unable to open tmpfile for vsnprintf"
+
+#: lib/compat.c:48
+msgid "unable to rewind at start of vsnprintf"
+msgstr "unable to rewind at start of vsnprintf"
+
+#: lib/compat.c:49
+msgid "unable to truncate in vsnprintf"
+msgstr "unable to truncate in vsnprintf"
+
+#: lib/compat.c:51
+msgid "write error in vsnprintf"
+msgstr "write error in vsnprintf"
+
+#: lib/compat.c:52
+msgid "unable to flush in vsnprintf"
+msgstr "unable to flush in vsnprintf"
+
+#: lib/compat.c:53
+msgid "unable to stat in vsnprintf"
+msgstr "unable to stat in vsnprintf"
+
+#: lib/compat.c:54
+msgid "unable to rewind in vsnprintf"
+msgstr "unable to rewind in vsnprintf"
+
+#: lib/compat.c:62
+msgid "read error in vsnprintf truncated"
+msgstr "read error in vsnprintf truncated"
+
+#: lib/compat.c:75
+#, c-format
+msgid "System error no.%d"
+msgstr "System error no.%d"
+
+#: lib/compat.c:85
+#, c-format
+msgid "Signal no.%d"
+msgstr "Signal no.%d"
+
+#: lib/database.c:236
+msgid "failed write during hashreport"
+msgstr "failed write during hashreport"
+
+#: lib/dbmodify.c:57
+#, c-format
+msgid ""
+"updates directory contains file `%.250s' whose name is too long (length=%d, "
+"max=%d)"
+msgstr ""
+"updates directory contains file `%.250s' whose name is too long (length=%d, "
+"max=%d)"
+
+#: lib/dbmodify.c:61
+#, c-format
+msgid ""
+"updates directory contains files with different length names (both %d and %d)"
+msgstr ""
+"updates directory contains files with different length names (both %d and %d)"
+
+#: lib/dbmodify.c:75
+#, c-format
+msgid "cannot scan updates directory `%.255s'"
+msgstr "cannot scan updates directory `%.255s'"
+
+#: lib/dbmodify.c:91
+#, c-format
+msgid "failed to remove incorporated update file %.255s"
+msgstr "failed to remove incorporated update file %.255s"
+
+#: lib/dbmodify.c:108
+#, c-format
+msgid "unable to create %.250s"
+msgstr "unable to create %.250s"
+
+#: lib/dbmodify.c:111
+#, c-format
+msgid "unable to fill %.250s with padding"
+msgstr "unable to fill %.250s with padding"
+
+#: lib/dbmodify.c:113
+#, c-format
+msgid "unable flush %.250s after padding"
+msgstr "unable flush %.250s after padding"
+
+#: lib/dbmodify.c:115
+#, c-format
+msgid "unable seek to start of %.250s after padding"
+msgstr "unable seek to start of %.250s after padding"
+
+#: lib/dbmodify.c:143
+msgid "requested operation requires superuser privilege"
+msgstr "requested operation requires superuser privilege"
+
+#: lib/dbmodify.c:148
+msgid "unable to access dpkg status area"
+msgstr "unable to access dpkg status area"
+
+#: lib/dbmodify.c:150
+msgid "operation requires read/write access to dpkg status area"
+msgstr "operation requires read/write access to dpkg status area"
+
+#: lib/dbmodify.c:197
+#, c-format
+msgid "failed to remove my own update file %.255s"
+msgstr "failed to remove my own update file %.255s"
+
+#: lib/dbmodify.c:229
+#, c-format
+msgid "unable to write updated status of `%.250s'"
+msgstr "unable to write updated status of `%.250s'"
+
+#: lib/dbmodify.c:231
+#, c-format
+msgid "unable to flush updated status of `%.250s'"
+msgstr "unable to flush updated status of `%.250s'"
+
+#: lib/dbmodify.c:233
+#, c-format
+msgid "unable to truncate for updated status of `%.250s'"
+msgstr "unable to truncate for updated status of `%.250s'"
+
+#: lib/dbmodify.c:235
+#, c-format
+msgid "unable to fsync updated status of `%.250s'"
+msgstr "unable to fsync updated status of `%.250s'"
+
+#: lib/dbmodify.c:237
+#, c-format
+msgid "unable to close updated status of `%.250s'"
+msgstr "unable to close updated status of `%.250s'"
+
+#: lib/dbmodify.c:240
+#, c-format
+msgid "unable to install updated status of `%.250s'"
+msgstr "unable to install updated status of `%.250s'"
+
+#: lib/dump.c:247
+#, c-format
+msgid "failed to open `%s' for writing %s information"
+msgstr "failed to open `%s' for writing %s information"
+
+#: lib/dump.c:250 lib/parse.c:94
+msgid "unable to set buffering on status file"
+msgstr "unable to set buffering on status file"
+
+#: lib/dump.c:261
+#, c-format
+msgid "failed to write %s record about `%.50s' to `%.250s'"
+msgstr "failed to write %s record about `%.50s' to `%.250s'"
+
+#: lib/dump.c:268
+#, c-format
+msgid "failed to flush %s information to `%.250s'"
+msgstr "failed to flush %s information to `%.250s'"
+
+#: lib/dump.c:270
+#, c-format
+msgid "failed to fsync %s information to `%.250s'"
+msgstr "failed to fsync %s information to `%.250s'"
+
+#: lib/dump.c:272
+#, c-format
+msgid "failed to close `%.250s' after writing %s information"
+msgstr "failed to close `%.250s' after writing %s information"
+
+#: lib/dump.c:276
+#, c-format
+msgid "failed to link `%.250s' to `%.250s' for backup of %s info"
+msgstr "failed to link `%.250s' to `%.250s' for backup of %s info"
+
+#: lib/dump.c:279
+#, c-format
+msgid "failed to install `%.250s' as `%.250s' containing %s info"
+msgstr "failed to install `%.250s' as `%.250s' containing %s info"
+
+#: lib/ehandle.c:80
+msgid "out of memory pushing error handler: "
+msgstr "out of memory pushing error handler: "
+
+#: lib/ehandle.c:95
+#, c-format
+msgid ""
+"%s: error while cleaning up:\n"
+" %s\n"
+msgstr ""
+"%s: error while cleaning up:\n"
+" %s\n"
+
+#: lib/ehandle.c:110
+msgid "dpkg: too many nested errors during error recovery !!\n"
+msgstr "dpkg: too many nested errors during error recovery !!\n"
+
+#: lib/ehandle.c:183
+msgid "out of memory for new cleanup entry with many arguments"
+msgstr "out of memory for new cleanup entry with many arguments"
+
+#: lib/ehandle.c:270
+#, c-format
+msgid "error writing `%.250s'"
+msgstr "error writing `%.250s'"
+
+#: lib/ehandle.c:274
+#, c-format
+msgid "%s:%d: internal error `%s'\n"
+msgstr "%s:%d: internal error `%s'\n"
+
+#: lib/fields.c:47
+#, c-format
+msgid "`%.*s' is not allowed for %s"
+msgstr "`%.*s' is not allowed for %s"
+
+#: lib/fields.c:52
+#, c-format
+msgid "junk after %s"
+msgstr "junk after %s"
+
+#: lib/fields.c:62
+#, c-format
+msgid "invalid package name (%.250s)"
+msgstr "invalid package name (%.250s)"
+
+#: lib/fields.c:81
+#, c-format
+msgid "empty file details field `%s'"
+msgstr "empty file details field `%s'"
+
+#: lib/fields.c:84
+#, c-format
+msgid "file details field `%s' not allowed in status file"
+msgstr "file details field `%s' not allowed in status file"
+
+#: lib/fields.c:94
+#, c-format
+msgid "too many values in file details field `%s' (compared to others)"
+msgstr "too many values in file details field `%s' (compared to others)"
+
+#: lib/fields.c:107
+#, c-format
+msgid "too few values in file details field `%s' (compared to others)"
+msgstr "too few values in file details field `%s' (compared to others)"
+
+#: lib/fields.c:156
+msgid "value for `status' field not allowed in this context"
+msgstr "value for `status' field not allowed in this context"
+
+#: lib/fields.c:178
+#, c-format
+msgid "error in Version string `%.250s': %.250s"
+msgstr "error in Version string `%.250s': %.250s"
+
+#: lib/fields.c:189
+msgid "obsolete `Revision' or `Package-Revision' field used"
+msgstr "obsolete `Revision' or `Package-Revision' field used"
+
+#: lib/fields.c:207
+msgid "value for `config-version' field not allowed in this context"
+msgstr "value for `config-version' field not allowed in this context"
+
+#: lib/fields.c:211
+#, c-format
+msgid "error in Config-Version string `%.250s': %.250s"
+msgstr "error in Config-Version string `%.250s': %.250s"
+
+#: lib/fields.c:227
+#, c-format
+msgid "value for `conffiles' has line starting with non-space `%c'"
+msgstr "value for `conffiles' has line starting with non-space `%c'"
+
+#: lib/fields.c:233
+#, c-format
+msgid "value for `conffiles' has malformatted line `%.*s'"
+msgstr "value for `conffiles' has malformatted line `%.*s'"
+
+#: lib/fields.c:239
+msgid "root or null directory is listed as a conffile"
+msgstr "root or null directory is listed as a conffile"
+
+#: lib/fields.c:282
+#, c-format
+msgid ""
+"`%s' field, missing package name, or garbage where package name expected"
+msgstr ""
+"`%s' field, missing package name, or garbage where package name expected"
+
+#: lib/fields.c:285
+#, c-format
+msgid "`%s' field, invalid package name `%.255s': %s"
+msgstr "`%s' field, invalid package name `%.255s': %s"
+
+#: lib/fields.c:316
+#, c-format
+msgid ""
+"`%s' field, reference to `%.255s':\n"
+" bad version relationship %c%c"
+msgstr ""
+"`%s' field, reference to `%.255s':\n"
+" bad version relationship %c%c"
+
+#: lib/fields.c:322
+#, c-format
+msgid ""
+"`%s' field, reference to `%.255s':\n"
+" `%c' is obsolete, use `%c=' or `%c%c' instead"
+msgstr ""
+"`%s' field, reference to `%.255s':\n"
+" `%c' is obsolete, use `%c=' or `%c%c' instead"
+
+#: lib/fields.c:332
+#, c-format
+msgid ""
+"`%s' field, reference to `%.255s':\n"
+" implicit exact match on version number, suggest using `=' instead"
+msgstr ""
+"`%s' field, reference to `%.255s':\n"
+" implicit exact match on version number, suggest using `=' instead"
+
+#: lib/fields.c:339
+#, c-format
+msgid ""
+"`%s' field, reference to `%.255s':\n"
+" version value starts with non-alphanumeric, suggest adding a space"
+msgstr ""
+"`%s' field, reference to `%.255s':\n"
+" version value starts with non-alphanumeric, suggest adding a space"
+
+#: lib/fields.c:349
+#, c-format
+msgid "`%s' field, reference to `%.255s': version contains `('"
+msgstr "`%s' field, reference to `%.255s': version contains `('"
+
+#: lib/fields.c:352
+#, c-format
+msgid "`%s' field, reference to `%.255s': version unterminated"
+msgstr "`%s' field, reference to `%.255s': version unterminated"
+
+#: lib/fields.c:357
+#, c-format
+msgid "`%s' field, reference to `%.255s': error in version: %.255s"
+msgstr "`%s' field, reference to `%.255s': error in version: %.255s"
+
+#: lib/fields.c:366
+#, c-format
+msgid "`%s' field, syntax error after reference to package `%.255s'"
+msgstr "`%s' field, syntax error after reference to package `%.255s'"
+
+#: lib/fields.c:373
+#, c-format
+msgid "alternatives (`|') not allowed in %s field"
+msgstr "alternatives (`|') not allowed in %s field"
+
+#: lib/lock.c:47
+msgid "unable to unlock dpkg status database"
+msgstr "unable to unlock dpkg status database"
+
+#: lib/lock.c:68
+msgid "you do not have permission to lock the dpkg status database"
+msgstr "you do not have permission to lock the dpkg status database"
+
+#: lib/lock.c:69
+msgid "unable to open/create status database lockfile"
+msgstr "unable to open/create status database lockfile"
+
+#: lib/lock.c:78
+msgid "status database area is locked - another dpkg/dselect is running"
+msgstr "status database area is locked - another dpkg/dselect is running"
+
+#: lib/lock.c:79
+msgid "unable to lock dpkg status database"
+msgstr "unable to lock dpkg status database"
+
+#: lib/mlib.c:47
+#, c-format
+msgid "malloc failed (%ld bytes)"
+msgstr "malloc failed (%ld bytes)"
+
+#: lib/mlib.c:60
+#, c-format
+msgid "realloc failed (%ld bytes)"
+msgstr "realloc failed (%ld bytes)"
+
+#: lib/mlib.c:67
+#, c-format
+msgid "%s (subprocess): %s\n"
+msgstr "%s (subprocess): %s\n"
+
+#: lib/mlib.c:80
+msgid "fork failed"
+msgstr "fork failed"
+
+#: lib/mlib.c:93
+#, c-format
+msgid "failed to dup for std%s"
+msgstr "failed to dup for std%s"
+
+#: lib/mlib.c:94
+#, c-format
+msgid "failed to dup for fd %d"
+msgstr "failed to dup for fd %d"
+
+#: lib/mlib.c:100
+msgid "failed to create pipe"
+msgstr "failed to create pipe"
+
+#: lib/mlib.c:107
+#, c-format
+msgid "subprocess %s returned error exit status %d"
+msgstr "subprocess %s returned error exit status %d"
+
+#: lib/mlib.c:110
+#, c-format
+msgid "subprocess %s killed by signal (%s)%s"
+msgstr "subprocess %s killed by signal (%s)%s"
+
+#: lib/mlib.c:113
+#, c-format
+msgid "subprocess %s failed with wait status code %d"
+msgstr "subprocess %s failed with wait status code %d"
+
+#: lib/mlib.c:122 main/help.c:350
+#, c-format
+msgid "wait for %s failed"
+msgstr "wait for %s failed"
+
+#: lib/myopt.c:48
+#, c-format
+msgid "unknown option --%s"
+msgstr "unknown option --%s"
+
+#: lib/myopt.c:52
+#, c-format
+msgid "--%s option takes a value"
+msgstr "--%s option takes a value"
+
+#: lib/myopt.c:57
+#, c-format
+msgid "--%s option does not take a value"
+msgstr "--%s option does not take a value"
+
+#: lib/myopt.c:64
+#, c-format
+msgid "unknown option -%c"
+msgstr "unknown option -%c"
+
+#: lib/myopt.c:69
+#, c-format
+msgid "-%c option takes a value"
+msgstr "-%c option takes a value"
+
+#: lib/myopt.c:77
+#, c-format
+msgid "-%c option does not take a value"
+msgstr "-%c option does not take a value"
+
+#: lib/parse.c:90
+#, c-format
+msgid "failed to open package info file `%.255s' for reading"
+msgstr "failed to open package info file `%.255s' for reading"
+
+#: lib/parse.c:121
+#, c-format
+msgid "EOF after field name `%.50s'"
+msgstr "EOF after field name `%.50s'"
+
+#: lib/parse.c:124
+#, c-format
+msgid "newline in field name `%.50s'"
+msgstr "newline in field name `%.50s'"
+
+#: lib/parse.c:127
+#, c-format
+msgid "MSDOS EOF (^Z) in field name `%.50s'"
+msgstr "MSDOS EOF (^Z) in field name `%.50s'"
+
+#: lib/parse.c:130
+#, c-format
+msgid "field name `%.50s' must be followed by colon"
+msgstr "field name `%.50s' must be followed by colon"
+
+#: lib/parse.c:138
+#, c-format
+msgid "EOF before value of field `%.50s' (missing final newline)"
+msgstr "EOF before value of field `%.50s' (missing final newline)"
+
+#: lib/parse.c:142
+#, c-format
+msgid "MSDOS EOF char in value of field `%.50s' (missing newline?)"
+msgstr "MSDOS EOF char in value of field `%.50s' (missing newline?)"
+
+#: lib/parse.c:153
+#, c-format
+msgid "EOF during value of field `%.50s' (missing final newline)"
+msgstr "EOF during value of field `%.50s' (missing final newline)"
+
+#: lib/parse.c:170
+#, c-format
+msgid "duplicate value for `%s' field"
+msgstr "duplicate value for `%s' field"
+
+#: lib/parse.c:175
+#, c-format
+msgid "user-defined field name `%s' too short"
+msgstr "user-defined field name `%s' too short"
+
+#: lib/parse.c:180
+#, c-format
+msgid "duplicate value for user-defined field `%.50s'"
+msgstr "duplicate value for user-defined field `%.50s'"
+
+#: lib/parse.c:193
+msgid "several package info entries found, only one allowed"
+msgstr "several package info entries found, only one allowed"
+
+#: lib/parse.c:221
+msgid "Configured-Version for package with inappropriate Status"
+msgstr "Configured-Version for package with inappropriate Status"
+
+#: lib/parse.c:235
+msgid "Package which in state not-installed has conffiles, forgetting them"
+msgstr "Package which in state not-installed has conffiles, forgetting them"
+
+#: lib/parse.c:283
+#, c-format
+msgid "failed to read from `%.255s'"
+msgstr "failed to read from `%.255s'"
+
+#: lib/parse.c:285
+#, c-format
+msgid "failed to close after read: `%.255s'"
+msgstr "failed to close after read: `%.255s'"
+
+#: lib/parse.c:286
+#, c-format
+msgid "no package information in `%.255s'"
+msgstr "no package information in `%.255s'"
+
+#: lib/parsehelp.c:38
+#, c-format
+msgid "failed to read `%s' at line %d"
+msgstr "failed to read `%s' at line %d"
+
+#: lib/parsehelp.c:39
+#, c-format
+msgid "%s, in file `%.255s' near line %d"
+msgstr "%s, in file `%.255s' near line %d"
+
+#: lib/parsehelp.c:40
+msgid "warning"
+msgstr "warning"
+
+#: lib/parsehelp.c:40
+msgid "parse error"
+msgstr "parse error"
+
+#: lib/parsehelp.c:42
+#, c-format
+msgid " package `%.255s'"
+msgstr " package `%.255s'"
+
+#: lib/parsehelp.c:53
+msgid "failed to write parsing warning"
+msgstr "failed to write parsing warning"
+
+#: lib/parsehelp.c:114
+msgid "may not be empty string"
+msgstr "may not be empty string"
+
+#: lib/parsehelp.c:115
+msgid "must start with an alphanumeric"
+msgstr "must start with an alphanumeric"
+
+#: lib/parsehelp.c:116
+msgid "must be at least two characters"
+msgstr "must be at least two characters"
+
+#: lib/parsehelp.c:125
+#, c-format
+msgid "character `%c' not allowed - only letters, digits and %s allowed"
+msgstr "character `%c' not allowed - only letters, digits and %s allowed"
+
+#: lib/parsehelp.c:194
+msgid "version string is empty"
+msgstr "version string is empty"
+
+#: lib/parsehelp.c:199
+msgid "epoch in version is not number"
+msgstr "epoch in version is not number"
+
+#: lib/parsehelp.c:200
+msgid "nothing after colon in version number"
+msgstr "nothing after colon in version number"
+
+#: lib/parsehelp.c:221
+#, c-format
+msgid "missing %s"
+msgstr "missing %s"
+
+#: lib/parsehelp.c:225
+#, c-format
+msgid "empty value for %s"
+msgstr "empty value for %s"
+
+#: lib/showcright.c:31
+msgid "cannot open GPL file /usr/doc/dpkg/copyright"
+msgstr "cannot open GPL file /usr/doc/dpkg/copyright"
+
+#: lib/showcright.c:34
+msgid "unable to exec cat for displaying GPL file"
+msgstr "unable to exec cat for displaying GPL file"
+
+#: lib/varbuf.c:76
+msgid "failed to realloc for variable buffer"
+msgstr "failed to realloc for variable buffer"
+
+#: main/archives.c:123
+msgid "error reading from dpkg-deb pipe"
+msgstr "error reading from dpkg-deb pipe"
+
+#: main/archives.c:160
+#, c-format
+msgid "error setting timestamps of `%.255s'"
+msgstr "error setting timestamps of `%.255s'"
+
+#: main/archives.c:165 main/archives.c:407
+#, c-format
+msgid "error setting ownership of `%.255s'"
+msgstr "error setting ownership of `%.255s'"
+
+#: main/archives.c:167 main/archives.c:415
+#, c-format
+msgid "error setting permissions of `%.255s'"
+msgstr "error setting permissions of `%.255s'"
+
+#: main/archives.c:248
+#, c-format
+msgid ""
+"trying to overwrite `%.250s', which is the diverted version of "
+"`%.250s'%.10s%.100s%.10s"
+msgstr ""
+"trying to overwrite `%.250s', which is the diverted version of "
+"`%.250s'%.10s%.100s%.10s"
+
+#: main/archives.c:274
+#, c-format
+msgid "unable to stat `%.255s' (which I was about to install)"
+msgstr "unable to stat `%.255s' (which I was about to install)"
+
+#: main/archives.c:282
+#, c-format
+msgid ""
+"unable to clean up mess surrounding `%.255s' before installing another "
+"version"
+msgstr ""
+"unable to clean up mess surrounding `%.255s' before installing another "
+"version"
+
+#: main/archives.c:288
+#, c-format
+msgid "unable to stat restored `%.255s' before installing another version"
+msgstr "unable to stat restored `%.255s' before installing another version"
+
+#: main/archives.c:320
+#, c-format
+msgid "archive contained object `%.255s' of unknown type 0x%x"
+msgstr "archive contained object `%.255s' of unknown type 0x%x"
+
+#: main/archives.c:355
+#, c-format
+msgid ""
+"trying to overwrite directory `%.250s' in package %.250s with nondirectory"
+msgstr ""
+"trying to overwrite directory `%.250s' in package %.250s with nondirectory"
+
+#: main/archives.c:360
+#, c-format
+msgid "trying to overwrite `%.250s', which is also in package %.250s"
+msgstr "trying to overwrite `%.250s', which is also in package %.250s"
+
+#: main/archives.c:388
+#, c-format
+msgid "unable to fdopen for `%.255s'"
+msgstr "unable to fdopen for `%.255s'"
+
+#: main/archives.c:397
+#, c-format
+msgid "error reading dpkg-deb during `%.255s'"
+msgstr "error reading dpkg-deb during `%.255s'"
+
+#: main/archives.c:404
+#, c-format
+msgid "error writing to `%.255s'"
+msgstr "error writing to `%.255s'"
+
+#: main/archives.c:413
+#, c-format
+msgid "error flushing `%.255s'"
+msgstr "error flushing `%.255s'"
+
+#: main/archives.c:418
+#, c-format
+msgid "error closing/writing `%.255s'"
+msgstr "error closing/writing `%.255s'"
+
+#: main/archives.c:423
+#, c-format
+msgid "error creating pipe `%.255s'"
+msgstr "error creating pipe `%.255s'"
+
+#: main/archives.c:429
+#, c-format
+msgid "error creating device `%.255s'"
+msgstr "error creating device `%.255s'"
+
+#: main/archives.c:438
+#, c-format
+msgid "error creating hard link `%.255s'"
+msgstr "error creating hard link `%.255s'"
+
+#: main/archives.c:445
+#, c-format
+msgid "error creating symbolic link `%.255s'"
+msgstr "error creating symbolic link `%.255s'"
+
+#: main/archives.c:452
+#, c-format
+msgid "error setting ownership of symlink `%.255s'"
+msgstr "error setting ownership of symlink `%.255s'"
+
+#: main/archives.c:458
+#, c-format
+msgid "error creating directory `%.255s'"
+msgstr "error creating directory `%.255s'"
+
+#: main/archives.c:463
+msgid "bad tar type, but already checked"
+msgstr "bad tar type, but already checked"
+
+#: main/archives.c:493
+#, c-format
+msgid "unable to move aside `%.255s' to install new version"
+msgstr "unable to move aside `%.255s' to install new version"
+
+#: main/archives.c:506
+#, c-format
+msgid "unable to make backup symlink for `%.255s'"
+msgstr "unable to make backup symlink for `%.255s'"
+
+#: main/archives.c:512
+#, c-format
+msgid "unable to chown backup symlink for `%.255s'"
+msgstr "unable to chown backup symlink for `%.255s'"
+
+#: main/archives.c:516
+#, c-format
+msgid "unable to make backup link of `%.255s' before installing new version"
+msgstr "unable to make backup link of `%.255s' before installing new version"
+
+#: main/archives.c:522
+#, c-format
+msgid "unable to install new version of `%.255s'"
+msgstr "unable to install new version of `%.255s'"
+
+#: main/archives.c:536
+#, c-format
+msgid ""
+"dpkg: warning - ignoring dependency problem with removal of %s:\n"
+"%s"
+msgstr ""
+"dpkg: warning - ignoring dependency problem with removal of %s:\n"
+"%s"
+
+#: main/archives.c:543
+#, c-format
+msgid ""
+"dpkg: warning - considering deconfiguration of essential\n"
+" package %s, to enable removal of %s.\n"
+msgstr ""
+"dpkg: warning - considering deconfiguration of essential\n"
+" package %s, to enable removal of %s.\n"
+
+#: main/archives.c:547
+#, c-format
+msgid ""
+"dpkg: no, %s is essential, will not deconfigure\n"
+" it in order to enable removal of %s.\n"
+msgstr ""
+"dpkg: no, %s is essential, will not deconfigure\n"
+" it in order to enable removal of %s.\n"
+
+#: main/archives.c:560
+#, c-format
+msgid ""
+"dpkg: no, cannot remove %s (--auto-deconfigure will help):\n"
+"%s"
+msgstr ""
+"dpkg: no, cannot remove %s (--auto-deconfigure will help):\n"
+"%s"
+
+#: main/archives.c:594
+#, c-format
+msgid "dpkg: considering removing %s in favour of %s ...\n"
+msgstr "dpkg: considering removing %s in favour of %s ...\n"
+
+#: main/archives.c:598
+#, c-format
+msgid "%s is not properly installed - ignoring any dependencies on it.\n"
+msgstr "%s is not properly installed - ignoring any dependencies on it.\n"
+
+#: main/archives.c:625
+#, c-format
+msgid "dpkg: may have trouble removing %s, as it provides %s ...\n"
+msgstr "dpkg: may have trouble removing %s, as it provides %s ...\n"
+
+#: main/archives.c:640
+#, c-format
+msgid ""
+"dpkg: package %s requires reinstallation, but will remove anyway as you "
+"request.\n"
+msgstr ""
+"dpkg: package %s requires reinstallation, but will remove anyway as you "
+"request.\n"
+
+#: main/archives.c:643
+#, c-format
+msgid "dpkg: package %s requires reinstallation, will not remove.\n"
+msgstr "dpkg: package %s requires reinstallation, will not remove.\n"
+
+#: main/archives.c:652
+#, c-format
+msgid "dpkg: yes, will remove %s in favour of %s.\n"
+msgstr "dpkg: yes, will remove %s in favour of %s.\n"
+
+#: main/archives.c:660
+#, c-format
+msgid ""
+"dpkg: regarding %s containing %s:\n"
+"%s"
+msgstr ""
+"dpkg: regarding %s containing %s:\n"
+"%s"
+
+#: main/archives.c:663
+#, c-format
+msgid "conflicting packages - not installing %.250s"
+msgstr "conflicting packages - not installing %.250s"
+
+#: main/archives.c:664
+msgid "dpkg: warning - ignoring conflict, may proceed anyway !\n"
+msgstr "dpkg: warning - ignoring conflict, may proceed anyway !\n"
+
+#: main/archives.c:701
+#, c-format
+msgid "--%s --recursive needs at least one path argument"
+msgstr "--%s --recursive needs at least one path argument"
+
+#: main/archives.c:730
+msgid "failed to exec find for --recursive"
+msgstr "failed to exec find for --recursive"
+
+#: main/archives.c:734
+msgid "failed to fdopen find's pipe"
+msgstr "failed to fdopen find's pipe"
+
+#: main/archives.c:741
+msgid "error reading find's pipe"
+msgstr "error reading find's pipe"
+
+#: main/archives.c:742
+msgid "error closing find's pipe"
+msgstr "error closing find's pipe"
+
+#: main/archives.c:745
+msgid "searched, but found no packages (files matching *.deb"
+msgstr "searched, but found no packages (files matching *.deb"
+
+#: main/archives.c:762
+#, c-format
+msgid "--%s needs at least one package archive file argument"
+msgstr "--%s needs at least one package archive file argument"
+
+#: main/archives.c:809
+msgid "unknown action"
+msgstr "unknown action"
+
+#: main/cleanup.c:84
+#, c-format
+msgid ""
+"unable to remove newly-installed version of `%.250s' to allow reinstallation "
+"of backup copy"
+msgstr ""
+"unable to remove newly-installed version of `%.250s' to allow reinstallation "
+"of backup copy"
+
+#: main/cleanup.c:91
+#, c-format
+msgid "unable to restore backup version of `%.250s'"
+msgstr "unable to restore backup version of `%.250s'"
+
+#: main/cleanup.c:97
+#, c-format
+msgid "unable to remove newly-extracted version of `%.250s'"
+msgstr "unable to remove newly-extracted version of `%.250s'"
+
+#: main/configure.c:80
+#, c-format
+msgid "no package named `%s' is installed, cannot configure"
+msgstr "no package named `%s' is installed, cannot configure"
+
+#: main/configure.c:82
+#, c-format
+msgid ""
+"package %.250s is not ready for configuration\n"
+" cannot configure (current status `%.250s')"
+msgstr ""
+"package %.250s is not ready for configuration\n"
+" cannot configure (current status `%.250s')"
+
+#: main/configure.c:99
+#, c-format
+msgid ""
+"dpkg: dependency problems prevent configuration of %s:\n"
+"%s"
+msgstr ""
+"dpkg: dependency problems prevent configuration of %s:\n"
+"%s"
+
+#: main/configure.c:102
+msgid "dependency problems - leaving unconfigured"
+msgstr "dependency problems - leaving unconfigured"
+
+#: main/configure.c:106
+#, c-format
+msgid ""
+"dpkg: %s: dependency problems, but configuring anyway as you request:\n"
+"%s"
+msgstr ""
+"dpkg: %s: dependency problems, but configuring anyway as you request:\n"
+"%s"
+
+#: main/configure.c:114
+msgid ""
+"Package is in a very bad inconsistent state - you should\n"
+" reinstall it before attempting configuration."
+msgstr ""
+"Package is in a very bad inconsistent state - you should\n"
+" reinstall it before attempting configuration."
+
+#: main/configure.c:117
+#, c-format
+msgid "Setting up %s (%s) ...\n"
+msgstr "Setting up %s (%s) ...\n"
+
+#: main/configure.c:165
+#, c-format
+msgid "unable to stat new dist conffile `%.250s'"
+msgstr "unable to stat new dist conffile `%.250s'"
+
+#: main/configure.c:174
+#, c-format
+msgid "unable to change ownership of new dist conffile `%.250s'"
+msgstr "unable to change ownership of new dist conffile `%.250s'"
+
+#: main/configure.c:177
+#, c-format
+msgid "unable to set mode of new dist conffile `%.250s'"
+msgstr "unable to set mode of new dist conffile `%.250s'"
+
+#: main/configure.c:180
+#, c-format
+msgid "unable to stat current installed conffile `%.250s'"
+msgstr "unable to stat current installed conffile `%.250s'"
+
+#: main/configure.c:212
+#, c-format
+msgid ""
+"\n"
+"Configuration file `%s'"
+msgstr ""
+"\n"
+"Configuration file `%s'"
+
+#: main/configure.c:214
+#, c-format
+msgid " (actually `%s')"
+msgstr " (actually `%s')"
+
+#: main/configure.c:219
+msgid ""
+"\n"
+" ==> File on system created by you or by a script.\n"
+" ==> File also in package provided by package maintainer.\n"
+msgstr ""
+"\n"
+" ==> File on system created by you or by a script.\n"
+" ==> File also in package provided by package maintainer.\n"
+
+#: main/configure.c:226
+msgid ""
+"\n"
+" ==> Modified (by you or by a script) since installation.\n"
+msgstr ""
+"\n"
+" ==> Modified (by you or by a script) since installation.\n"
+
+#: main/configure.c:227
+msgid ""
+"\n"
+"     Not modified since installation.\n"
+msgstr ""
+"\n"
+"     Not modified since installation.\n"
+
+#: main/configure.c:230
+msgid " ==> Package distributor has shipped an updated version.\n"
+msgstr " ==> Package distributor has shipped an updated version.\n"
+
+#: main/configure.c:231
+msgid "     Version in package is the same as at last installation.\n"
+msgstr "     Version in package is the same as at last installation.\n"
+
+#: main/configure.c:236
+msgid ""
+"   What would you like to do about it ?  Your options are:\n"
+"    Y or I  : install the package maintainer's version\n"
+"    N or O  : keep your currently-installed version\n"
+"      Z     : background this process to examine the situation\n"
+msgstr ""
+"   What would you like to do about it ?  Your options are:\n"
+"    Y or I  : install the package maintainer's version\n"
+"    N or O  : keep your currently-installed version\n"
+"      Z     : background this process to examine the situation\n"
+
+#: main/configure.c:242
+msgid " The default action is to keep your current version.\n"
+msgstr " The default action is to keep your current version.\n"
+
+#: main/configure.c:244
+msgid " The default action is to install the new version.\n"
+msgstr " The default action is to install the new version.\n"
+
+#: main/configure.c:250
+msgid "[default=N]"
+msgstr "[default=N]"
+
+#: main/configure.c:251
+msgid "[default=Y]"
+msgstr "[default=Y]"
+
+#: main/configure.c:251
+msgid "[no default]"
+msgstr "[no default]"
+
+#: main/configure.c:254
+msgid "error writing to stderr, discovered before conffile prompt"
+msgstr "error writing to stderr, discovered before conffile prompt"
+
+#: main/configure.c:261
+msgid "read error on stdin at conffile prompt"
+msgstr "read error on stdin at conffile prompt"
+
+#: main/configure.c:262
+msgid "EOF on stdin at conffile prompt"
+msgstr "EOF on stdin at conffile prompt"
+
+#: main/configure.c:277
+#, c-format
+msgid ""
+"Your currently installed version of the file is in:\n"
+" %s\n"
+"The version contained in the new version of the package is in:\n"
+" %s\n"
+"If you decide to take care of the update yourself, perhaps by editing\n"
+" the installed version, you should choose `N' when you return, so that\n"
+" I do not mess up your careful work.\n"
+msgstr ""
+"Your currently installed version of the file is in:\n"
+" %s\n"
+"The version contained in the new version of the package is in:\n"
+" %s\n"
+"If you decide to take care of the update yourself, perhaps by editing\n"
+" the installed version, you should choose `N' when you return, so that\n"
+" I do not mess up your careful work.\n"
+
+#: main/configure.c:288
+msgid "Type `exit' when you're done.\n"
+msgstr "Type `exit' when you're done.\n"
+
+#: main/configure.c:293
+#, c-format
+msgid "failed to exec shell (%.250s)"
+msgstr "failed to exec shell (%.250s)"
+
+#: main/configure.c:296
+msgid "wait for shell failed"
+msgstr "wait for shell failed"
+
+#: main/configure.c:298
+msgid "Don't forget to foreground (`fg') this process when you're done !\n"
+msgstr "Don't forget to foreground (`fg') this process when you're done !\n"
+
+#: main/configure.c:319
+#, c-format
+msgid "dpkg: %s: warning - failed to remove old backup `%.250s': %s\n"
+msgstr "dpkg: %s: warning - failed to remove old backup `%.250s': %s\n"
+
+#: main/configure.c:327
+#, c-format
+msgid "dpkg: %s: warning - failed to rename `%.250s' to `%.250s': %s\n"
+msgstr "dpkg: %s: warning - failed to rename `%.250s' to `%.250s': %s\n"
+
+#: main/configure.c:335
+#, c-format
+msgid "dpkg: %s: warning - failed to remove `%.250s': %s\n"
+msgstr "dpkg: %s: warning - failed to remove `%.250s': %s\n"
+
+#: main/configure.c:343
+#, c-format
+msgid "dpkg: %s: warning - failed to remove old distrib version `%.250s': %s\n"
+msgstr ""
+"dpkg: %s: warning - failed to remove old distrib version `%.250s': %s\n"
+
+#: main/configure.c:348
+#, c-format
+msgid "dpkg: %s: warning - failed to remove `%.250s' (before overwrite): %s\n"
+msgstr "dpkg: %s: warning - failed to remove `%.250s' (before overwrite): %s\n"
+
+#: main/configure.c:352
+#, c-format
+msgid "dpkg: %s: warning - failed to link `%.250s' to `%.250s': %s\n"
+msgstr "dpkg: %s: warning - failed to link `%.250s' to `%.250s': %s\n"
+
+#: main/configure.c:356
+#, c-format
+msgid "Installing new version of config file %s ...\n"
+msgstr "Installing new version of config file %s ...\n"
+
+#: main/configure.c:360
+#, c-format
+msgid "unable to install `%.250s' as `%.250s'"
+msgstr "unable to install `%.250s' as `%.250s'"
+
+#: main/configure.c:416
+#, c-format
+msgid ""
+"dpkg: %s: warning - unable to stat config file `%s'\n"
+" (= `%s'): %s\n"
+msgstr ""
+"dpkg: %s: warning - unable to stat config file `%s'\n"
+" (= `%s'): %s\n"
+
+#: main/configure.c:427
+#, c-format
+msgid ""
+"dpkg: %s: warning - config file `%s' is a circular link\n"
+" (= `%s')\n"
+msgstr ""
+"dpkg: %s: warning - config file `%s' is a circular link\n"
+" (= `%s')\n"
+
+#: main/configure.c:440
+#, c-format
+msgid ""
+"dpkg: %s: warning - unable to readlink conffile `%s'\n"
+" (= `%s'): %s\n"
+msgstr ""
+"dpkg: %s: warning - unable to readlink conffile `%s'\n"
+" (= `%s'): %s\n"
+
+#: main/configure.c:459
+#, c-format
+msgid ""
+"dpkg: %s: warning - conffile `%.250s' resolves to degenerate filename\n"
+" (`%s' is a symlink to `%s')\n"
+msgstr ""
+"dpkg: %s: warning - conffile `%.250s' resolves to degenerate filename\n"
+" (`%s' is a symlink to `%s')\n"
+
+#: main/configure.c:472
+#, c-format
+msgid ""
+"dpkg: %s: warning - conffile `%.250s' is not a plain file or symlink (= "
+"`%s')\n"
+msgstr ""
+"dpkg: %s: warning - conffile `%.250s' is not a plain file or symlink (= "
+"`%s')\n"
+
+#: main/configure.c:494
+msgid "failed to exec md5sum"
+msgstr "failed to exec md5sum"
+
+#: main/configure.c:499
+#, c-format
+msgid "unable to fdopen for md5sum of `%.250s'"
+msgstr "unable to fdopen for md5sum of `%.250s'"
+
+#: main/configure.c:507
+msgid "error reading pipe from md5sum"
+msgstr "error reading pipe from md5sum"
+
+#: main/configure.c:508
+msgid "error closing pipe from md5sum"
+msgstr "error closing pipe from md5sum"
+
+#. file= fdopen(p1[0])
+#. m_pipe()
+#. fd= open(cdr.buf)
+#: main/configure.c:512
+#, c-format
+msgid "md5sum gave malformatted output `%.250s'"
+msgstr "md5sum gave malformatted output `%.250s'"
+
+#: main/configure.c:516
+#, c-format
+msgid "dpkg: %s: warning - unable to open conffile %s for hash: %s\n"
+msgstr "dpkg: %s: warning - unable to open conffile %s for hash: %s\n"
+
+#: main/depcon.c:73
+#, c-format
+msgid "unable to check for existence of `%.250s'"
+msgstr "unable to check for existence of `%.250s'"
+
+#: main/depcon.c:136 main/packages.c:386
+msgid " depends on "
+msgstr " depends on "
+
+#: main/depcon.c:137
+msgid " pre-depends on "
+msgstr " pre-depends on "
+
+#: main/depcon.c:138
+msgid " recommends "
+msgstr " recommends "
+
+#: main/depcon.c:139
+msgid " conflicts with "
+msgstr " conflicts with "
+
+#: main/depcon.c:213
+#, c-format
+msgid "  %.250s is to be removed.\n"
+msgstr "  %.250s is to be removed.\n"
+
+#: main/depcon.c:216
+#, c-format
+msgid "  %.250s is to be deconfigured.\n"
+msgstr "  %.250s is to be deconfigured.\n"
+
+#: main/depcon.c:220
+#, c-format
+msgid "  %.250s is to be installed, but is version %.250s.\n"
+msgstr "  %.250s is to be installed, but is version %.250s.\n"
+
+#: main/depcon.c:228
+#, c-format
+msgid "  %.250s is installed, but is version %.250s.\n"
+msgstr "  %.250s is installed, but is version %.250s.\n"
+
+#: main/depcon.c:243
+#, c-format
+msgid "  %.250s is unpacked, but has never been configured.\n"
+msgstr "  %.250s is unpacked, but has never been configured.\n"
+
+#: main/depcon.c:247
+#, c-format
+msgid "  %.250s is unpacked, but is version %.250s.\n"
+msgstr "  %.250s is unpacked, but is version %.250s.\n"
+
+#: main/depcon.c:253
+#, c-format
+msgid "  %.250s latest configured version is %.250s.\n"
+msgstr "  %.250s latest configured version is %.250s.\n"
+
+#: main/depcon.c:262
+#, c-format
+msgid "  %.250s is %s.\n"
+msgstr "  %.250s is %s.\n"
+
+#: main/depcon.c:298
+#, c-format
+msgid "  %.250s provides %.250s but is to be removed.\n"
+msgstr "  %.250s provides %.250s but is to be removed.\n"
+
+#: main/depcon.c:302
+#, c-format
+msgid "  %.250s provides %.250s but is to be deconfigured.\n"
+msgstr "  %.250s provides %.250s but is to be deconfigured.\n"
+
+#: main/depcon.c:307
+#, c-format
+msgid "  %.250s provides %.250s but is %s.\n"
+msgstr "  %.250s provides %.250s but is %s.\n"
+
+#: main/depcon.c:352
+#, c-format
+msgid "  %.250s (version %.250s) is to be installed.\n"
+msgstr "  %.250s (version %.250s) is to be installed.\n"
+
+#: main/depcon.c:366
+#, c-format
+msgid "  %.250s (version %.250s) is %s.\n"
+msgstr "  %.250s (version %.250s) is %s.\n"
+
+#. conflicts and provides the same
+#: main/depcon.c:391
+#, c-format
+msgid "  %.250s provides %.250s and is to be installed.\n"
+msgstr "  %.250s provides %.250s and is to be installed.\n"
+
+#: main/depcon.c:422
+#, c-format
+msgid "  %.250s provides %.250s and is %s.\n"
+msgstr "  %.250s provides %.250s and is %s.\n"
+
+#: main/enquiry.c:63
+msgid ""
+"Desired=Unknown/Install/Remove/Purge\n"
+"| Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed\n"
+"|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: "
+"uppercase=bad)\n"
+"||/ Name            Version        Description\n"
+"+++-===============-==============-=========================================="
+"==\n"
+msgstr ""
+"Desired=Unknown/Install/Remove/Purge\n"
+"| Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed\n"
+"|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: "
+"uppercase=bad)\n"
+"||/ Name            Version        Description\n"
+"+++-===============-==============-=========================================="
+"==\n"
+
+#: main/enquiry.c:121 main/select.c:80
+#, c-format
+msgid "No packages found matching %s.\n"
+msgstr "No packages found matching %s.\n"
+
+#: main/enquiry.c:146
+msgid ""
+"The following packages are in a mess due to serious problems during\n"
+"installation.  They must be reinstalled for them (and any packages\n"
+"that depend on them) to function properly:\n"
+msgstr ""
+"The following packages are in a mess due to serious problems during\n"
+"installation.  They must be reinstalled for them (and any packages\n"
+"that depend on them) to function properly:\n"
+
+#: main/enquiry.c:151
+msgid ""
+"The following packages have been unpacked but not yet configured.\n"
+"They must be configured using dpkg --configure or the configure\n"
+"menu option in dselect for them to work:\n"
+msgstr ""
+"The following packages have been unpacked but not yet configured.\n"
+"They must be configured using dpkg --configure or the configure\n"
+"menu option in dselect for them to work:\n"
+
+#: main/enquiry.c:156
+msgid ""
+"The following packages are only half configured, probably due to problems\n"
+"configuring them the first time.  The configuration should be retried using\n"
+"dpkg --configure <package> or the configure menu option in "
+msgstr ""
+"The following packages are only half configured, probably due to problems\n"
+"configuring them the first time.  The configuration should be retried using\n"
+"dpkg --configure <package> or the configure menu option in "
+
+#: main/enquiry.c:161
+msgid ""
+"The following packages are only half installed, due to problems during\n"
+"installation.  The installation can probably be completed by retrying it;\n"
+"the packages can be removed using dselect or dpkg --remove:\n"
+msgstr ""
+"The following packages are only half installed, due to problems during\n"
+"installation.  The installation can probably be completed by retrying it;\n"
+"the packages can be removed using dselect or dpkg --remove:\n"
+
+#: main/enquiry.c:186
+msgid "--audit does not take any arguments"
+msgstr "--audit does not take any arguments"
+
+#: main/enquiry.c:237
+msgid "--yet-to-unpack does not take any arguments"
+msgstr "--yet-to-unpack does not take any arguments"
+
+#: main/enquiry.c:290
+#, c-format
+msgid " %d packages, from the following sections:"
+msgstr " %d packages, from the following sections:"
+
+#: main/enquiry.c:310
+#, c-format
+msgid "diversion by %s"
+msgstr "diversion by %s"
+
+#: main/enquiry.c:311
+msgid "local diversion"
+msgstr "local diversion"
+
+#: main/enquiry.c:312
+msgid "to"
+msgstr "to"
+
+#: main/enquiry.c:312
+msgid "from"
+msgstr "from"
+
+#: main/enquiry.c:345
+msgid "--search needs at least one file name pattern argument"
+msgstr "--search needs at least one file name pattern argument"
+
+#: main/enquiry.c:373
+#, c-format
+msgid "dpkg: %s not found.\n"
+msgstr "dpkg: %s not found.\n"
+
+#: main/enquiry.c:389 main/packages.c:109
+#, c-format
+msgid "--%s needs at least one package name argument"
+msgstr "--%s needs at least one package name argument"
+
+#: main/enquiry.c:406
+#, c-format
+msgid "Package `%s' is not installed and no info is available.\n"
+msgstr "Package `%s' is not installed and no info is available.\n"
+
+#: main/enquiry.c:415
+#, c-format
+msgid "Package `%s' is not available.\n"
+msgstr "Package `%s' is not available.\n"
+
+#: main/enquiry.c:425
+#, c-format
+msgid "Package `%s' is not installed.\n"
+msgstr "Package `%s' is not installed.\n"
+
+#: main/enquiry.c:434
+#, c-format
+msgid "Package `%s' does not contain any files (!)\n"
+msgstr "Package `%s' does not contain any files (!)\n"
+
+#: main/enquiry.c:440
+msgid "locally diverted"
+msgstr "locally diverted"
+
+#: main/enquiry.c:441
+msgid "package diverts others"
+msgstr "package diverts others"
+
+#: main/enquiry.c:442
+#, c-format
+msgid "diverted by %s"
+msgstr "diverted by %s"
+
+#: main/enquiry.c:461
+msgid ""
+"Use dpkg --info (= dpkg-deb --info) to examine archive files,\n"
+"and dpkg --contents (= dpkg-deb --contents) to list their contents."
+msgstr ""
+"Use dpkg --info (= dpkg-deb --info) to examine archive files,\n"
+"and dpkg --contents (= dpkg-deb --contents) to list their contents."
+
+#: main/enquiry.c:499
+msgid "--assert-support-predepends does not take any arguments"
+msgstr "--assert-support-predepends does not take any arguments"
+
+#: main/enquiry.c:514
+msgid ""
+"Version of dpkg with Pre-Depends support not yet configured.\n"
+" Please use `dpkg --configure dpkg', and then try again.\n"
+msgstr ""
+"Version of dpkg with Pre-Depends support not yet configured.\n"
+" Please use `dpkg --configure dpkg', and then try again.\n"
+
+#: main/enquiry.c:518
+msgid ""
+"dpkg not recorded as installed, cannot check for Pre-Depends support !\n"
+msgstr ""
+"dpkg not recorded as installed, cannot check for Pre-Depends support !\n"
+
+#: main/enquiry.c:541
+msgid "--predep-package does not take any argument"
+msgstr "--predep-package does not take any argument"
+
+#: main/enquiry.c:593
+#, c-format
+msgid ""
+"dpkg: cannot see how to satisfy pre-dependency:\n"
+" %s\n"
+msgstr ""
+"dpkg: cannot see how to satisfy pre-dependency:\n"
+" %s\n"
+
+#: main/enquiry.c:594
+#, c-format
+msgid "cannot satisfy pre-dependencies for %.250s (wanted due to %.250s)"
+msgstr "cannot satisfy pre-dependencies for %.250s (wanted due to %.250s)"
+
+#: main/enquiry.c:614
+#, c-format
+msgid ""
+"dpkg: unexpected output from `%s --print-libgcc-file-name':\n"
+" `%s'\n"
+msgstr ""
+"dpkg: unexpected output from `%s --print-libgcc-file-name':\n"
+" `%s'\n"
+
+#: main/enquiry.c:617
+#, c-format
+msgid "compiler libgcc filename not understood: %.250s"
+msgstr "compiler libgcc filename not understood: %.250s"
+
+#: main/enquiry.c:621
+msgid "--print-installation-architecture does not take any argument"
+msgstr "--print-installation-architecture does not take any argument"
+
+#: main/enquiry.c:641
+msgid "--print-architecture does not take any argument"
+msgstr "--print-architecture does not take any argument"
+
+#: main/enquiry.c:647
+msgid "failed to fdopen CC pipe"
+msgstr "failed to fdopen CC pipe"
+
+#: main/enquiry.c:651
+#, c-format
+msgid "failed to exec C compiler `%.250s'"
+msgstr "failed to exec C compiler `%.250s'"
+
+#: main/enquiry.c:655
+msgid "error reading from CC pipe"
+msgstr "error reading from CC pipe"
+
+#: main/enquiry.c:657
+msgid "empty output"
+msgstr "empty output"
+
+#: main/enquiry.c:659
+msgid "no newline"
+msgstr "no newline"
+
+#: main/enquiry.c:662
+msgid "no gcc-lib component"
+msgstr "no gcc-lib component"
+
+#: main/enquiry.c:664
+msgid "no hyphen after gcc-lib"
+msgstr "no hyphen after gcc-lib"
+
+#: main/enquiry.c:676
+#, c-format
+msgid "dpkg: warning, architecture `%s' not in remapping table\n"
+msgstr "dpkg: warning, architecture `%s' not in remapping table\n"
+
+#: main/enquiry.c:718
+msgid "--cmpversions takes three arguments: <version> <relation> <version>"
+msgstr "--cmpversions takes three arguments: <version> <relation> <version>"
+
+#: main/enquiry.c:723
+msgid "--cmpversions bad relation"
+msgstr "--cmpversions bad relation"
+
+#: main/enquiry.c:728
+#, c-format
+msgid "version a has bad syntax: %s\n"
+msgstr "version a has bad syntax: %s\n"
+
+#: main/enquiry.c:738
+#, c-format
+msgid "version b has bad syntax: %s\n"
+msgstr "version b has bad syntax: %s\n"
+
+#: main/errors.c:60
+msgid ""
+"dpkg: failed to allocate memory for new entry in list of failed packages."
+msgstr ""
+"dpkg: failed to allocate memory for new entry in list of failed packages."
+
+#: main/errors.c:70
+msgid "dpkg: too many errors, stopping\n"
+msgstr "dpkg: too many errors, stopping\n"
+
+#: main/errors.c:76
+msgid "Errors were encountered while processing:\n"
+msgstr "Errors were encountered while processing:\n"
+
+#: main/errors.c:83
+msgid "Processing was halted because there were too many errors.\n"
+msgstr "Processing was halted because there were too many errors.\n"
+
+#: main/errors.c:91
+#, c-format
+msgid "Package %s was on hold, processing it anyway as you request\n"
+msgstr "Package %s was on hold, processing it anyway as you request\n"
+
+#: main/errors.c:104
+msgid ""
+"dpkg - warning, overriding problem because --force enabled:\n"
+" "
+msgstr ""
+"dpkg - warning, overriding problem because --force enabled:\n"
+" "
+
+#: main/filesdb.c:116
+#, c-format
+msgid "unable to open files list file for package `%.250s'"
+msgstr "unable to open files list file for package `%.250s'"
+
+#: main/filesdb.c:121
+#, c-format
+msgid ""
+"dpkg: serious warning: files list file for package `%.250s' missing, "
+"assuming package has no files currently installed.\n"
+msgstr ""
+"dpkg: serious warning: files list file for package `%.250s' missing, "
+"assuming package has no files currently installed.\n"
+
+#: main/filesdb.c:132
+#, c-format
+msgid "unable to set buffering on `%.250s'"
+msgstr "unable to set buffering on `%.250s'"
+
+#: main/filesdb.c:142
+#, c-format
+msgid "fgets gave an empty null-terminated string from `%.250s'"
+msgstr "fgets gave an empty null-terminated string from `%.250s'"
+
+#: main/filesdb.c:160
+#, c-format
+msgid "files list file for package `%.250s' contains empty filename"
+msgstr "files list file for package `%.250s' contains empty filename"
+
+#: main/filesdb.c:168
+#, c-format
+msgid "error reading files list file for package `%.250s'"
+msgstr "error reading files list file for package `%.250s'"
+
+#: main/filesdb.c:171
+#, c-format
+msgid "error closing files list file for package `%.250s'"
+msgstr "error closing files list file for package `%.250s'"
+
+#: main/filesdb.c:173
+#, c-format
+msgid "files list file for package `%.250s' is truncated"
+msgstr "files list file for package `%.250s' is truncated"
+
+#: main/filesdb.c:204
+msgid "(Reading database ... "
+msgstr "(Reading database ... "
+
+#: main/filesdb.c:204
+msgid "(Scanning database ... "
+msgstr "(Scanning database ... "
+
+#: main/filesdb.c:212
+#, c-format
+msgid "%d files and directories currently installed.)\n"
+msgstr "%d files and directories currently installed.)\n"
+
+#: main/filesdb.c:243
+#, c-format
+msgid "unable to create updated files list file for package %s"
+msgstr "unable to create updated files list file for package %s"
+
+#: main/filesdb.c:253
+#, c-format
+msgid "failed to write to updated files list file for package %s"
+msgstr "failed to write to updated files list file for package %s"
+
+#: main/filesdb.c:255
+#, c-format
+msgid "failed to flush updated files list file for package %s"
+msgstr "failed to flush updated files list file for package %s"
+
+#: main/filesdb.c:257
+#, c-format
+msgid "failed to sync updated files list file for package %s"
+msgstr "failed to sync updated files list file for package %s"
+
+#: main/filesdb.c:260
+#, c-format
+msgid "failed to close updated files list file for package %s"
+msgstr "failed to close updated files list file for package %s"
+
+#: main/filesdb.c:262
+#, c-format
+msgid "failed to install updated files list file for package %s"
+msgstr "failed to install updated files list file for package %s"
+
+#: main/filesdb.c:326
+msgid "failed to open diversions file"
+msgstr "failed to open diversions file"
+
+#: main/filesdb.c:330
+msgid "failed to fstat previous diversions file"
+msgstr "failed to fstat previous diversions file"
+
+#: main/filesdb.c:332
+msgid "failed to fstat diversions file"
+msgstr "failed to fstat diversions file"
+
+#: main/filesdb.c:352
+msgid "fgets gave an empty string from diversions [i]"
+msgstr "fgets gave an empty string from diversions [i]"
+
+#: main/filesdb.c:353
+msgid "diversions file has too-long line or EOF [i]"
+msgstr "diversions file has too-long line or EOF [i]"
+
+#: main/filesdb.c:358
+msgid "read error in diversions [ii]"
+msgstr "read error in diversions [ii]"
+
+#: main/filesdb.c:359
+msgid "unexpected EOF in diversions [ii]"
+msgstr "unexpected EOF in diversions [ii]"
+
+#: main/filesdb.c:361
+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
+msgid "diversions file has too-long line or EOF [ii]"
+msgstr "diversions file has too-long line or EOF [ii]"
+
+#: main/filesdb.c:367
+msgid "read error in diversions [iii]"
+msgstr "read error in diversions [iii]"
+
+#: main/filesdb.c:368
+msgid "unexpected EOF in diversions [iii]"
+msgstr "unexpected EOF in diversions [iii]"
+
+#: main/filesdb.c:370
+msgid "fgets gave an empty string from diversions [iii]"
+msgstr "fgets gave an empty string from diversions [iii]"
+
+#: main/filesdb.c:378
+#, c-format
+msgid "conflicting diversions involving `%.250s' or `%.250s'"
+msgstr "conflicting diversions involving `%.250s' or `%.250s'"
+
+#: main/filesdb.c:387
+msgid "read error in diversions [i]"
+msgstr "read error in diversions [i]"
+
+#: main/help.c:40
+msgid "not installed"
+msgstr "not installed"
+
+#: main/help.c:40
+msgid "unpacked but not configured"
+msgstr "unpacked but not configured"
+
+#: main/help.c:41
+msgid "broken due to postinst failure"
+msgstr "broken due to postinst failure"
+
+#: main/help.c:42
+msgid "installed"
+msgstr "installed"
+
+#: main/help.c:43
+msgid "broken due to failed removal"
+msgstr "broken due to failed removal"
+
+#: main/help.c:44
+msgid "not installed but configs remain"
+msgstr "not installed but configs remain"
+
+#: main/help.c:81
+msgid "dpkg - warning: PATH is not set.\n"
+msgstr "dpkg - warning: PATH is not set.\n"
+
+#: main/help.c:96
+#, c-format
+msgid "dpkg: `%s' not found on PATH.\n"
+msgstr "dpkg: `%s' not found on PATH.\n"
+
+#: main/help.c:102
+#, c-format
+msgid ""
+"%d expected program(s) not found on PATH.\n"
+"NB: root's PATH should usually contain /usr/local/sbin, /usr/sbin and /sbin."
+msgstr ""
+"%d expected program(s) not found on PATH.\n"
+"NB: root's PATH should usually contain /usr/local/sbin, /usr/sbin and /sbin."
+
+#: main/help.c:210
+#, c-format
+msgid "error un-catching signal %s: %s\n"
+msgstr "error un-catching signal %s: %s\n"
+
+#: main/help.c:228
+#, c-format
+msgid "unable to ignore signal %s before running script"
+msgstr "unable to ignore signal %s before running script"
+
+#: main/help.c:237
+#, c-format
+msgid "unable to set execute permissions on `%.250s'"
+msgstr "unable to set execute permissions on `%.250s'"
+
+#: main/help.c:261
+#, c-format
+msgid "unable to stat installed %s script `%.250s'"
+msgstr "unable to stat installed %s script `%.250s'"
+
+#: main/help.c:268 main/help.c:346 main/help.c:385
+#, c-format
+msgid "unable to execute %s"
+msgstr "unable to execute %s"
+
+#: main/help.c:297
+#, c-format
+msgid "unable to stat new %s script `%.250s'"
+msgstr "unable to stat new %s script `%.250s'"
+
+#: main/help.c:304
+#, c-format
+msgid "unable to execute new %s"
+msgstr "unable to execute new %s"
+
+#: main/help.c:338
+#, c-format
+msgid "dpkg: warning - unable to stat %s `%.250s': %s\n"
+msgstr "dpkg: warning - unable to stat %s `%.250s': %s\n"
+
+#: main/help.c:354
+#, c-format
+msgid "dpkg: warning - %s returned error exit status %d\n"
+msgstr "dpkg: warning - %s returned error exit status %d\n"
+
+#: main/help.c:357
+#, c-format
+msgid "dpkg: warning - %s killed by signal (%s)%s\n"
+msgstr "dpkg: warning - %s killed by signal (%s)%s\n"
+
+#: main/help.c:360
+#, c-format
+msgid "%s failed with unknown wait status code %d"
+msgstr "%s failed with unknown wait status code %d"
+
+#: main/help.c:364
+msgid "dpkg - trying script from the new package instead ...\n"
+msgstr "dpkg - trying script from the new package instead ...\n"
+
+#: main/help.c:371
+#, c-format
+msgid "new %s script"
+msgstr "new %s script"
+
+#: main/help.c:375
+msgid "there is no script in the new version of the package - giving up"
+msgstr "there is no script in the new version of the package - giving up"
+
+#: main/help.c:377
+#, c-format
+msgid "unable to stat %s `%.250s'"
+msgstr "unable to stat %s `%.250s'"
+
+#: main/help.c:390
+msgid "dpkg: ... it looks like that went OK.\n"
+msgstr "dpkg: ... it looks like that went OK.\n"
+
+#. Huh ?
+#: main/help.c:469
+#, c-format
+msgid "failed to rmdir/unlink `%.255s'"
+msgstr "failed to rmdir/unlink `%.255s'"
+
+#: dpkg-deb/info.c:52 main/help.c:473
+msgid "failed to exec rm for cleanup"
+msgstr "failed to exec rm for cleanup"
+
+#: main/main.c:44
+msgid "Debian Linux `dpkg' package management program version "
+msgstr "Debian Linux `dpkg' package management program version "
+
+#: main/main.c:47
+msgid ""
+"Copyright 1994-1996 Ian Jackson, Bruce Perens.  This is free software;\n"
+"see the GNU General Public Licence version 2 or later for copying\n"
+"conditions.  There is NO warranty.  See dpkg --licence for details.\n"
+msgstr ""
+"Copyright 1994-1996 Ian Jackson, Bruce Perens.  This is free software;\n"
+"see the GNU General Public Licence version 2 or later for copying\n"
+"conditions.  There is NO warranty.  See dpkg --licence for details.\n"
+
+#: main/main.c:57
+#, fuzzy, c-format
+msgid ""
+"Usage: \n"
+"  dpkg -i|--install      <.deb file name> ... | -R|--recursive <dir> ...\n"
+"  dpkg --unpack          <.deb file name> ... | -R|--recursive <dir> ...\n"
+"  dpkg -A|--record-avail <.deb file name> ... | -R|--recursive <dir> ...\n"
+"  dpkg --configure           <package name> ... | -a|--pending\n"
+"  dpkg -r|--remove | --purge <package name> ... | -a|--pending\n"
+"  dpkg --get-selections [<pattern> ...]   get list of selections to stdout\n"
+"  dpkg --set-selections                   set package selections from stdin\n"
+"  dpkg --update-avail <Packages-file>     replace available packages info\n"
+"  dpkg --merge-avail <Packages-file>      merge with info from file\n"
+"  dpkg --clear-avail                      erase existing available info\n"
+"  dpkg --forget-old-unavail               forget uninstalled unavailable "
+"pkgs\n"
+"  dpkg -s|--status <package-name> ...     display package status details\n"
+"  dpkg --print-avail <package-name> ...   display available version details\n"
+"  dpkg -L|--listfiles <package-name> ...  list files `owned' by package(s)\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 --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:"
+msgstr ""
+"Usage: \n"
+"  dpkg -i|--install      <.deb file name> ... | -R|--recursive <dir> ...\n"
+"  dpkg --unpack          <.deb file name> ... | -R|--recursive <dir> ...\n"
+"  dpkg -A|--record-avail <.deb file name> ... | -R|--recursive <dir> ...\n"
+"  dpkg --configure           <package name> ... | -a|--pending\n"
+"  dpkg -r|--remove | --purge <package name> ... | -a|--pending\n"
+"  dpkg --get-selections [<pattern> ...]   get list of selections to stdout\n"
+"  dpkg --set-selections                   set package selections from stdin\n"
+"  dpkg --update-avail <Packages-file>     replace available packages info\n"
+"  dpkg --merge-avail <Packages-file>      merge with info from file\n"
+"  dpkg --clear-avail                      erase existing available info\n"
+"  dpkg --forget-old-unavail               forget uninstalled unavailable "
+"pkgs\n"
+"  dpkg -s|--status <package-name> ...     display package status details\n"
+"  dpkg --print-avail <package-name> ...   display available version details\n"
+"  dpkg -L|--listfiles <package-name> ...  list files `owned' by package(s)\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 --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:\n"
+"  --admindir=<directory>     Use <directory> instead of %s\n"
+"  --root=<directory>         Install on alternative system rooted elsewhere\n"
+"  --instdir=<directory>      Change inst'n root without changing admin dir\n"
+"  -O|--selected-only         Skip packages not selected for install/upgrade\n"
+"  -E|--skip-same-version     Skip packages whose same version is installed\n"
+"  -G=--refuse-downgrade      Skip packages with earlier version than "
+"installed\n"
+"  -B|--auto-deconfigure      Install even if it would break some other "
+"package\n"
+"  --largemem | --smallmem    Optimise for large (>4Mb) or small (<4Mb) RAM "
+"use\n"
+"  --no-act                   Just say what we would do - don't do it\n"
+"  -D|--debug=<octal>         Enable debugging - see -Dhelp or --debug=help\n"
+"  --ignore-depends=<package>,... Ignore dependencies involving <package>\n"
+"  --force-...                    Override problems - see --force-help\n"
+"  --no-force-...|--refuse-...    Stop when problems encountered\n"
+"\n"
+"Comparison operators for --compare-versions are:\n"
+" lt le eq ne ge gt       (treat no version as earlier than any version);\n"
+" lt-nl le-nl ge-nl gt-nl (treat no version as later than any version);\n"
+" < << <= = >= >> >       (only for compatibility with control file syntax).\n"
+"\n"
+"Use `dselect' for user-friendly package management.\n"
+
+#: main/main.c:116
+msgid ""
+"Type dpkg --help for help about installing and deinstalling packages [*];\n"
+"Use dselect for user-friendly package management;\n"
+"Type dpkg -Dhelp for a list of dpkg debug flag values;\n"
+"Type dpkg --force-help for a list of forcing options;\n"
+"Type dpkg-deb --help for help about manipulating *.deb files;\n"
+"Type dpkg --licence for copyright licence and lack of warranty (GNU GPL) "
+"[*].\n"
+"\n"
+"Options marked [*] produce a lot of output - pipe it through `less' or "
+"`more' !"
+msgstr ""
+"Type dpkg --help for help about installing and deinstalling packages [*];\n"
+"Use dselect for user-friendly package management;\n"
+"Type dpkg -Dhelp for a list of dpkg debug flag values;\n"
+"Type dpkg --force-help for a list of forcing options;\n"
+"Type dpkg-deb --help for help about manipulating *.deb files;\n"
+"Type dpkg --licence for copyright licence and lack of warranty (GNU GPL) "
+"[*].\n"
+"\n"
+"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
+#, c-format
+msgid "conflicting actions --%s and --%s"
+msgstr "conflicting actions --%s and --%s"
+
+#: main/main.c:223
+#, 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
+#, 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
+#, fuzzy
+msgid ""
+"dpkg forcing options - control behaviour when problems found:\n"
+"  warn but continue:  --force-<thing>,<thing>,...\n"
+"  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"
+"  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"
+"  not-root               Try to (de)install things even when not root\n"
+"  overwrite              Overwrite a file from one package with another\n"
+"  overwrite-diverted     Overwrite a diverted file with an undiverted "
+"version\n"
+"  depends-version [!]    Turn dependency version problems into warnings\n"
+"  depends [!]            Turn all dependency problems into warnings\n"
+"  conflicts [!]          Allow installation of conflicting packages\n"
+"  architecture [!]       Process even packages with wrong architecture\n"
+"  overwrite-dir [!]      Overwrite one package's directory with another's "
+"file\n"
+"  remove-reinstreq [!]   Remove packages which require installation\n"
+"  remove-essential [!]   Remove an essential package\n"
+"\n"
+"WARNING - use of options marked [!] can seriously damage your installation.\n"
+"Forcing options marked [*] are enabled by default.\n"
+msgstr ""
+"dpkg forcing options - control behaviour when problems found:\n"
+"  warn but continue:  --force-<thing>,<thing>,...\n"
+"  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"
+"  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"
+"  not-root               Try to (de)install things even when not root\n"
+"  overwrite [*]          Overwrite a file from one package with another\n"
+"  overwrite-diverted     Overwrite a diverted file with an undiverted "
+"version\n"
+"  depends-version [!]    Turn dependency version problems into warnings\n"
+"  depends [!]            Turn all dependency problems into warnings\n"
+"  conflicts [!]          Allow installation of conflicting packages\n"
+"  architecture [!]       Process even packages with wrong architecture\n"
+"  overwrite-dir [!]      Overwrite one package's directory with another's "
+"file\n"
+"  remove-reinstreq [!]   Remove packages which require installation\n"
+"  remove-essential [!]   Remove an essential package\n"
+"\n"
+"WARNING - use of options marked [!] can seriously damage your installation.\n"
+"Forcing options marked [*] are enabled by default.\n"
+
+#: main/main.c:277
+#, c-format
+msgid "unknown force/refuse option `%.*s'"
+msgstr "unknown force/refuse option `%.*s'"
+
+#: main/main.c:353
+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
+msgid "need an action option"
+msgstr "need an action option"
+
+#: main/packages.c:79
+#, c-format
+msgid "--%s --pending does not take any non-option arguments"
+msgstr "--%s --pending does not take any non-option arguments"
+
+#: main/packages.c:116
+msgid ""
+"you must specify packages by their own names, not by quoting the names of "
+"the files they come in"
+msgstr ""
+"you must specify packages by their own names, not by quoting the names of "
+"the files they come in"
+
+#: main/packages.c:150
+#, c-format
+msgid "Package %s listed more than once, only processing once.\n"
+msgstr "Package %s listed more than once, only processing once.\n"
+
+#: main/packages.c:154
+#, c-format
+msgid ""
+"More than one copy of package %s has been unpacked\n"
+" in this run !  Only configuring it once.\n"
+msgstr ""
+"More than one copy of package %s has been unpacked\n"
+" in this run !  Only configuring it once.\n"
+
+#: main/packages.c:264 main/packages.c:308 main/packages.c:321
+msgid "  Package "
+msgstr "  Package "
+
+#: main/packages.c:267 main/packages.c:311 main/packages.c:324
+msgid " which provides "
+msgstr " which provides "
+
+#: main/packages.c:270
+msgid " is to be removed.\n"
+msgstr " is to be removed.\n"
+
+#: main/packages.c:282
+msgid "  Version of "
+msgstr "  Version of "
+
+#: main/packages.c:284
+msgid " on system is "
+msgstr " on system is "
+
+#: main/packages.c:304
+#, c-format
+msgid "dpkg: also configuring `%s' (required by `%s')\n"
+msgstr "dpkg: also configuring `%s' (required by `%s')\n"
+
+#: main/packages.c:314
+msgid " is not configured yet.\n"
+msgstr " is not configured yet.\n"
+
+#: main/packages.c:327
+msgid " is not installed.\n"
+msgstr " is not installed.\n"
+
+#. Don't print the line about the package to be removed if
+#. * that's the only line.
+#.
+#: main/packages.c:392
+msgid "; however:\n"
+msgstr "; however:\n"
+
+#: main/processarc.c:105
+msgid "cannot access archive"
+msgstr "cannot access archive"
+
+#: main/processarc.c:115
+#, c-format
+msgid "error ensuring `%.250s' doesn't exist"
+msgstr "error ensuring `%.250s' doesn't exist"
+
+#: main/processarc.c:120
+msgid "failed to exec dpkg-split to see if it's part of a multiparter"
+msgstr "failed to exec dpkg-split to see if it's part of a multiparter"
+
+#: main/processarc.c:123
+msgid "wait for dpkg-split failed"
+msgstr "wait for dpkg-split failed"
+
+#: main/processarc.c:144
+msgid "unable to get unique filename for control info"
+msgstr "unable to get unique filename for control info"
+
+#: main/processarc.c:166
+msgid "failed to exec dpkg-deb to extract control information"
+msgstr "failed to exec dpkg-deb to extract control information"
+
+#: main/processarc.c:180
+#, c-format
+msgid "Recorded info about %s from %s.\n"
+msgstr "Recorded info about %s from %s.\n"
+
+#: main/processarc.c:189
+#, c-format
+msgid "package architecture (%s) does not match system (%s)"
+msgstr "package architecture (%s) does not match system (%s)"
+
+#: main/processarc.c:206
+#, c-format
+msgid "Selecting previously deselected package %s.\n"
+msgstr "Selecting previously deselected package %s.\n"
+
+#: main/processarc.c:209
+#, c-format
+msgid "Skipping deselected package %s.\n"
+msgstr "Skipping deselected package %s.\n"
+
+#: main/processarc.c:220
+#, c-format
+msgid "dpkg - warning: downgrading %.250s from %.250s to %.250s.\n"
+msgstr "dpkg - warning: downgrading %.250s from %.250s to %.250s.\n"
+
+#: main/processarc.c:225
+#, c-format
+msgid "Will not downgrade %.250s from version %.250s to %.250s, skipping.\n"
+msgstr "Will not downgrade %.250s from version %.250s to %.250s, skipping.\n"
+
+#: main/processarc.c:235
+#, c-format
+msgid "Version %.250s of %.250s already installed, skipping.\n"
+msgstr "Version %.250s of %.250s already installed, skipping.\n"
+
+#: main/processarc.c:268
+#, c-format
+msgid ""
+"dpkg: regarding %s containing %s, pre-dependency problem:\n"
+"%s"
+msgstr ""
+"dpkg: regarding %s containing %s, pre-dependency problem:\n"
+"%s"
+
+#: main/processarc.c:271
+#, c-format
+msgid "pre-dependency problem - not installing %.250s"
+msgstr "pre-dependency problem - not installing %.250s"
+
+#: main/processarc.c:272
+msgid "dpkg: warning - ignoring pre-dependency problem !\n"
+msgstr "dpkg: warning - ignoring pre-dependency problem !\n"
+
+#: main/processarc.c:286
+#, c-format
+msgid "Preparing to replace %s %s (using %s) ...\n"
+msgstr "Preparing to replace %s %s (using %s) ...\n"
+
+#: main/processarc.c:291
+#, c-format
+msgid "Unpacking %s (from %s) ...\n"
+msgstr "Unpacking %s (from %s) ...\n"
+
+#: main/processarc.c:311
+#, c-format
+msgid "name of conffile (starting `%.250s') is too long (>%d characters)"
+msgstr "name of conffile (starting `%.250s') is too long (>%d characters)"
+
+#: main/processarc.c:365
+#, c-format
+msgid "read error in %.250s"
+msgstr "read error in %.250s"
+
+#. conff= fopen()
+#: main/processarc.c:367
+#, c-format
+msgid "error closing %.250s"
+msgstr "error closing %.250s"
+
+#: main/processarc.c:369
+#, c-format
+msgid "error trying to open %.250s"
+msgstr "error trying to open %.250s"
+
+#: main/processarc.c:401
+#, c-format
+msgid "De-configuring %s, so that we can remove %s ...\n"
+msgstr "De-configuring %s, so that we can remove %s ...\n"
+
+#: main/processarc.c:458
+#, c-format
+msgid "Unpacking replacement %.250s ...\n"
+msgstr "Unpacking replacement %.250s ...\n"
+
+#: main/processarc.c:534
+msgid "unable to exec dpkg-deb to get filesystem archive"
+msgstr "unable to exec dpkg-deb to get filesystem archive"
+
+#: main/processarc.c:542
+msgid "unable to fdopen dpkg-deb extract pipe"
+msgstr "unable to fdopen dpkg-deb extract pipe"
+
+#: main/processarc.c:548
+msgid "error reading dpkg-deb tar output"
+msgstr "error reading dpkg-deb tar output"
+
+#: main/processarc.c:551
+msgid "unexpected EOF in filesystem tarfile - corrupted package archive"
+msgstr "unexpected EOF in filesystem tarfile - corrupted package archive"
+
+#: main/processarc.c:553
+msgid "corrupted filesystem tarfile - corrupted package archive"
+msgstr "corrupted filesystem tarfile - corrupted package archive"
+
+#: main/processarc.c:610
+#, c-format
+msgid "dpkg: warning - unable to delete old file `%.250s': %s\n"
+msgstr "dpkg: warning - unable to delete old file `%.250s': %s\n"
+
+#: main/processarc.c:632 main/processarc.c:867 main/remove.c:287
+msgid "cannot read info directory"
+msgstr "cannot read info directory"
+
+#: main/processarc.c:645
+#, c-format
+msgid "old version of package has overly-long info file name starting `%.250s'"
+msgstr ""
+"old version of package has overly-long info file name starting `%.250s'"
+
+#: main/processarc.c:657
+#, c-format
+msgid "unable to remove obsolete info file `%.250s'"
+msgstr "unable to remove obsolete info file `%.250s'"
+
+#: main/processarc.c:660
+#, c-format
+msgid "unable to install (supposed) new info file `%.250s'"
+msgstr "unable to install (supposed) new info file `%.250s'"
+
+#: main/processarc.c:667
+msgid "unable to open temp control directory"
+msgstr "unable to open temp control directory"
+
+#: main/processarc.c:676
+#, c-format
+msgid "package contains overly-long control info file name (starting `%.50s')"
+msgstr "package contains overly-long control info file name (starting `%.50s')"
+
+#: main/processarc.c:681
+#, c-format
+msgid "package control info contained directory `%.250s'"
+msgstr "package control info contained directory `%.250s'"
+
+#: main/processarc.c:683
+#, c-format
+msgid "package control info rmdir of `%.250s' didn't say not a dir"
+msgstr "package control info rmdir of `%.250s' didn't say not a dir"
+
+#: main/processarc.c:689
+#, c-format
+msgid "dpkg: warning - package %s contained list as info file"
+msgstr "dpkg: warning - package %s contained list as info file"
+
+#: main/processarc.c:696
+#, c-format
+msgid "unable to install new info file `%.250s' as `%.250s'"
+msgstr "unable to install new info file `%.250s' as `%.250s'"
+
+#: main/processarc.c:847
+#, c-format
+msgid "(Noting disappearance of %s, which has been completely replaced.)\n"
+msgstr "(Noting disappearance of %s, which has been completely replaced.)\n"
+
+#: main/processarc.c:883
+#, c-format
+msgid "unable to delete disappearing control info file `%.250s'"
+msgstr "unable to delete disappearing control info file `%.250s'"
+
+#: main/remove.c:78
+#, c-format
+msgid ""
+"dpkg - warning: ignoring request to remove %.250s which isn't installed.\n"
+msgstr ""
+"dpkg - warning: ignoring request to remove %.250s which isn't installed.\n"
+
+#: main/remove.c:86
+#, c-format
+msgid ""
+"dpkg - warning: ignoring request to remove %.250s, only the config\n"
+" files of which are on the system.  Use --purge to remove them too.\n"
+msgstr ""
+"dpkg - warning: ignoring request to remove %.250s, only the config\n"
+" files of which are on the system.  Use --purge to remove them too.\n"
+
+#: main/remove.c:95
+msgid "This is an essential package - it should not be removed."
+msgstr "This is an essential package - it should not be removed."
+
+#: main/remove.c:121
+#, c-format
+msgid ""
+"dpkg: dependency problems prevent removal of %s:\n"
+"%s"
+msgstr ""
+"dpkg: dependency problems prevent removal of %s:\n"
+"%s"
+
+#: main/remove.c:123
+msgid "dependency problems - not removing"
+msgstr "dependency problems - not removing"
+
+#: main/remove.c:127
+#, c-format
+msgid ""
+"dpkg: %s: dependency problems, but removing anyway as you request:\n"
+"%s"
+msgstr ""
+"dpkg: %s: dependency problems, but removing anyway as you request:\n"
+"%s"
+
+#: main/remove.c:135
+msgid ""
+"Package is in a very bad inconsistent state - you should\n"
+" reinstall it before attempting a removal."
+msgstr ""
+"Package is in a very bad inconsistent state - you should\n"
+" reinstall it before attempting a removal."
+
+#: main/remove.c:142
+#, c-format
+msgid "Would remove or purge %s ...\n"
+msgstr "Would remove or purge %s ...\n"
+
+#: main/remove.c:150
+#, c-format
+msgid "Removing %s ...\n"
+msgstr "Removing %s ...\n"
+
+#: main/remove.c:246
+#, c-format
+msgid ""
+"dpkg - warning: while removing %.250s, directory `%.250s' not empty so not "
+"removed.\n"
+msgstr ""
+"dpkg - warning: while removing %.250s, directory `%.250s' not empty so not "
+"removed.\n"
+
+#: main/remove.c:252
+#, c-format
+msgid ""
+"dpkg - warning: while removing %.250s, unable to remove directory `%.250s': "
+"%s - directory may be a mount point ?\n"
+msgstr ""
+"dpkg - warning: while removing %.250s, unable to remove directory `%.250s': "
+"%s - directory may be a mount point ?\n"
+
+#: main/remove.c:259
+#, c-format
+msgid "cannot remove `%.250s'"
+msgstr "cannot remove `%.250s'"
+
+#: main/remove.c:277
+#, c-format
+msgid "cannot remove file `%.250s'"
+msgstr "cannot remove file `%.250s'"
+
+#: main/remove.c:308
+#, c-format
+msgid "unable to delete control info file `%.250s'"
+msgstr "unable to delete control info file `%.250s'"
+
+#: main/remove.c:323
+#, c-format
+msgid "unable to check existence of `%.250s'"
+msgstr "unable to check existence of `%.250s'"
+
+#: main/remove.c:338
+#, c-format
+msgid "Purging configuration files for %s ...\n"
+msgstr "Purging configuration files for %s ...\n"
+
+#: main/remove.c:382
+#, c-format
+msgid "cannot remove old config file `%.250s' (= `%.250s')"
+msgstr "cannot remove old config file `%.250s' (= `%.250s')"
+
+#: main/remove.c:397
+#, c-format
+msgid "cannot read config file dir `%.250s' (from `%.250s')"
+msgstr "cannot read config file dir `%.250s' (from `%.250s')"
+
+#: main/remove.c:432
+#, c-format
+msgid "cannot remove old backup config file `%.250s' (of `%.250s')"
+msgstr "cannot remove old backup config file `%.250s' (of `%.250s')"
+
+#: main/remove.c:461
+msgid "cannot remove old files list"
+msgstr "cannot remove old files list"
+
+#: main/remove.c:467
+msgid "can't remove old postrm script"
+msgstr "can't remove old postrm script"
+
+#: main/select.c:95
+msgid "--set-selections does not take any argument"
+msgstr "--set-selections does not take any argument"
+
+#: main/select.c:114
+#, c-format
+msgid "unexpected eof in package name at line %d"
+msgstr "unexpected eof in package name at line %d"
+
+#: main/select.c:115
+#, c-format
+msgid "unexpected end of line in package name at line %d"
+msgstr "unexpected end of line in package name at line %d"
+
+#: main/select.c:119
+#, c-format
+msgid "unexpected eof after package name at line %d"
+msgstr "unexpected eof after package name at line %d"
+
+#: main/select.c:120
+#, c-format
+msgid "unexpected end of line after package name at line %d"
+msgstr "unexpected end of line after package name at line %d"
+
+#: main/select.c:129
+#, c-format
+msgid "unexpected data after package and selection at line %d"
+msgstr "unexpected data after package and selection at line %d"
+
+#: main/select.c:134
+#, c-format
+msgid "illegal package name at line %d: %.250s"
+msgstr "illegal package name at line %d: %.250s"
+
+#: main/select.c:136
+#, c-format
+msgid "unknown wanted status at line %d: %.250s"
+msgstr "unknown wanted status at line %d: %.250s"
+
+#: main/select.c:142
+msgid "read error on standard input"
+msgstr "read error on standard input"
+
+#: main/update.c:44
+#, c-format
+msgid "--%s takes no arguments"
+msgstr "--%s takes no arguments"
+
+#: main/update.c:48
+#, c-format
+msgid "--%s needs exactly one Packages file argument"
+msgstr "--%s needs exactly one Packages file argument"
+
+#: main/update.c:57
+msgid "unable to access dpkg status area for bulk available update"
+msgstr "unable to access dpkg status area for bulk available update"
+
+#: main/update.c:59
+msgid "bulk available update requires write access to dpkg status area"
+msgstr "bulk available update requires write access to dpkg status area"
+
+#: main/update.c:66
+#, c-format
+msgid "Replacing available packages info, using %s.\n"
+msgstr "Replacing available packages info, using %s.\n"
+
+#: main/update.c:69
+#, c-format
+msgid "Updating available packages info, using %s.\n"
+msgstr "Updating available packages info, using %s.\n"
+
+#: main/update.c:93
+#, c-format
+msgid "Information about %d package(s) was updated.\n"
+msgstr "Information about %d package(s) was updated.\n"
+
+#: main/update.c:101
+msgid "--forget-old-unavail takes no arguments"
+msgstr "--forget-old-unavail takes no arguments"
+
+#: dpkg-deb/build.c:50
+#, c-format
+msgid "dpkg-deb - error: %s (`%s') doesn't contain any digits\n"
+msgstr "dpkg-deb - error: %s (`%s') doesn't contain any digits\n"
+
+#: dpkg-deb/build.c:72
+msgid "--build needs a directory argument"
+msgstr "--build needs a directory argument"
+
+#: dpkg-deb/build.c:75
+msgid "--build takes at most two arguments"
+msgstr "--build takes at most two arguments"
+
+#: dpkg-deb/build.c:79
+#, c-format
+msgid "unable to check for existence of archive `%.250s'"
+msgstr "unable to check for existence of archive `%.250s'"
+
+#: dpkg-deb/build.c:92
+msgid "target is directory - cannot skip control file check"
+msgstr "target is directory - cannot skip control file check"
+
+#: dpkg-deb/build.c:93
+#, c-format
+msgid ""
+"dpkg-deb: warning, not checking contents of control area.\n"
+"dpkg-deb: building an unknown package in `%s'.\n"
+msgstr ""
+"dpkg-deb: warning, not checking contents of control area.\n"
+"dpkg-deb: building an unknown package in `%s'.\n"
+
+#: dpkg-deb/build.c:110
+msgid "package name has characters that aren't lowercase alphanums or `-+.'"
+msgstr "package name has characters that aren't lowercase alphanums or `-+.'"
+
+#: dpkg-deb/build.c:112
+#, c-format
+msgid "warning, `%s' contains user-defined Priority value `%s'\n"
+msgstr "warning, `%s' contains user-defined Priority value `%s'\n"
+
+#: dpkg-deb/build.c:117
+#, c-format
+msgid "warning, `%s' contains user-defined field `%s'\n"
+msgstr "warning, `%s' contains user-defined field `%s'\n"
+
+#: dpkg-deb/build.c:123
+#, c-format
+msgid "%d errors in control file"
+msgstr "%d errors in control file"
+
+#: dpkg-deb/build.c:134
+#, c-format
+msgid "dpkg-deb: building package `%s' in `%s'.\n"
+msgstr "dpkg-deb: building package `%s' in `%s'.\n"
+
+#: dpkg-deb/build.c:141
+#, c-format
+msgid "control directory has bad permissions %03lo (must be >=0755 and <=0775)"
+msgstr ""
+"control directory has bad permissions %03lo (must be >=0755 and <=0775)"
+
+#: dpkg-deb/build.c:152
+#, c-format
+msgid "maintainer script `%.50s' is not a plain file or symlink"
+msgstr "maintainer script `%.50s' is not a plain file or symlink"
+
+#: dpkg-deb/build.c:154
+#, c-format
+msgid ""
+"maintainer script `%.50s' has bad permissions %03lo (must be >=0555 and "
+"<=0775)"
+msgstr ""
+"maintainer script `%.50s' has bad permissions %03lo (must be >=0555 and "
+"<=0775)"
+
+#: dpkg-deb/build.c:158
+#, c-format
+msgid "maintainer script `%.50s' is not stattable"
+msgstr "maintainer script `%.50s' is not stattable"
+
+#: dpkg-deb/build.c:167
+msgid "empty string from fgets reading conffiles"
+msgstr "empty string from fgets reading conffiles"
+
+#: dpkg-deb/build.c:169
+#, fuzzy, c-format
+msgid ""
+"warning, conffile name `%.50s...' is too long, or missing final newline\n"
+msgstr "warning, conffile name `%.50s...' is too long"
+
+#: dpkg-deb/build.c:181
+#, c-format
+msgid "conffile `%.250s' does not appear in package"
+msgstr "conffile `%.250s' does not appear in package"
+
+#: dpkg-deb/build.c:183
+#, c-format
+msgid "conffile `%.250s' is not stattable"
+msgstr "conffile `%.250s' is not stattable"
+
+#: dpkg-deb/build.c:185
+#, c-format
+msgid "warning, conffile `%s' is not a plain file\n"
+msgstr "warning, conffile `%s' is not a plain file\n"
+
+#: dpkg-deb/build.c:190
+msgid "error reading conffiles file"
+msgstr "error reading conffiles file"
+
+#: dpkg-deb/build.c:193
+msgid "error opening conffiles file"
+msgstr "error opening conffiles file"
+
+#: dpkg-deb/build.c:196
+#, c-format
+msgid "dpkg-deb: ignoring %d warnings about the control file(s)\n"
+msgstr "dpkg-deb: ignoring %d warnings about the control file(s)\n"
+
+#: dpkg-deb/build.c:202
+#, c-format
+msgid "unable to create `%.255s'"
+msgstr "unable to create `%.255s'"
+
+#: dpkg-deb/build.c:203
+#, c-format
+msgid "unable to unbuffer `%.255s'"
+msgstr "unable to unbuffer `%.255s'"
+
+#: dpkg-deb/build.c:207 dpkg-deb/build.c:254
+#, c-format
+msgid "failed to chdir to `%.255s'"
+msgstr "failed to chdir to `%.255s'"
+
+#: dpkg-deb/build.c:208
+msgid "failed to chdir to .../DEBIAN"
+msgstr "failed to chdir to .../DEBIAN"
+
+#: dpkg-deb/build.c:209
+msgid "failed to exec tar -cf"
+msgstr "failed to exec tar -cf"
+
+#: dpkg-deb/build.c:212
+msgid "failed to make tmpfile (control)"
+msgstr "failed to make tmpfile (control)"
+
+#: dpkg-deb/build.c:215
+msgid "failed to exec gzip -9c"
+msgstr "failed to exec gzip -9c"
+
+#: dpkg-deb/build.c:220
+msgid "failed to fstat tmpfile (control)"
+msgstr "failed to fstat tmpfile (control)"
+
+#: dpkg-deb/build.c:240
+msgid "failed to rewind tmpfile (control)"
+msgstr "failed to rewind tmpfile (control)"
+
+#: dpkg-deb/build.c:243
+msgid "failed to exec cat (control)"
+msgstr "failed to exec cat (control)"
+
+#: dpkg-deb/build.c:249
+msgid "failed to make tmpfile (data)"
+msgstr "failed to make tmpfile (data)"
+
+#: dpkg-deb/build.c:256
+msgid "failed to exec tar --exclude"
+msgstr "failed to exec tar --exclude"
+
+#: dpkg-deb/build.c:263
+msgid "failed to exec gzip -9c from tar --exclude"
+msgstr "failed to exec gzip -9c from tar --exclude"
+
+#: dpkg-deb/build.c:278
+msgid "failed to rewind tmpfile (data)"
+msgstr "failed to rewind tmpfile (data)"
+
+#: dpkg-deb/build.c:281
+msgid "failed to exec cat (data)"
+msgstr "failed to exec cat (data)"
+
+#: dpkg-deb/extract.c:48
+msgid "failed to exec sh -c mv foo/* &c"
+msgstr "failed to exec sh -c mv foo/* &c"
+
+#: dpkg-deb/extract.c:55
+#, c-format
+msgid "error reading %s from %.255s"
+msgstr "error reading %s from %.255s"
+
+#: dpkg-deb/extract.c:57
+#, c-format
+msgid "unexpected end of file in %s in %.255s"
+msgstr "unexpected end of file in %s in %.255s"
+
+#: dpkg-deb/extract.c:68 split/info.c:52
+#, c-format
+msgid "file `%.250s' is corrupt - %.250s length contains nulls"
+msgstr "file `%.250s' is corrupt - %.250s length contains nulls"
+
+#: dpkg-deb/extract.c:75 split/info.c:43
+#, c-format
+msgid "file `%.250s' is corrupt - bad digit (code %d) in %s"
+msgstr "file `%.250s' is corrupt - bad digit (code %d) in %s"
+
+#: dpkg-deb/extract.c:109
+#, c-format
+msgid "failed to read archive `%.255s'"
+msgstr "failed to read archive `%.255s'"
+
+#: dpkg-deb/extract.c:110
+msgid "failed to fstat archive"
+msgstr "failed to fstat archive"
+
+#: dpkg-deb/extract.c:122 split/info.c:93
+#, c-format
+msgid "file `%.250s' is corrupt - bad magic at end of first header"
+msgstr "file `%.250s' is corrupt - bad magic at end of first header"
+
+#: dpkg-deb/extract.c:126
+#, c-format
+msgid "file `%.250s' is corrupt - negative member length %ld"
+msgstr "file `%.250s' is corrupt - negative member length %ld"
+
+#: dpkg-deb/extract.c:129
+#, c-format
+msgid "file `%.250s' is not a debian binary archive (try dpkg-split?)"
+msgstr "file `%.250s' is not a debian binary archive (try dpkg-split?)"
+
+#: dpkg-deb/extract.c:135
+msgid "archive has no newlines in header"
+msgstr "archive has no newlines in header"
+
+#: dpkg-deb/extract.c:138
+msgid "archive has no dot in version number"
+msgstr "archive has no dot in version number"
+
+#: dpkg-deb/extract.c:141
+#, c-format
+msgid "archive version %.250s not understood, get newer dpkg-deb"
+msgstr "archive version %.250s not understood, get newer dpkg-deb"
+
+#: dpkg-deb/extract.c:157
+#, c-format
+msgid "file `%.250s' contains ununderstood data member %.*s, giving up"
+msgstr "file `%.250s' contains ununderstood data member %.*s, giving up"
+
+#: dpkg-deb/extract.c:162
+#, c-format
+msgid "file `%.250s' contains two control members, giving up"
+msgstr "file `%.250s' contains two control members, giving up"
+
+#: dpkg-deb/extract.c:174
+#, c-format
+msgid ""
+" new debian package, version %s.\n"
+" size %ld bytes: control archive= %ld bytes.\n"
+msgstr ""
+" new debian package, version %s.\n"
+" size %ld bytes: control archive= %ld bytes.\n"
+
+#: dpkg-deb/extract.c:188
+#, c-format
+msgid "archive has malformatted ctrl len `%s'"
+msgstr "archive has malformatted ctrl len `%s'"
+
+#: dpkg-deb/extract.c:191
+#, c-format
+msgid ""
+" old debian package, version %s.\n"
+" size %ld bytes: control archive= %ld, main archive= %ld.\n"
+msgstr ""
+" old debian package, version %s.\n"
+" size %ld bytes: control archive= %ld, main archive= %ld.\n"
+
+#: dpkg-deb/extract.c:206
+msgid ""
+"dpkg-deb: file looks like it might be an archive which has been\n"
+"dpkg-deb:    corrupted by being downloaded in ASCII mode\n"
+msgstr ""
+"dpkg-deb: file looks like it might be an archive which has been\n"
+"dpkg-deb:    corrupted by being downloaded in ASCII mode\n"
+
+#: dpkg-deb/extract.c:211
+#, c-format
+msgid "`%.255s' is not a debian format archive"
+msgstr "`%.255s' is not a debian format archive"
+
+#: dpkg-deb/extract.c:216
+#, fuzzy
+msgid "fgetpos failed"
+msgstr "fork failed"
+
+#: dpkg-deb/extract.c:220
+#, fuzzy
+msgid "fsetpos failed"
+msgstr "fork failed"
+
+#: dpkg-deb/extract.c:227
+msgid "failed to fdopen p1 in paste"
+msgstr "failed to fdopen p1 in paste"
+
+#: dpkg-deb/extract.c:229
+msgid "failed to write to gzip -dc"
+msgstr "failed to write to gzip -dc"
+
+#: dpkg-deb/extract.c:230
+msgid "failed to close gzip -dc"
+msgstr "failed to close gzip -dc"
+
+#: dpkg-deb/extract.c:237
+msgid "failed to syscall lseek to files archive portion"
+msgstr "failed to syscall lseek to files archive portion"
+
+#: dpkg-deb/extract.c:245
+msgid "failed to fdopen p1 in copy"
+msgstr "failed to fdopen p1 in copy"
+
+#: dpkg-deb/extract.c:248
+msgid "failed to write to pipe in copy"
+msgstr "failed to write to pipe in copy"
+
+#: dpkg-deb/extract.c:251
+msgid "failed to close pipe in copy"
+msgstr "failed to close pipe in copy"
+
+#: dpkg-deb/extract.c:264
+msgid "failed to exec gzip -dc"
+msgstr "failed to exec gzip -dc"
+
+#: dpkg-deb/extract.c:272
+msgid "failed to create directory"
+msgstr "failed to create directory"
+
+#: dpkg-deb/extract.c:273
+msgid "failed to chdir to directory after creating it"
+msgstr "failed to chdir to directory after creating it"
+
+#: dpkg-deb/extract.c:275
+msgid "failed to chdir to directory"
+msgstr "failed to chdir to directory"
+
+#: dpkg-deb/extract.c:288
+msgid "failed to exec tar"
+msgstr "failed to exec tar"
+
+#: dpkg-deb/extract.c:311 dpkg-deb/extract.c:326 dpkg-deb/info.c:66
+#, c-format
+msgid "--%s needs a .deb filename argument"
+msgstr "--%s needs a .deb filename argument"
+
+#: dpkg-deb/extract.c:314
+#, c-format
+msgid ""
+"--%s needs a target directory.\n"
+"Perhaps you should be using dpkg --install ?"
+msgstr ""
+"--%s needs a target directory.\n"
+"Perhaps you should be using dpkg --install ?"
+
+#: dpkg-deb/extract.c:317
+#, c-format
+msgid "--%s takes at most two arguments (.deb and directory"
+msgstr "--%s takes at most two arguments (.deb and directory"
+
+#: dpkg-deb/extract.c:328
+#, c-format
+msgid "--%s takes only one argument (.deb filename)"
+msgstr "--%s takes only one argument (.deb filename)"
+
+#: dpkg-deb/info.c:47
+msgid "failed to chdir to `/' for cleanup"
+msgstr "failed to chdir to `/' for cleanup"
+
+#: dpkg-deb/info.c:49
+msgid "failed to fork for cleanup"
+msgstr "failed to fork for cleanup"
+
+#: dpkg-deb/info.c:54
+msgid "failed to wait for rm cleanup"
+msgstr "failed to wait for rm cleanup"
+
+#: dpkg-deb/info.c:55
+#, c-format
+msgid "rm cleanup failed, code %d\n"
+msgstr "rm cleanup failed, code %d\n"
+
+#: dpkg-deb/info.c:67
+msgid "failed to make temporary filename"
+msgstr "failed to make temporary filename"
+
+#: dpkg-deb/info.c:71
+msgid "failed to exec rm -rf"
+msgstr "failed to exec rm -rf"
+
+#: dpkg-deb/info.c:94
+msgid "failed to exec cat component"
+msgstr "failed to exec cat component"
+
+#: dpkg-deb/info.c:98
+#, c-format
+msgid "dpkg-deb: `%.255s' contains no control component `%.255s'\n"
+msgstr "dpkg-deb: `%.255s' contains no control component `%.255s'\n"
+
+#: dpkg-deb/info.c:102
+#, c-format
+msgid "open component `%.255s' (in %.255s) failed in an unexpected way"
+msgstr "open component `%.255s' (in %.255s) failed in an unexpected way"
+
+#: dpkg-deb/info.c:106
+msgid "at least one requested control component missing"
+msgstr "at least one requested control component missing"
+
+#: dpkg-deb/info.c:119
+#, c-format
+msgid "cannot scan directory `%.255s'"
+msgstr "cannot scan directory `%.255s'"
+
+#: dpkg-deb/info.c:124
+#, c-format
+msgid "cannot stat `%.255s' (in `%.255s')"
+msgstr "cannot stat `%.255s' (in `%.255s')"
+
+#: dpkg-deb/info.c:127
+#, c-format
+msgid "cannot open `%.255s' (in `%.255s')"
+msgstr "cannot open `%.255s' (in `%.255s')"
+
+#: dpkg-deb/info.c:141
+#, c-format
+msgid "failed to read `%.255s' (in `%.255s')"
+msgstr "failed to read `%.255s' (in `%.255s')"
+
+#: dpkg-deb/info.c:144
+#, c-format
+msgid " %7ld bytes, %5d lines   %c  %-20.127s %.127s\n"
+msgstr " %7ld bytes, %5d lines   %c  %-20.127s %.127s\n"
+
+#: dpkg-deb/info.c:150
+#, c-format
+msgid "     not a plain file          %.255s\n"
+msgstr "     not a plain file          %.255s\n"
+
+#: dpkg-deb/info.c:155
+#, c-format
+msgid "failed to read `control' (in `%.255s')"
+msgstr "failed to read `control' (in `%.255s')"
+
+#: dpkg-deb/info.c:156
+msgid "(no `control' file in control archive!)\n"
+msgstr "(no `control' file in control archive!)\n"
+
+#: dpkg-deb/info.c:176
+msgid "could not open the `control' component"
+msgstr "could not open the `control' component"
+
+#: dpkg-deb/info.c:206
+msgid "failed during read of `control' component"
+msgstr "failed during read of `control' component"
+
+#: dpkg-deb/info.c:238
+msgid "--contents takes exactly one argument"
+msgstr "--contents takes exactly one argument"
+
+#: dpkg-deb/main.c:44
+msgid "Debian Linux `"
+msgstr "Debian Linux `"
+
+#: dpkg-deb/main.c:46
+msgid ""
+"Copyright (C) 1994-1996 Ian Jackson.  This is free software; see the\n"
+"GNU General Public Licence version 2 or later for copying conditions.\n"
+"There is NO warranty.  See dpkg-deb --licence for details.\n"
+msgstr ""
+"Copyright (C) 1994-1996 Ian Jackson.  This is free software; see the\n"
+"GNU General Public Licence version 2 or later for copying conditions.\n"
+"There is NO warranty.  See dpkg-deb --licence for details.\n"
+
+#: dpkg-deb/main.c:53
+msgid ""
+"Usage: dpkg-deb -b|--build <directory> [<deb>]    Build an archive.\n"
+"       dpkg-deb -c|--contents <deb>               List contents.\n"
+"       dpkg-deb -I|--info <deb> [<cfile>...]      Show info to stdout.\n"
+"       dpkg-deb -f|--field <deb> [<cfield>...]    Show field(s) to stdout.\n"
+"       dpkg-deb -e|--control <deb> [<directory>]  Extract control info.\n"
+"       dpkg-deb -x|--extract <deb> <directory>    Extract files.\n"
+"       dpkg-deb -X|--vextract <deb> <directory>   Extract & list files.\n"
+"       dpkg-deb --fsys-tarfile <deb>              Output filesystem "
+"tarfile.\n"
+"       dpkg-deb -h|--help                         Display this message.\n"
+"       dpkg-deb --version | --licence             Show version/licence.\n"
+"<deb> is the filename of a Debian format archive.\n"
+"<cfile> is the name of an administrative file component.\n"
+"<cfield> is the name of a field in the main `control' file.\n"
+"Options:  -D for debugging output; --old or --new controls archive format;\n"
+"          --no-check to suppress control file check (build bad package).\n"
+"\n"
+"Use `dpkg' to install and remove packages from your system, or\n"
+"`dselect' for user-friendly package management.  Packages unpacked\n"
+"using `dpkg-deb --extract' will be incorrectly installed !\n"
+msgstr ""
+"Usage: dpkg-deb -b|--build <directory> [<deb>]    Build an archive.\n"
+"       dpkg-deb -c|--contents <deb>               List contents.\n"
+"       dpkg-deb -I|--info <deb> [<cfile>...]      Show info to stdout.\n"
+"       dpkg-deb -f|--field <deb> [<cfield>...]    Show field(s) to stdout.\n"
+"       dpkg-deb -e|--control <deb> [<directory>]  Extract control info.\n"
+"       dpkg-deb -x|--extract <deb> <directory>    Extract files.\n"
+"       dpkg-deb -X|--vextract <deb> <directory>   Extract & list files.\n"
+"       dpkg-deb --fsys-tarfile <deb>              Output filesystem "
+"tarfile.\n"
+"       dpkg-deb -h|--help                         Display this message.\n"
+"       dpkg-deb --version | --licence             Show version/licence.\n"
+"<deb> is the filename of a Debian format archive.\n"
+"<cfile> is the name of an administrative file component.\n"
+"<cfield> is the name of a field in the main `control' file.\n"
+"Options:  -D for debugging output; --old or --new controls archive format;\n"
+"          --no-check to suppress control file check (build bad package).\n"
+"\n"
+"Use `dpkg' to install and remove packages from your system, or\n"
+"`dselect' for user-friendly package management.  Packages unpacked\n"
+"using `dpkg-deb --extract' will be incorrectly installed !\n"
+
+#: dpkg-deb/main.c:78
+msgid ""
+"Type dpkg-deb --help for help about manipulating *.deb files;\n"
+"Type dpkg --help for help about installing and deinstalling packages."
+msgstr ""
+"Type dpkg-deb --help for help about manipulating *.deb files;\n"
+"Type dpkg --help for help about installing and deinstalling packages."
+
+#: split/info.c:64
+#, c-format
+msgid "file `%.250s' is corrupt - %.250s missing"
+msgstr "file `%.250s' is corrupt - %.250s missing"
+
+#: split/info.c:67
+#, c-format
+msgid "file `%.250s' is corrupt - missing newline after %.250s"
+msgstr "file `%.250s' is corrupt - missing newline after %.250s"
+
+#: split/info.c:89
+msgid "unable to seek back"
+msgstr "unable to seek back"
+
+#: split/info.c:103
+#, c-format
+msgid "file `%.250s' is corrupt - bad padding character (code %d)"
+msgstr "file `%.250s' is corrupt - bad padding character (code %d)"
+
+#: split/info.c:107
+#, c-format
+msgid "file `%.250s' is corrupt - nulls in info section"
+msgstr "file `%.250s' is corrupt - nulls in info section"
+
+#: split/info.c:114
+#, c-format
+msgid "file `%.250s' is format version `%.250s' - you need a newer dpkg-split"
+msgstr "file `%.250s' is format version `%.250s' - you need a newer dpkg-split"
+
+#: split/info.c:122
+#, c-format
+msgid "file `%.250s' is corrupt - bad MD5 checksum `%.250s'"
+msgstr "file `%.250s' is corrupt - bad MD5 checksum `%.250s'"
+
+#: split/info.c:129
+#, c-format
+msgid "file `%.250s' is corrupt - no slash between part numbers"
+msgstr "file `%.250s' is corrupt - no slash between part numbers"
+
+#: split/info.c:138
+#, c-format
+msgid "file `%.250s' is corrupt - bad part number"
+msgstr "file `%.250s' is corrupt - bad part number"
+
+#: split/info.c:143
+#, c-format
+msgid "file `%.250s' is corrupt - bad magic at end of second header"
+msgstr "file `%.250s' is corrupt - bad magic at end of second header"
+
+#: split/info.c:145
+#, c-format
+msgid "file `%.250s' is corrupt - second member is not data member"
+msgstr "file `%.250s' is corrupt - second member is not data member"
+
+#: split/info.c:151
+#, c-format
+msgid "file `%.250s' is corrupt - wrong number of parts for quoted sizes"
+msgstr "file `%.250s' is corrupt - wrong number of parts for quoted sizes"
+
+#: split/info.c:155
+#, c-format
+msgid "file `%.250s' is corrupt - size is wrong for quoted part number"
+msgstr "file `%.250s' is corrupt - size is wrong for quoted part number"
+
+#: split/info.c:161
+#, c-format
+msgid "unable to fstat part file `%.250s'"
+msgstr "unable to fstat part file `%.250s'"
+
+#: split/info.c:167
+#, c-format
+msgid "file `%.250s' is corrupt - too short"
+msgstr "file `%.250s' is corrupt - too short"
+
+#: split/info.c:179 split/info.c:220
+#, c-format
+msgid "cannot open archive part file `%.250s'"
+msgstr "cannot open archive part file `%.250s'"
+
+#: split/info.c:181
+#, c-format
+msgid "file `%.250s' is not an archive part"
+msgstr "file `%.250s' is not an archive part"
+
+#: split/info.c:186
+#, c-format
+msgid ""
+"%s:\n"
+"    Part format version:            %s\n"
+"    Part of package:                %s\n"
+"        ... version:                %s\n"
+"        ... MD5 checksum:           %s\n"
+"        ... length:                 %lu bytes\n"
+"        ... split every:            %lu bytes\n"
+"    Part number:                    %d/%d\n"
+"    Part length:                    %lu bytes\n"
+"    Part offset:                    %lu bytes\n"
+"    Part file size (used portion):  %lu bytes\n"
+"\n"
+msgstr ""
+"%s:\n"
+"    Part format version:            %s\n"
+"    Part of package:                %s\n"
+"        ... version:                %s\n"
+"        ... MD5 checksum:           %s\n"
+"        ... length:                 %lu bytes\n"
+"        ... split every:            %lu bytes\n"
+"    Part number:                    %d/%d\n"
+"    Part length:                    %lu bytes\n"
+"    Part offset:                    %lu bytes\n"
+"    Part file size (used portion):  %lu bytes\n"
+"\n"
+
+#: split/info.c:216
+msgid "--info requires one or more part file arguments"
+msgstr "--info requires one or more part file arguments"
+
+#: split/info.c:226
+#, c-format
+msgid "file `%s' is not an archive part\n"
+msgstr "file `%s' is not an archive part\n"
+
+#: split/join.c:48
+#, c-format
+msgid "unable to open output file `%.250s'"
+msgstr "unable to open output file `%.250s'"
+
+#: split/join.c:52
+#, c-format
+msgid "unable to (re)open input part file `%.250s'"
+msgstr "unable to (re)open input part file `%.250s'"
+
+#: split/join.c:68
+msgid "done\n"
+msgstr "done\n"
+
+#: split/join.c:84
+#, c-format
+msgid "files `%.250s' and `%.250s' are not parts of the same file"
+msgstr "files `%.250s' and `%.250s' are not parts of the same file"
+
+#: split/join.c:89
+#, c-format
+msgid "there are several versions of part %d - at least `%.250s' and `%.250s'"
+msgstr "there are several versions of part %d - at least `%.250s' and `%.250s'"
+
+#: split/join.c:102
+msgid "--join requires one or more part file arguments"
+msgstr "--join requires one or more part file arguments"
+
+#: split/join.c:123
+#, c-format
+msgid "part %d is missing"
+msgstr "part %d is missing"
+
+#: split/main.c:38
+msgid "Debian Linux `dpkg-split' package split/join tool; version "
+msgstr "Debian Linux `dpkg-split' package split/join tool; version "
+
+#: split/main.c:40
+msgid ""
+"Copyright (C) 1994-1996 Ian Jackson.  This is free software; see the\n"
+"GNU General Public Licence version 2 or later for copying conditions.\n"
+"There is NO warranty.  See dpkg-split --licence for details.\n"
+msgstr ""
+"Copyright (C) 1994-1996 Ian Jackson.  This is free software; see the\n"
+"GNU General Public Licence version 2 or later for copying conditions.\n"
+"There is NO warranty.  See dpkg-split --licence for details.\n"
+
+#: split/main.c:47
+msgid ""
+"Usage: dpkg-split -s|--split <file> [<prefix>]     Split an archive.\n"
+"       dpkg-split -j|--join <part> <part> ...      Join parts together.\n"
+"       dpkg-split -I|--info <part> ...             Display info about a "
+"part.\n"
+"       dpkg-split -h|--help|--version|--licence    Show "
+"help/version/licence.\n"
+"\n"
+"       dpkg-split -a|--auto -o <complete> <part>   Auto-accumulate parts.\n"
+"       dpkg-split -l|--listq                       List unmatched pieces.\n"
+"       dpkg-split -d|--discard [<filename> ...]    Discard unmatched "
+"pieces.\n"
+"\n"
+"Options:  --depotdir <directory>  (default is "
+msgstr ""
+"Usage: dpkg-split -s|--split <file> [<prefix>]     Split an archive.\n"
+"       dpkg-split -j|--join <part> <part> ...      Join parts together.\n"
+"       dpkg-split -I|--info <part> ...             Display info about a "
+"part.\n"
+"       dpkg-split -h|--help|--version|--licence    Show "
+"help/version/licence.\n"
+"\n"
+"       dpkg-split -a|--auto -o <complete> <part>   Auto-accumulate parts.\n"
+"       dpkg-split -l|--listq                       List unmatched pieces.\n"
+"       dpkg-split -d|--discard [<filename> ...]    Discard unmatched "
+"pieces.\n"
+"\n"
+"Options:  --depotdir <directory>  (default is "
+
+#: split/main.c:68
+msgid "Type dpkg-split --help for help."
+msgstr "Type dpkg-split --help for help."
+
+#: split/main.c:78
+#, c-format
+msgid "error reading %s"
+msgstr "error reading %s"
+
+#: split/main.c:82
+#, c-format
+msgid "error reading %.250s"
+msgstr "error reading %.250s"
+
+#: split/main.c:83
+#, c-format
+msgid "unexpected end of file in %.250s"
+msgstr "unexpected end of file in %.250s"
+
+#: split/main.c:101
+msgid "part size is far too large or is not positive"
+msgstr "part size is far too large or is not positive"
+
+#: split/main.c:105
+#, c-format
+msgid "part size must be at least %dk (to allow for header)"
+msgstr "part size must be at least %dk (to allow for header)"
+
+#: split/queue.c:69
+#, c-format
+msgid "unable to read depot directory `%.250s'"
+msgstr "unable to read depot directory `%.250s'"
+
+#: split/queue.c:105
+msgid "--auto requires the use of the --output option"
+msgstr "--auto requires the use of the --output option"
+
+#: split/queue.c:107
+msgid "--auto requires exactly one part file argument"
+msgstr "--auto requires exactly one part file argument"
+
+#: split/queue.c:111
+#, c-format
+msgid "unable to read part file `%.250s'"
+msgstr "unable to read part file `%.250s'"
+
+#: split/queue.c:114
+#, c-format
+msgid "File `%.250s' is not part of a multipart archive.\n"
+msgstr "File `%.250s' is not part of a multipart archive.\n"
+
+#: split/queue.c:141
+#, c-format
+msgid "unable to reopen part file `%.250s'"
+msgstr "unable to reopen part file `%.250s'"
+
+#: split/queue.c:145
+#, c-format
+msgid "part file `%.250s' has trailing garbage"
+msgstr "part file `%.250s' has trailing garbage"
+
+#: split/queue.c:154
+#, c-format
+msgid "unable to open new depot file `%.250s'"
+msgstr "unable to open new depot file `%.250s'"
+
+#: split/queue.c:158
+#, c-format
+msgid "unable to rename new depot file `%.250s' to `%.250s'"
+msgstr "unable to rename new depot file `%.250s' to `%.250s'"
+
+#: split/queue.c:160
+#, c-format
+msgid "Part %d of package %s filed (still want "
+msgstr "Part %d of package %s filed (still want "
+
+#: split/queue.c:164
+msgid " and "
+msgstr " and "
+
+#: split/queue.c:177
+#, c-format
+msgid "unable to delete used-up depot file `%.250s'"
+msgstr "unable to delete used-up depot file `%.250s'"
+
+#: split/queue.c:192
+msgid "--listq does not take any arguments"
+msgstr "--listq does not take any arguments"
+
+#: split/queue.c:195
+msgid "Junk files left around in the depot directory:\n"
+msgstr "Junk files left around in the depot directory:\n"
+
+#: split/queue.c:200 split/queue.c:224
+#, c-format
+msgid "unable to stat `%.250s'"
+msgstr "unable to stat `%.250s'"
+
+#: split/queue.c:203
+#, c-format
+msgid " %s (%lu bytes)\n"
+msgstr " %s (%lu bytes)\n"
+
+#: split/queue.c:205
+#, c-format
+msgid " %s (not a plain file)\n"
+msgstr " %s (not a plain file)\n"
+
+#: split/queue.c:210
+msgid "Packages not yet reassembled:\n"
+msgstr "Packages not yet reassembled:\n"
+
+#: split/queue.c:226
+#, c-format
+msgid "part file `%.250s' is not a plain file"
+msgstr "part file `%.250s' is not a plain file"
+
+#: split/queue.c:231
+#, c-format
+msgid "(total %lu bytes)\n"
+msgstr "(total %lu bytes)\n"
+
+#: split/queue.c:254
+#, c-format
+msgid "unable to discard `%.250s'"
+msgstr "unable to discard `%.250s'"
+
+#: split/queue.c:255
+#, c-format
+msgid "Deleted %s.\n"
+msgstr "Deleted %s.\n"
+
+#: split/split.c:45
+msgid "--split needs a source filename argument"
+msgstr "--split needs a source filename argument"
+
+#: split/split.c:48
+msgid "--split takes at most a source filename and destination prefix"
+msgstr "--split takes at most a source filename and destination prefix"
+
+#: split/split.c:62
+#, c-format
+msgid "unable to open source file `%.250s'"
+msgstr "unable to open source file `%.250s'"
+
+#: split/split.c:63
+msgid "unable to fstat source file"
+msgstr "unable to fstat source file"
+
+#: split/split.c:64
+#, c-format
+msgid "source file `%.250s' not a plain file"
+msgstr "source file `%.250s' not a plain file"
+
+#: split/split.c:70
+msgid "unable to exec mksplit"
+msgstr "unable to exec mksplit"
+
+#: md5sum/md5sum.c:106
+#, c-format
+msgid "%s: read error on stdin\n"
+msgstr "%s: read error on stdin\n"
+
+#: md5sum/md5sum.c:124 md5sum/md5sum.c:250
+#, c-format
+msgid "%s: error reading %s\n"
+msgstr "%s: error reading %s\n"
+
+#: md5sum/md5sum.c:138
+msgid ""
+"usage: md5sum [-bv] [-c [file]] | [file...]\n"
+"Generates or checks MD5 Message Digests\n"
+"    -c  check message digests (default is generate)\n"
+"    -v  verbose, print file names when checking\n"
+"    -b  read files in binary mode\n"
+"The input for -c should be the list of message digests and file names\n"
+"that is printed on stdout by this program when it generates digests.\n"
+msgstr ""
+"usage: md5sum [-bv] [-c [file]] | [file...]\n"
+"Generates or checks MD5 Message Digests\n"
+"    -c  check message digests (default is generate)\n"
+"    -v  verbose, print file names when checking\n"
+"    -b  read files in binary mode\n"
+"The input for -c should be the list of message digests and file names\n"
+"that is printed on stdout by this program when it generates digests.\n"
+
+#: md5sum/md5sum.c:211
+#, c-format
+msgid "%s: unrecognized line: %s"
+msgstr "%s: unrecognized line: %s"
+
+#: md5sum/md5sum.c:245
+#, c-format
+msgid "%s: can't open %s\n"
+msgstr "%s: can't open %s\n"
+
+#: md5sum/md5sum.c:258
+msgid "FAILED\n"
+msgstr "FAILED\n"
+
+#: md5sum/md5sum.c:260
+#, c-format
+msgid "%s: MD5 check failed for '%s'\n"
+msgstr "%s: MD5 check failed for '%s'\n"
+
+#: md5sum/md5sum.c:263
+msgid "OK\n"
+msgstr "OK\n"
+
+#: md5sum/md5sum.c:267
+#, c-format
+msgid "%s: %d of %d file(s) failed MD5 check\n"
+msgstr "%s: %d of %d file(s) failed MD5 check\n"
+
+#: md5sum/md5sum.c:269
+#, c-format
+msgid "%s: no files checked\n"
+msgstr "%s: no files checked\n"
diff --git a/po/fr.po b/po/fr.po
new file mode 100644 (file)
index 0000000..1487a29
--- /dev/null
+++ b/po/fr.po
@@ -0,0 +1,3790 @@
+# Dpkg --- the Debian GNU/Linux package maintenance system.
+#
+# Copyright (C) 1994,1995,1996 Ian Jackson <ian@chiark.chu.cam.ac.uk>
+# Copyright (C) 1995,1996 Erick Branderhorst <branderhorst@heel.fgg.eur.nl>
+# Copyright (C) 1996 Miquel van Smoorenburg <miquels@cistron.nl>
+# Copyright (C) 1996 Kim-Minh Kaplan <kkaplan@cdfhp3.in2p3.fr>
+# Copyright (C) 1996 Michael Shields <shields@crosslink.net>
+# Copyright (C) 1995 Bruce Perens <bruce@pixar.com>
+# Copyright (C) 1994 Carl Streeter <streeter@cae.wisc.edu>
+# Copyright (C) 1994 Matt Welsh <mdw@sunsite.unc.edu>
+# Copyright (C) 1994 Ian Murdock <imurdock@debian.org>
+# Parts written by Colin Plumb and Branko Lankester in 1993.
+#
+# Messages français pour dpkg (Linux/GNU Debian).
+# Copyright (C) 1997 Christophe Le Bars <clebars@debian.org>.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Debian dpkg 1.4.0.14\n"
+"POT-Creation-Date: 1998-11-01 17:14+0000\n"
+"PO-Revision-Date: 1997-05-13 22:07 EDT\n"
+"Last-Translator: Christophe Le Bars <clebars@debian.org>\n"
+"Language-Team: French\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8-bit\n"
+
+# #######################################"
+#
+# Notes de traduction
+#
+#
+# maintainer: responsable
+# package: paquet
+# to divert: détourner
+#
+# to set: paramétrer
+# status: Ã©tat
+# unable: impossible
+# failure: echec
+# warning: avertissement
+# to scan: parcourir
+#
+# force: forçage
+# pattern: motif?
+# to overwrite: remplacer?
+# to stat: analyser?
+# to rewind: revenir? (rembobiner?)
+# incorporated: incorporé?
+# unable seek: déplacement impossible?
+# padding: remplissage?
+# ou of memory: manque de mémoire?
+# file details field: champ détail de fichier?
+# matching: correspondance?
+#
+# checksums?
+# depot?
+# has trailing garbage?
+# resolves to degenerate filename?
+# readlink?
+# mess?
+# timestamps?
+# to seek?
+# buffering?
+# handler?
+# garbage?
+# junk?
+# abréviation postint...
+# to fsync (synchroniser?)
+#: lib/compat.c:46
+msgid "unable to open tmpfile for vsnprintf"
+msgstr "impossible d'ouvrir \"tmpfile\" pour \"vsnprintf\""
+
+#: lib/compat.c:48
+msgid "unable to rewind at start of vsnprintf"
+msgstr "impossible de revenir au début de \"vsnprintf\""
+
+#: lib/compat.c:49
+msgid "unable to truncate in vsnprintf"
+msgstr "impossible de troncaténer dans \"vsnprintf\""
+
+#: lib/compat.c:51
+msgid "write error in vsnprintf"
+msgstr "erreur d'écriture dans \"vsnprintf\""
+
+#: lib/compat.c:52
+msgid "unable to flush in vsnprintf"
+msgstr "impossible de vider dans \"vsnprintf\""
+
+#: lib/compat.c:53
+msgid "unable to stat in vsnprintf"
+msgstr "impossible d'analyser dans \"vsnprintf\""
+
+#: lib/compat.c:54
+msgid "unable to rewind in vsnprintf"
+msgstr "impossible de revenir dans \"vsnprintf\""
+
+#: lib/compat.c:62
+msgid "read error in vsnprintf truncated"
+msgstr "erreur de lecture dans la troncaténation de \"vsnprintf\""
+
+#: lib/compat.c:75
+#, c-format
+msgid "System error no.%d"
+msgstr "Erreur système n°.%d"
+
+#: lib/compat.c:85
+#, c-format
+msgid "Signal no.%d"
+msgstr "Signal n°.%d"
+
+#: lib/database.c:236
+msgid "failed write during hashreport"
+msgstr "échec d'écriture durant \"hashreport\""
+
+#: lib/dbmodify.c:57
+#, c-format
+msgid ""
+"updates directory contains file `%.250s' whose name is too long (length=%d, "
+"max=%d)"
+msgstr ""
+"mise Ã  jour d'un répertoire contenant un fichier `%.250s' dont le nom est "
+"troplong (longueur=%d, max=%d)"
+
+#: lib/dbmodify.c:61
+#, c-format
+msgid ""
+"updates directory contains files with different length names (both %d and %d)"
+msgstr ""
+"mise Ã  jour d'un répertoire contenant des fichiers avec des noms de "
+"différenteslongueurs (à la fois %d et %d)"
+
+#: lib/dbmodify.c:75
+#, c-format
+msgid "cannot scan updates directory `%.255s'"
+msgstr "ne peut pas parcourir les mises Ã  jour du répertoire `%.255s'"
+
+#: lib/dbmodify.c:91
+#, c-format
+msgid "failed to remove incorporated update file %.255s"
+msgstr "échec pour supprimer le fichier de mise Ã  jour incorporé %.255s"
+
+#: lib/dbmodify.c:108
+#, c-format
+msgid "unable to create %.250s"
+msgstr "impossible de créer %.250s"
+
+#: lib/dbmodify.c:111
+#, c-format
+msgid "unable to fill %.250s with padding"
+msgstr "impossible de compléter %.250s avec du remplissage"
+
+#: lib/dbmodify.c:113
+#, c-format
+msgid "unable flush %.250s after padding"
+msgstr "impossible de vider %.250s après le remplissage"
+
+#: lib/dbmodify.c:115
+#, c-format
+msgid "unable seek to start of %.250s after padding"
+msgstr "déplacement impossible pour commencer Ã  %.250s après le remplissage"
+
+#: lib/dbmodify.c:143
+msgid "requested operation requires superuser privilege"
+msgstr "l'opération demandée requiert les privilèges du super-utilisateur"
+
+#: lib/dbmodify.c:148
+msgid "unable to access dpkg status area"
+msgstr "impossible d'accéder Ã  la zone d'états de dpkg"
+
+#: lib/dbmodify.c:150
+msgid "operation requires read/write access to dpkg status area"
+msgstr ""
+"opération demandant un accès en lecture-écriture dans la zone d'états de dpkg"
+
+#: lib/dbmodify.c:197
+#, c-format
+msgid "failed to remove my own update file %.255s"
+msgstr "échec pour retirer mon propre fichier de mise Ã  jour %.255s"
+
+#: lib/dbmodify.c:229
+#, c-format
+msgid "unable to write updated status of `%.250s'"
+msgstr "impossible d'écrire l'état modifié de `%.250s'"
+
+#: lib/dbmodify.c:231
+#, c-format
+msgid "unable to flush updated status of `%.250s'"
+msgstr "impossible de vider l'état modifié de `%.250s'"
+
+#: lib/dbmodify.c:233
+#, c-format
+msgid "unable to truncate for updated status of `%.250s'"
+msgstr "impossible de troncaténer pour l'état modifié de `%.250s'"
+
+#: lib/dbmodify.c:235
+#, c-format
+msgid "unable to fsync updated status of `%.250s'"
+msgstr "impossible de \"fsync\" l'état modifié de `%.250s'"
+
+#: lib/dbmodify.c:237
+#, c-format
+msgid "unable to close updated status of `%.250s'"
+msgstr "impossible de fermer l'état modifié de `%.250s'"
+
+#: lib/dbmodify.c:240
+#, c-format
+msgid "unable to install updated status of `%.250s'"
+msgstr "impossible d'installer l'état modifié de `%.250s'"
+
+#: lib/dump.c:247
+#, c-format
+msgid "failed to open `%s' for writing %s information"
+msgstr "échec pour ouvrir `%s' afin d'écrire %s informations"
+
+#: lib/dump.c:250 lib/parse.c:94
+msgid "unable to set buffering on status file"
+msgstr "impossible de paramétrer le \"buffering\" sur le fichier d'états"
+
+#: lib/dump.c:261
+#, c-format
+msgid "failed to write %s record about `%.50s' to `%.250s'"
+msgstr "échec pour Ã©crire %s enregistrements de `%.50s' Ã  `%.250s'"
+
+#: lib/dump.c:268
+#, c-format
+msgid "failed to flush %s information to `%.250s'"
+msgstr "échec pour vider %s informations dans `%.250s'"
+
+#: lib/dump.c:270
+#, c-format
+msgid "failed to fsync %s information to `%.250s'"
+msgstr "échec pour \"fsync\" %s informations dans `%.250s'"
+
+#: lib/dump.c:272
+#, c-format
+msgid "failed to close `%.250s' after writing %s information"
+msgstr "échec pour fermer `%.250s' après l'écriture de %s informations"
+
+#: lib/dump.c:276
+#, c-format
+msgid "failed to link `%.250s' to `%.250s' for backup of %s info"
+msgstr "échec pour lier `%.250s' Ã  `%.250s' pour la sauvegarde de %s infos"
+
+#: lib/dump.c:279
+#, c-format
+msgid "failed to install `%.250s' as `%.250s' containing %s info"
+msgstr "échec pour installer `%.250s' comme `%.250s' contenant %s infos"
+
+#: lib/ehandle.c:80
+msgid "out of memory pushing error handler: "
+msgstr "manque de mémoire déclenchant le \"handler\" d'erreur: "
+
+#: lib/ehandle.c:95
+#, c-format
+msgid ""
+"%s: error while cleaning up:\n"
+" %s\n"
+msgstr ""
+"%s: erreur lors du nettoyage:\n"
+" %s\n"
+
+#: lib/ehandle.c:110
+msgid "dpkg: too many nested errors during error recovery !!\n"
+msgstr "dpkg: trop d'erreurs imbriquées lors d'une reprise d'erreur!!\n"
+
+#: lib/ehandle.c:183
+msgid "out of memory for new cleanup entry with many arguments"
+msgstr ""
+"manque de mémoire pour une nouvelle entrée nettoyée avec beaucoup d'arguments"
+
+#: lib/ehandle.c:270
+#, c-format
+msgid "error writing `%.250s'"
+msgstr "erreur d'écriture `%.250s'"
+
+#: lib/ehandle.c:274
+#, c-format
+msgid "%s:%d: internal error `%s'\n"
+msgstr "%s:%d: erreur interne `%s'\n"
+
+#: lib/fields.c:47
+#, c-format
+msgid "`%.*s' is not allowed for %s"
+msgstr "`%.*s' n'est pas autorisé pour %s"
+
+#: lib/fields.c:52
+#, c-format
+msgid "junk after %s"
+msgstr "\"junk\" après %s"
+
+#: lib/fields.c:62
+#, c-format
+msgid "invalid package name (%.250s)"
+msgstr "nom de paquet invalide (%.250s)"
+
+#: lib/fields.c:81
+#, c-format
+msgid "empty file details field `%s'"
+msgstr "champ détail de fichier '%s' vide"
+
+#: lib/fields.c:84
+#, c-format
+msgid "file details field `%s' not allowed in status file"
+msgstr "champ détail de fichier `%s' non-autorisé dans le fichier d'états"
+
+#: lib/fields.c:94
+#, c-format
+msgid "too many values in file details field `%s' (compared to others)"
+msgstr ""
+"trop de valeurs dans le champ détail de fichier `%s' (par rapport aux autres)"
+
+#: lib/fields.c:107
+#, c-format
+msgid "too few values in file details field `%s' (compared to others)"
+msgstr ""
+"trop peu de valeurs dans le champ détail de fichier `%s' (par rapport aux "
+"autres)"
+
+#: lib/fields.c:156
+msgid "value for `status' field not allowed in this context"
+msgstr "valeur du champ `status' non autorisée dans ce contexte"
+
+#: lib/fields.c:178
+#, c-format
+msgid "error in Version string `%.250s': %.250s"
+msgstr "erreur dans la chaine Version `%.250s': %.250s"
+
+#: lib/fields.c:189
+msgid "obsolete `Revision' or `Package-Revision' field used"
+msgstr "utilisation d'un champ obsolète `Revision' ou `Package-Revision'"
+
+#: lib/fields.c:207
+msgid "value for `config-version' field not allowed in this context"
+msgstr "valeur du champ `config-version' non-autorisée dans ce contexte"
+
+#: lib/fields.c:211
+#, c-format
+msgid "error in Config-Version string `%.250s': %.250s"
+msgstr "erreur dans la chaine Config-Version `%.250s': %.250s"
+
+#: lib/fields.c:227
+#, c-format
+msgid "value for `conffiles' has line starting with non-space `%c'"
+msgstr ""
+"valeur de `conffiles' contenant une ligne commençant par le caractère `%c'"
+
+#: lib/fields.c:233
+#, c-format
+msgid "value for `conffiles' has malformatted line `%.*s'"
+msgstr "valeur de `conffiles' contenant la ligne mal-formatée `%.*s'"
+
+#: lib/fields.c:239
+msgid "root or null directory is listed as a conffile"
+msgstr "répertoire racine ou nul déclaré comme \"conffile\""
+
+#: lib/fields.c:282
+#, c-format
+msgid ""
+"`%s' field, missing package name, or garbage where package name expected"
+msgstr ""
+"champ `%s', nom de paquet manquant, ou \"garbage\" Ã  la place d'un nom de "
+"paquet"
+
+#: lib/fields.c:285
+#, c-format
+msgid "`%s' field, invalid package name `%.255s': %s"
+msgstr "champ `%s', nom de paquet invalide `%.255s': %s"
+
+#: lib/fields.c:316
+#, c-format
+msgid ""
+"`%s' field, reference to `%.255s':\n"
+" bad version relationship %c%c"
+msgstr ""
+"champ `%s', référence Ã  `%.255s':\n"
+" mauvaise version de la relation %c%c"
+
+#: lib/fields.c:322
+#, c-format
+msgid ""
+"`%s' field, reference to `%.255s':\n"
+" `%c' is obsolete, use `%c=' or `%c%c' instead"
+msgstr ""
+"champ `%s', référence Ã  `%.255s':\n"
+" `%c' est obsolète, utiliser `%c=' ou `%c%c' Ã  la place"
+
+#: lib/fields.c:332
+#, c-format
+msgid ""
+"`%s' field, reference to `%.255s':\n"
+" implicit exact match on version number, suggest using `=' instead"
+msgstr ""
+"champ `%s', référence Ã  `%.255s':\n"
+" correspondance exacte implicite pour le numéro de version, utiliser plutôt "
+"`=' Ã  la place"
+
+#: lib/fields.c:339
+#, c-format
+msgid ""
+"`%s' field, reference to `%.255s':\n"
+" version value starts with non-alphanumeric, suggest adding a space"
+msgstr ""
+"champ `%s', référence Ã  `%.255s':\n"
+" valeur de version commençant avec un caractère non-alphanumérique, ajouter "
+"plutôt un espace"
+
+#: lib/fields.c:349
+#, c-format
+msgid "`%s' field, reference to `%.255s': version contains `('"
+msgstr "champ `%s', référence Ã  `%.255s': version contenant `('"
+
+#: lib/fields.c:352
+#, c-format
+msgid "`%s' field, reference to `%.255s': version unterminated"
+msgstr "champ `%s', référence Ã  `%.255s': version non-terminée"
+
+#: lib/fields.c:357
+#, c-format
+msgid "`%s' field, reference to `%.255s': error in version: %.255s"
+msgstr "champ `%s', référence Ã  `%.255s': erreur dans la version: %.255s"
+
+#: lib/fields.c:366
+#, c-format
+msgid "`%s' field, syntax error after reference to package `%.255s'"
+msgstr "champ `%s', erreur de syntaxe après la référence au paquet `%.255s'"
+
+#: lib/fields.c:373
+#, c-format
+msgid "alternatives (`|') not allowed in %s field"
+msgstr "alternatives (`|') non-autorisées dans le champ %s"
+
+#: lib/lock.c:47
+msgid "unable to unlock dpkg status database"
+msgstr "impossible de dévérouiller la base de données d'états de dpkg"
+
+#: lib/lock.c:68
+msgid "you do not have permission to lock the dpkg status database"
+msgstr ""
+"vous n'avez pas la permission de vérouiller la base de données d'états de "
+"dpkg"
+
+#: lib/lock.c:69
+msgid "unable to open/create status database lockfile"
+msgstr ""
+"impossible de créer/ouvrir le fichier verrou de la base de données d'états"
+
+#: lib/lock.c:78
+msgid "status database area is locked - another dpkg/dselect is running"
+msgstr ""
+"zone de la base de données d'états verrouillée - un autre dpkg/dselect "
+"fonctionne"
+
+#: lib/lock.c:79
+msgid "unable to lock dpkg status database"
+msgstr "impossible de verrouiller la base de données d'états"
+
+#: lib/mlib.c:47
+#, c-format
+msgid "malloc failed (%ld bytes)"
+msgstr "échec de `malloc' (%ld octects)"
+
+#: lib/mlib.c:60
+#, c-format
+msgid "realloc failed (%ld bytes)"
+msgstr "échec de `realloc' (%ld octects)"
+
+#: lib/mlib.c:67
+#, c-format
+msgid "%s (subprocess): %s\n"
+msgstr "%s (sous-processus): %s\n"
+
+#: lib/mlib.c:80
+msgid "fork failed"
+msgstr "échec de \"fork\""
+
+#: lib/mlib.c:93
+#, c-format
+msgid "failed to dup for std%s"
+msgstr "échec pour \"dup\" vers std%s"
+
+#: lib/mlib.c:94
+#, c-format
+msgid "failed to dup for fd %d"
+msgstr "échec pour dup vers fd %d"
+
+#: lib/mlib.c:100
+msgid "failed to create pipe"
+msgstr "échec pour créer un tube"
+
+#: lib/mlib.c:107
+#, c-format
+msgid "subprocess %s returned error exit status %d"
+msgstr "sous-processus %s a retourné une erreur de sortie d'état %d"
+
+#: lib/mlib.c:110
+#, c-format
+msgid "subprocess %s killed by signal (%s)%s"
+msgstr "sous-processus %s tué par le signal (%s)%s"
+
+#: lib/mlib.c:113
+#, c-format
+msgid "subprocess %s failed with wait status code %d"
+msgstr "sous-processus %s a Ã©choué avec le code d'état d'attente %d"
+
+#: lib/mlib.c:122 main/help.c:350
+#, c-format
+msgid "wait for %s failed"
+msgstr "attente de l'échec de %s"
+
+#: lib/myopt.c:48
+#, c-format
+msgid "unknown option --%s"
+msgstr "option --%s inconnue"
+
+#: lib/myopt.c:52
+#, c-format
+msgid "--%s option takes a value"
+msgstr "l'option --%s prend une valeur"
+
+#: lib/myopt.c:57
+#, c-format
+msgid "--%s option does not take a value"
+msgstr "l'option --%s ne prend pas de valeur"
+
+#: lib/myopt.c:64
+#, c-format
+msgid "unknown option -%c"
+msgstr "option -%c inconnue"
+
+#: lib/myopt.c:69
+#, c-format
+msgid "-%c option takes a value"
+msgstr "l'option -%c prend une valeur"
+
+#: lib/myopt.c:77
+#, c-format
+msgid "-%c option does not take a value"
+msgstr "l'option -%c ne prend pas de valeur"
+
+#: lib/parse.c:90
+#, c-format
+msgid "failed to open package info file `%.255s' for reading"
+msgstr "échec pour ouvrir le fichier \"info\" `%.255s' en lecture"
+
+#: lib/parse.c:121
+#, c-format
+msgid "EOF after field name `%.50s'"
+msgstr "EOF après le nom de champ `%.50s'"
+
+#: lib/parse.c:124
+#, c-format
+msgid "newline in field name `%.50s'"
+msgstr "saut de ligne dans le nom de champ `%.50s'"
+
+#: lib/parse.c:127
+#, c-format
+msgid "MSDOS EOF (^Z) in field name `%.50s'"
+msgstr "EOF de MSDOS (^Z) dans le nom de champ `%.50s'"
+
+#: lib/parse.c:130
+#, c-format
+msgid "field name `%.50s' must be followed by colon"
+msgstr "nom de champ `%.50s' devant Ãªtre suivi par deux-points"
+
+#: lib/parse.c:138
+#, c-format
+msgid "EOF before value of field `%.50s' (missing final newline)"
+msgstr "EOF avant la valeur du champ `%.50s' (manque le saut de ligne final)"
+
+#: lib/parse.c:142
+#, c-format
+msgid "MSDOS EOF char in value of field `%.50s' (missing newline?)"
+msgstr ""
+"caractère EOF de MSDOS dans la valeur du champ `%.50s' (manque un saut de "
+"ligne?)"
+
+#: lib/parse.c:153
+#, c-format
+msgid "EOF during value of field `%.50s' (missing final newline)"
+msgstr "EOF dans la valeur du champ `%.50s' (manque le saut de ligne final)"
+
+#: lib/parse.c:170
+#, c-format
+msgid "duplicate value for `%s' field"
+msgstr "valeur en double pour le champ `%s'"
+
+#: lib/parse.c:175
+#, c-format
+msgid "user-defined field name `%s' too short"
+msgstr "nom de champ `%s' défini par l'utilisateur trop court"
+
+#: lib/parse.c:180
+#, c-format
+msgid "duplicate value for user-defined field `%.50s'"
+msgstr "valeur en double pour le champ `%.50s' défini par l'utilisateur"
+
+#: lib/parse.c:193
+msgid "several package info entries found, only one allowed"
+msgstr "plusieurs entrées d'infos de paquet trouvées, seule une est autorisée"
+
+#: lib/parse.c:221
+msgid "Configured-Version for package with inappropriate Status"
+msgstr "\"Configured-Version\" du paquet avec un Ã©tat inapproprié"
+
+#: lib/parse.c:235
+msgid "Package which in state not-installed has conffiles, forgetting them"
+msgstr ""
+"Paquet dans l'état non-installé possédant des fichiers de configuration, "
+"fichiers ignorés"
+
+#: lib/parse.c:283
+#, c-format
+msgid "failed to read from `%.255s'"
+msgstr "échec pour lire Ã  partir de `%.255s'"
+
+#: lib/parse.c:285
+#, c-format
+msgid "failed to close after read: `%.255s'"
+msgstr "échec pour fermer après lecture: `%.255s'"
+
+#: lib/parse.c:286
+#, c-format
+msgid "no package information in `%.255s'"
+msgstr "pas d'informations du paquet dans `%.255s'"
+
+#: lib/parsehelp.c:38
+#, c-format
+msgid "failed to read `%s' at line %d"
+msgstr "échec pour lire `%s' Ã  la ligne %d"
+
+#: lib/parsehelp.c:39
+#, c-format
+msgid "%s, in file `%.255s' near line %d"
+msgstr "%s, dans le fichier `%.255s' près de la ligne %d"
+
+#: lib/parsehelp.c:40
+msgid "warning"
+msgstr "avertissement"
+
+#: lib/parsehelp.c:40
+msgid "parse error"
+msgstr "erreur d'analyse syntaxique"
+
+#: lib/parsehelp.c:42
+#, c-format
+msgid " package `%.255s'"
+msgstr " paquet `%.255s'"
+
+#: lib/parsehelp.c:53
+msgid "failed to write parsing warning"
+msgstr "échec pour Ã©crire un avertissement d'analyse syntaxique"
+
+#: lib/parsehelp.c:114
+msgid "may not be empty string"
+msgstr "ne doit pas Ãªtre une chaine vide"
+
+#: lib/parsehelp.c:115
+msgid "must start with an alphanumeric"
+msgstr "doit commencer par un caractère alphanumérique"
+
+#: lib/parsehelp.c:116
+msgid "must be at least two characters"
+msgstr "doit Ãªtre au moins de deux caractères"
+
+#: lib/parsehelp.c:125
+#, c-format
+msgid "character `%c' not allowed - only letters, digits and %s allowed"
+msgstr ""
+"caractère `%c' non-autorisé - seuls les lettres, les chiffres et %s sont "
+"autorisés"
+
+#: lib/parsehelp.c:194
+msgid "version string is empty"
+msgstr "la chaine version est vide"
+
+#: lib/parsehelp.c:199
+msgid "epoch in version is not number"
+msgstr "\"epoch\" dans la version n'est pas un nombre"
+
+#: lib/parsehelp.c:200
+msgid "nothing after colon in version number"
+msgstr "rien après deux-points dans le nombre de la version"
+
+#: lib/parsehelp.c:221
+#, c-format
+msgid "missing %s"
+msgstr "manque %s"
+
+#: lib/parsehelp.c:225
+#, c-format
+msgid "empty value for %s"
+msgstr "valeur nulle pour %s"
+
+#: lib/showcright.c:31
+msgid "cannot open GPL file /usr/doc/dpkg/copyright"
+msgstr "ne peut pas ouvrir le fichier GPL /usr/doc/dpkg/copyright"
+
+#: lib/showcright.c:34
+msgid "unable to exec cat for displaying GPL file"
+msgstr "impossible d'exécuter \"cat\" pour afficher le fichier GPL"
+
+#: lib/varbuf.c:76
+msgid "failed to realloc for variable buffer"
+msgstr "échec pour réallouer les variables \"buffer\""
+
+#: main/archives.c:123
+msgid "error reading from dpkg-deb pipe"
+msgstr "erreur en lisant du tube de dpkg-deb"
+
+#: main/archives.c:160
+#, c-format
+msgid "error setting timestamps of `%.255s'"
+msgstr "erreur en paramétrant les \"timestamps\" de `%.255s'"
+
+#: main/archives.c:165 main/archives.c:407
+#, c-format
+msgid "error setting ownership of `%.255s'"
+msgstr "erreur en paramétrant les droits de `%.255s'"
+
+#: main/archives.c:167 main/archives.c:415
+#, c-format
+msgid "error setting permissions of `%.255s'"
+msgstr "erreur en paramétrant les permissions de `%.255s'"
+
+#: main/archives.c:248
+#, c-format
+msgid ""
+"trying to overwrite `%.250s', which is the diverted version of "
+"`%.250s'%.10s%.100s%.10s"
+msgstr ""
+"tentative pour remplacer `%.250s', qui est la version détournée de "
+"`%.250s'%.10s%.100s%.10s"
+
+#: main/archives.c:274
+#, c-format
+msgid "unable to stat `%.255s' (which I was about to install)"
+msgstr "impossible d'analyser `%.255s' (lequel Ã©tait en cours d'installation)"
+
+#: main/archives.c:282
+#, c-format
+msgid ""
+"unable to clean up mess surrounding `%.255s' before installing another "
+"version"
+msgstr ""
+"impossible de nettoyer des choses entourant `%.255s' avant d'installer "
+"uneautre version"
+
+#: main/archives.c:288
+#, c-format
+msgid "unable to stat restored `%.255s' before installing another version"
+msgstr ""
+"impossible d'analyser `%.255s' restauré avant d'installer une autre version"
+
+#: main/archives.c:320
+#, c-format
+msgid "archive contained object `%.255s' of unknown type 0x%x"
+msgstr "l'archive contient un objet `%.255s' de type inconnu 0x%x"
+
+#: main/archives.c:355
+#, c-format
+msgid ""
+"trying to overwrite directory `%.250s' in package %.250s with nondirectory"
+msgstr ""
+"tentative pour remplacer le répertoire `%.250s' du paquet %.250s avec un "
+"non-répertoire"
+
+#: main/archives.c:360
+#, c-format
+msgid "trying to overwrite `%.250s', which is also in package %.250s"
+msgstr ""
+"tentative pour remplacer `%.250s', qui appartient aussi au paquet %.250s"
+
+#: main/archives.c:388
+#, c-format
+msgid "unable to fdopen for `%.255s'"
+msgstr "impossible de faire \"fdopen\" pour `%.255s'"
+
+#: main/archives.c:397
+#, c-format
+msgid "error reading dpkg-deb during `%.255s'"
+msgstr "erreur de lecture de dpkg-deb pendant `%.255s'"
+
+#: main/archives.c:404
+#, c-format
+msgid "error writing to `%.255s'"
+msgstr "erreur en Ã©crivant dans `%.255s'"
+
+#: main/archives.c:413
+#, c-format
+msgid "error flushing `%.255s'"
+msgstr "erreur en vidant `%.255s'"
+
+#: main/archives.c:418
+#, c-format
+msgid "error closing/writing `%.255s'"
+msgstr "erreur en fermant/écrivant `%.255s'"
+
+#: main/archives.c:423
+#, c-format
+msgid "error creating pipe `%.255s'"
+msgstr "erreur en créant le tube `%.255s'"
+
+#: main/archives.c:429
+#, c-format
+msgid "error creating device `%.255s'"
+msgstr "erreur en créant le périphérique `%.255s'"
+
+#: main/archives.c:438
+#, c-format
+msgid "error creating hard link `%.255s'"
+msgstr "erreur en créant le lien physique `%.255s'"
+
+#: main/archives.c:445
+#, c-format
+msgid "error creating symbolic link `%.255s'"
+msgstr "erreur en créant le lien symbolique `%.255s'"
+
+#: main/archives.c:452
+#, c-format
+msgid "error setting ownership of symlink `%.255s'"
+msgstr "erreur en paramétrant les droits du lien symbolique `%.255s'"
+
+#: main/archives.c:458
+#, c-format
+msgid "error creating directory `%.255s'"
+msgstr "erreur en créant le répertoire `%.255s'"
+
+#: main/archives.c:463
+msgid "bad tar type, but already checked"
+msgstr "mauvais type de tar, mais déjà contrôlé"
+
+#: main/archives.c:493
+#, c-format
+msgid "unable to move aside `%.255s' to install new version"
+msgstr ""
+"impossible de déplacer ailleurs `%.255s' pour installer une nouvelle version"
+
+#: main/archives.c:506
+#, c-format
+msgid "unable to make backup symlink for `%.255s'"
+msgstr "impossible de faire un lien symbolique de secours pour `%.255s'"
+
+#: main/archives.c:512
+#, c-format
+msgid "unable to chown backup symlink for `%.255s'"
+msgstr ""
+"impossible de modifier les droits du lien symbolique de secours pour `%.255s'"
+
+#: main/archives.c:516
+#, c-format
+msgid "unable to make backup link of `%.255s' before installing new version"
+msgstr ""
+"impossible de faire un lien symbolique de secours de `%.255s' avant "
+"d'installer une nouvelle version"
+
+#: main/archives.c:522
+#, c-format
+msgid "unable to install new version of `%.255s'"
+msgstr "impossible d'installer une nouvelle version de `%.255s'"
+
+#: main/archives.c:536
+#, c-format
+msgid ""
+"dpkg: warning - ignoring dependency problem with removal of %s:\n"
+"%s"
+msgstr ""
+"dpkg: avertissement - problème de dépendance ignoré pendant la suppression "
+"de %s:\n"
+"%s"
+
+#: main/archives.c:543
+#, c-format
+msgid ""
+"dpkg: warning - considering deconfiguration of essential\n"
+" package %s, to enable removal of %s.\n"
+msgstr ""
+"dpkg: avertissement - décision de déconfigurer le paquet\n"
+" essentiel %s pour autoriser la suppression de %s.\n"
+
+#: main/archives.c:547
+#, c-format
+msgid ""
+"dpkg: no, %s is essential, will not deconfigure\n"
+" it in order to enable removal of %s.\n"
+msgstr ""
+"dpkg: non, %s est essentiel, il ne sera pas déconfigurer\n"
+" pour autoriser la suppression de %s.\n"
+
+#: main/archives.c:560
+#, c-format
+msgid ""
+"dpkg: no, cannot remove %s (--auto-deconfigure will help):\n"
+"%s"
+msgstr ""
+"dpkg: non, ne peut retirer %s (voir --auto-deconfigure):\n"
+"%s"
+
+#: main/archives.c:594
+#, c-format
+msgid "dpkg: considering removing %s in favour of %s ...\n"
+msgstr "dpkg: décision pour retirer %s en faveur de %s ...\n"
+
+#: main/archives.c:598
+#, c-format
+msgid "%s is not properly installed - ignoring any dependencies on it.\n"
+msgstr "%s n'est pas correctement installé - ses dépendances sont ignorés.\n"
+
+#: main/archives.c:625
+#, c-format
+msgid "dpkg: may have trouble removing %s, as it provides %s ...\n"
+msgstr ""
+"dpkg: la suppression de %s peut-être problématique, puisqu'il fournit %s "
+"...\n"
+
+#: main/archives.c:640
+#, c-format
+msgid ""
+"dpkg: package %s requires reinstallation, but will remove anyway as you "
+"request.\n"
+msgstr ""
+"dpkg: le paquet %s requiert une réinstallation, mais suppressioncomme "
+"demandée.\n"
+
+#: main/archives.c:643
+#, c-format
+msgid "dpkg: package %s requires reinstallation, will not remove.\n"
+msgstr "dpkg: le paquet %s requiert une réinstallation, suppression annulée.\n"
+
+#: main/archives.c:652
+#, c-format
+msgid "dpkg: yes, will remove %s in favour of %s.\n"
+msgstr "dpkg: oui, suppression de %s en faveur de %s.\n"
+
+#: main/archives.c:660
+#, c-format
+msgid ""
+"dpkg: regarding %s containing %s:\n"
+"%s"
+msgstr ""
+"dpkg: concernant %s contenant %s:\n"
+"%s"
+
+#: main/archives.c:663
+#, c-format
+msgid "conflicting packages - not installing %.250s"
+msgstr "paquets en conflit - %.250s non installé"
+
+#: main/archives.c:664
+msgid "dpkg: warning - ignoring conflict, may proceed anyway !\n"
+msgstr "dpkg: avertissement - conflit ignoré, poursuite possible !\n"
+
+#: main/archives.c:701
+#, c-format
+msgid "--%s --recursive needs at least one path argument"
+msgstr "--%s --recursive a besoin au moins d'un chemin comme argument"
+
+#: main/archives.c:730
+msgid "failed to exec find for --recursive"
+msgstr "échec pour exécuter \"find\" pour --recursive"
+
+#: main/archives.c:734
+msgid "failed to fdopen find's pipe"
+msgstr "échec pour \"fdopen\" le tube de \"find\""
+
+#: main/archives.c:741
+msgid "error reading find's pipe"
+msgstr "erreur en lisant le tube de \"find\""
+
+#: main/archives.c:742
+msgid "error closing find's pipe"
+msgstr "erreur en fermant le tube de \"find\""
+
+#: main/archives.c:745
+msgid "searched, but found no packages (files matching *.deb"
+msgstr "recherché, mais aucun paquet trouvé (fichiers *.deb"
+
+#: main/archives.c:762
+#, c-format
+msgid "--%s needs at least one package archive file argument"
+msgstr "--%s a besoin au moins d'un fichier archive de paquet comme argument"
+
+#: main/archives.c:809
+msgid "unknown action"
+msgstr "action inconnue"
+
+#: main/cleanup.c:84
+#, c-format
+msgid ""
+"unable to remove newly-installed version of `%.250s' to allow reinstallation "
+"of backup copy"
+msgstr ""
+"impossible de supprimer la version nouvellement installée de `%.250s' pour "
+"permettre la réinstallation d'un copie de secours"
+
+#: main/cleanup.c:91
+#, c-format
+msgid "unable to restore backup version of `%.250s'"
+msgstr "impossible de restaurer la copie de secours de `%.250s'"
+
+#: main/cleanup.c:97
+#, c-format
+msgid "unable to remove newly-extracted version of `%.250s'"
+msgstr "impossible de supprimer la version nouvellement extraite de `%.250s'"
+
+#: main/configure.c:80
+#, c-format
+msgid "no package named `%s' is installed, cannot configure"
+msgstr "aucun paquet nommé `%s' n'est installé, configuration impossible"
+
+#: main/configure.c:82
+#, c-format
+msgid ""
+"package %.250s is not ready for configuration\n"
+" cannot configure (current status `%.250s')"
+msgstr ""
+"paquet %.250s n'est pas prêt pour la configuration\n"
+" configuration impossible (état courant `%.250s')"
+
+#: main/configure.c:99
+#, c-format
+msgid ""
+"dpkg: dependency problems prevent configuration of %s:\n"
+"%s"
+msgstr ""
+"dpkg: des problèmes de dépendances empêchent la configuration de %s:\n"
+"%s"
+
+#: main/configure.c:102
+msgid "dependency problems - leaving unconfigured"
+msgstr "problèmes de dépendances - laissé non-configuré"
+
+#: main/configure.c:106
+#, c-format
+msgid ""
+"dpkg: %s: dependency problems, but configuring anyway as you request:\n"
+"%s"
+msgstr ""
+"dpkg: %s: problèmes de dépendances, mais configuration comme demandée:\n"
+"%s"
+
+#: main/configure.c:114
+msgid ""
+"Package is in a very bad inconsistent state - you should\n"
+" reinstall it before attempting configuration."
+msgstr ""
+"Le paquet est dans un Ã©tat très inconsistant - vous devriez\n"
+" le réinstaller avant de tenter sa configuration."
+
+#: main/configure.c:117
+#, c-format
+msgid "Setting up %s (%s) ...\n"
+msgstr "Paramétrage de %s (%s) ...\n"
+
+#: main/configure.c:165
+#, c-format
+msgid "unable to stat new dist conffile `%.250s'"
+msgstr "impossible d'analyser le nouveau fichier de configuration `%.250s'"
+
+#: main/configure.c:174
+#, c-format
+msgid "unable to change ownership of new dist conffile `%.250s'"
+msgstr ""
+"impossible de changer les droits du nouveau fichier de configuration `%.250s'"
+
+#: main/configure.c:177
+#, c-format
+msgid "unable to set mode of new dist conffile `%.250s'"
+msgstr ""
+"impossible de changer les permissions du nouveau fichier de configuration "
+"`%.250s'"
+
+#: main/configure.c:180
+#, c-format
+msgid "unable to stat current installed conffile `%.250s'"
+msgstr ""
+"impossible d'analyser le fichier de configuration actuellement installé "
+"`%.250s'"
+
+#: main/configure.c:212
+#, c-format
+msgid ""
+"\n"
+"Configuration file `%s'"
+msgstr ""
+"\n"
+"Fichier de configuration `%s'"
+
+#: main/configure.c:214
+#, c-format
+msgid " (actually `%s')"
+msgstr " (actuellement `%s')"
+
+#: main/configure.c:219
+msgid ""
+"\n"
+" ==> File on system created by you or by a script.\n"
+" ==> File also in package provided by package maintainer.\n"
+msgstr ""
+"\n"
+" ==> Fichier du système créé par vous ou par un script.\n"
+" ==> Fichier Ã©galement dans le paquet fourni par le responsable du paquet.\n"
+
+#: main/configure.c:226
+msgid ""
+"\n"
+" ==> Modified (by you or by a script) since installation.\n"
+msgstr ""
+"\n"
+" ==> Modifié (par vous ou un script) depuis l'installation.\n"
+
+#: main/configure.c:227
+msgid ""
+"\n"
+"     Not modified since installation.\n"
+msgstr ""
+"\n"
+"     Non modifié depuis l'installation.\n"
+
+#: main/configure.c:230
+msgid " ==> Package distributor has shipped an updated version.\n"
+msgstr " ==> Le distributeur du paquet a fourni une nouvelle version.\n"
+
+#: main/configure.c:231
+msgid "     Version in package is the same as at last installation.\n"
+msgstr ""
+"      La version du paquet est la même que celle que la dernière "
+"installation.\n"
+
+#: main/configure.c:236
+msgid ""
+"   What would you like to do about it ?  Your options are:\n"
+"    Y or I  : install the package maintainer's version\n"
+"    N or O  : keep your currently-installed version\n"
+"      Z     : background this process to examine the situation\n"
+msgstr ""
+"   Que voulez-vous faire ? Vos options sont:\n"
+"    Y ou I  : installer la version du responsable du paquet\n"
+"    N ou O  : garder votre version actuellement installée\n"
+"      Z     : suspendre ce processus pour examiner la situation\n"
+
+#: main/configure.c:242
+msgid " The default action is to keep your current version.\n"
+msgstr " L'action par défaut est de garder votre version actuelle.\n"
+
+#: main/configure.c:244
+msgid " The default action is to install the new version.\n"
+msgstr " L'action par défaut est d'installer la nouvelle version.\n"
+
+#: main/configure.c:250
+msgid "[default=N]"
+msgstr "[défaut=N]"
+
+#: main/configure.c:251
+msgid "[default=Y]"
+msgstr "[défaut=Y]"
+
+#: main/configure.c:251
+msgid "[no default]"
+msgstr "[pas de défaut]"
+
+#: main/configure.c:254
+msgid "error writing to stderr, discovered before conffile prompt"
+msgstr ""
+"erreur d'écriture sur \"stderr\", constaté avant le prompt de configuration"
+
+#: main/configure.c:261
+msgid "read error on stdin at conffile prompt"
+msgstr "erreur de lecture sur \"stdin\" au prompt de configuration"
+
+#: main/configure.c:262
+msgid "EOF on stdin at conffile prompt"
+msgstr "EOF sur \"stdin\" au prompt de configuration"
+
+#: main/configure.c:277
+#, c-format
+msgid ""
+"Your currently installed version of the file is in:\n"
+" %s\n"
+"The version contained in the new version of the package is in:\n"
+" %s\n"
+"If you decide to take care of the update yourself, perhaps by editing\n"
+" the installed version, you should choose `N' when you return, so that\n"
+" I do not mess up your careful work.\n"
+msgstr ""
+"Votre version actuellement installée du fichier est dans:\n"
+" %s\n"
+"La version contenue dans le nouveau paquet est dans:\n"
+" %s\n"
+"Si vous décidez de prendre en charge vous-même la mise Ã  jour, par exemple "
+"en Ã©ditant\n"
+" la version installée, vous devriez choisir `N' au retour, afin que\n"
+" votre précieux travail ne soit pas dérangé.\n"
+
+#: main/configure.c:288
+msgid "Type `exit' when you're done.\n"
+msgstr "Tapez `exit' lorsque vous aurez fini.\n"
+
+#: main/configure.c:293
+#, c-format
+msgid "failed to exec shell (%.250s)"
+msgstr "échec pour exécuter un shell (%.250s)"
+
+#: main/configure.c:296
+msgid "wait for shell failed"
+msgstr "échec de l'attente du shell"
+
+#: main/configure.c:298
+msgid "Don't forget to foreground (`fg') this process when you're done !\n"
+msgstr ""
+"N'oubliez pas de mettre Ã  l'avant plan (`fg') ce processus lorsque vous "
+"aurez fini !\n"
+
+#: main/configure.c:319
+#, c-format
+msgid "dpkg: %s: warning - failed to remove old backup `%.250s': %s\n"
+msgstr ""
+"dpkg: %s: avertissement - Ã©chec pour supprimer l'ancienne copie de secours "
+"`%.250s': %s\n"
+
+#: main/configure.c:327
+#, c-format
+msgid "dpkg: %s: warning - failed to rename `%.250s' to `%.250s': %s\n"
+msgstr ""
+"dpkg: %s: avertissement - Ã©chec pour renommer `%.250s' en `%.250s': %s\n"
+
+#: main/configure.c:335
+#, c-format
+msgid "dpkg: %s: warning - failed to remove `%.250s': %s\n"
+msgstr "dpkg: %s: avertissement - Ã©chec pour supprimer `%.250s': %s\n"
+
+#: main/configure.c:343
+#, c-format
+msgid "dpkg: %s: warning - failed to remove old distrib version `%.250s': %s\n"
+msgstr ""
+"dpkg: %s: avertissement - Ã©chec pour supprimer l'ancienne copie distribuée "
+"`%.250s': %s\n"
+
+#: main/configure.c:348
+#, c-format
+msgid "dpkg: %s: warning - failed to remove `%.250s' (before overwrite): %s\n"
+msgstr ""
+"dpkg: %s: avertissement - Ã©chec pour supprimer `%.250s' (avant "
+"remplacement): %s\n"
+
+#: main/configure.c:352
+#, c-format
+msgid "dpkg: %s: warning - failed to link `%.250s' to `%.250s': %s\n"
+msgstr "dpkg: %s: avertissement - Ã©chec pour lier `%.250s' Ã  `%.250s': %s\n"
+
+#: main/configure.c:356
+#, c-format
+msgid "Installing new version of config file %s ...\n"
+msgstr ""
+"Installation de la nouvelle version du fichier de configuration %s ...\n"
+
+#: main/configure.c:360
+#, c-format
+msgid "unable to install `%.250s' as `%.250s'"
+msgstr "impossible d'installer `%.250s' comme `%.250s'"
+
+#: main/configure.c:416
+#, c-format
+msgid ""
+"dpkg: %s: warning - unable to stat config file `%s'\n"
+" (= `%s'): %s\n"
+msgstr ""
+"dpkg: %s: avertissement - impossible d'analyser le fichier de configuration "
+"`%s'\n"
+" (= `%s'): %s\n"
+
+#: main/configure.c:427
+#, c-format
+msgid ""
+"dpkg: %s: warning - config file `%s' is a circular link\n"
+" (= `%s')\n"
+msgstr ""
+"dpkg: %s: avertissement - le fichier de configuration `%s' est un lien "
+"circulaire\n"
+" (= `%s')\n"
+
+#: main/configure.c:440
+#, c-format
+msgid ""
+"dpkg: %s: warning - unable to readlink conffile `%s'\n"
+" (= `%s'): %s\n"
+msgstr ""
+"dpkg: %s: avertissement - impossible de \"readlink\" le fichier de "
+"configuration `%s'\n"
+" (= `%s'): %s\n"
+
+#: main/configure.c:459
+#, c-format
+msgid ""
+"dpkg: %s: warning - conffile `%.250s' resolves to degenerate filename\n"
+" (`%s' is a symlink to `%s')\n"
+msgstr ""
+"dpkg: %s: avertissement - le fichier de configuration `%.250s' \"resolves to "
+"degenerate\" le nom de fichier\n"
+" (`%s' est un lien symbolique vers  `%s')\n"
+
+#: main/configure.c:472
+#, c-format
+msgid ""
+"dpkg: %s: warning - conffile `%.250s' is not a plain file or symlink (= "
+"`%s')\n"
+msgstr ""
+"dpkg: %s: avertissement - le fichier de configuration `%.250s' n'est pas un "
+"vrai fichier ou lien (= `%s')\n"
+
+#: main/configure.c:494
+msgid "failed to exec md5sum"
+msgstr "échec pour exécuter \"md5sum\""
+
+#: main/configure.c:499
+#, c-format
+msgid "unable to fdopen for md5sum of `%.250s'"
+msgstr "impossible de \"fdopen\" pour le \"md5sum\" de `%.250s'"
+
+#: main/configure.c:507
+msgid "error reading pipe from md5sum"
+msgstr "erreur en lisant le tube de \"md5sum\""
+
+#: main/configure.c:508
+msgid "error closing pipe from md5sum"
+msgstr "erreur en fermant le tube de \"md5sum\""
+
+#. file= fdopen(p1[0])
+#. m_pipe()
+#. fd= open(cdr.buf)
+#: main/configure.c:512
+#, c-format
+msgid "md5sum gave malformatted output `%.250s'"
+msgstr "\"md5sum\" donne la sortie malformatée `%.250s'"
+
+#: main/configure.c:516
+#, c-format
+msgid "dpkg: %s: warning - unable to open conffile %s for hash: %s\n"
+msgstr ""
+"dpkg: %s: avertissement -- impossible d'ouvrir le fichier de configuration "
+"%s pour hachage: %s\n"
+
+#: main/depcon.c:73
+#, c-format
+msgid "unable to check for existence of `%.250s'"
+msgstr "impossible de vérifier l'existence de `%.250s'"
+
+#: main/depcon.c:136 main/packages.c:386
+msgid " depends on "
+msgstr " dépend de "
+
+#: main/depcon.c:137
+msgid " pre-depends on "
+msgstr " pré-dépend de "
+
+#: main/depcon.c:138
+msgid " recommends "
+msgstr " recommande "
+
+#: main/depcon.c:139
+msgid " conflicts with "
+msgstr " rentre en conflit avec "
+
+#: main/depcon.c:213
+#, c-format
+msgid "  %.250s is to be removed.\n"
+msgstr "  %.250s doit Ãªtre supprimé.\n"
+
+#: main/depcon.c:216
+#, c-format
+msgid "  %.250s is to be deconfigured.\n"
+msgstr "  %.250s doit Ãªtre déconfiguré.\n"
+
+#: main/depcon.c:220
+#, c-format
+msgid "  %.250s is to be installed, but is version %.250s.\n"
+msgstr "  %.250s doit Ãªtre installé, mais c'est la version %.250s.\n"
+
+#: main/depcon.c:228
+#, c-format
+msgid "  %.250s is installed, but is version %.250s.\n"
+msgstr "  %.250s est installé, mais c'est la version %.250s.\n"
+
+#: main/depcon.c:243
+#, c-format
+msgid "  %.250s is unpacked, but has never been configured.\n"
+msgstr "  %.250s est dépaqueté, mais n'a jamais Ã©té configuré.\n"
+
+#: main/depcon.c:247
+#, c-format
+msgid "  %.250s is unpacked, but is version %.250s.\n"
+msgstr "  %.250s est dépaqueté, mais c'est la version %.250s.\n"
+
+#: main/depcon.c:253
+#, c-format
+msgid "  %.250s latest configured version is %.250s.\n"
+msgstr "  la dernière version configuré de %.250s est %.250s.\n"
+
+#: main/depcon.c:262
+#, c-format
+msgid "  %.250s is %s.\n"
+msgstr "  %.250s est %s.\n"
+
+#: main/depcon.c:298
+#, c-format
+msgid "  %.250s provides %.250s but is to be removed.\n"
+msgstr "  %.250s fourni %.250s mais doit Ãªtre supprimé.\n"
+
+#: main/depcon.c:302
+#, c-format
+msgid "  %.250s provides %.250s but is to be deconfigured.\n"
+msgstr "  %.250s fourni %.250s mais doit Ãªtre déconfiguré.\n"
+
+#: main/depcon.c:307
+#, c-format
+msgid "  %.250s provides %.250s but is %s.\n"
+msgstr "  %.250s fourni %.250s mais est %s.\n"
+
+#: main/depcon.c:352
+#, c-format
+msgid "  %.250s (version %.250s) is to be installed.\n"
+msgstr "  %.250s (version %.250s) doit Ãªtre installé.\n"
+
+#: main/depcon.c:366
+#, c-format
+msgid "  %.250s (version %.250s) is %s.\n"
+msgstr "  %.250s (version %.250s) est %s.\n"
+
+#. conflicts and provides the same
+#: main/depcon.c:391
+#, c-format
+msgid "  %.250s provides %.250s and is to be installed.\n"
+msgstr "  %.250s fourni %.250s et doit Ãªtre installé.\n"
+
+#: main/depcon.c:422
+#, c-format
+msgid "  %.250s provides %.250s and is %s.\n"
+msgstr "  %.250s fourni %.250s et est %s.\n"
+
+#: main/enquiry.c:63
+msgid ""
+"Desired=Unknown/Install/Remove/Purge\n"
+"| Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed\n"
+"|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: "
+"uppercase=bad)\n"
+"||/ Name            Version        Description\n"
+"+++-===============-==============-=========================================="
+"==\n"
+msgstr ""
+"Souhait=inconnU/Installé/suppRimé/Purgé\n"
+"| Etat=Non/Installé/fichier-Config/DépaqUeté/échec-conFig/H=demi-installé\n"
+"|/ Err?=(aucune)/H=arrété/R=besoin-réinstallation/X=les-deux (Etat,Err: "
+"majuscule=mauvais)\n"
+"||/ Nom             Version        Description\n"
+"+++-===============-==============-=========================================="
+"==\n"
+
+#: main/enquiry.c:121 main/select.c:80
+#, c-format
+msgid "No packages found matching %s.\n"
+msgstr "Aucun paquet ne correspondant Ã  %s.\n"
+
+#: main/enquiry.c:146
+msgid ""
+"The following packages are in a mess due to serious problems during\n"
+"installation.  They must be reinstalled for them (and any packages\n"
+"that depend on them) to function properly:\n"
+msgstr ""
+"Les paquets suivants sont dans un Ã©tat trouble Ã  cause de sérieux problèmes\n"
+"durant l'installation. Ils doivent Ãªtre réinstallés (et tous les paquets\n"
+"qui dépendent d'eux) pour qu'ils puissent fonctionner correctement:\n"
+
+#: main/enquiry.c:151
+msgid ""
+"The following packages have been unpacked but not yet configured.\n"
+"They must be configured using dpkg --configure or the configure\n"
+"menu option in dselect for them to work:\n"
+msgstr ""
+"Les paquets suivants ont Ã©té dépaquetés mais ne sont pas configurés.\n"
+"Ils doivent Ãªtre configurés en utilisant dpkg --configure ou l'option\n"
+"de menu configure dans dselect pour qu'ils puissent fonctionner:\n"
+
+#: main/enquiry.c:156
+msgid ""
+"The following packages are only half configured, probably due to problems\n"
+"configuring them the first time.  The configuration should be retried using\n"
+"dpkg --configure <package> or the configure menu option in "
+msgstr ""
+"Les paquets suivants sont Ã  demi configurés, probablement Ã  cause de "
+"problèmes\n"
+"durant la première configuration. La configuration devrait Ãªtre réessayer "
+"en\n"
+"utilisant dpkg --configure ou l'option de menu configure dans "
+
+#: main/enquiry.c:161
+msgid ""
+"The following packages are only half installed, due to problems during\n"
+"installation.  The installation can probably be completed by retrying it;\n"
+"the packages can be removed using dselect or dpkg --remove:\n"
+msgstr ""
+"Les paquets suivants sont Ã  demi installés, Ã  cause de problèmes durant\n"
+"l'installation. L'installation peut certainement Ãªtre complétée en la "
+"réessayant;\n"
+"les paquets peuvent Ãªtre supprimés en utilisant dselect ou dpkg --remove:\n"
+
+#: main/enquiry.c:186
+msgid "--audit does not take any arguments"
+msgstr "--audit ne prend aucun argument"
+
+#: main/enquiry.c:237
+msgid "--yet-to-unpack does not take any arguments"
+msgstr "--yet-to-unpack ne prend aucun argument"
+
+#: main/enquiry.c:290
+#, c-format
+msgid " %d packages, from the following sections:"
+msgstr " %d paquets, des sections suivantes:"
+
+#: main/enquiry.c:310
+#, c-format
+msgid "diversion by %s"
+msgstr "détourné par %s"
+
+#: main/enquiry.c:311
+msgid "local diversion"
+msgstr "détournement local"
+
+#: main/enquiry.c:312
+msgid "to"
+msgstr "à"
+
+#: main/enquiry.c:312
+msgid "from"
+msgstr "de"
+
+#: main/enquiry.c:345
+msgid "--search needs at least one file name pattern argument"
+msgstr "--search a besoin au moins d'un motif de nom de fichier comme argument"
+
+#: main/enquiry.c:373
+#, c-format
+msgid "dpkg: %s not found.\n"
+msgstr "dpkg: %s non trouvé,\n"
+
+#: main/enquiry.c:389 main/packages.c:109
+#, c-format
+msgid "--%s needs at least one package name argument"
+msgstr "--%s a besoin au moins d'un nom de paquet comme argument"
+
+#: main/enquiry.c:406
+#, c-format
+msgid "Package `%s' is not installed and no info is available.\n"
+msgstr ""
+"Le paquet `%s' n'est pas installé et aucune information n'est disponible.\n"
+
+#: main/enquiry.c:415
+#, c-format
+msgid "Package `%s' is not available.\n"
+msgstr "Le paquet `%s' n'est pas disponible.\n"
+
+#: main/enquiry.c:425
+#, c-format
+msgid "Package `%s' is not installed.\n"
+msgstr "Le paquet `%s' n'est pas installé.\n"
+
+#: main/enquiry.c:434
+#, c-format
+msgid "Package `%s' does not contain any files (!)\n"
+msgstr "Le paquet `%s' ne contient aucun fichier (!)\n"
+
+#: main/enquiry.c:440
+msgid "locally diverted"
+msgstr "détournement local"
+
+#: main/enquiry.c:441
+msgid "package diverts others"
+msgstr "paquet détournant d'autres"
+
+#: main/enquiry.c:442
+#, c-format
+msgid "diverted by %s"
+msgstr "détourné par %s"
+
+#: main/enquiry.c:461
+msgid ""
+"Use dpkg --info (= dpkg-deb --info) to examine archive files,\n"
+"and dpkg --contents (= dpkg-deb --contents) to list their contents."
+msgstr ""
+"Utilisez dpkg --info (= dpkg-deb --info) pour examiner les fichiers "
+"archives,\n"
+"et dpkg --contents (= dpkg-deb --contents) pour afficher leurs contenus."
+
+#: main/enquiry.c:499
+msgid "--assert-support-predepends does not take any arguments"
+msgstr "--assert-support-predepends ne prend aucun argument"
+
+#: main/enquiry.c:514
+msgid ""
+"Version of dpkg with Pre-Depends support not yet configured.\n"
+" Please use `dpkg --configure dpkg', and then try again.\n"
+msgstr ""
+"Version de dpkg avec support des pré-dépendances non encore configurée.\n"
+" Utilisez s'il vous plaît `dpkg --configure dpkg' et essayez Ã  nouveau.\n"
+
+#: main/enquiry.c:518
+msgid ""
+"dpkg not recorded as installed, cannot check for Pre-Depends support !\n"
+msgstr ""
+"dpkg non enregistré comme installé, vérification du support des "
+"pré-dépendances impossible !\n"
+
+#: main/enquiry.c:541
+msgid "--predep-package does not take any argument"
+msgstr "--predep-package ne prend aucun argument"
+
+#: main/enquiry.c:593
+#, c-format
+msgid ""
+"dpkg: cannot see how to satisfy pre-dependency:\n"
+" %s\n"
+msgstr ""
+"dpkg: ne peut pas voir comment satisfaire les pré-dépendances:\n"
+" %s\n"
+
+#: main/enquiry.c:594
+#, c-format
+msgid "cannot satisfy pre-dependencies for %.250s (wanted due to %.250s)"
+msgstr ""
+"ne peut satisfaire les pré-dépendances pour %.250s (réclamé par %.250s)"
+
+#: main/enquiry.c:614
+#, c-format
+msgid ""
+"dpkg: unexpected output from `%s --print-libgcc-file-name':\n"
+" `%s'\n"
+msgstr ""
+"dpkg: sortie inattendu de `%s --print-libgcc-file-name':\n"
+" `%s'\n"
+
+#: main/enquiry.c:617
+#, c-format
+msgid "compiler libgcc filename not understood: %.250s"
+msgstr "fichier libgcc du compilateur non compris: %.250s"
+
+#: main/enquiry.c:621
+msgid "--print-installation-architecture does not take any argument"
+msgstr "--print-installation-architecture ne prend aucun argument"
+
+#: main/enquiry.c:641
+msgid "--print-architecture does not take any argument"
+msgstr "--print-architecture ne prend aucun argument"
+
+#: main/enquiry.c:647
+msgid "failed to fdopen CC pipe"
+msgstr "échec pour \"fdopen\" le tube de CC"
+
+#: main/enquiry.c:651
+#, c-format
+msgid "failed to exec C compiler `%.250s'"
+msgstr "échec pour exécuter le compilateur C `%.250s'"
+
+#: main/enquiry.c:655
+msgid "error reading from CC pipe"
+msgstr "erreur en lisant le tube de CC"
+
+#: main/enquiry.c:657
+msgid "empty output"
+msgstr "sortie vide"
+
+#: main/enquiry.c:659
+msgid "no newline"
+msgstr "pas de saut de ligne"
+
+#: main/enquiry.c:662
+msgid "no gcc-lib component"
+msgstr "pas de composant gcc-lib"
+
+#: main/enquiry.c:664
+msgid "no hyphen after gcc-lib"
+msgstr "pas de trait d'union pas gcc-lib"
+
+#: main/enquiry.c:676
+#, c-format
+msgid "dpkg: warning, architecture `%s' not in remapping table\n"
+msgstr ""
+"dpkg: avertissement, architecture `%s' inexistante dans la tale des "
+"correspondances\n"
+
+#: main/enquiry.c:718
+msgid "--cmpversions takes three arguments: <version> <relation> <version>"
+msgstr "--cmpversions prend trois arguments: <version> <relation> <version>"
+
+#: main/enquiry.c:723
+msgid "--cmpversions bad relation"
+msgstr "--cmpversions mauvaise relation"
+
+#: main/enquiry.c:728
+#, c-format
+msgid "version a has bad syntax: %s\n"
+msgstr "mauvaise syntaxe de la version a:  %s\n"
+
+#: main/enquiry.c:738
+#, c-format
+msgid "version b has bad syntax: %s\n"
+msgstr "mauvaise syntaxe de la version b:  %s\n"
+
+#: main/errors.c:60
+msgid ""
+"dpkg: failed to allocate memory for new entry in list of failed packages."
+msgstr ""
+"dpkg: impossible d'allouer de la mémoire pour une nouvelle entrée dans la "
+"liste des paquets en Ã©chec."
+
+#: main/errors.c:70
+msgid "dpkg: too many errors, stopping\n"
+msgstr "dpkg: trop d'erreurs, arrêt\n"
+
+#: main/errors.c:76
+msgid "Errors were encountered while processing:\n"
+msgstr "Des erreurs ont Ã©té rencontrées pendant l'exécution:\n"
+
+#: main/errors.c:83
+msgid "Processing was halted because there were too many errors.\n"
+msgstr "L'exécution a Ã©té arrêté car il y avait trop d'erreurs.\n"
+
+#: main/errors.c:91
+#, c-format
+msgid "Package %s was on hold, processing it anyway as you request\n"
+msgstr "Le paquet %s Ã©tait suspendu, traiter quand même puisque désiré\n"
+
+#: main/errors.c:104
+msgid ""
+"dpkg - warning, overriding problem because --force enabled:\n"
+" "
+msgstr ""
+"dpkg - avertissement, problème de recouvrement Ã  cause de --force:\n"
+" "
+
+#: main/filesdb.c:116
+#, c-format
+msgid "unable to open files list file for package `%.250s'"
+msgstr ""
+"impossible d'ouvrir le fichier comprenant la liste des fichiers du paquet "
+"`%.250s'"
+
+#: main/filesdb.c:121
+#, c-format
+msgid ""
+"dpkg: serious warning: files list file for package `%.250s' missing, "
+"assuming package has no files currently installed.\n"
+msgstr ""
+"dpkg: avertissement important: le fichier comprenant la liste des fichiers "
+"du paquet `%.250s' Ã©tant manquant, il est considéré que le paquet n'a aucun "
+"fichier actuellement installé.\n"
+
+#: main/filesdb.c:132
+#, c-format
+msgid "unable to set buffering on `%.250s'"
+msgstr "impossible de paramétrer le \"buffering\" sur `%.250s'"
+
+#: main/filesdb.c:142
+#, c-format
+msgid "fgets gave an empty null-terminated string from `%.250s'"
+msgstr "\"fgets\" a donné une chaine vide de `%.250s'"
+
+#: main/filesdb.c:160
+#, c-format
+msgid "files list file for package `%.250s' contains empty filename"
+msgstr ""
+"la liste des fichiers pour le paquet `%.250s' contient un nom de fichier vide"
+
+#: main/filesdb.c:168
+#, c-format
+msgid "error reading files list file for package `%.250s'"
+msgstr ""
+"erreur de lecture du fichier contenant la liste des fichiers du paquet "
+"`%.250s'"
+
+#: main/filesdb.c:171
+#, c-format
+msgid "error closing files list file for package `%.250s'"
+msgstr ""
+"erreur de fermeture du fichier contenant la liste des fichiers du paquet "
+"`%.250s'"
+
+#: main/filesdb.c:173
+#, c-format
+msgid "files list file for package `%.250s' is truncated"
+msgstr ""
+"le fichier contenant la liste des fichiers du paquet `%.250s' est coupé"
+
+#: main/filesdb.c:204
+msgid "(Reading database ... "
+msgstr "(Lecture de la base de données ... "
+
+#: main/filesdb.c:204
+msgid "(Scanning database ... "
+msgstr "(Recherche dans la base de données ... "
+
+#: main/filesdb.c:212
+#, c-format
+msgid "%d files and directories currently installed.)\n"
+msgstr "%d fichiers et répertoires déjà installés.)\n"
+
+#: main/filesdb.c:243
+#, c-format
+msgid "unable to create updated files list file for package %s"
+msgstr ""
+"impossible de créer le fichier contenant la liste mise Ã  jour des fichiers "
+"du paquet %s"
+
+#: main/filesdb.c:253
+#, c-format
+msgid "failed to write to updated files list file for package %s"
+msgstr ""
+"échec pour Ã©crire le fichier contenant la liste mise Ã  jour des fichiers du "
+"paquet %s"
+
+#: main/filesdb.c:255
+#, c-format
+msgid "failed to flush updated files list file for package %s"
+msgstr ""
+"échec pour vider le fichier contenant la liste mise Ã  jour des fichiers du "
+"paquet %s"
+
+#: main/filesdb.c:257
+#, c-format
+msgid "failed to sync updated files list file for package %s"
+msgstr ""
+"échec pour \"sync\" le fichier contenant la liste mise Ã  jour des fichiers "
+"du paquet %s"
+
+#: main/filesdb.c:260
+#, c-format
+msgid "failed to close updated files list file for package %s"
+msgstr ""
+"échec pour fermer le fichier contenant la liste mise Ã  jour des fichiers du "
+"paquet %s"
+
+#: main/filesdb.c:262
+#, c-format
+msgid "failed to install updated files list file for package %s"
+msgstr ""
+"échec pour installer le fichier contenant la liste mise Ã  jour des fichiers "
+"du paquet %s"
+
+#: main/filesdb.c:326
+msgid "failed to open diversions file"
+msgstr "échec pour ouvrir le fichier des détournements"
+
+#: main/filesdb.c:330
+msgid "failed to fstat previous diversions file"
+msgstr "échec pour \"fstat\" l'ancien fichier des détournements"
+
+#: main/filesdb.c:332
+msgid "failed to fstat diversions file"
+msgstr "échec pour \"fstat\" le fichier des détournements"
+
+#: main/filesdb.c:352
+msgid "fgets gave an empty string from diversions [i]"
+msgstr "\"fgets\" a donné une chaine vide pour les détournements [i]"
+
+#: main/filesdb.c:353
+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
+msgid "read error in diversions [ii]"
+msgstr "erreur de lecture dans les détournements [ii]"
+
+#: main/filesdb.c:359
+msgid "unexpected EOF in diversions [ii]"
+msgstr "EOF inattendu dans les détournements [ii]"
+
+#: main/filesdb.c:361
+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
+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
+msgid "read error in diversions [iii]"
+msgstr "erreur de lecture dans les détournements [iii]"
+
+#: main/filesdb.c:368
+msgid "unexpected EOF in diversions [iii]"
+msgstr "EOF inattendu dans les détournements [iii]"
+
+#: main/filesdb.c:370
+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
+#, c-format
+msgid "conflicting diversions involving `%.250s' or `%.250s'"
+msgstr "détournements contradictoires impliquant `%.250s' ou `%.250s'"
+
+#: main/filesdb.c:387
+msgid "read error in diversions [i]"
+msgstr "erreur de lecture dans les détournements [i]"
+
+#: main/help.c:40
+msgid "not installed"
+msgstr "non installé"
+
+#: main/help.c:40
+msgid "unpacked but not configured"
+msgstr "dépaqueté mais non configuré"
+
+#: main/help.c:41
+msgid "broken due to postinst failure"
+msgstr "arrêt causé par l'échec de \"postinst\""
+
+#: main/help.c:42
+msgid "installed"
+msgstr "installé"
+
+#: main/help.c:43
+msgid "broken due to failed removal"
+msgstr "arrêt causé par l'échec d'une suppression"
+
+#: main/help.c:44
+msgid "not installed but configs remain"
+msgstr "non installé mais la configuration reste"
+
+#: main/help.c:81
+msgid "dpkg - warning: PATH is not set.\n"
+msgstr "dpkg - avertissement: la variable PATH n'est pas paramétrée.\n"
+
+#: main/help.c:96
+#, c-format
+msgid "dpkg: `%s' not found on PATH.\n"
+msgstr "dpkg: `%s' non trouvé dans la variable PATH.\n"
+
+#: main/help.c:102
+#, c-format
+msgid ""
+"%d expected program(s) not found on PATH.\n"
+"NB: root's PATH should usually contain /usr/local/sbin, /usr/sbin and /sbin."
+msgstr ""
+"%d programme(s) attendu(s) non trouvé(s)s dans la variable PATH.\n"
+"NB: la variable PATH de root doit normalement contenir /usr/local/sbin, "
+"/usr/sbin et /sbin."
+
+#: main/help.c:210
+#, c-format
+msgid "error un-catching signal %s: %s\n"
+msgstr "erreur signal %s non-capturé: %s\n"
+
+#: main/help.c:228
+#, c-format
+msgid "unable to ignore signal %s before running script"
+msgstr "impossible d'ignorer le signal %s avant le lancement du script"
+
+#: main/help.c:237
+#, c-format
+msgid "unable to set execute permissions on `%.250s'"
+msgstr "impossible de paramétrer les permissions en exécution sur `%.250s'"
+
+#: main/help.c:261
+#, c-format
+msgid "unable to stat installed %s script `%.250s'"
+msgstr "impossible d'analyser le script installé %s `%.250s'"
+
+#: main/help.c:268 main/help.c:346 main/help.c:385
+#, c-format
+msgid "unable to execute %s"
+msgstr "impossible d'exécuter %s"
+
+#: main/help.c:297
+#, c-format
+msgid "unable to stat new %s script `%.250s'"
+msgstr "impossible d'analyser le nouveau script %s `%.250s'"
+
+#: main/help.c:304
+#, c-format
+msgid "unable to execute new %s"
+msgstr "impossible d'exécuter le nouveau %s"
+
+#: main/help.c:338
+#, c-format
+msgid "dpkg: warning - unable to stat %s `%.250s': %s\n"
+msgstr "dpkg: avertissement - impossible d'analyser %s `%.250s': %s\n"
+
+#: main/help.c:354
+#, c-format
+msgid "dpkg: warning - %s returned error exit status %d\n"
+msgstr "dpkg: avertissement- %s a retourné un code d'erreur de sortie %d\n"
+
+#: main/help.c:357
+#, c-format
+msgid "dpkg: warning - %s killed by signal (%s)%s\n"
+msgstr "dpkg: avertissement - %s a Ã©té tué par le signal (%s)%s\n"
+
+#: main/help.c:360
+#, c-format
+msgid "%s failed with unknown wait status code %d"
+msgstr "%s a Ã©choué avec le code d'attente inconnu %d"
+
+#: main/help.c:364
+msgid "dpkg - trying script from the new package instead ...\n"
+msgstr "dpkg - tentative avec le script du nouveau paquet Ã  la place ...\n"
+
+#: main/help.c:371
+#, c-format
+msgid "new %s script"
+msgstr "nouveau script %s"
+
+#: main/help.c:375
+msgid "there is no script in the new version of the package - giving up"
+msgstr "il n'y a pas de script dans cette nouvelle version du paquet - abandon"
+
+#: main/help.c:377
+#, c-format
+msgid "unable to stat %s `%.250s'"
+msgstr "impossible d'analyser %s `%.250s'"
+
+#: main/help.c:390
+msgid "dpkg: ... it looks like that went OK.\n"
+msgstr "dpkg: ... tout a certainement fonctionné correctement.\n"
+
+#. Huh ?
+#: main/help.c:469
+#, c-format
+msgid "failed to rmdir/unlink `%.255s'"
+msgstr "échec pour \"rmdir/unlink\" `%.255s'"
+
+#: dpkg-deb/info.c:52 main/help.c:473
+msgid "failed to exec rm for cleanup"
+msgstr "échec pour exécuter \"rm\" pour nettoyage"
+
+#: main/main.c:44
+msgid "Debian Linux `dpkg' package management program version "
+msgstr "Programme `dpkg' de gestion des paquets de Linux Debian version "
+
+#: main/main.c:47
+msgid ""
+"Copyright 1994-1996 Ian Jackson, Bruce Perens.  This is free software;\n"
+"see the GNU General Public Licence version 2 or later for copying\n"
+"conditions.  There is NO warranty.  See dpkg --licence for details.\n"
+msgstr ""
+"Copyright 1994-1996 Ian Jackson, Bruce Perens.  Ceci est un logiciel libre;\n"
+"consultez la GNU General Public Licence version 2 ou supérieure pour les "
+"conditions\n"
+"de reproduction.  Il n'y a AUCUNE garantie. Consultez dpkg --licence pour "
+"les détails.\n"
+
+#: main/main.c:57
+#, fuzzy, c-format
+msgid ""
+"Usage: \n"
+"  dpkg -i|--install      <.deb file name> ... | -R|--recursive <dir> ...\n"
+"  dpkg --unpack          <.deb file name> ... | -R|--recursive <dir> ...\n"
+"  dpkg -A|--record-avail <.deb file name> ... | -R|--recursive <dir> ...\n"
+"  dpkg --configure           <package name> ... | -a|--pending\n"
+"  dpkg -r|--remove | --purge <package name> ... | -a|--pending\n"
+"  dpkg --get-selections [<pattern> ...]   get list of selections to stdout\n"
+"  dpkg --set-selections                   set package selections from stdin\n"
+"  dpkg --update-avail <Packages-file>     replace available packages info\n"
+"  dpkg --merge-avail <Packages-file>      merge with info from file\n"
+"  dpkg --clear-avail                      erase existing available info\n"
+"  dpkg --forget-old-unavail               forget uninstalled unavailable "
+"pkgs\n"
+"  dpkg -s|--status <package-name> ...     display package status details\n"
+"  dpkg --print-avail <package-name> ...   display available version details\n"
+"  dpkg -L|--listfiles <package-name> ...  list files `owned' by package(s)\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 --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:"
+msgstr ""
+"Syntaxe: \n"
+"  dpkg -i|--install      <nom fichier .deb> ... | -R|--recursive <rép> ...\n"
+"  dpkg --unpack          <nom fichier .deb> ... | -R|--recursive <rép> ...\n"
+"  dpkg -A|--record-avail <nom fichier .deb> ... | -R|--recursive <rép> ...\n"
+"  dpkg --configure           <nom paquet> ... | -a|--pending\n"
+"  dpkg -r|--remove | --purge <nom paquet> ... | -a|--pending\n"
+"  dpkg --get-selections [<motif> ...]     affiche la liste des sélections "
+"sur la sortie standard\n"
+"  dpkg --set-selections                   paramètre la liste des sélections "
+"à partir de l'entrée standard\n"
+"  dpkg --update-avail <fichier Packages>  remplace les informations sur les "
+"paquets disponibles\n"
+"  dpkg --merge-avail <fichier Packages>   fusionne les informations sur les "
+"paquets avec le fichier\n"
+"  dpkg --clear-avail                      efface les informations sur les "
+"paquets\n"
+"  dpkg --forget-old-unavail               oublie les paquets non-installés "
+"et non-disponibles\n"
+"  dpkg -s|--status <nom paquet> ...       affiche les détails de l'état du "
+"paquet\n"
+"  dpkg --print-avail <nom paquet> ...     affiche les détails de la version "
+"disponible\n"
+"  dpkg -L|--listfiles <nom paquet> ...    liste les fichiers appartenant "
+"au(x) paquet(s)\n"
+"  dpkg -l|--list [<motif> ...]            liste les paquets en condensé\n"
+"  dpkg -S|--search <motif> ...            trouve le(s) paquet(s) possédant "
+"le(s) fichier(s)\n"
+"  dpkg -C|--audit                         vérifie la présence de paquet(s) "
+"abîmé(s)\n"
+"  dpkg --print-architecture               affiche l'architecture cible "
+"(utilise GCC)\n"
+"  dpkg --print-gnu-build-architecture     affiche la version GNU de "
+"l'archive cible\n"
+"  dpkg --print-installation-architecture  affiche l'architecture de la "
+"machine (pour l'installation)\n"
+"  dpkg --compare-versions <a> <rel> <b>   compare les nombres de version - "
+"voir ci-dessous\n"
+"  dpkg --help | --version                 affiche cette aide/le numéro de "
+"version\n"
+"  dpkg --force-help | -Dh|--debug=help    aide sur respectivement le "
+"forçage/débogage\n"
+"  dpkg --licence                          affiche les termes de la licence "
+"copyright\n"
+"\n"
+"Utiliser dpkg -b|--build|-c|--contents|-e|--control|-I|--info|-f|--field|\n"
+" -x|--extract|-X|--vextract|--fsys-tarfile sur les archives (taper %s "
+"--help.)\n"
+"\n"
+"For internal use: dpkg --assert-support-predepends | --predep-package |\n"
+"  --assert-working-epoch\n"
+"\n"
+"Options:\n"
+"  --admindir=<directory>     Use <directory> instead of %s\n"
+"  --root=<directory>         Install on alternative system rooted elsewhere\n"
+"  --instdir=<directory>      Change inst'n root without changing admin dir\n"
+"  -O|--selected-only         Skip packages not selected for install/upgrade\n"
+"  -E|--skip-same-version     Skip packages whose same version is installed\n"
+"  -G=--refuse-downgrade      Skip packages with earlier version tha\n"
+"installed\n"
+"  -B|--auto-deconfigure      Install even if it would break some othe\n"
+"package\n"
+"  --largemem | --smallmem    Optimise for large (>4Mb) or small (<4Mb) RA\n"
+"use\n"
+"  --no-act                   Just say what we would do - don't do it\n"
+"  -D|--debug=<octal>         Enable debugging - see -Dhelp or --debug=help\n"
+"  --ignore-depends=<package>,... Ignore dependencies involving <package>\n"
+"  --force-...                    Override problems - see --force-help\n"
+"  --no-force-...|--refuse-...    Stop when problems encountered\n"
+"\n"
+"Comparison operators for --compare-versions are:\n"
+" lt le eq ne ge gt       (treat no version as earlier than any version);\n"
+" lt-nl le-nl ge-nl gt-nl (treat no version as later than any version);\n"
+" < << <= = >= >> >       (only for compatibility with control file syntax).\n"
+"\n"
+"Use `dselect' for user-friendly package management.\n"
+
+#: main/main.c:116
+msgid ""
+"Type dpkg --help for help about installing and deinstalling packages [*];\n"
+"Use dselect for user-friendly package management;\n"
+"Type dpkg -Dhelp for a list of dpkg debug flag values;\n"
+"Type dpkg --force-help for a list of forcing options;\n"
+"Type dpkg-deb --help for help about manipulating *.deb files;\n"
+"Type dpkg --licence for copyright licence and lack of warranty (GNU GPL) "
+"[*].\n"
+"\n"
+"Options marked [*] produce a lot of output - pipe it through `less' or "
+"`more' !"
+msgstr ""
+"Taper dpkg --help pour une aide sur l'installation et la désinstallation des "
+"paquets [*];\n"
+"Utiliser dselect pour une gestion des paquets conviviale;\n"
+"Taper dpkg -Dhelp pour une liste des valeurs drapeaux de débogage;\n"
+"Taper dpkg --force-help pour une liste des options de forçage;\n"
+"Taper dpkg-deb --help pour une aide sur la manipulation des fichiers *.deb;\n"
+"Taper dpkg --licence pour la licence copyright et le défaut de garantie (GNU "
+"GPL) [*].\n"
+"\n"
+"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
+#, c-format
+msgid "conflicting actions --%s and --%s"
+msgstr "actions conflictuelles --%s et --%s"
+
+#: main/main.c:223
+#, 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
+#, 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
+#, fuzzy
+msgid ""
+"dpkg forcing options - control behaviour when problems found:\n"
+"  warn but continue:  --force-<thing>,<thing>,...\n"
+"  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"
+"  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"
+"  not-root               Try to (de)install things even when not root\n"
+"  overwrite              Overwrite a file from one package with another\n"
+"  overwrite-diverted     Overwrite a diverted file with an undiverted "
+"version\n"
+"  depends-version [!]    Turn dependency version problems into warnings\n"
+"  depends [!]            Turn all dependency problems into warnings\n"
+"  conflicts [!]          Allow installation of conflicting packages\n"
+"  architecture [!]       Process even packages with wrong architecture\n"
+"  overwrite-dir [!]      Overwrite one package's directory with another's "
+"file\n"
+"  remove-reinstreq [!]   Remove packages which require installation\n"
+"  remove-essential [!]   Remove an essential package\n"
+"\n"
+"WARNING - use of options marked [!] can seriously damage your installation.\n"
+"Forcing options marked [*] are enabled by default.\n"
+msgstr ""
+"options de forçage de dpkg - contrôlent le comportement en cas de "
+"problèmes:\n"
+"  avertir mais continuer: --force-<option>,<option>,...\n"
+"  sortir en erreur:       --refuse-<option>,<option>,... | "
+"--no-force-<option>,...\n"
+" Options de forçage:\n"
+"  auto-select [*]        (Dé)sélectionner les paquets Ã  installer "
+"(supprimer)\n"
+"  dowgrade [*]           Remplacer un paquet avec une version inférieure\n"
+"  configure-any          Configurer tous les paquets en rapport\n"
+"  hold                   Traiter même les paquets suspendus\n"
+"  bad-path               Programmes non-visibles par la variable PATH et "
+"similaire\n"
+"  not-root               Tenter de (dé)installer même sans Ãªtre root\n"
+"  overwrite [*]          Remplacer un fichier d'un paquet par celui d'un "
+"autre\n"
+"  overwrite-diverted     Remplacer un fichier détourné avec une version "
+"non-détournée\n"
+"  depends-version [!]    Changer les problèmes de dépendance de version en "
+"avertissements\n"
+"  depends [!]            Changer tous les problèmes de dépendance en "
+"avertissements\n"
+"  conflicts [!]          Autoriser l'installation de paquets conflictuels\n"
+"  architecture [!]       Traiter même les paquets d'une autre architecture\n"
+"  overwrite-dir [!]      Remplacer un répertoire d'un paquet par le fichier "
+"d'un autre\n"
+"  remove-reinstreq [!]   Supprimer les paquets requierant une installation\n"
+"  remove-essential [!]   Supprimer un paquet essentiel\n"
+"\n"
+"AVERTISSEMENT - utiliser une option marquée [!] peut sérieusement endommager "
+"votre installation.\n"
+"Les options de forçage marquées [*] sont activées par défaut.\n"
+
+#: main/main.c:277
+#, c-format
+msgid "unknown force/refuse option `%.*s'"
+msgstr "option de forçage `%.*s' inconnue"
+
+#: main/main.c:353
+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
+msgid "need an action option"
+msgstr "manque une option d'action"
+
+#: main/packages.c:79
+#, c-format
+msgid "--%s --pending does not take any non-option arguments"
+msgstr "--%s --pending ne prend pas d'argument non-optionnel"
+
+#: main/packages.c:116
+msgid ""
+"you must specify packages by their own names, not by quoting the names of "
+"the files they come in"
+msgstr ""
+"vous devez spécifier les paquets par leurs noms, et non par les noms des "
+"fichiers qui les contiennent"
+
+#: main/packages.c:150
+#, c-format
+msgid "Package %s listed more than once, only processing once.\n"
+msgstr "Paquet %s listé plus d'un fois, traité une seule fois.\n"
+
+#: main/packages.c:154
+#, c-format
+msgid ""
+"More than one copy of package %s has been unpacked\n"
+" in this run !  Only configuring it once.\n"
+msgstr ""
+"Plus d'une copie du paquet %s ont Ã©té dépaquetées\n"
+" dans ce traitement ! Configuration d'un seul.\n"
+
+#: main/packages.c:264 main/packages.c:308 main/packages.c:321
+msgid "  Package "
+msgstr "  Paquet "
+
+#: main/packages.c:267 main/packages.c:311 main/packages.c:324
+msgid " which provides "
+msgstr " qui fourni "
+
+#: main/packages.c:270
+msgid " is to be removed.\n"
+msgstr " doit Ãªtre supprimé.\n"
+
+#: main/packages.c:282
+msgid "  Version of "
+msgstr "  version de "
+
+#: main/packages.c:284
+msgid " on system is "
+msgstr " sur le système est "
+
+#: main/packages.c:304
+#, c-format
+msgid "dpkg: also configuring `%s' (required by `%s')\n"
+msgstr "dpkg: configuration aussi de `%s' (requis par `%s')\n"
+
+#: main/packages.c:314
+msgid " is not configured yet.\n"
+msgstr " n'est pas encore configuré.\n"
+
+#: main/packages.c:327
+msgid " is not installed.\n"
+msgstr " n'est pas installé.\n"
+
+#. Don't print the line about the package to be removed if
+#. * that's the only line.
+#.
+#: main/packages.c:392
+msgid "; however:\n"
+msgstr "; malgré tout:\n"
+
+#: main/processarc.c:105
+msgid "cannot access archive"
+msgstr "ne peut pas accéder Ã  l'archive"
+
+#: main/processarc.c:115
+#, c-format
+msgid "error ensuring `%.250s' doesn't exist"
+msgstr "erreur en considérant que `%.250s' n'existe pas"
+
+#: main/processarc.c:120
+msgid "failed to exec dpkg-split to see if it's part of a multiparter"
+msgstr ""
+"échec pour exécuter dpkg-split pour voir si c'est une partie d'un fichier "
+"découpé"
+
+#: main/processarc.c:123
+msgid "wait for dpkg-split failed"
+msgstr "attente de l'échec de dpkg-split"
+
+#: main/processarc.c:144
+msgid "unable to get unique filename for control info"
+msgstr ""
+"impossible d'obtenir un nom de fichier unique pour les informations de "
+"contrôle"
+
+#: main/processarc.c:166
+msgid "failed to exec dpkg-deb to extract control information"
+msgstr ""
+"échec pour exécuter dpkg-deb pour extraire les informations de contrôle"
+
+#: main/processarc.c:180
+#, c-format
+msgid "Recorded info about %s from %s.\n"
+msgstr "Enregistrement de l'information sur %s de %s.\n"
+
+#: main/processarc.c:189
+#, c-format
+msgid "package architecture (%s) does not match system (%s)"
+msgstr "l'architecture du paquet (%s) ne correspond pas celle du système (%s)"
+
+#: main/processarc.c:206
+#, c-format
+msgid "Selecting previously deselected package %s.\n"
+msgstr "Sélection du paquet %s précédemment déselectionné.\n"
+
+#: main/processarc.c:209
+#, c-format
+msgid "Skipping deselected package %s.\n"
+msgstr "Paquet déselectionné %s ignoré.\n"
+
+#: main/processarc.c:220
+#, c-format
+msgid "dpkg - warning: downgrading %.250s from %.250s to %.250s.\n"
+msgstr ""
+"dpkg - avertissement: %.250s mis Ã  jour de %.250s vers l'ancienne %.250s.\n"
+
+#: main/processarc.c:225
+#, c-format
+msgid "Will not downgrade %.250s from version %.250s to %.250s, skipping.\n"
+msgstr ""
+"Mise Ã  jour de %.250s de la version %.250s vers l'ancienne %.250s ignorée.\n"
+
+#: main/processarc.c:235
+#, c-format
+msgid "Version %.250s of %.250s already installed, skipping.\n"
+msgstr "Version %.250s de %.250s déjà installée, paquet ignoré.\n"
+
+#: main/processarc.c:268
+#, c-format
+msgid ""
+"dpkg: regarding %s containing %s, pre-dependency problem:\n"
+"%s"
+msgstr ""
+"dpkg: concernant %s contenant %s, problème de pré-dépendance:\n"
+"%s"
+
+#: main/processarc.c:271
+#, c-format
+msgid "pre-dependency problem - not installing %.250s"
+msgstr "problème de pré-dépendance - %.250s non installé"
+
+#: main/processarc.c:272
+msgid "dpkg: warning - ignoring pre-dependency problem !\n"
+msgstr "dpkg: avertissement - problème de pré-dépendance ignoré !\n"
+
+#: main/processarc.c:286
+#, c-format
+msgid "Preparing to replace %s %s (using %s) ...\n"
+msgstr "Préparation de la mise Ã  jour de %s %s (en utilisant %s) ...\n"
+
+#: main/processarc.c:291
+#, c-format
+msgid "Unpacking %s (from %s) ...\n"
+msgstr "Dépaquetage de %s (à partir de %s) ...\n"
+
+#: main/processarc.c:311
+#, c-format
+msgid "name of conffile (starting `%.250s') is too long (>%d characters)"
+msgstr ""
+"le nom du fichier de configuration (commençant par `%.250s') est trop long "
+"(>%d caractères)"
+
+#: main/processarc.c:365
+#, c-format
+msgid "read error in %.250s"
+msgstr "erreur de lecture dans %.250s"
+
+#. conff= fopen()
+#: main/processarc.c:367
+#, c-format
+msgid "error closing %.250s"
+msgstr "erreur de fermeture de %.250s"
+
+#: main/processarc.c:369
+#, c-format
+msgid "error trying to open %.250s"
+msgstr "erreur en essayant d'ouvrir %.250s"
+
+#: main/processarc.c:401
+#, c-format
+msgid "De-configuring %s, so that we can remove %s ...\n"
+msgstr "Déconfiguration de %s, pour pouvoir supprimer %s ...\n"
+
+#: main/processarc.c:458
+#, c-format
+msgid "Unpacking replacement %.250s ...\n"
+msgstr "Dépaquetage de la mise Ã  jour de %.250s ...\n"
+
+#: main/processarc.c:534
+msgid "unable to exec dpkg-deb to get filesystem archive"
+msgstr ""
+"impossible d'exécuter dpkg-deb pour obtenir l'archive du système de fichiers"
+
+#: main/processarc.c:542
+msgid "unable to fdopen dpkg-deb extract pipe"
+msgstr "impossible de \"fdopen\" le tube d'extraction de dpkg-deb"
+
+#: main/processarc.c:548
+msgid "error reading dpkg-deb tar output"
+msgstr "erreur en lisant la sortie du \"tar\" de dpkg-deb"
+
+#: main/processarc.c:551
+msgid "unexpected EOF in filesystem tarfile - corrupted package archive"
+msgstr ""
+"EOF inattendu dans l'archive du système de fichiers - archive du paquet "
+"corrompue"
+
+#: main/processarc.c:553
+msgid "corrupted filesystem tarfile - corrupted package archive"
+msgstr "archive du système de fichiers corrompue - archive du paquet corrompue"
+
+#: main/processarc.c:610
+#, c-format
+msgid "dpkg: warning - unable to delete old file `%.250s': %s\n"
+msgstr ""
+"dpkg: avertissement - impossible de supprimer le fichier `%.250s': %s\n"
+
+#: main/processarc.c:632 main/processarc.c:867 main/remove.c:287
+msgid "cannot read info directory"
+msgstr "ne peut pas lire le répertoire d'informations"
+
+#: main/processarc.c:645
+#, c-format
+msgid "old version of package has overly-long info file name starting `%.250s'"
+msgstr ""
+"l'ancienne version du paquet a un nom de fichier d'information commençant "
+"par `%.250s' trop long"
+
+#: main/processarc.c:657
+#, c-format
+msgid "unable to remove obsolete info file `%.250s'"
+msgstr "impossible de supprimer le fichier d'information obsolète `%.250s'"
+
+#: main/processarc.c:660
+#, c-format
+msgid "unable to install (supposed) new info file `%.250s'"
+msgstr ""
+"impossible d'installer le (supposé) nouveau fichier d'information `%.250s'"
+
+#: main/processarc.c:667
+msgid "unable to open temp control directory"
+msgstr "impossible d'ouvrir le répertoire de contrôle temporaire"
+
+#: main/processarc.c:676
+#, c-format
+msgid "package contains overly-long control info file name (starting `%.50s')"
+msgstr ""
+"le paquet contient un nom de fichier de contrôle trop long (commençant par "
+"`%.50s')"
+
+#: main/processarc.c:681
+#, c-format
+msgid "package control info contained directory `%.250s'"
+msgstr "l'information de contrôle du paquet contient le répertoire `%.250s'"
+
+#: main/processarc.c:683
+#, c-format
+msgid "package control info rmdir of `%.250s' didn't say not a dir"
+msgstr ""
+"l'information de contrôle du paquet \"rmdir\" de `%.250s' ne dit pas que ce "
+"n'est pas un répertoire"
+
+#: main/processarc.c:689
+#, c-format
+msgid "dpkg: warning - package %s contained list as info file"
+msgstr ""
+"dpkg: avertissement - le paquet %s contient une liste comme fichier "
+"d'information"
+
+#: main/processarc.c:696
+#, c-format
+msgid "unable to install new info file `%.250s' as `%.250s'"
+msgstr ""
+"impossible d'installer le nouveau fichier d'information `%.250s' comme "
+"`%.250s'"
+
+#: main/processarc.c:847
+#, c-format
+msgid "(Noting disappearance of %s, which has been completely replaced.)\n"
+msgstr "(A noter la disparition de %s, qui a Ã©té complètement remplacé.)\n"
+
+#: main/processarc.c:883
+#, c-format
+msgid "unable to delete disappearing control info file `%.250s'"
+msgstr ""
+"impossible de supprimer le fichier d'information de contrôle disparu `%.250s'"
+
+#: main/remove.c:78
+#, c-format
+msgid ""
+"dpkg - warning: ignoring request to remove %.250s which isn't installed.\n"
+msgstr ""
+"dpkg - avertissement: requête pour supprimer %.250s qui n'a pas Ã©té installé "
+"ignorée.\n"
+
+#: main/remove.c:86
+#, c-format
+msgid ""
+"dpkg - warning: ignoring request to remove %.250s, only the config\n"
+" files of which are on the system.  Use --purge to remove them too.\n"
+msgstr ""
+"dpkg - avertissement: requête pour supprimer %.250s ignorée, seuls les "
+"fichiers\n"
+"de configuration sont installés. Utiliser --purge pour les supprimer aussi.\n"
+
+#: main/remove.c:95
+msgid "This is an essential package - it should not be removed."
+msgstr "C'est un paquet essentiel - il ne doit pas Ãªtre supprimé."
+
+#: main/remove.c:121
+#, c-format
+msgid ""
+"dpkg: dependency problems prevent removal of %s:\n"
+"%s"
+msgstr ""
+"dpkg: un problème de dépendance empêche la suppression de %s:\n"
+"%s"
+
+#: main/remove.c:123
+msgid "dependency problems - not removing"
+msgstr "problème de dépendance - suppression ignorée"
+
+#: main/remove.c:127
+#, c-format
+msgid ""
+"dpkg: %s: dependency problems, but removing anyway as you request:\n"
+"%s"
+msgstr ""
+"dpkg: %s: problème de dépendance, mais suppression comme demandé:\n"
+"%s"
+
+#: main/remove.c:135
+msgid ""
+"Package is in a very bad inconsistent state - you should\n"
+" reinstall it before attempting a removal."
+msgstr ""
+"Paquet dans un très mauvais Ã©tat d'inconsistance - vous devriez\n"
+" le réinstaller avant d'essayer de le supprimer."
+
+#: main/remove.c:142
+#, c-format
+msgid "Would remove or purge %s ...\n"
+msgstr "Devrait supprimer ou purger %s ...\n"
+
+#: main/remove.c:150
+#, c-format
+msgid "Removing %s ...\n"
+msgstr "Suppression de %s ...\n"
+
+#: main/remove.c:246
+#, c-format
+msgid ""
+"dpkg - warning: while removing %.250s, directory `%.250s' not empty so not "
+"removed.\n"
+msgstr ""
+"dpkg: avertissement: lors de la suppression de %.250s, le répertoire "
+"`%.250s' n'était pas vide, donc il n'a pas Ã©té supprimé.\n"
+
+#: main/remove.c:252
+#, c-format
+msgid ""
+"dpkg - warning: while removing %.250s, unable to remove directory `%.250s': "
+"%s - directory may be a mount point ?\n"
+msgstr ""
+"dpkg: avertissement: lors de la suppression de %.250s, impossible de retirer "
+"`%.250s': %s - le répertoire est peut-être un point de montage ?\n"
+
+#: main/remove.c:259
+#, c-format
+msgid "cannot remove `%.250s'"
+msgstr "ne peut pas retirer %.250s'"
+
+#: main/remove.c:277
+#, c-format
+msgid "cannot remove file `%.250s'"
+msgstr "ne peut pas retirer le fichier %.250s'"
+
+#: main/remove.c:308
+#, c-format
+msgid "unable to delete control info file `%.250s'"
+msgstr "impossible de supprimer le fichier d'information de contrôle `%.250s'"
+
+#: main/remove.c:323
+#, c-format
+msgid "unable to check existence of `%.250s'"
+msgstr "impossible de vérifier l'existence de `%.250s'"
+
+#: main/remove.c:338
+#, c-format
+msgid "Purging configuration files for %s ...\n"
+msgstr "Purge des fichiers de configuration de %s ...\n"
+
+#: main/remove.c:382
+#, c-format
+msgid "cannot remove old config file `%.250s' (= `%.250s')"
+msgstr ""
+"ne peut pas supprimer l'ancien fichier de configuration `%.250s' (= `%.250s')"
+
+#: main/remove.c:397
+#, c-format
+msgid "cannot read config file dir `%.250s' (from `%.250s')"
+msgstr ""
+"ne peut pas lire le répertoire de fichier de configuration `%.250s' (from "
+"`%.250s')"
+
+#: main/remove.c:432
+#, c-format
+msgid "cannot remove old backup config file `%.250s' (of `%.250s')"
+msgstr ""
+"ne peut pas supprimer l'ancien fichier de configuration de secours `%.250s' "
+"(de `%.250s')"
+
+#: main/remove.c:461
+msgid "cannot remove old files list"
+msgstr "ne peut pas supprimer la liste des anciens fichiers"
+
+#: main/remove.c:467
+msgid "can't remove old postrm script"
+msgstr "ne peut pas supprimer l'ancien script \"postrm\""
+
+#: main/select.c:95
+msgid "--set-selections does not take any argument"
+msgstr "--set-selections ne prend aucun argument"
+
+#: main/select.c:114
+#, c-format
+msgid "unexpected eof in package name at line %d"
+msgstr "EOF inattendu dans le nom de paquet Ã  la ligne %d"
+
+#: main/select.c:115
+#, c-format
+msgid "unexpected end of line in package name at line %d"
+msgstr "fin de ligne inattendu dans le nom de paquet Ã  la ligne %d"
+
+#: main/select.c:119
+#, c-format
+msgid "unexpected eof after package name at line %d"
+msgstr "EOF inattendu après le nom de paquet Ã  la ligne %d"
+
+#: main/select.c:120
+#, c-format
+msgid "unexpected end of line after package name at line %d"
+msgstr "fin de ligne inattendu après le nom de paquet Ã  la ligne %d"
+
+#: main/select.c:129
+#, c-format
+msgid "unexpected data after package and selection at line %d"
+msgstr "donnée inattendu après le paquet et la sélection Ã  la ligne %d"
+
+#: main/select.c:134
+#, c-format
+msgid "illegal package name at line %d: %.250s"
+msgstr "nom de paquet illégal Ã  la ligne %d: %.250s"
+
+#: main/select.c:136
+#, c-format
+msgid "unknown wanted status at line %d: %.250s"
+msgstr "état désiré inconnu Ã  la ligne %d: %.250s"
+
+#: main/select.c:142
+msgid "read error on standard input"
+msgstr "erreur de lecture sur l'entrée standard"
+
+#: main/update.c:44
+#, c-format
+msgid "--%s takes no arguments"
+msgstr "-%s ne prend pas d'arguments"
+
+#: main/update.c:48
+#, c-format
+msgid "--%s needs exactly one Packages file argument"
+msgstr "--%s a besoin exactement d'un fichier \"Packages\""
+
+#: main/update.c:57
+msgid "unable to access dpkg status area for bulk available update"
+msgstr ""
+"impossible d'accéder Ã  l'aire des Ã©tats de dpkg pour une mise Ã  jour en masse"
+
+#: main/update.c:59
+msgid "bulk available update requires write access to dpkg status area"
+msgstr ""
+"une mise Ã  jour en masse requiert un accès en Ã©criture dans l'aire des Ã©tats "
+"de dpkg"
+
+#: main/update.c:66
+#, c-format
+msgid "Replacing available packages info, using %s.\n"
+msgstr ""
+"Remplacement de l'information sur les paquets disponibles, en utilisant %s.\n"
+
+#: main/update.c:69
+#, c-format
+msgid "Updating available packages info, using %s.\n"
+msgstr ""
+"Mise Ã  jour de l'information sur les paquets disponibles, en utilisant %s.\n"
+
+#: main/update.c:93
+#, c-format
+msgid "Information about %d package(s) was updated.\n"
+msgstr "L'information sur %d paquet(s) a Ã©té mise Ã  jour.\n"
+
+#: main/update.c:101
+msgid "--forget-old-unavail takes no arguments"
+msgstr "--forget-old-unavail ne prend pas d'arguments"
+
+#: dpkg-deb/build.c:50
+#, c-format
+msgid "dpkg-deb - error: %s (`%s') doesn't contain any digits\n"
+msgstr "dpkg-deb - erreur: %s (`%s') ne contient pas de chiffres\n"
+
+#: dpkg-deb/build.c:72
+msgid "--build needs a directory argument"
+msgstr "--build a besoin d'un répertoire comme argument"
+
+#: dpkg-deb/build.c:75
+msgid "--build takes at most two arguments"
+msgstr "--build prend au plus deux arguments"
+
+#: dpkg-deb/build.c:79
+#, c-format
+msgid "unable to check for existence of archive `%.250s'"
+msgstr "impossible de vérifier l'existence de l'archive `%.250s'"
+
+#: dpkg-deb/build.c:92
+msgid "target is directory - cannot skip control file check"
+msgstr ""
+"la cible est un répertoire - ne peut pas ignorer la vérification du fichier "
+"\"control\""
+
+#: dpkg-deb/build.c:93
+#, c-format
+msgid ""
+"dpkg-deb: warning, not checking contents of control area.\n"
+"dpkg-deb: building an unknown package in `%s'.\n"
+msgstr ""
+"dpkg-deb: avertissement, non vérification du contenu de l'aire de contrôle.\n"
+"dpkg-deb: construction d'un paquet inconnu dans `%s'.\n"
+
+#: dpkg-deb/build.c:110
+msgid "package name has characters that aren't lowercase alphanums or `-+.'"
+msgstr ""
+"le nom de paquet possède des caractères qui ne sont pas des minuscule "
+"alphanums ou `-+.'"
+
+#: dpkg-deb/build.c:112
+#, c-format
+msgid "warning, `%s' contains user-defined Priority value `%s'\n"
+msgstr ""
+"avertissement, `%s' contient une valeur \"Priority\" `%s' non conforme\n"
+
+#: dpkg-deb/build.c:117
+#, c-format
+msgid "warning, `%s' contains user-defined field `%s'\n"
+msgstr "avertissement, `%s' contient le champ `%s' non conforme\n"
+
+#: dpkg-deb/build.c:123
+#, c-format
+msgid "%d errors in control file"
+msgstr "%d erreurs dans le fichier \"control\""
+
+#: dpkg-deb/build.c:134
+#, c-format
+msgid "dpkg-deb: building package `%s' in `%s'.\n"
+msgstr "dpkg-deb: construction du paquet `%s' dans `%s'.\n"
+
+#: dpkg-deb/build.c:141
+#, c-format
+msgid "control directory has bad permissions %03lo (must be >=0755 and <=0775)"
+msgstr ""
+"le répertoire de contrôle possède de mauvaises permissions %03lo (doit Ãªtre "
+">=0755 et <=0775)"
+
+#: dpkg-deb/build.c:152
+#, c-format
+msgid "maintainer script `%.50s' is not a plain file or symlink"
+msgstr "le script `%.50s' du responsable n'est pas un vrai fichier ou lien"
+
+#: dpkg-deb/build.c:154
+#, c-format
+msgid ""
+"maintainer script `%.50s' has bad permissions %03lo (must be >=0555 and "
+"<=0775)"
+msgstr ""
+"le script `%.50s' du responsable possède de mauvaises permissions %03lo "
+"(doit Ãªtre >=0755 et <=0775)"
+
+#: dpkg-deb/build.c:158
+#, c-format
+msgid "maintainer script `%.50s' is not stattable"
+msgstr "le script `%.50s' du responsable n'est pas \"stattable\""
+
+#: dpkg-deb/build.c:167
+msgid "empty string from fgets reading conffiles"
+msgstr ""
+"\"fgets\" renvoie une chaine vide en lisant les fichiers de configuration"
+
+#: dpkg-deb/build.c:169
+#, fuzzy, c-format
+msgid ""
+"warning, conffile name `%.50s...' is too long, or missing final newline\n"
+msgstr ""
+"avertissement, le nom du fichier de configuration `%.50s...' est trop long"
+
+#: dpkg-deb/build.c:181
+#, c-format
+msgid "conffile `%.250s' does not appear in package"
+msgstr "le fichier de configuration `%.250s' n'apparaît pas dans le paquet"
+
+#: dpkg-deb/build.c:183
+#, c-format
+msgid "conffile `%.250s' is not stattable"
+msgstr "le fichier de configuration `%.250s' n'est pas \"stattable\""
+
+#: dpkg-deb/build.c:185
+#, c-format
+msgid "warning, conffile `%s' is not a plain file\n"
+msgstr ""
+"avertissement, le fichier de configuration `%s' n'est pas un vrai fichier\n"
+
+#: dpkg-deb/build.c:190
+msgid "error reading conffiles file"
+msgstr "erreur en lisant un fichier de configuration"
+
+#: dpkg-deb/build.c:193
+msgid "error opening conffiles file"
+msgstr "erreur en ouvrant un fichier de configuration"
+
+#: dpkg-deb/build.c:196
+#, c-format
+msgid "dpkg-deb: ignoring %d warnings about the control file(s)\n"
+msgstr "dpkg-deb: %d avertissements sur les fichiers \"control\" ignorés\n"
+
+#: dpkg-deb/build.c:202
+#, c-format
+msgid "unable to create `%.255s'"
+msgstr "impossible de créer `%.255s'"
+
+#: dpkg-deb/build.c:203
+#, c-format
+msgid "unable to unbuffer `%.255s'"
+msgstr "impossible de \"unbuffer\" `%.255s'"
+
+#: dpkg-deb/build.c:207 dpkg-deb/build.c:254
+#, c-format
+msgid "failed to chdir to `%.255s'"
+msgstr "échec pour changer de répertoire vers `%.255s'"
+
+#: dpkg-deb/build.c:208
+msgid "failed to chdir to .../DEBIAN"
+msgstr "échec pour changer de répertoire vers .../DEBIAN"
+
+#: dpkg-deb/build.c:209
+msgid "failed to exec tar -cf"
+msgstr "échec pour exécuter \"tar -cf\""
+
+#: dpkg-deb/build.c:212
+msgid "failed to make tmpfile (control)"
+msgstr "échec pour créer un fichier temporaire (\"control\")"
+
+#: dpkg-deb/build.c:215
+msgid "failed to exec gzip -9c"
+msgstr "échec pour exécuter \"gzip -9c\""
+
+#: dpkg-deb/build.c:220
+msgid "failed to fstat tmpfile (control)"
+msgstr "échec pour \"fstat\" un fichier temporaire (\"control\")"
+
+#: dpkg-deb/build.c:240
+msgid "failed to rewind tmpfile (control)"
+msgstr "échec pour \"rewind\" un fichier temporaire (\"control\")"
+
+#: dpkg-deb/build.c:243
+msgid "failed to exec cat (control)"
+msgstr "échec pour exécuter \"cat\" (\"control\")"
+
+#: dpkg-deb/build.c:249
+msgid "failed to make tmpfile (data)"
+msgstr "échec pour créer un fichier temporaire (\"data\")"
+
+#: dpkg-deb/build.c:256
+msgid "failed to exec tar --exclude"
+msgstr "échec pour exécuter \"tar --exclude\""
+
+#: dpkg-deb/build.c:263
+msgid "failed to exec gzip -9c from tar --exclude"
+msgstr "échec pour exécuter \"gzip -9c\" de \"tar --exclude\""
+
+#: dpkg-deb/build.c:278
+msgid "failed to rewind tmpfile (data)"
+msgstr "échec pour \"rewind\" un fichier temporaire (\"data\")"
+
+#: dpkg-deb/build.c:281
+msgid "failed to exec cat (data)"
+msgstr "échec pour exécuter \"cat\" (\"data\")"
+
+#: dpkg-deb/extract.c:48
+msgid "failed to exec sh -c mv foo/* &c"
+msgstr "échec pour exécuter \"sh -c mv foo/* &c\""
+
+#: dpkg-deb/extract.c:55
+#, c-format
+msgid "error reading %s from %.255s"
+msgstr "erreur en lisant %s de %.255s"
+
+#: dpkg-deb/extract.c:57
+#, c-format
+msgid "unexpected end of file in %s in %.255s"
+msgstr "fin de fichier inattendu dans %s dans %.255s"
+
+#: dpkg-deb/extract.c:68 split/info.c:52
+#, c-format
+msgid "file `%.250s' is corrupt - %.250s length contains nulls"
+msgstr "le fichier `%.250s' est corrompu - %.250s long contient \"nulls\""
+
+#: dpkg-deb/extract.c:75 split/info.c:43
+#, c-format
+msgid "file `%.250s' is corrupt - bad digit (code %d) in %s"
+msgstr "le fichier `%.250s' est corrompu - mauvais chiffre (code %d) dans %s"
+
+#: dpkg-deb/extract.c:109
+#, c-format
+msgid "failed to read archive `%.255s'"
+msgstr "échec pour lire l'archive `%.255s'"
+
+#: dpkg-deb/extract.c:110
+msgid "failed to fstat archive"
+msgstr "échec pour \"fstat\" l'archive"
+
+#: dpkg-deb/extract.c:122 split/info.c:93
+#, c-format
+msgid "file `%.250s' is corrupt - bad magic at end of first header"
+msgstr ""
+"le fichier `%.250s' est corrompu - mauvais \"magic\" Ã  la fin du premier "
+"en-tête"
+
+#: dpkg-deb/extract.c:126
+#, c-format
+msgid "file `%.250s' is corrupt - negative member length %ld"
+msgstr "le fichier `%.250s' est corrompu - longueur de membre négative %ld"
+
+#: dpkg-deb/extract.c:129
+#, c-format
+msgid "file `%.250s' is not a debian binary archive (try dpkg-split?)"
+msgstr ""
+"le fichier `%.250s n'est pas une archive binaire debian (essayer dpkg-split?)"
+
+#: dpkg-deb/extract.c:135
+msgid "archive has no newlines in header"
+msgstr "l'archive n'a pas de saut de ligne dans l'en-tête"
+
+#: dpkg-deb/extract.c:138
+msgid "archive has no dot in version number"
+msgstr "l'archive n'a pas de point dans le nombre de la version"
+
+#: dpkg-deb/extract.c:141
+#, c-format
+msgid "archive version %.250s not understood, get newer dpkg-deb"
+msgstr ""
+"version %.250s de l'archive non comprise, récupérer dpkg-deb plus récent"
+
+#: dpkg-deb/extract.c:157
+#, c-format
+msgid "file `%.250s' contains ununderstood data member %.*s, giving up"
+msgstr ""
+"le fichier `%.250s' contient un membre données non compris (%.*s), abandon"
+
+#: dpkg-deb/extract.c:162
+#, c-format
+msgid "file `%.250s' contains two control members, giving up"
+msgstr "le fichier `%.250s' contient deux membres, abandon"
+
+#: dpkg-deb/extract.c:174
+#, c-format
+msgid ""
+" new debian package, version %s.\n"
+" size %ld bytes: control archive= %ld bytes.\n"
+msgstr ""
+" nouveau paquet debian, version %s.\n"
+" taille %ld octets: archive de contrôle= %ld octets.\n"
+
+#: dpkg-deb/extract.c:188
+#, c-format
+msgid "archive has malformatted ctrl len `%s'"
+msgstr "l'archive possède une \"ctrl len\" `%s' mal-formée"
+
+#: dpkg-deb/extract.c:191
+#, c-format
+msgid ""
+" old debian package, version %s.\n"
+" size %ld bytes: control archive= %ld, main archive= %ld.\n"
+msgstr ""
+" ancien paquet debian, version %s.\n"
+" taille %ld octets: archive de contrôle= %ld, archive principale= %ld.\n"
+
+#: dpkg-deb/extract.c:206
+msgid ""
+"dpkg-deb: file looks like it might be an archive which has been\n"
+"dpkg-deb:    corrupted by being downloaded in ASCII mode\n"
+msgstr ""
+"dpkg-deb: le fichier ressemble apparemment Ã  une archive ayant Ã©té\n"
+"dpkg-deb:    corrompue par un téléchargement en mode ASCII\n"
+
+#: dpkg-deb/extract.c:211
+#, c-format
+msgid "`%.255s' is not a debian format archive"
+msgstr "`%.255s' n'est pas une archive de format debian"
+
+#: dpkg-deb/extract.c:216
+#, fuzzy
+msgid "fgetpos failed"
+msgstr "échec de \"fork\""
+
+#: dpkg-deb/extract.c:220
+#, fuzzy
+msgid "fsetpos failed"
+msgstr "échec de \"fork\""
+
+#: dpkg-deb/extract.c:227
+msgid "failed to fdopen p1 in paste"
+msgstr "échec pour \"fdopen p1 in paste\""
+
+#: dpkg-deb/extract.c:229
+msgid "failed to write to gzip -dc"
+msgstr "échec pour Ã©crire vers \"gzip -dc\""
+
+#: dpkg-deb/extract.c:230
+msgid "failed to close gzip -dc"
+msgstr "échec pour fermer \"gzip -dc\""
+
+#: dpkg-deb/extract.c:237
+msgid "failed to syscall lseek to files archive portion"
+msgstr "échec pour \"syscall lseek\" vers la portion d'archive des fichiers"
+
+#: dpkg-deb/extract.c:245
+msgid "failed to fdopen p1 in copy"
+msgstr "échec pour \"fdopen p1 in copy\""
+
+#: dpkg-deb/extract.c:248
+msgid "failed to write to pipe in copy"
+msgstr "échec pour Ã©crire dans le tube en copie"
+
+#: dpkg-deb/extract.c:251
+msgid "failed to close pipe in copy"
+msgstr "échec pour fermer le tube en copie"
+
+#: dpkg-deb/extract.c:264
+msgid "failed to exec gzip -dc"
+msgstr "échec pour exécuter \"gzip -dc\""
+
+#: dpkg-deb/extract.c:272
+msgid "failed to create directory"
+msgstr "échec pour créer le répertoire"
+
+#: dpkg-deb/extract.c:273
+msgid "failed to chdir to directory after creating it"
+msgstr "échec pour changer vers le répertoire après l'avoir créer"
+
+#: dpkg-deb/extract.c:275
+msgid "failed to chdir to directory"
+msgstr "échec pour changer vers le répertoire"
+
+#: dpkg-deb/extract.c:288
+msgid "failed to exec tar"
+msgstr "échec pour exécuter \"tar\""
+
+#: dpkg-deb/extract.c:311 dpkg-deb/extract.c:326 dpkg-deb/info.c:66
+#, c-format
+msgid "--%s needs a .deb filename argument"
+msgstr "--%s a besoin d'un fichier .deb comme argument"
+
+#: dpkg-deb/extract.c:314
+#, c-format
+msgid ""
+"--%s needs a target directory.\n"
+"Perhaps you should be using dpkg --install ?"
+msgstr ""
+"--%s a besoin d'un répertoire cible.\n"
+"Peut-être devriez-vous utiliser dpkg --install ?"
+
+#: dpkg-deb/extract.c:317
+#, c-format
+msgid "--%s takes at most two arguments (.deb and directory"
+msgstr "--%s a besoin au plus de deux arguments (.deb et répertoire"
+
+#: dpkg-deb/extract.c:328
+#, c-format
+msgid "--%s takes only one argument (.deb filename)"
+msgstr "--%s a besoin seulement d'un argument (nom de fichier .deb)"
+
+#: dpkg-deb/info.c:47
+msgid "failed to chdir to `/' for cleanup"
+msgstr "échec pour changer de répertoire vers `/' pour nettoyage"
+
+#: dpkg-deb/info.c:49
+msgid "failed to fork for cleanup"
+msgstr "échec du \"fork\" pour nettoyage"
+
+#: dpkg-deb/info.c:54
+msgid "failed to wait for rm cleanup"
+msgstr "échec du \"wait\" pour nettoyage par \"rm\""
+
+#: dpkg-deb/info.c:55
+#, c-format
+msgid "rm cleanup failed, code %d\n"
+msgstr "échec du nettoyage par \"rm\", code %d\n"
+
+#: dpkg-deb/info.c:67
+msgid "failed to make temporary filename"
+msgstr "échec pour créer un nom de fichier temporaire"
+
+#: dpkg-deb/info.c:71
+msgid "failed to exec rm -rf"
+msgstr "échec pour exécuter \"rm -rf\""
+
+#: dpkg-deb/info.c:94
+msgid "failed to exec cat component"
+msgstr "échec pour exécuter \"cat\" composant"
+
+#: dpkg-deb/info.c:98
+#, c-format
+msgid "dpkg-deb: `%.255s' contains no control component `%.255s'\n"
+msgstr "dpkg-deb: `%.255s' ne contient pas de composant de contrôle `%.255s'\n"
+
+#: dpkg-deb/info.c:102
+#, c-format
+msgid "open component `%.255s' (in %.255s) failed in an unexpected way"
+msgstr ""
+"échec de l'ouverture du composant `%.255s' (dans %.255s) d'une manière "
+"inattendue"
+
+#: dpkg-deb/info.c:106
+msgid "at least one requested control component missing"
+msgstr "au moins un composant de contrôle nécessaire manque"
+
+#: dpkg-deb/info.c:119
+#, c-format
+msgid "cannot scan directory `%.255s'"
+msgstr "ne peut pas parcourir le répertoire `%.255s'"
+
+#: dpkg-deb/info.c:124
+#, c-format
+msgid "cannot stat `%.255s' (in `%.255s')"
+msgstr "ne peut pas \"stat\" `%.255s' (dans `%.255s')"
+
+#: dpkg-deb/info.c:127
+#, c-format
+msgid "cannot open `%.255s' (in `%.255s')"
+msgstr "ne peut pas ouvrir `%.255s' (dans `%.255s')"
+
+#: dpkg-deb/info.c:141
+#, c-format
+msgid "failed to read `%.255s' (in `%.255s')"
+msgstr "échec pour lire `%.255s' (dans `%.255s')"
+
+#: dpkg-deb/info.c:144
+#, c-format
+msgid " %7ld bytes, %5d lines   %c  %-20.127s %.127s\n"
+msgstr " %7ld octets, %5d lignes   %c  %-20.127s %.127s\n"
+
+#: dpkg-deb/info.c:150
+#, c-format
+msgid "     not a plain file          %.255s\n"
+msgstr "     pas un vrai fichier          %.255s\n"
+
+#: dpkg-deb/info.c:155
+#, c-format
+msgid "failed to read `control' (in `%.255s')"
+msgstr "échec pour lire `control' (dans `%.255s')"
+
+#: dpkg-deb/info.c:156
+msgid "(no `control' file in control archive!)\n"
+msgstr "(pas de fichier `control' dans l'archive de contrôle!)\n"
+
+#: dpkg-deb/info.c:176
+msgid "could not open the `control' component"
+msgstr "ne peut pas ouvrir le composant `control'"
+
+#: dpkg-deb/info.c:206
+msgid "failed during read of `control' component"
+msgstr "échec pendant la lecture du composant `control'"
+
+#: dpkg-deb/info.c:238
+msgid "--contents takes exactly one argument"
+msgstr "--contents prend exactement un argument"
+
+#: dpkg-deb/main.c:44
+msgid "Debian Linux `"
+msgstr "Debian Linux `"
+
+#: dpkg-deb/main.c:46
+msgid ""
+"Copyright (C) 1994-1996 Ian Jackson.  This is free software; see the\n"
+"GNU General Public Licence version 2 or later for copying conditions.\n"
+"There is NO warranty.  See dpkg-deb --licence for details.\n"
+msgstr ""
+"Copyright (C) 1994-1996 Ian Jackson.  Ceci est un logiciel libre; consulter\n"
+"la GNU General Public Licence version 2 ou supérieure pour les conditions "
+"de\n"
+"reproduction.  Il n'y a AUCUNE garantie. Consulter dpkg-deb --licence pour "
+"les détails.\n"
+
+#: dpkg-deb/main.c:53
+msgid ""
+"Usage: dpkg-deb -b|--build <directory> [<deb>]    Build an archive.\n"
+"       dpkg-deb -c|--contents <deb>               List contents.\n"
+"       dpkg-deb -I|--info <deb> [<cfile>...]      Show info to stdout.\n"
+"       dpkg-deb -f|--field <deb> [<cfield>...]    Show field(s) to stdout.\n"
+"       dpkg-deb -e|--control <deb> [<directory>]  Extract control info.\n"
+"       dpkg-deb -x|--extract <deb> <directory>    Extract files.\n"
+"       dpkg-deb -X|--vextract <deb> <directory>   Extract & list files.\n"
+"       dpkg-deb --fsys-tarfile <deb>              Output filesystem "
+"tarfile.\n"
+"       dpkg-deb -h|--help                         Display this message.\n"
+"       dpkg-deb --version | --licence             Show version/licence.\n"
+"<deb> is the filename of a Debian format archive.\n"
+"<cfile> is the name of an administrative file component.\n"
+"<cfield> is the name of a field in the main `control' file.\n"
+"Options:  -D for debugging output; --old or --new controls archive format;\n"
+"          --no-check to suppress control file check (build bad package).\n"
+"\n"
+"Use `dpkg' to install and remove packages from your system, or\n"
+"`dselect' for user-friendly package management.  Packages unpacked\n"
+"using `dpkg-deb --extract' will be incorrectly installed !\n"
+msgstr ""
+"Syntaxe:\n"
+"       dpkg-deb -b|--build <répertoire> [<deb>]   Construit une archive.\n"
+"       dpkg-deb -c|--contents <deb>               Liste le contenu.\n"
+"       dpkg-deb -I|--info <deb> [<cfile>...]      Affiche les informations "
+"sur la sortie standard.\n"
+"       dpkg-deb -f|--field <deb> [<cfield>...]    Affiche le(s) champ(s) sur "
+"la sortie standard.\n"
+"       dpkg-deb -e|--control <deb> [<répertoire>] Extrait l'information de "
+"contrôle.\n"
+"       dpkg-deb -x|--extract <deb> <répertoire>   Extrait les fichiers.\n"
+"       dpkg-deb -X|--vextract <deb> <répertoire>  Extrait et liste les "
+"fichiers.\n"
+"       dpkg-deb --fsys-tarfile <deb>              Sort le système de "
+"fichiers du fichier tar.\n"
+"       dpkg-deb -h|--help                         Affiche ce message.\n"
+"       dpkg-deb --version | --licence             Affiche la "
+"version/licence.\n"
+"<deb> est le nom de fichier d'une archive au format debian.\n"
+"<cfile> est le nom d'un composant fichier administratif.\n"
+"<cfield> est le nom d'un champ dans le fichier `control' principal.\n"
+"Options:  -D pour sortie de débogage; --old ou --new contrôle le format "
+"d'archive;\n"
+"          --no-check pour supprimer la vérification du fichier control "
+"(construit de mauvais paquet).\n"
+"\n"
+"Utiliser `dpkg' pour installer et supprimer des paquets de votre système, "
+"ou\n"
+"`dselect' pour une gestion des paquets conviviale.  Les paquets dépaquetés "
+"en\n"
+"utilisant `dpkg-deb --extract' seront incorrectement installés !\n"
+
+#: dpkg-deb/main.c:78
+msgid ""
+"Type dpkg-deb --help for help about manipulating *.deb files;\n"
+"Type dpkg --help for help about installing and deinstalling packages."
+msgstr ""
+"Taper dpkg-deb --help pour une aide Ã  propos de la manipulation des fichiers "
+"*.deb;\n"
+"Taper dpkg --help pour une aide sur l'installation et la désinstallation des "
+"paquets."
+
+#: split/info.c:64
+#, c-format
+msgid "file `%.250s' is corrupt - %.250s missing"
+msgstr "le fichier `%.250s' est corrompu - %.250s manquant"
+
+#: split/info.c:67
+#, c-format
+msgid "file `%.250s' is corrupt - missing newline after %.250s"
+msgstr "le fichier `%.250s' est corrompu - saut de ligne après %.250s manquant"
+
+#: split/info.c:89
+msgid "unable to seek back"
+msgstr "impossible de \"seek back\""
+
+#: split/info.c:103
+#, c-format
+msgid "file `%.250s' is corrupt - bad padding character (code %d)"
+msgstr ""
+"le fichier `%.250s' est corrompu - mauvais \"padding\" caractère (code %d)"
+
+#: split/info.c:107
+#, c-format
+msgid "file `%.250s' is corrupt - nulls in info section"
+msgstr "le fichier `%.250s' est corrompu - \"nulls\" dans la section info"
+
+#: split/info.c:114
+#, c-format
+msgid "file `%.250s' is format version `%.250s' - you need a newer dpkg-split"
+msgstr ""
+"le fichier `%.250s' est de format version `%.250s' - vous avez besoin d'un "
+"dpkg-split plus récent"
+
+#: split/info.c:122
+#, c-format
+msgid "file `%.250s' is corrupt - bad MD5 checksum `%.250s'"
+msgstr "le fichier `%.250s' est corrompu - mauvais MD5 checksum `%.250s'"
+
+#: split/info.c:129
+#, c-format
+msgid "file `%.250s' is corrupt - no slash between part numbers"
+msgstr "le fichier `%.250s' est corrompu - \"no slash between part numbers\""
+
+#: split/info.c:138
+#, c-format
+msgid "file `%.250s' is corrupt - bad part number"
+msgstr "le fichier `%.250s' est corrompu - \"bad part number\""
+
+#: split/info.c:143
+#, c-format
+msgid "file `%.250s' is corrupt - bad magic at end of second header"
+msgstr ""
+"le fichier `%.250s' est corrompu - \"bad magic at end of second header\""
+
+#: split/info.c:145
+#, c-format
+msgid "file `%.250s' is corrupt - second member is not data member"
+msgstr ""
+"le fichier `%.250s' est corrompu - \"second member is not data member\""
+
+#: split/info.c:151
+#, c-format
+msgid "file `%.250s' is corrupt - wrong number of parts for quoted sizes"
+msgstr ""
+"le fichier `%.250s' est corrompu - \"wrong number of parts for quoted sizes\""
+
+#: split/info.c:155
+#, c-format
+msgid "file `%.250s' is corrupt - size is wrong for quoted part number"
+msgstr ""
+"le fichier `%.250s' est corrompu - \"size is wrong for quoted part number\""
+
+#: split/info.c:161
+#, c-format
+msgid "unable to fstat part file `%.250s'"
+msgstr "impossible de \"fstat\" le fichier partie `%.250s'"
+
+#: split/info.c:167
+#, c-format
+msgid "file `%.250s' is corrupt - too short"
+msgstr "le fichier `%.250s' est corrompu - trop court"
+
+#: split/info.c:179 split/info.c:220
+#, c-format
+msgid "cannot open archive part file `%.250s'"
+msgstr "ne peut pas ouvrir le fichier partie `%.250s' de l'archive"
+
+#: split/info.c:181
+#, c-format
+msgid "file `%.250s' is not an archive part"
+msgstr "le fichier `%.250s' n'est pas une partie de l'archive"
+
+#: split/info.c:186
+#, c-format
+msgid ""
+"%s:\n"
+"    Part format version:            %s\n"
+"    Part of package:                %s\n"
+"        ... version:                %s\n"
+"        ... MD5 checksum:           %s\n"
+"        ... length:                 %lu bytes\n"
+"        ... split every:            %lu bytes\n"
+"    Part number:                    %d/%d\n"
+"    Part length:                    %lu bytes\n"
+"    Part offset:                    %lu bytes\n"
+"    Part file size (used portion):  %lu bytes\n"
+"\n"
+msgstr ""
+"%s:\n"
+"    Version du format de partie:                  %s\n"
+"    Partie du paquet:                             %s\n"
+"        ... version:                              %s\n"
+"        ... checksum MD5:                         %s\n"
+"        ... longueur:                             %lu octets\n"
+"        ... coupé tous les:                       %lu octets\n"
+"    Partie numéro:                                %d/%d\n"
+"    Longueur de la partie:                        %lu octets\n"
+"    Décalage de la partie:                        %lu octets\n"
+"    Taille du fichier partie (portion utilisée):  %lu octets\n"
+"\n"
+
+#: split/info.c:216
+msgid "--info requires one or more part file arguments"
+msgstr "--info requiert un ou plusieurs fichiers parties comme arguments"
+
+#: split/info.c:226
+#, c-format
+msgid "file `%s' is not an archive part\n"
+msgstr "le fichier `%s' n'est pas une partie d'archive\n"
+
+#: split/join.c:48
+#, c-format
+msgid "unable to open output file `%.250s'"
+msgstr "impossible d'ouvrir le fichier sortie `%.250s'"
+
+#: split/join.c:52
+#, c-format
+msgid "unable to (re)open input part file `%.250s'"
+msgstr "impossible de (ré)ouvrir le fichier partie d'entrée `%.250s'"
+
+#: split/join.c:68
+msgid "done\n"
+msgstr "fait\n"
+
+#: split/join.c:84
+#, c-format
+msgid "files `%.250s' and `%.250s' are not parts of the same file"
+msgstr ""
+"les fichiers `%.250s' et `%.250s' ne sont pas des parties du même fichier"
+
+#: split/join.c:89
+#, c-format
+msgid "there are several versions of part %d - at least `%.250s' and `%.250s'"
+msgstr ""
+"il y a plusieurs versions de la partie %d - au moins `%.250s' et `%.250s'"
+
+#: split/join.c:102
+msgid "--join requires one or more part file arguments"
+msgstr "--join requiert un ou plusieurs fichiers parties comme arguments"
+
+#: split/join.c:123
+#, c-format
+msgid "part %d is missing"
+msgstr "la partie %d est manquante"
+
+#: split/main.c:38
+msgid "Debian Linux `dpkg-split' package split/join tool; version "
+msgstr "Outil `dpkg-split' Linux Debian de (dé)assemblage de paquets; version "
+
+#: split/main.c:40
+msgid ""
+"Copyright (C) 1994-1996 Ian Jackson.  This is free software; see the\n"
+"GNU General Public Licence version 2 or later for copying conditions.\n"
+"There is NO warranty.  See dpkg-split --licence for details.\n"
+msgstr ""
+"Copyright (C) 1994-1996 Ian Jackson.  Ceci est un logiciel libre;\n"
+"consultez la GNU General Public Licence version 2 ou supérieure pour les "
+"conditions\n"
+"de reproduction.  Il n'y a AUCUNE garantie. Consultez dpkg-split --licence "
+"pour les détails.\n"
+
+#: split/main.c:47
+msgid ""
+"Usage: dpkg-split -s|--split <file> [<prefix>]     Split an archive.\n"
+"       dpkg-split -j|--join <part> <part> ...      Join parts together.\n"
+"       dpkg-split -I|--info <part> ...             Display info about a "
+"part.\n"
+"       dpkg-split -h|--help|--version|--licence    Show "
+"help/version/licence.\n"
+"\n"
+"       dpkg-split -a|--auto -o <complete> <part>   Auto-accumulate parts.\n"
+"       dpkg-split -l|--listq                       List unmatched pieces.\n"
+"       dpkg-split -d|--discard [<filename> ...]    Discard unmatched "
+"pieces.\n"
+"\n"
+"Options:  --depotdir <directory>  (default is "
+msgstr ""
+"Syntaxe:\n"
+"       dpkg-split -s|--split <fichier> [<préfixe>]   Découpe une archive.\n"
+"       dpkg-split -j|--join <partie> <partie> ...    Fusionne les parties "
+"ensemble.\n"
+"       dpkg-split -I|--info <partie> ...             Affiche l'information "
+"sur une partie.\n"
+"       dpkg-split -h|--help|--version|--licence      Affiche l'aide/la "
+"version/licence.\n"
+"\n"
+"       dpkg-split -a|--auto -o <complet> <partie>    Auto-assemble les "
+"parties.\n"
+"       dpkg-split -l|--listq                         Liste les pièces "
+"isolées.\n"
+"       dpkg-split -d|--discard [<nom fichier> ...]   Annule les pièces "
+"isolées.\n"
+"\n"
+"Options:  --depotdir <répertoire>  (défaut est "
+
+#: split/main.c:68
+msgid "Type dpkg-split --help for help."
+msgstr "Taper dpkg-split --help pour une aide."
+
+#: split/main.c:78
+#, c-format
+msgid "error reading %s"
+msgstr "erreur en lisant %s"
+
+#: split/main.c:82
+#, c-format
+msgid "error reading %.250s"
+msgstr "erreur en lisant %.250s"
+
+#: split/main.c:83
+#, c-format
+msgid "unexpected end of file in %.250s"
+msgstr "fin de fichier inattendue dans %.250s"
+
+#: split/main.c:101
+msgid "part size is far too large or is not positive"
+msgstr "taille de partie beaucoup trop grande ou négative"
+
+#: split/main.c:105
+#, c-format
+msgid "part size must be at least %dk (to allow for header)"
+msgstr ""
+"la taille de partie doit Ãªtre au moins %dk (pour autoriser les en-têtes)"
+
+#: split/queue.c:69
+#, c-format
+msgid "unable to read depot directory `%.250s'"
+msgstr "impossible de lire de répertoire de \"depot\" `%.250s'"
+
+#: split/queue.c:105
+msgid "--auto requires the use of the --output option"
+msgstr "--auto requiert l'utilisation de l'option --output"
+
+#: split/queue.c:107
+msgid "--auto requires exactly one part file argument"
+msgstr "--auto requiert exactement un fichier partie comme argument"
+
+#: split/queue.c:111
+#, c-format
+msgid "unable to read part file `%.250s'"
+msgstr "impossible de lire le fichier partie `%.250s'"
+
+#: split/queue.c:114
+#, c-format
+msgid "File `%.250s' is not part of a multipart archive.\n"
+msgstr "Le fichier `%.250s' n'appartient pas Ã  une archive multi-parties\n"
+
+#: split/queue.c:141
+#, c-format
+msgid "unable to reopen part file `%.250s'"
+msgstr "impossible de réouvrir le fichier parties `%.250s'"
+
+#: split/queue.c:145
+#, c-format
+msgid "part file `%.250s' has trailing garbage"
+msgstr "le fichier partie `%.250s' \"has trailing garbage\""
+
+#: split/queue.c:154
+#, c-format
+msgid "unable to open new depot file `%.250s'"
+msgstr "impossible d'ouvrir un nouveau fichier \"depot\" `%.250s'"
+
+#: split/queue.c:158
+#, c-format
+msgid "unable to rename new depot file `%.250s' to `%.250s'"
+msgstr "impossible de renommer le fichier \"depot\" `%.250s' en `%.250s'"
+
+#: split/queue.c:160
+#, c-format
+msgid "Part %d of package %s filed (still want "
+msgstr "Partie %d du paquet %s remplie (manque toujours "
+
+#: split/queue.c:164
+msgid " and "
+msgstr " et "
+
+#: split/queue.c:177
+#, c-format
+msgid "unable to delete used-up depot file `%.250s'"
+msgstr "impossible de supprimer le fichier \"used-up depot\" `%.250s'"
+
+#: split/queue.c:192
+msgid "--listq does not take any arguments"
+msgstr "--listq ne prend aucun argument"
+
+#: split/queue.c:195
+msgid "Junk files left around in the depot directory:\n"
+msgstr "Fichiers inutiles laissés dans le répertoire \"depot\":\n"
+
+#: split/queue.c:200 split/queue.c:224
+#, c-format
+msgid "unable to stat `%.250s'"
+msgstr "impossible de \"stat\" `%.250s'"
+
+#: split/queue.c:203
+#, c-format
+msgid " %s (%lu bytes)\n"
+msgstr " %s (%lu octets)\n"
+
+#: split/queue.c:205
+#, c-format
+msgid " %s (not a plain file)\n"
+msgstr " %s (ce n'est pas un vrai fichier)\n"
+
+#: split/queue.c:210
+msgid "Packages not yet reassembled:\n"
+msgstr "Paquets non encore assemblés:\n"
+
+#: split/queue.c:226
+#, c-format
+msgid "part file `%.250s' is not a plain file"
+msgstr "le fichier partie `%.250s' n'est pas un vrai fichier"
+
+#: split/queue.c:231
+#, c-format
+msgid "(total %lu bytes)\n"
+msgstr "(%lu octets au total)\n"
+
+#: split/queue.c:254
+#, c-format
+msgid "unable to discard `%.250s'"
+msgstr "impossible d'annuler `%.250s'"
+
+#: split/queue.c:255
+#, c-format
+msgid "Deleted %s.\n"
+msgstr "Suppression de %s.\n"
+
+#: split/split.c:45
+msgid "--split needs a source filename argument"
+msgstr "--split a besoin d'un nom de fichier source comme argument"
+
+#: split/split.c:48
+msgid "--split takes at most a source filename and destination prefix"
+msgstr ""
+"--split prend au plus un nom de fichier source et un préfixe de destination"
+
+#: split/split.c:62
+#, c-format
+msgid "unable to open source file `%.250s'"
+msgstr "impossible d'ouvrir le fichier source `%.250s'"
+
+#: split/split.c:63
+msgid "unable to fstat source file"
+msgstr "impossible de \"fstat\" le fichier source"
+
+#: split/split.c:64
+#, c-format
+msgid "source file `%.250s' not a plain file"
+msgstr "le fichier source `%.250s' n'est pas un vrai fichier"
+
+#: split/split.c:70
+msgid "unable to exec mksplit"
+msgstr "impossible d'exécuter mksplit"
+
+#: md5sum/md5sum.c:106
+#, c-format
+msgid "%s: read error on stdin\n"
+msgstr "%s: erreur de lecture sur l'entrée standard\n"
+
+#: md5sum/md5sum.c:124 md5sum/md5sum.c:250
+#, c-format
+msgid "%s: error reading %s\n"
+msgstr "%s: erreur en lisant %s\n"
+
+#: md5sum/md5sum.c:138
+msgid ""
+"usage: md5sum [-bv] [-c [file]] | [file...]\n"
+"Generates or checks MD5 Message Digests\n"
+"    -c  check message digests (default is generate)\n"
+"    -v  verbose, print file names when checking\n"
+"    -b  read files in binary mode\n"
+"The input for -c should be the list of message digests and file names\n"
+"that is printed on stdout by this program when it generates digests.\n"
+msgstr ""
+"Syntaxe: md5sum [-bv] [-c [fichier]] | [fichier...]\n"
+"Génère ou vérifie les \"checksums\" MD5\n"
+"    -c  vérifie les \"checksums\" (les génère par défaut)\n"
+"    -v  verbeux, affiche les noms des fichiers en vérifiant\n"
+"    -b  lit les fichiers en mode binaire\n"
+"L'entrée pour -c devrait Ãªtre la liste des \"checksums\" et des nom de "
+"fichiers\n"
+"tel qu'elle est affichée sur la sortie standard par le programme lors de la "
+"génération des checksums.\n"
+
+#: md5sum/md5sum.c:211
+#, c-format
+msgid "%s: unrecognized line: %s"
+msgstr "%s: ligne non reconnue: %s"
+
+#: md5sum/md5sum.c:245
+#, c-format
+msgid "%s: can't open %s\n"
+msgstr "%s: ne peut pas ouvrir %s\n"
+
+#: md5sum/md5sum.c:258
+msgid "FAILED\n"
+msgstr "ECHEC\n"
+
+#: md5sum/md5sum.c:260
+#, c-format
+msgid "%s: MD5 check failed for '%s'\n"
+msgstr "%s: Ã©chec de la vérification MD5 pour '%s'\n"
+
+#: md5sum/md5sum.c:263
+msgid "OK\n"
+msgstr "OK\n"
+
+#: md5sum/md5sum.c:267
+#, c-format
+msgid "%s: %d of %d file(s) failed MD5 check\n"
+msgstr "%s: Ã©chec de la vérification MD5 pour %d sur %d fichier(s)\n"
+
+#: md5sum/md5sum.c:269
+#, c-format
+msgid "%s: no files checked\n"
+msgstr "%s: aucun fichiers vérifiés\n"
diff --git a/scripts/.cvsignore b/scripts/.cvsignore
new file mode 100644 (file)
index 0000000..8d67898
--- /dev/null
@@ -0,0 +1,2 @@
+Makefile.in
+elisp-comp
old mode 100644 (file)
new mode 100755 (executable)
index 7ce7602..1cde759
@@ -1,9 +1,56 @@
 #!/usr/bin/perl --
 # I hereby place this in the public domain - Ian Jackson, 1995.
+# Changes by Klee Dienes also placed in public domain (1997). 
+
+# time structure:
+# [ sec min hour mday mon year wday yday isdst ]
+
 @ARGV && die "usage: 822-date\n";
-$x=time; sub z { $_[1]+$_[2]*60; }; @l=localtime($x); $od=1440;
-$d=&z(@l)-&z(gmtime($x)); $d+=$od; $d%=$od; $s=$d>$od/2?($d=$od-$d,'-'):'+';
-printf("%s, %d %s %d %02d:%02d:%02d %s%02d%02d\n",
- (Sun,Mon,Tue,Wed,Thu,Fri,Sat)[$l[6]], $l[3],
- (Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec)[$l[4]], $l[5]+1900,
- $l[2],$l[1],$l[0], $s,$d/60,$d%60) || die "822-date: output error: $!\n";
+
+$curtime = time;
+@localtm = localtime ($curtime);
+$localtms = localtime ($curtime);
+@gmttm = gmtime ($curtime);
+$gmttms = gmtime ($curtime);
+
+if ($localtm[0] != $gmttm[0]) {
+    die (sprintf ("local timezone differs from GMT by a non-minute interval\n"
+                . "local time: %s\n"
+                . "GMT time: %s\n", $localtms, $gmttms));
+}
+
+$localmin = $localtm[1] + $localtm[2] * 60;
+$gmtmin = $gmttm[1] + $gmttm[2] * 60;
+
+if ((($gmttm[6] + 1) % 7) == $localtm[6]) {
+    $localmin += 1440;
+} elsif ((($gmttm[6] - 1) % 7) == $localtm[6]) {
+    $localmin -= 1440;
+} elsif ($gmttm[6] == $localtm[6]) {
+    1;
+} else {
+    die ("822-date: local time offset greater than or equal to 24 hours\n");
+}
+
+$offset = $localmin - $gmtmin;
+$offhour = $offset / 60;
+$offmin = abs ($offset % 60);
+
+if (abs ($offhour) >= 24) { 
+    die ("822-date: local time offset greater than or equal to 24 hours\n");
+}
+
+printf 
+    (
+     "%s, %2d %s %d %02d:%02d:%02d %s%02d%02d\n",
+     (Sun,Mon,Tue,Wed,Thu,Fri,Sat)[$localtm[6]], # day of week
+     $localtm[3],              # day of month
+     (Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec)[$localtm[4]], # month
+     $localtm[5]+1900,         # year
+     $localtm[2],              # hour
+     $localtm[1],              # minute
+     $localtm[0],              # sec
+     ($offset >= 0) ? '+' : '-',# TZ offset direction
+     abs ($offhour),           # TZ offset hour
+     $offmin,                  # TZ offset minute
+     ) || die "822-date: output error: $!\n";
diff --git a/scripts/Makefile.am b/scripts/Makefile.am
new file mode 100644 (file)
index 0000000..85e8bdf
--- /dev/null
@@ -0,0 +1,90 @@
+## Process this file with automake to produce a Makefile.in
+
+AUTOMAKE_OPTIONS       = 1.1 foreign
+
+## Directory definitions
+
+pkglibdir              = $(libdir)/@PACKAGE@
+pkglocalstatedir       = $(sharedstatedir)/@PACKAGE@
+
+parsechangelogdir      = $(pkglibdir)/parsechangelog
+altssysconfdir         = $(pkgsysconfdir)/alternatives
+altslocalstatedir      = $(pkglocalstatedir)/alternatives
+
+# This should be $(pkgsysconfdir), but uses $(sysconfdir) for backwards compatibility.
+altssysconfdir         = $(sysconfdir)/alternatives
+
+
+## Automake variables
+
+bin_SCRIPTS            = dpkg-name dpkg-source dpkg-genchanges dpkg-gencontrol \
+                         dpkg-shlibdeps dpkg-buildpackage dpkg-parsechangelog \
+                         dpkg-distaddfile 822-date dpkg-scanpackages
+
+sbin_PROGRAMS          = start-stop-daemon
+start_stop_daemon_SOURCES      = start-stop-daemon.c
+
+sbin_SCRIPTS           = update-rc.d update-alternatives \
+                         install-info dpkg-divert cleanup-info
+
+pkglib_SCRIPTS         = controllib.pl
+
+lisp_LISP              = debian-changelog-mode.el
+ELCFILES               = debian-changelog-mode.elc
+
+man_MANS               = dpkg-name.1 dpkg-source.1 822-date.1 update-rc.d.8 \
+                         start-stop-daemon.8 update-alternatives.8 \
+                         install-info.8 dpkg-scanpackages.8
+
+EXTRA_DIST             = update-rc.d.pl \
+                         dpkg-name.sh dpkg-source.pl dpkg-genchanges.pl \
+                         dpkg-gencontrol.pl dpkg-shlibdeps.pl \
+                         dpkg-buildpackage.sh dpkg-parsechangelog.pl \
+                         dpkg-distaddfile.pl 822-date.pl dpkg-scanpackages.pl \
+                         update-alternatives.pl install-info.pl dpkg-divert.pl \
+                         cleanup-info.pl controllib.pl debian-changelog-mode.el \
+                         cl-debian.pl \
+                         $(man_MANS)
+
+noinst_DATA            = cl-debian
+
+LSMANL                 = dpkg-gencontrol dpkg-genchanges dpkg-buildpackage \
+                         dpkg-distaddfile dpkg-parsechangelog dpkg-shlibdeps
+
+CLEANFILES             = $(bin_SCRIPTS) $(sbin_SCRIPTS) $(noinst_DATA) $(ELCFILES)
+MAINTAINERCLEANFILES   = $(srcdir)/Makefile.in $(srcdir)/elisp-comp
+
+## Rules
+
+.PHONY: install-data-local uninstall-local
+
+SUFFIXES               = .pl .sh
+
+%: %.pl
+       sed -e "s:^#![:space:]*/usr/bin/perl:#! $(perlpath):; \
+               s:\$$dpkglibdir[[:space:]]*=[[:space:]]*['\"][^'\"]*['\"]:\$$dpkglibdir=\"$(pkglibdir)\":; \
+               s:\$$version[[:space:]]*=[[:space:]]*['\"][^'\"]*[\"']:\$$version=\"$(VERSION)\":" \
+               < $< > $@.new
+       chmod 755 $@.new
+       mv $@.new $@
+
+%: %.sh 
+       sed -e "s:version=\"[^\"]*\":version=\"$(VERSION)\":" \
+               < $< > $@.new
+       chmod 755 $@.new
+       mv $@.new $@
+
+install-data-local: cl-debian
+       $(mkinstalldirs) $(altslocalstatedir) $(altssysconfdir)
+       set -e; for f in $(LSMANL); do ln -sf $(mandir)/man1/dpkg-source.1 $(mandir)/man1/$$f.1; done
+       $(mkinstalldirs) $(parsechangelogdir)
+       $(INSTALL_PROGRAM) cl-debian $(parsechangelogdir)/debian
+
+uninstall-local:
+       $(RM) $(parsechangelogdir)/debian
+       -[ -e $(parsechangelogdir) ] && rmdir $(parsechangelogdir)
+       set -e; for f in $(LSMANL); do $(RM) $(mandir)/man1/$$f.1; done
+       -[ -e $(altssysconfdir) ] && rmdir $(altssysconfdir)
+       -[ -e $(altslocalstatedir) ] && rmdir $(altslocalstatedir)
+
+## End of file.
diff --git a/scripts/Makefile.in b/scripts/Makefile.in
deleted file mode 100644 (file)
index cff8728..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-# Copyright (C) 1994 Ian Murdock <imurdock@debian.org>
-# Copyright (C) 1994,1995,1996 Ian Jackson <ijackson@nyx.cs.du.edu>
-#
-#   This is free software; you can redistribute it and/or modify
-#   it under the terms of the GNU General Public License as
-#   published by the Free Software Foundation; either version 2,
-#   or (at your option) any later version.
-#
-#   This is distributed in the hope that it will be useful, but
-#   WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#   GNU General Public License for more details.
-#
-#   You should have received a copy of the GNU General Public
-#   License along with dpkg; if not, write to the Free Software
-#   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-srcdir = @srcdir@
-VPATH = @srcdir@
-
-prefix = @prefix@
-bindir = $(prefix)/bin
-sbindir = $(prefix)/sbin
-datadir = /var/lib/dpkg
-altsdatadir = $(datadir)/alternatives
-mandir = $(prefix)/man
-man1dir = $(mandir)/man1
-man8dir = $(mandir)/man8
-man1 = 1
-man8 = 8
-libdir = $(prefix)/lib
-dpkglibdir = $(libdir)/dpkg
-parsechangelogdir = $(dpkglibdir)/parsechangelog
-elispdir = $(libdir)/emacs/site-lisp
-etcdir= /etc
-altsetcdir = $(etcdir)/alternatives
-perlpath = @perlpath@
-
-MAN1 =  dpkg-name dpkg-source 822-date
-LSMAN = dpkg-source.$(man1)
-LSMANL=        dpkg-gencontrol dpkg-genchanges dpkg-buildpackage \
-       dpkg-distaddfile dpkg-parsechangelog dpkg-shlibdeps
-EXC =   dpkg-name dpkg-source dpkg-genchanges dpkg-gencontrol dpkg-shlibdeps \
-       dpkg-buildpackage dpkg-parsechangelog dpkg-distaddfile 822-date \
-       dpkg-scanpackages
-MAN8 = update-rc.d start-stop-daemon update-alternatives install-info \
-       dpkg-scanpackages
-SBIN = update-rc.d start-stop-daemon update-alternatives install-info \
-       dpkg-divert cleanup-info
-LIB =  controllib.pl
-ELISP =        debian-changelog-mode.el
-CHGLGS=        cl-debian
-
-INSTALL = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_DATA = @INSTALL_DATA@
-
-.SUFFIXES:     .pl .sh .gzuue
-
-.pl:
-               sed <$@.pl 's:^#!/usr/bin/perl:#!$(perlpath):; \
-                           s:\$dpkglibdir= "\.":\$dpkglibdir= "$(dpkglibdir)":' \
-                 | ../insert-version.pl >$@.new
-               chmod +x $@.new
-               mv $@.new $@
-
-.sh:
-               sed <$@.sh 's:^dpkglibdir=/usr/lib/dpkg$$:dpkglibdir=$(dpkglibdir):' \
-                 | ../insert-version.pl >$@.new
-               chmod +x $@.new
-               mv $@.new $@
-
-.gzuue:
-               uudecode <$@.gzuue
-               gunzip <$@.gz >$@.new
-               test ! -x $@.gz || chmod +x $@.new
-               rm $@.gz
-               mv $@.new $@
-
-all:           $(EXC) $(SBIN) $(CHGLGS)
-
-clean:
-               rm -f $(EXC) $(SBIN) $(CHGLGS) core *.new
-
-distclean:     clean
-               rm -f Makefile *.orig *~ *.~* ./#*# i386elf-hello-world.gz
-
-install:       all
-               for f in $(EXC) ; do $(INSTALL_PROGRAM) $$f $(bindir)/$$f ; done
-               for f in $(MAN1) ; do $(INSTALL_DATA) $$f.1 $(man1dir)/$$f.$(man1) ; done
-               for f in $(LSMANL) ; do ln -s $(LSMAN) $(man1dir)/$$f.$(man1) ; done
-               for f in $(SBIN) ; do $(INSTALL_PROGRAM) $$f $(sbindir)/$$f ; done
-               for f in $(MAN8) ; do $(INSTALL_DATA) $$f.8 $(man8dir)/$$f.$(man8) ; done
-               for f in $(LIB) ; do $(INSTALL_DATA) $$f $(dpkglibdir)/$$f ; done
-               for f in $(ELISP) ; do $(INSTALL_DATA) $$f $(elispdir)/$$f ; done
-               for f in $(CHGLGS) ; do $(INSTALL_PROGRAM) $$f \
-                       $(dpkglibdir)/parsechangelog/`echo $$f | sed -e 's/^cl-//'` ; \
-               done
old mode 100644 (file)
new mode 100755 (executable)
index e97327c..dd2eb1e
@@ -25,7 +25,7 @@ sub usageversion {
 Ian Jackson.  This is free software; see the GNU General Public Licence
 version 2 or later for copying conditions.  There is NO warranty.
 
-Usage: parsechangelog/dpkg [-v<versionsince] | -h
+Usage: parsechangelog/dpkg [-v<versionsince>] | -h
 ";
 }
 
@@ -107,11 +107,11 @@ while (<STDIN>) {
         $f{'Changes'}.= " $_\n .\n";
     } elsif (m/^\S/) {
         &clerror("badly formatted heading line");
-    } elsif (m/^ \-\- (\S.*\S)  ((\w+\,\s*)?\d{1,2}\s+\w+\s+\d{4}\s+\d{1,2}:\d\d:\d\d\s+[-+]\d{4}(\s+\([^\\\(\)]\))?)$/) {
+    } elsif (m/^ \-\- (.*) <(.*)>  ((\w+\,\s*)?\d{1,2}\s+\w+\s+\d{4}\s+\d{1,2}:\d\d:\d\d\s+[-+]\d{4}(\s+\([^\\\(\)]\))?)$/) {
         $expect eq 'more change data or trailer' ||
             &clerror("found trailer where expected $expect");
-        $f{'Maintainer'}= $1 unless defined($f{'Maintainer'});
-        $f{'Date'}= $2 unless defined($f{'Date'});
+        $f{'Maintainer'}= "$1 <$2>" unless defined($f{'Maintainer'});
+        $f{'Date'}= $3 unless defined($f{'Date'});
 #        $f{'Changes'}.= " .\n $_\n";
         $expect= 'next heading or eof';
         last if $since eq '';
@@ -137,7 +137,7 @@ $expect eq 'next heading or eof' || die "found eof where expected $expect";
 $f{'Changes'} =~ s/\n$//;
 $f{'Changes'} =~ s/^/\n/;
 
-&outputclose;
+&outputclose(0);
 
 sub clerror { &error("$_[0], at changelog line $."); }
 sub clwarn { &warn("$_[0], at changelog line $."); }
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
index f662b6f..6b94418
@@ -1,3 +1,4 @@
+
 $parsechangelog= 'dpkg-parsechangelog';
 
 grep($capit{lc $_}=$_, qw(Pre-Depends Standards-Version Installed-Size));
@@ -10,6 +11,51 @@ $maxsubsts=50;
 
 $progname= $0; $progname= $& if $progname =~ m,[^/]+$,;
 
+$getlogin = getlogin();
+if(!defined($getlogin)) {
+       open(SAVEIN, "<&STDIN");
+       close(STDIN);
+       open(STDIN, "<&STDERR");
+
+       $getlogin = getlogin();
+
+       close(STDIN);
+       open(STDIN, "<&SAVEIN");
+       close(SAVEIN);
+}
+if(!defined($getlogin)) {
+       open(SAVEIN, "<&STDIN");
+       close(STDIN);
+       open(STDIN, "<&STDOUT");
+
+       $getlogin = getlogin();
+
+       close(STDIN);
+       open(STDIN, "<&SAVEIN");
+       close(SAVEIN);
+}
+
+if (defined ($ENV{'LOGNAME'})) {
+    if (!defined ($getlogin)) { 
+       warn (sprintf ('no utmp entry available, using value of LOGNAME ("%s")', $ENV{'LOGNAME'})); 
+    } else {
+       if ($getlogin ne $ENV{'LOGNAME'}) { 
+           warn (sprintf ('utmp entry ("%s") does not match value of LOGNAME ("%s"); using "%s"',
+                          $getlogin, $ENV{'LOGNAME'}, $ENV{'LOGNAME'}));
+       }
+    }
+    @fowner = getpwnam ($ENV{'LOGNAME'});
+    if (! @fowner) { die (sprintf ('unable to get login information for username "%s"', $ENV{'LOGNAME'})); }
+} elsif (defined ($getlogin)) {
+    @fowner = getpwnam ($getlogin);
+    if (! @fowner) { die (sprintf ('unable to get login information for username "%s"', $getlogin)); }
+} else {
+    warn (sprintf ('no utmp entry available and LOGNAME not defined; using uid of process (%d)', $<));
+    @fowner = getpwuid ($<);
+    if (! @fowner) { die (sprintf ('unable to get login information for uid %d', $<)); }
+}
+@fowner = @fowner[2,3];
+
 sub capit {
     return defined($capit{lc $_[0]}) ? $capit{lc $_[0]} :
         (uc substr($_[0],0,1)).(lc substr($_[0],1));
@@ -17,14 +63,14 @@ sub capit {
 
 sub findarch {
     $arch=`dpkg --print-architecture`;
-    $? && &subprocerr("dpkg --print-archictecture");
+    $? && &subprocerr("dpkg --print-architecture");
     $arch =~ s/\n$//;
     $substvar{'Arch'}= $arch;
 }
 
 sub substvars {
     my ($v) = @_;
-    my $lhs,$vn,$rhs,$count;
+    my ($lhs,$vn,$rhs,$count);
     $count=0;
     while ($v =~ m/\$\{([-:0-9a-z]+)\}/i) {
         $count < $maxsubsts ||
@@ -42,6 +88,7 @@ sub substvars {
 }
 
 sub outputclose {
+    my ($dosubstvars) = @_;
     for $f (keys %f) { $substvar{"F:$f"}= $f{$f}; }
     if (length($varlistfile)) {
         $varlistfile="./$varlistfile" if $varlistfile =~ m/\s/;
@@ -55,12 +102,14 @@ sub outputclose {
             }
             close(SV);
         } elsif ($! !~ m/no such file or directory/i) {
-            &error("unable to open substvars file $varlistvile: $!");
+            &error("unable to open substvars file $varlistfile: $!");
         }
     }
     for $f (sort { $fieldimps{$b} <=> $fieldimps{$a} } keys %f) {
         $v= $f{$f};
-        $v= &substvars($v);
+        if ($dosubstvars) {
+           $v= &substvars($v);
+       }
         $v =~ m/\S/ || next; # delete whitespace-only fields
         $v =~ m/\n\S/ && &internerr("field $f has newline then non whitespace >$v<");
         $v =~ m/\n[ \t]*\n/ && &internerr("field $f has blank lines >$v<");
index 33af1f1cf67a0534994da646ae12497497d2e611..23b72d80d2447e2993ae1a2cc255921c8187516a 100644 (file)
@@ -3,6 +3,7 @@
 ;; Keywords: maint
 
 ;; Copyright (C) 1996 Ian Jackson
+;; Copyright (C) 1997 Klee Dienes
 ;; This file is part of dpkg.
 ;;
 ;; It is free software; you can redistribute it and/or modify
 
 (require 'add-log)
 
-(defvar debian-changelog-urgencies
-  '((?l."low") (?m."medium") (?h."HIGH"))
-  "alist of keystrokes vs. urgency values for debian-changelog-urgency \\[debian-changelog-urgency].")
+(defun debian-changelog-setheadervalue (re str)
+  (let (a b v k
+         (lineend (save-excursion (end-of-line) (point))))
+    (save-excursion
+      (goto-char (point-min))
+      (re-search-forward re lineend)
+      (setq a (match-beginning 1)
+            b (match-end 1))
+      (goto-char a)
+      (delete-region a b)
+      (insert str))))
 
-(defvar debian-changelog-distributions
-  '((?s."stable") (?u."unstable") (?c."contrib") (?n."non-free") (?e."experimental"))
-  "alist of keystrokes vs. distribution values for debian-changelog-distribution \\[debian-changelog-distribution].")
+(defun debian-changelog-getheadervalue (re)
+  (let ((lineend (save-excursion (end-of-line) (point))))
+    (save-excursion
+      (goto-char (point-min))
+      (re-search-forward re lineend)
+      (buffer-substring-no-properties (match-beginning 1) (match-end 1)))))
 
 (defvar debian-changelog-mode-map nil
   "Keymap for Debian changelog major mode.")
   (insert "  * ")
   (save-excursion (insert "\n")))
 
-(defun debian-changelog-headervalue (arg re alist)
-  (let (a b v k
-        (lineend (save-excursion (end-of-line) (point))))
-    (save-excursion
-      (goto-char (point-min))
-      (re-search-forward re lineend)
-      (setq a (match-beginning 1)
-            b (match-end 1))
-      (goto-char a)
-      (if arg nil
-        (message (mapconcat
-                  (function (lambda (x) (format "%c:%s" (car x) (cdr x))))
-                  alist " "))
-        (while (not v)
-          (setq k (read-char))
-          (setq v (assoc k alist))))
-      (delete-region a b)
-      (if arg nil (insert (cdr v))))
-    (if arg (goto-char a))))
-
-(defun debian-changelog-urgency (arg)
-  "Without argument, prompt for a key for a new urgency value (using
-debian-changelog-urgencies).  With argument, delete the current urgency
-and position the cursor to type a new one."
+(defun debian-changelog-distribution (arg)
+  "Delete the current distribution and prompt for a new one."
   (interactive "P")
-  (debian-changelog-headervalue
-   arg
-   "\\;[^\n]* urgency=\\(\\sw+\\)"
-   debian-changelog-urgencies))
+  (let* ((curstr
+         (debian-changelog-getheadervalue ") \\(.*\\)\\;"))
+        (str (completing-read 
+              "Select distribution: "
+              '(("stable" 1)
+                ("frozen" 2)
+                ("unstable" 3) 
+                ("stable frozen unstable" 4)
+                ("stable unstable frozen" 4)
+                ("unstable stable frozen" 4)
+                ("unstable frozen stable" 4)
+                ("frozen unstable stable" 4)
+                ("frozen stable unstable" 4)
+                ("frozen unstable" 5)
+                ("unstable frozen" 5)
+                ("stable frozen" 6)
+                ("frozen stable" 6)
+                ("stable unstable" 7)
+                ("unstable stable" 7))
+              nil t nil)))
+    (if (not (equal str ""))
+       (debian-changelog-setheadervalue ") \\(.*\\)\\;" str))))
 
-(defun debian-changelog-distribution (arg)
-  "Without argument, prompt for a key for a new distribution value (using
-debian-changelog-distributions).  With argument, delete the current distribution
-and position the cursor to type a new one."
+(defun debian-changelog-urgency (arg)
+  "Delete the current urgency and prompt for a new one."
   (interactive "P")
-  (debian-changelog-headervalue
-   arg
-   ") \\(.*\\)\\;"
-   debian-changelog-distributions))
+  (let* ((urgency-regex "\\;[^\n]* urgency=\\(\\sw+\\)")
+        (curstr
+         (debian-changelog-getheadervalue urgency-regex))
+        (str (completing-read 
+              "Select urgency: "
+              '(("low" 1) ("medium" 2) ("high" 3))
+              nil t nil)))
+    (if (not (equal str ""))
+       (debian-changelog-setheadervalue urgency-regex str))))
 
 (defun debian-changelog-finalised-p ()
   "Check whether the most recent debian-style changelog entry is
@@ -135,14 +146,16 @@ release date."
                      (match-string 3))
            (let ((pkg (read-string "Package name: "))
                  (ver (read-string "New version (including any revision): ")))
-             (concat pkg " (" ver ") unstable; urgency="
-                     (cdr (car debian-changelog-urgencies)))))))
+             (concat pkg " (" ver ") unstable; urgency=low")))))
     (insert headstring "\n\n  * ")
     (save-excursion
-      (if (re-search-backward "\;[^\n]* urgency=\\(\\sw+\\)" (point-min) t)
-          (progn (goto-char (match-beginning 1))
-                 (delete-region (point) (match-end 1))
-                 (insert (cdr (car debian-changelog-urgencies))))))
+      (if (re-search-backward ") \\([^\n]*\\);[^\n]* urgency=\\(\\sw+\\)" (point-min) t)
+          (progn (goto-char (match-beginning 2))
+                 (delete-region (point) (match-end 2))
+                 (insert "low")
+                (goto-char (match-beginning 1))
+                (delete-region (point) (match-end 1))
+                 (insert "unstable"))))
     (save-excursion (insert "\n\n --\n\n"))))
 
 (defun debian-changelog-finalise-and-save ()
@@ -153,6 +166,25 @@ release date."
     (or f (debian-changelog-finalise-last-version)))
   (save-buffer))
 
+(defun debian-changelog-date-string ()
+  "Return RFC-822 format date string"
+  (let* ((dp "822-date")
+        (cp (point))
+        (ret (call-process "822-date" nil t))
+        (np (point))
+        (out nil))
+    (cond ((not (or (eq ret nil) (eq ret 0)))
+          (setq out (buffer-substring-no-properties cp np))
+          (delete-region cp np)
+          (error (concat "error from " dp ": " out)))
+         (t
+          (backward-char)
+          (or (looking-at "\n")
+              (error (concat "error from " dp ": expected newline after date string")))
+          (setq out (buffer-substring-no-properties cp (- np 1)))
+          (delete-region cp np)
+          out))))
+
 (defun debian-changelog-finalise-last-version ()
   "Remove the `finalisation' information (maintainer's name and email
 address and release date) so that new entries can be made."
@@ -164,14 +196,8 @@ address and release date) so that new entries can be made."
     (goto-char (point-min))
     (re-search-forward "\n --\\([ \t]*\\)")
     (delete-region (match-beginning 1) (match-end 1))
-    (insert " " add-log-full-name " <" add-log-mailing-address ">  ")
-    (let* ((dp "822-date")
-           (r (call-process dp nil t)))
-      (or (= r 0) (error (concat dp " returned error status " (prin1-to-string r)))))
-    (backward-char)
-    (or (looking-at "\n")
-        (error (concat "expected newline after date from " dp)))
-    (delete-char 1)))
+    (insert " " add-log-full-name " <" add-log-mailing-address ">  " 
+           (debian-changelog-date-string))))
 
 (defun debian-changelog-unfinalise-last-version ()
   "Remove the `finalisation' information (maintainer's name and email
index 80204d934f6ec540a03b7e68805ee2502337a6b1..e4fb94fc9911991efbb3bba0d3a5764ff7c2f950 100755 (executable)
@@ -13,9 +13,12 @@ version 2 or later for copying conditions.  There is NO warranty.
 
 Usage: dpkg-buildpackage [options]
 Options: -r<gain-root-command>
-         -p<pgp-command>
+         -p<sign-command>
+         -sgpg         the sign-command is called like GPG
+         -spgp         the sign-command is called like PGP 
          -us           unsigned source
          -uc           unsigned changes
+         -a<arch>      architecture field of the changes _file_name_
          -b            binary-only, do not build source } also passed to
          -B            binary-only, no arch-indep files } dpkg-genchanges
          -v<version>   changes since version <version>      }
@@ -24,21 +27,35 @@ Options: -r<gain-root-command>
          -si (default) src includes orig for rev. 0 or 1    } genchanges
          -sa           uploaded src always includes orig    }
          -sd           uploaded src is diff and .dsc only   }
+         -nc           do not clean source tree (implies -b)
          -tc           clean source tree when finished
          -h            print this message
 END
 }
 
 rootcommand=''
-pgpcommand=pgp
+signcommand=pgp # Default command for signing
+warnpgp='no'   # Display a warning to encourage switching to gpg?
+if [ ! -e $HOME/.gnupg/secring.gpg ] ; then
+       warnpgp=yes
+fi
+if [ -e $HOME/.gnupg/secring.gpg -a ! -e $HOME/.pgp/secring.pgp ] ; then
+       signcommand=gpg
+fi
+if [ -e $HOME/.pgp/secring.pgp -a ! -e $HOME/.gnupg/secring.gpg ] ; then
+       signcommand=pgp
+fi
+signinterface=$signcommand
 signsource='withecho signfile'
 signchanges='withecho signfile'
 cleansource=false
 binarytarget=binary
 sourcestyle=''
 version=''
+since=''
 maint=''
 desc=''
+noclean=false
 
 while [ $# != 0 ]
 do
@@ -46,16 +63,20 @@ do
        case "$1" in
        -h)     usageversion; exit 0 ;;
        -r*)    rootcommand="$value" ;;
-       -p*)    pgpcommand="$value" ;;
-       -us)    signsource=: ;;
-       -uc)    signchanges=: ;;
+       -p*)    signcommand="$value"; warnpgp='' ;;
+       -sgpg)  signinterface=gpg ;;
+       -spgp)  signinterface=pgp ;;
+       -us)    signsource=: ; warnpgp='' ;;
+       -uc)    signchanges=: ; warnpgp='' ;;
+       -a*)    opt_a=1; arch="$value" ;;
        -si)    sourcestyle=-si ;;
        -sa)    sourcestyle=-sa ;;
        -sd)    sourcestyle=-sd ;;
        -tc)    cleansource=true ;;
+       -nc)    noclean=true; binaryonly=-b ;;
        -b)     binaryonly=-b ;;
-       -B)     binaryonly=-b; binarytarget=binary-arch ;;
-       -v*)    version="$value" ;;
+       -B)     binaryonly=-B; binarytarget=binary-arch ;;
+       -v*)    since="$value" ;;
        -m*)    maint="$value" ;;
        -C*)    descfile="$value" ;;
        *)      echo >&2 "$progname: unknown option or argument $1"
@@ -64,12 +85,20 @@ do
        shift
 done
 
+if test "X$warnpgp" = "Xyes" ; then
+  echo >&2 <<EOWARN
+The Debian project will switch to using GPG (the GNU Privacy Guard) instead
+of PGP for signing packages. You might want to make preparations. Check out
+the gnupg and debian-keyring packages.
+EOWARN
+fi
+
 mustsetvar () {
        if [ "x$2" = x ]; then
-               echo >&2 "$progname: unable to determine $3"
+               echo >&2 "$progname: unable to determine $3" ; \
                exit 1
        else
-               echo "$progname: $3 is $2"
+               echo "$progname: $3 is $2" ; \
                eval "$1=\"\$2\""
        fi
 }
@@ -78,12 +107,27 @@ curd="`pwd`"
 dirn="`basename \"$curd\"`"
 mustsetvar package "`dpkg-parsechangelog | sed -n 's/^Source: //p'`" "source package"
 mustsetvar version "`dpkg-parsechangelog | sed -n 's/^Version: //p'`" "source version"
-mustsetvar arch "`dpkg --print-architecture`" "build architecture"
-pv="${package}_${version}"
-pva="${package}_${version}_${arch}"
+if [ -n "$maint" ]; then maintainer="$maint"; 
+else mustsetvar maintainer "`dpkg-parsechangelog | sed -n 's/^Maintainer: //p'`" "source maintainer"; fi
+test "${opt_a}" \
+       || mustsetvar arch "`dpkg --print-architecture`" "build architecture"
+
+sversion=`echo "$version" | perl -pe 's/^\d+://'`
+pv="${package}_${sversion}"
+pva="${package}_${sversion}${arch:+_${arch}}"
 
 signfile () {
-       $pgpcommand +clearsig=on -fast <"../$1" >"../$1.asc"
+       if test $signinterface = gpg ; then
+               # --textmode doesn't seem to work; we use perl to filter ^M;
+               # this doesn't affect the actual signature.
+               (cat "../$1" ; echo "") | \
+               $signcommand --local-user "$maintainer" --clearsign --armor \
+                       --textmode --output - - | \
+                       perl -n -p -e 's/\r$//' > "../$1.asc" 
+       else
+               $signcommand -u "$maintainer" +clearsig=on -fast <"../$1" \
+                       >"../$1.asc"
+       fi
        echo
        mv -- "../$1.asc" "../$1"
 }
@@ -93,20 +137,24 @@ withecho () {
        "$@"
 }
 
-set -- $binaryonly
+set -- $binaryonly $sourcestyle
 if [ -n "$maint"       ]; then set -- "$@" "-m$maint"          ; fi
-if [ -n "$version"     ]; then set -- "$@" "-v$version"        ; fi
+if [ -n "$since"       ]; then set -- "$@" "-v$since"          ; fi
 if [ -n "$desc"                ]; then set -- "$@" "-C$desc"           ; fi
 
-withecho $rootcommand debian/rules clean
+if [ x$noclean != xtrue ]; then
+       withecho $rootcommand debian/rules clean
+fi
 if [ x$binaryonly = x ]; then
        cd ..; withecho dpkg-source -b "$dirn"; cd "$dirn"
 fi
 withecho debian/rules build
 withecho $rootcommand debian/rules $binarytarget
-$signsource "$pv.dsc"
+if [ x$binaryonly = x ]; then
+        $signsource "$pv.dsc"
+fi
 chg=../"$pva.changes"
-withecho dpkg-genchanges $binaryonly $sourcestyle >"$chg"
+withecho dpkg-genchanges "$@" >"$chg"
 
 fileomitted () {
        set +e
old mode 100644 (file)
new mode 100755 (executable)
index 6bbfebc..3bebc2c
@@ -45,6 +45,8 @@ while (@ARGV && $ARGV[0] =~ m/^-/) {
 
 $fileslistfile="./$fileslistfile" if $fileslistfile =~ m/^\s/;
 open(Y,"> $fileslistfile.new") || &syserr("open new files list file");
+chown(@fowner, "$fileslistfile.new") 
+               || &syserr("chown new files list file");
 if (open(X,"< $fileslistfile")) {
     while (<X>) {
         s/\n$//;
old mode 100644 (file)
new mode 100755 (executable)
index 26cb934..ce58e8d
@@ -188,6 +188,7 @@ sub checkrename {
 
 sub dorename {
     return unless $dorename;
+    return if $testmode;
     if (@ssrc) {
         if (@sdest) {
             unlink($rsrc) || &quit("rename: remove duplicate old link \`$rsrc': $!");
@@ -200,6 +201,7 @@ sub dorename {
 sub save {
     return if $testmode;
     open(N,"> $admindir/diversions-new") || &quit("create diversions-new: $!");
+    chmod 0644, "$admindir/diversions-new";
     for ($i=0; $i<=$#contest; $i++) {
         print(N "$contest[$i]\n$altname[$i]\n$package[$i]\n")
             || &quit("write diversions-new: $!");
old mode 100644 (file)
new mode 100755 (executable)
index 61e321b..35b1f90
@@ -25,7 +25,8 @@ version 2 or later for copying conditions.  There is NO warranty.
 
 Usage: dpkg-genchanges [options ...]
 
-Options:  -b or -B (identical)   binary-only build - no source files
+Options:  -b                     binary-only build - no source files
+          -B                     arch-specific - no source or arch-indep files
           -c<controlfile>        get control info from this file
           -l<changelogfile>      get per-version info from this file
           -f<fileslistfile>      get .deb files list from this file
@@ -52,8 +53,12 @@ $i=100;grep($fieldimps{$_}=$i--,
 
 while (@ARGV) {
     $_=shift(@ARGV);
-    if (m/^-b$|^-B$/) {
+    if (m/^-b$/) {
         $binaryonly= 1;
+    } elsif (m/^-B$/) {
+       $archspecific=1;
+       $binaryonly= 1;
+       print STDERR "$progname: arch-specific upload - not including arch-independent packages\n";
     } elsif (m/^-s([iad])$/) {
         $sourcestyle= $1;
     } elsif (m/^-q$/) {
@@ -76,6 +81,8 @@ while (@ARGV) {
         $changelogformat=$1;
     } elsif (m/^-D([^\=:]+)[=:]/) {
         $override{$1}= $';
+    } elsif (m/^-u/) {
+        $uploadfilesdir= $';
     } elsif (m/^-U([^\=:]+)$/) {
         $remove{$1}= 1;
     } elsif (m/^-V(\w[-:0-9A-Za-z]*)[=:]/) {
@@ -95,8 +102,10 @@ $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+)$/) {
-        defined($p2f{$2}) &&
+        defined($p2f{"$2 $4"}) &&
             &warn("duplicate files list entry for package $2 (line $.)");
+       $f2p{$1}= $2;
+        $p2f{"$2 $4"}= $1;
         $p2f{$2}= $1;
         $p2ver{$2}= $3;
         defined($f2sec{$1}) &&
@@ -105,7 +114,7 @@ while(<FL>) {
         $f2pri{$1}= $6;
         push(@fileslistfiles,$1);
     } elsif (m/^([-+.,_0-9a-zA-Z]+) (\S+) (\S+)$/) {
-        defined($f2sec{$1}) &&
+       defined($f2sec{$1}) &&
             &warn("duplicate files list entry for file $1 (line $.)");
         $f2sec{$1}= $2;
         $f2pri{$1}= $3;
@@ -116,39 +125,49 @@ while(<FL>) {
 }
 close(FL);
 
-$archspecific=0;
 for $_ (keys %fi) {
     $v= $fi{$_};
     if (s/^C //) {
 #print STDERR "G key >$_< value >$v<\n";
-        if (m/^Source$/) { &setsourcepackage; }
-        elsif (m/^Section$|^Priority$/) { $sourcedefault{$_}= $v; }
-        elsif (s/^X[BS]*C[BS]*-//i) { $f{$_}= $v; }
-        elsif (m/|^X[BS]+-|^Standards-Version$|^Maintainer$/i) { }
-        else { &unknown('general section of control info file'); }
+       if (m/^Source$/) { &setsourcepackage; }
+       elsif (m/^Section$|^Priority$/) { $sourcedefault{$_}= $v; }
+       elsif (s/^X[BS]*C[BS]*-//i) { $f{$_}= $v; }
+       elsif (m/|^X[BS]+-|^Standards-Version$|^Maintainer$/i) { }
+       else { &unknown('general section of control info file'); }
     } elsif (s/^C(\d+) //) {
 #print STDERR "P key >$_< value >$v<\n";
-        $i=$1; $p=$fi{"C$i Package"};
-        defined($p2f{$p}) || &error("package $p in control file but not in files list");
-        $f= $p2f{$p};
-        if (m/^Description$/) {
-            $v=$` if $v =~ m/\n/;
-            push(@descriptions,sprintf("%-10s - %-.65s",$p,$v));
-        } elsif (m/^Section$/) {
-            $f2seccf{$f}= $v;
-        } elsif (m/^Priority$/) {
-            $f2pricf{$f}= $v;
-        } elsif (s/^X[BS]*C[BS]*-//i) {
-            $f{$_}= $v;
-        } elsif (m/^Architecture$/) {
-            $v= $arch if $v eq 'any';
-            push(@archvalues,$v) unless $archadded{$v}++;
-        } elsif (m/^(Package|Essential|Pre-Depends|Depends|Provides)$/ ||
-                 m/^(Recommends|Suggests|Optional|Conflicts|Replaces)$/ ||
-                 m/^X[CS]+-/i) {
-        } else {
-            &unknown("package's section of control info file");
-        }
+       $i=$1; $p=$fi{"C$i Package"}; $a=$fi{"C$i Architecture"};
+       if (!defined($p2f{$p})) {
+           if ($a eq 'any' || ($a eq 'all' && !$archspecific) ||
+               grep($_ eq $substvar{'Arch'}, split(/\s+/, $a))) {
+               &error("package $p in control file but not in files list");
+           }
+       } else {
+           $p2arch{$p}=$a;
+           $f=$p2f{$p};
+           if (m/^Description$/) {
+               $v=$` if $v =~ m/\n/;
+               push(@descriptions,sprintf("%-10s - %-.65s",$p,$v));
+           } elsif (m/^Section$/) {
+               $f2seccf{$f}= $v;
+           } elsif (m/^Priority$/) {
+               $f2pricf{$f}= $v;
+           } elsif (s/^X[BS]*C[BS]*-//i) {
+               $f{$_}= $v;
+           } elsif (m/^Architecture$/) {
+               if ($v eq 'any' || grep($_ eq $arch, split(/\s+/, $v))) {
+                   $v= $arch;
+               } elsif ($v ne 'all') {
+                   $v= '';
+               }
+               push(@archvalues,$v) unless !$v || $archadded{$v}++;
+           } elsif (m/^(Package|Essential|Pre-Depends|Depends|Provides)$/ ||
+                    m/^(Recommends|Suggests|Optional|Conflicts|Replaces)$/ ||
+                    m/^X[CS]+-/i) {
+           } else {
+               &unknown("package's section of control info file");
+           }
+       }
     } elsif (s/^L //) {
 #print STDERR "L key >$_< value >$v<\n";
         if (m/^Source$/) {
@@ -177,18 +196,19 @@ if ($changesdescription) {
 }
 
 for $p (keys %p2f) {
-    defined($p2i{"C $p"}) ||
-        &warn("package $p listed in files list but not in control info");
+    my ($pp, $aa) = (split / /, $p);
+    defined($p2i{"C $pp"}) ||
+        &warn("package $pp listed in files list but not in control info");
 }
 
 for $p (keys %p2f) {
     $f= $p2f{$p};
     $sec= $f2seccf{$f}; $sec= $sourcedefault{'Section'} if !length($sec);
-    if (!length($sec)) { $sec='-'; &warn("missing Section for binary package $p"); }
+    if (!length($sec)) { $sec='-'; &warn("missing Section for binary package $p; using '-'"); }
     $sec eq $f2sec{$f} || &error("package $p has section $sec in control file".
                                  " but $f2sec{$f} in files list");
     $pri= $f2pricf{$f}; $pri= $sourcedefault{'Priority'} if !length($pri);
-    if (!length($pri)) { $pri='-'; &warn("missing Priority for binary package $p"); }
+    if (!length($pri)) { $pri='-'; &warn("missing Priority for binary package $p; using '-'"); }
     $pri eq $f2pri{$f} || &error("package $p has priority $pri in control".
                                  " file but $f2pri{$f} in files list");
 }
@@ -201,9 +221,10 @@ if (!$binaryonly) {
     $pri= $sourcedefault{'Priority'};
     if (!length($pri)) { $pri='-'; &warn("missing Priority for source files"); }
 
-    $dsc= "$uploadfilesdir/${sourcepackage}_${version}.dsc";
+    ($sversion = $version) =~ s/^\d+://;
+    $dsc= "$uploadfilesdir/${sourcepackage}_${sversion}.dsc";
     open(CDATA,"< $dsc") || &error("cannot open .dsc file $dsc: $!");
-    push(@sourcefiles,"${sourcepackage}_${version}.dsc");
+    push(@sourcefiles,"${sourcepackage}_${sversion}.dsc");
     
     &parsecdata('S',-1,"source control file $dsc");
     $files= $fi{'S Files'};
@@ -247,6 +268,7 @@ $f{'Description'}= "\n ".join("\n ",sort @descriptions);
 
 $f{'Files'}= '';
 for $f (@sourcefiles,@fileslistfiles) {
+    next if ($archspecific && ($p2arch{$f2p{$f}} eq 'all'));
     next if $filedone{$f}++;
     $uf= "$uploadfilesdir/$f";
     open(STDIN,"< $uf") || &syserr("cannot open upload file $uf for reading");
@@ -277,4 +299,4 @@ for $f (qw(Urgency)) {
 for $f (keys %override) { $f{&capit($f)}= $override{$f}; }
 for $f (keys %remove) { delete $f{&capit($f)}; }
 
-&outputclose;
+&outputclose(0);
old mode 100644 (file)
new mode 100755 (executable)
index 4a8c28f..6f4604f
@@ -87,8 +87,10 @@ while (@ARGV) {
     }
 }
 
-$arch=`dpkg --print-architecture`;
-$? && &subprocerr("dpkg --print-architecture");
+$arch = $override{Architecture} or do {
+       $arch=`dpkg --print-architecture`;
+       $? && &subprocerr("dpkg --print-architecture");
+};
 $arch =~ s/\n$//;
 
 &parsechangelog;
@@ -201,17 +203,22 @@ if (length($substvar{'Installed-Size'})) {
 
 $fileslistfile="./$fileslistfile" if $fileslistfile =~ m/^\s/;
 open(Y,"> $fileslistfile.new") || &syserr("open new files list file");
+chown(@fowner, "$fileslistfile.new") 
+               || &syserr("chown new files list file");
 if (open(X,"< $fileslistfile")) {
     while (<X>) {
         s/\n$//;
-        next if m/^([-+0-9a-z.]+)_[^_]+_\w+\.deb / && $1 eq $oppackage;
+        next if m/^([-+0-9a-z.]+)_[^_]+_(\w+)\.deb /
+                && ($1 eq $oppackage) && ($2 eq $arch);
         print(Y "$_\n") || &syserr("copy old entry to new files list file");
     }
 } elsif ($! != ENOENT) {
     &syserr("read old files list file");
 }
+$sversion=$f{'Version'};
+$sversion =~ s/^\d+://;
 print(Y &substvars(sprintf("%s_%s_%s.deb %s %s\n",
-                           $oppackage,$f{'Version'},$f{'Architecture'},
+                           $oppackage,$sversion,$f{'Architecture'},
                            &spfileslistvalue('Section'), &spfileslistvalue('Priority'))))
     || &syserr("write new entry to new files list file");
 close(Y) || &syserr("close new files list file");
@@ -226,7 +233,7 @@ if (!$stdout) {
     open(STDOUT,"> $cf.new") ||
         &syserr("cannot open new output control file \`$cf.new'");
 }
-&outputclose;
+&outputclose(1);
 if (!$stdout) {
     rename("$cf.new","$cf") || &syserr("cannot install output control file \`$cf'");
 }
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
index c2e05b4..91d92f5
@@ -70,40 +70,65 @@ while (@ARGV) {
 
 @exec || usageerr("need at least one executable");
 
+sub isbin {
+    open (F, $_[0]) || die("unable to open '$_[0]' for test");
+    if (read (F, $d, 4) != 4) {
+       die ("unable to read first four bytes of '$_[0]' as magic number");
+    }
+    if ($d =~ /^\177ELF$/) { # ELF binary
+       return 1;
+    } elsif ($d =~ /^\#\!..$/) { # shell script
+       return 0;
+    } elsif (unpack ('N', $d) == 0xcafebabe) { # JAVA binary
+       return 0;
+    } else {
+       die("unrecognized file type for '$_[0]'");
+    }
+}
+
 for ($i=0;$i<=$#exec;$i++) {
+    if (!isbin ($exec[$i])) { next; }
     defined($c= open(P,"-|")) || syserr("cannot fork for ldd");
     if (!$c) { exec("ldd","--",$exec[$i]); syserr("cannot exec ldd"); }
     $nthisldd=0;
     while (<P>) {
-        s/\n$//;
-        if (m,^\t(\S+)\.so\.(\S+) \=\> (/\S+)$,) {
-            push(@libname,$1); push(@libsoname,$2); push(@libpath,$3);
-            push(@libf,$execf[$i]);
-            push(@libpaths,$3) if !$libpathadded{$3}++;
-            $nthisldd++;
-        } else {
-            &warn("unknown output from ldd on \`$exec[$i]': \`$_'");
-        }
+       chomp;
+       if (m,^\s+(\S+)\s+\=\>\s+\1$,) {
+           # shared libraries depend on themselves (unsure why)
+           # Only under old ld.so
+           $nthisldd++;
+       } elsif (m,\s+statically linked(\s+\(ELF\))?$,) {
+           $nthisldd++;
+       } elsif (m,^\s+(\S+)\.so\.(\S+)\s+=>\s+(/\S+)(\s+\(0x.+\))?$,) {
+           push(@libname,$1); push(@libsoname,$2); push(@libpath,$3);
+           push(@libf,$execf[$i]);
+           push(@libpaths,$3) if !$libpathadded{$3}++;
+           $nthisldd++;
+       } else {
+           &warn("unknown output from ldd on \`$exec[$i]': \`$_'");
+       }
     }
     close(P); $? && subprocerr("ldd on \`$exec[$i]'");
     $nthisldd || &warn("ldd on \`$exec[$i]' gave nothing on standard output");
 }
 
-grep(s/\[\?\*/\\$&/g, @libpaths);
-defined($c= open(P,"-|")) || syserr("cannot fork for dpkg --search");
-if (!$c) { exec("dpkg","--search","--",@libpaths); syserr("cannot exec dpkg"); }
-while (<P>) {
-    s/\n$//;
-    if (m/^local diversion |^diversion by/) {
-        &warn("diversions involved - output may be incorrect");
-        print(STDERR " $_\n") || syserr("write diversion info to stderr");
-    } elsif (m=^(\S+(, \S+)*): (/.+)$=) {
-        $pathpackages{$+}= $1;
-    } else {
-        &warn("unknown output from dpkg --search: \`$_'");
+if ($#libpaths >= 0) {
+    grep(s/\[\?\*/\\$&/g, @libpaths);
+    defined($c= open(P,"-|")) || syserr("cannot fork for dpkg --search");
+    if (!$c) { exec("dpkg","--search","--",@libpaths); syserr("cannot exec dpkg"); }
+    while (<P>) {
+       s/\n$//;
+       if (m/^local diversion |^diversion by/) {
+           &warn("diversions involved - output may be incorrect");
+           print(STDERR " $_\n") || syserr("write diversion info to stderr");
+       } elsif (m=^(\S+(, \S+)*): (/.+)$=) {
+           $pathpackages{$+}= $1;
+       } else {
+           &warn("unknown output from dpkg --search: \`$_'");
+       }
     }
+    close(P); $? && subprocerr("dpkg --search");
 }
-close(P); $? && subprocerr("dpkg --search");
 
 LIB: for ($i=0;$i<=$#libname;$i++) {
     scanshlibsfile($shlibslocal,$libname[$i],$libsoname[$i],$libf[$i]) && next;
@@ -169,6 +194,8 @@ if (!$stdout) {
     $varlistfile="./$varlistfile" if $fileslistfile =~ m/^\s/;
     open(Y,"> $varlistfile.new") ||
         syserr("open new substvars file \`$varlistfile.new'");
+    chown(@fowner, "$varlistfile.new") ||
+       syserr("chown of \`$varlistfile.new'");
     if (open(X,"< $varlistfile")) {
         while (<X>) {
             s/\n$//;
index 5147e4dc859e8db4e07dd48b4dc71baf611c035b..cd6ce7c1a49f2b17ce4ed240e1694224a1f52bda 100644 (file)
@@ -62,7 +62,7 @@ control area file of the package containing the file which
 reports as satisfying the library dependency, or
 .BR /etc/dpkg/shlibs.default .
 The first match will be used.  See the
-.I dpkg programmers' manual
+.I Debian packaging manual
 for details of the format of shared library dependency files.
 
 .B dpkg-genchanges
@@ -218,10 +218,10 @@ This option is understood by
 .BI -F changelogformat
 Specifies the format of the changelog.  By default the format is read
 from a special line near the bottom of the changelog (see the
-programmers' manual) or failing that defaults to
+Debian packaging manual) or failing that defaults to
 .BR debian ,
 the standard format described in the
-.IR "dpkg programmers' manual" .
+.IR "Debian packaging manual" .
 This option is understood by
 .BR dpkg-source ", " dpkg-gencontrol " and " dpkg-genchanges .
 .SH DPKG-SOURCE OPTIONS
@@ -371,7 +371,7 @@ does not take any non-option arguments.
 .BI -p package
 Generate information for the binary package
 .IR package .
-If the source control file lists several binary packages then this
+If the source control file lists only one binary package then this
 option may be omitted; otherwise it is essential to select which
 binary package's information to generate.
 .TP
@@ -507,6 +507,7 @@ and will get as arguments the name of the real command to run and the
 arguments it should take.
 .I gain-root-command
 should not contain spaces or any other shell metacharacters.
+.\" what happens, if it contains spaces? (hs)
 .I gain-root-command
 might typically be
 .BR sudo ", " super " or " really .
@@ -518,24 +519,29 @@ shell with
 .B -c
 instead of passing arguments individually to the command to be run.
 .TP
-.BI -p pgp-command
+.BI -p sign-command
 When
 .B dpkg-buildpackage
-needs to execute PGP to sign a source control
+needs to execute GPG or PGP to sign a source control
 .RB ( .dsc )
 file or a
 .B .changes
 file it will run
-.I pgp-command
+.I sign-command
 (searching the
 .B PATH
 if necessary) instead of
 .BR pgp .
-.I pgp-command
+.I sign-command
 will get all the arguments that
 .B pgp
-would have done.
-.I pgp-command
+would have gotten. If
+.I sign-command
+takes its arguments in GPG rather than PGP style, you should give
+the
+.B -sgpg
+option.
+.I sign-command
 should not contain spaces or any other shell metacharacters.
 .TP
 .B -tc
@@ -545,7 +551,7 @@ Clean the source tree (using
 after the package has been built.
 .TP
 .BR -us ", " -uc
-Do not PGP-sign the source package or the changelog, respectively.
+Do not sign the source package or the changelog, respectively.
 .SH DPKG-DISTADDFILE ARGUMENTS
 .B dpkg-distaddfile
 does not take any non-common options.  It takes three non-option
@@ -705,15 +711,17 @@ are not legal in package names or version numbers.
 
 It should be possible to specify spaces and shell metacharacters in
 and initial arguments for
-.IR gain-root-command " and " pgp-command .
+.IR gain-root-command " and " sign-command .
 .SH SEE ALSO
-.IR "dpkg programmers' manual" ,
+.IR "Debian packaging manual" ,
 .br
 .IR "Debian policy manual" ,
 .br
 .BR dpkg\-deb (1),
 .BR dpkg (8),
-.BR dselect (8).
+.BR dselect (8),
+.BR gpg (1),
+.BR pgp (1).
 .SH AUTHOR
 The utilities and this manpage were written by Ian Jackson.  They are
 Copyright (C)1995-1996 by him and released under the GNU General
old mode 100644 (file)
new mode 100755 (executable)
index 09f42c9..db741fd
@@ -1,21 +1,29 @@
-#!/usr/bin/perl
+#! /usr/bin/perl
 
-$dpkglibdir= ".";
-$version= '1.3.0'; # This line modified by Makefile
+my $dpkglibdir = ".";
+my $version = "1.3.0"; # This line modified by Makefile
 
-$sourcestyle= 'X';
+my @filesinarchive;
+my %dirincluded;
+my %notfileobject;
+my $fn;
+
+$sourcestyle = 'X';
 
 use POSIX;
-use POSIX qw(:errno_h :signal_h);
+use POSIX qw (:errno_h :signal_h);
+
+use strict 'refs';
 
-push(@INC,$dpkglibdir);
+push (@INC, $dpkglibdir);
 require 'controllib.pl';
 
 sub usageversion {
     print STDERR
 "Debian GNU/Linux dpkg-source $version.  Copyright (C) 1996
-Ian Jackson.  This is free software; see the GNU General Public Licence
-version 2 or later for copying conditions.  There is NO warranty.
+Ian Jackson and Klee Dienes.  This is free software; see the GNU
+General Public Licence version 2 or later for copying conditions.
+There is NO warranty.
 
 Usage:  dpkg-source -x <filename>.dsc
         dpkg-source -b <directory> [<orig-directory>|<orig-targz>|\'\']
@@ -41,8 +49,9 @@ General options: -h                  print this message
 ";
 }
 
-$i=100;grep($fieldimps{$_}=$i--,
-          qw(Source Version Binary Maintainer Architecture Standards-Version));
+$i = 100;
+grep ($fieldimps {$_} = $i--,
+      qw (Source Version Binary Maintainer Architecture Standards-Version));
 
 while (@ARGV && $ARGV[0] =~ m/^-/) {
     $_=shift(@ARGV);
@@ -246,7 +255,7 @@ if ($opmode eq 'build') {
                   ".orig.tar.gz (wanted $basename.orig.tar.gz)");
     } else {
         $tardirbase= $dirbase; $tardirname= $dirname;
-        $tarname= "$basename.tar.gz";
+        $tarname= "$basenamerev.tar.gz";
     }
 
 #print STDERR ">$dir|$origdir|$origtargz|$sourcestyle<\n";
@@ -304,13 +313,13 @@ if ($opmode eq 'build') {
         $expectprefix= $origdir; $expectprefix =~ s,^\./,,;
         checktarsane($origtargz,$expectprefix);
         mkdir("$origtargz.tmp-nest",0755) ||
-            &syserr("unable to create \`$origdirtargz.tmp-nest'");
-        extracttar($origtargz,"$origtargz.tmp-nest");
+            &syserr("unable to create \`$origtargz.tmp-nest'");
+        extracttar($origtargz,"$origtargz.tmp-nest",$expectprefix);
         rename("$origtargz.tmp-nest/$expectprefix",$expectprefix) ||
             &syserr("unable to rename \`$origtargz.tmp-nest/$expectprefix' to ".
                     "\`$expectprefix'");
         rmdir("$origtargz.tmp-nest") ||
-            &syserr("unable to remove \`$origdirtargz.tmp-nest'");
+            &syserr("unable to remove \`$origtargz.tmp-nest'");
 
     }
         
@@ -366,7 +375,7 @@ if ($opmode eq 'build') {
                         next file;
                     } elsif (m/^[-+\@ ]/) {
                         $difflinefound=1;
-                    } elsif (m/^\\ No newline at end of file/) {
+                    } elsif (m/^\\ No newline at end of file$/) {
                         &warn("file $fn has no final newline ".
                               "(either original or modified version)");
                     } else {
@@ -431,7 +440,7 @@ if ($opmode eq 'build') {
     print("$progname: building $sourcepackage in $basenamerev.dsc\n")
         || &syserr("write building message");
     open(STDOUT,"> $basenamerev.dsc") || &syserr("create $basenamerev.dsc");
-    &outputclose;
+    &outputclose(1);
 
     if ($ur) {
         print(STDERR "$progname: unrepresentable changes to source\n")
@@ -454,6 +463,7 @@ if ($opmode eq 'build') {
 
     open(CDATA,"< $dsc") || &error("cannot open .dsc file $dsc: $!");
     &parsecdata('S',-1,"source control file $dsc");
+    close(CDATA);
 
     for $f (qw(Source Version Files)) {
         defined($fi{"S $f"}) ||
@@ -496,24 +506,21 @@ if ($opmode eq 'build') {
     checktarsane("$dscdir/$tarfile",$expectprefix);
 
     if (length($difffile)) {
-        if (!$dirincluded{"$expectprefix/debian"}) {
-            $mkdebian=1; $dirincluded{"$expectprefix/debian"}= 1;
-        }
             
         &forkgzipread("$dscdir/$difffile");
         $/="\n";
-        while (length($_=<GZIP>)) {
+        while (<GZIP>) {
             s/\n$// || &error("diff is missing trailing newline");
-            if (m/^--- /) {
+            if (/^--- /) {
                 $fn= $';
                 substr($fn,0,length($expectprefix)+1) eq "$expectprefix/" ||
                     &error("diff patches file ($fn) not in expected subdirectory");
                 $fn =~ m/\.dpkg-orig$/ &&
                     &error("diff patches file with name ending .dpkg-orig");
                 $dirname= $fn;
-                $dirname =~ s,/[^/]+$,, && defined($dirincluded{$dirname}) ||
-                    &error("diff patches file ($fn) whose directory does not appear".
-                           " in tarfile");
+                if ($dirname =~ s,/[^/]+$,, && !defined($dirincluded{$dirname})) {
+                   $dirtocreate{$dirname} = 1;
+               }
                 defined($notfileobject{$fn}) &&
                     &error("diff patches something which is not a plain file");
                 $_= <GZIP>; s/\n$// ||
@@ -521,8 +528,10 @@ if ($opmode eq 'build') {
                 $_ eq '+++ '.$newdirectory.substr($fn,length($expectprefix)) ||
                     &error("line after --- for file $fn isn't as expected");
                 $filepatched{$fn}++ && &error("diff patches file $fn twice");
-            } elsif (!m/^[-+ \@]/) {
-                &error("diff contains unknown line \`$_'");
+            } elsif (/^\\ No newline at end of file$/) {
+            } elsif (/^[-+ \@]/) {
+           } else {
+                &error ("diff contains unknown line \`$_'");
             }
         }
         close(GZIP);
@@ -536,15 +545,46 @@ if ($opmode eq 'build') {
     &erasedir($newdirectory);
     &erasedir("$newdirectory.orig");
 
-    extracttar("$dscdir/$tarfile",'.');
+    mkdir("$expectprefix.tmp-nest",0755)
+       || &syserr("unable to create \`$expectprefix.tmp-nest'");
+    extracttar("$dscdir/$tarfile","$expectprefix.tmp-nest","$expectprefix");
+    rename("$expectprefix.tmp-nest/$expectprefix","$expectprefix")
+       || &syserr("unable to rename \`$expectprefix.tmp-nest/$expectprefix' "
+                  ."to \`$expectprefix'");
+    rmdir("$expectprefix.tmp-nest")
+       || &syserr("unable to remove \`$expectprefix.tmp-nest'");
+
+    for $dircreate (keys %dirtocreate) {
+       $dircreatem= "";
+       for $dircreatep (split("/",$dirc)) {
+           $dircreatem.= $dircreatep;
+           if (!lstat($dircreatem)) {
+               $! == ENOENT || &syserr("cannot stat $dircreatem");
+               mkdir($dircreatem,0777)
+                   || &syserr("failed to create $dircreatem subdirectory");
+           }
+           else {
+               -d _ || &error("diff patches file in directory \`$dircreate',"
+                              ." but $dircreatem isn't a directory !");
+           }
+       }
+    }
     
     if (length($difffile)) {
         rename($expectprefix,$newdirectory) ||
             &syserr("failed to rename newly-extracted $expectprefix to $newdirectory");
 
         if ($sourcestyle =~ m/u/) {
-            extracttar("$dscdir/$tarfile",'.');
-        } elsif ($sourcestyle =~ m/p/) {
+           mkdir("$expectprefix.tmp-nest",0755)
+               || &syserr("unable to create \`$expectprefix.tmp-nest'");
+           extracttar("$dscdir/$tarfile","$expectprefix.tmp-nest",
+                      "$expectprefix");
+           rename("$expectprefix.tmp-nest/$expectprefix","$expectprefix")
+               || &syserr("unable to rename \`$expectprefix.tmp-nest/"
+                          ."$expectprefix' to \`$expectprefix'");
+           rmdir("$expectprefix.tmp-nest")
+               || &syserr("unable to remove \`$expectprefix.tmp-nest'");
+         } elsif ($sourcestyle =~ m/p/) {
             stat("$dscdir/$tarfile") ||
                 &syserr("failed to stat \`$dscdir/$tarfile' to see if need to copy");
             ($dsctardev,$dsctarino) = stat _;
@@ -564,17 +604,13 @@ if ($opmode eq 'build') {
             }
         }                
 
-        if ($mkdebian) {
-            mkdir("$newdirectory/debian",0777) ||
-                &syserr("failed to create $newdirectory/debian subdirectory");
-        }
         &forkgzipread("$dscdir/$difffile");
         defined($c2= fork) || &syserr("fork for patch");
         if (!$c2) {
             open(STDIN,"<&GZIP") || &syserr("reopen gzip for patch");
             chdir($newdirectory) || &syserr("chdir to $newdirectory for patch");
             exec('patch','-s','-t','-F','0','-N','-p1','-u',
-                 '-V','never','-b','.dpkg-orig');
+                 '-V','never','-b','-z','.dpkg-orig');
             &syserr("exec patch");
         }
         close(GZIP);
@@ -617,7 +653,7 @@ if ($opmode eq 'build') {
         } elsif (!-l _) {
             &internerr("unknown object \`$fn' after extract (mode ".
                        sprintf("0%o",$mode).")");
-        }
+        } else { next; }
         next if ($mode & 07777) == $newmode;
         chmod($newmode,$fn) ||
             &syserr(sprintf("cannot change mode of \`%s' to 0%o from 0%o",
@@ -627,8 +663,9 @@ if ($opmode eq 'build') {
 }
 
 sub checkstats {
-    my ($f)= @_;
-    my @s,$m;
+    my ($f) = @_;
+    my @s;
+    my $m;
     open(STDIN,"< $dscdir/$f") || &syserr("cannot read $dscdir/$f");
     (@s= stat(STDIN)) || &syserr("cannot fstat $dscdir/$f");
     $s[7] == $size{$f} || &error("file $f has size $s[7] instead of expected $size{$f}");
@@ -653,104 +690,216 @@ sub erasedir {
     &failure("rm -rf failed to remove \`$dir'");
 }
 
-sub checktarsane {
-    my ($tarfileread,$epfx) = @_;
-    my $c2,$fn,$pname,$slash,$mode,$dirname,$type;
+use strict 'vars';
 
-    &forkgzipread("$tarfileread");
-    defined($c2= open(CPIO,"-|")) || &syserr("fork for cpio");
+sub checktarcpio {
+
+    my ($tarfileread, $wpfx) = @_;
+    my ($tarprefix, $c2);
+
+    @filesinarchive = ();
+
+    # make <CPIO> read from the uncompressed archive file
+    &forkgzipread ("$tarfileread");
+    if (! defined ($c2 = open (CPIO,"-|"))) { &syserr ("fork for cpio"); }
     if (!$c2) {
-        open(STDIN,"<&GZIP") || &syserr("reopen gzip for cpio");
+        open (STDIN,"<&GZIP") || &syserr ("reopen gzip for cpio");
         &cpiostderr;
-        exec('cpio','-0t'); &syserr("exec cpio");
+        exec ('cpio','-0t');
+       &syserr ("exec cpio");
     }
-    $/= "\0";
-    close(GZIP);
-  file:
-    while (defined($fn= <CPIO>)) {
-        $fn =~ s/\0$//; $pname= $fn; $pname =~ y/ -~/?/c;
-        if ($fn =~ m/\n/) {
-            if (!@filesinarchive) {
+    close (GZIP);
+
+    $/ = "\0";
+    open (CPIO, "<cpiolog");
+    while (defined ($fn = <CPIO>)) {
+
+        $fn =~ s/\0$//;
+
+       # store printable name of file for error messages
+       my $pname = $fn;
+       $pname =~ y/ -~/?/c;
+
+       if (! $tarprefix) {
+           if ($fn =~ m/\n/) {
                 &error("first output from cpio -0t (from \`$tarfileread') ".
                        "contains newline - you probably have an out of ".
-                       "date version of cpio.  2.4.2-2 is known to work");
-            } else {
-                &error("tarfile \`$tarfileread' contains object with".
-                       " newline in its name ($pname)");
-            }
-        }
-        $slash= substr($fn,length($epfx),1);
-        (($slash eq '/' || $slash eq '') &&
-         substr($fn,0,length($epfx)) eq $epfx) ||
-             &error("tarfile \`$tarfileread' contains object ($pname) ".
-                    "not in expected directory ($epfx)");
-        $fn =~ m,/\.\./, &&
-            &error("tarfile \`$tarfilread' contains object with".
-                   " /../ in its name ($pname)");
-        push(@filesinarchive,$fn);
+                       "date version of cpio.  GNU cpio 2.4.2-2 is known to work");
+           }
+           $tarprefix = ($fn =~ m,([^/]*)[/],)[0];
+           # need to check for multiple dots on some operating systems
+           # empty tarprefix (due to regex failer) will match emptry string
+           if ($tarprefix =~ /^[.]*$/) {
+               &error("tarfile \`$tarfileread' does not extract into a ".
+                      "directory off the current directory ($tarprefix from $pname)");
+           }
+       }
+
+        if ($fn =~ m/\n/) {
+           &error ("tarfile \`$tarfileread' contains object with".
+                   " newline in its name ($pname)");
+       }
+
+       next if ($fn eq '././@LongLink');
+
+       my $fprefix = substr ($fn, 0, length ($tarprefix));
+        my $slash = substr ($fn, length ($tarprefix), 1);
+        if ((($slash ne '/') && ($slash ne '')) || ($fprefix ne $tarprefix)) {
+           &error ("tarfile \`$tarfileread' contains object ($pname) ".
+                   "not in expected directory ($tarprefix)");
+       }
+
+       # need to check for multiple dots on some operating systems
+        if ($fn =~ m/[.]{2,}/) {
+            &error ("tarfile \`$tarfileread' contains object with".
+                   " /../ in its name ($pname)");
+       }
+        push (@filesinarchive, $fn);
     }
-    close(CPIO); $? && subprocerr("cpio");
-    
-    $/= "\n";
+    close (CPIO);
+    $? && subprocerr ("cpio");
     &reapgzip;
-    &forkgzipread("$tarfileread");
-    defined($c2= open(TAR,"-|")) || &syserr("fork for tar -t");
-    if (!$c2) {
+    $/= "\n";
+
+    my $tarsubst = quotemeta ($tarprefix);
+    @filesinarchive = map { s/^$tarsubst/$wpfx/; $_ } @filesinarchive;
+
+    return $tarprefix;
+}
+
+sub checktarsane {
+
+    my ($tarfileread, $wpfx) = @_;
+    my ($c2);
+
+    %dirincluded = ();
+    %notfileobject = ();
+
+    my $tarprefix = &checktarcpio ($tarfileread, $wpfx);
+
+    # make <TAR> read from the uncompressed archive file
+    &forkgzipread ("$tarfileread");
+    if (! defined ($c2 = open (TAR,"-|"))) { &syserr ("fork for tar -t"); }
+    if (! $c2) {
         $ENV{'LANG'}= 'C';
-        open(STDIN,"<&GZIP") || &syserr("reopen gzip for tar -t");
-        exec('tar','-vvtf','-'); &syserr("exec tar -vvtf -");
+        open (STDIN, "<&GZIP") || &syserr ("reopen gzip for tar -t");
+        exec ('tar', '-vvtf', '-'); &syserr ("exec tar -vvtf -");
     }
-    close(GZIP);
-    $efix= 0;
-  file:
-    while (length($_= <TAR>)) {
-        s/\n$//;
-        m,^(\S{10})\s, ||
+    close (GZIP);
+
+    my $efix= 0;
+    open (TAR, "<tarlog");
+    while (<TAR>) {
+
+        chomp;
+
+        if (! m,^(\S{10})\s,) {
             &error("tarfile \`$tarfileread' contains unknown object ".
                    "listed by tar as \`$_'");
-        $fn= $filesinarchive[$efix++]; $mode= $1;
-        if ($mode =~ m/^l/) { $_ =~ s/ -\> .*//; }
-        substr($_,length($_)-length($fn)-1) eq " $fn" ||
-            &error("tarfile \`$tarfileread' contains unexpected object".
-                   " listed by tar as \`$_', expected \`$fn'");
+       }
+       my $mode = $1;
+
         $mode =~ s/^([-dpsl])// ||
             &error("tarfile \`$tarfileread' contains object \`$fn' with ".
                    "unknown or forbidden type \`".substr($_,0,1)."'");
-        $fn =~ m/\.dpkg-orig$/ &&
-            &error("tarfile \`$tarfileread' contains file with name ending .dpkg-orig");
-        $type= $&;
-        $mode =~ m/[sStT]/ && $type ne 'd' &&
-            &error("tarfile \`$tarfileread' contains setuid, setgid".
-                   " or sticky object \`$fn'");
-        $fn eq "$epfx/debian" && $type ne 'd' &&
-            &error("tarfile \`$tarfileread' contains object \`debian'".
+        my $type = $&;
+
+        if ($mode =~ /^l/) { $_ =~ s/ -\> .*//; }
+        s/ link to .+//;
+
+       if (length ($_) <= 48) { 
+           &error ("tarfile \`$tarfileread' contains incomplete entry \`$_'\n");
+       }
+
+       my $tarfn = substr ($_, 48, length ($_) - 48);
+       $tarfn = deoctify ($tarfn);
+
+       # store printable name of file for error messages
+       my $pname = $tarfn;
+       $pname =~ y/ -~/?/c;
+
+       # fetch name of file as given by cpio
+        $fn = $filesinarchive[$efix++];
+
+       if ($tarfn ne $fn) {
+           if ((length ($fn) == 99) && (length ($tarfn) >= 99)
+               && (substr ($fn, 0, 99) eq substr ($tarfn, 0, 99))) {
+               # this file doesn't match because cpio truncated the name
+               # to the first 100 characters.  let it slide for now.
+               &warn ("filename \`$pname' was truncated by cpio;" .
+                      " unable to check full pathname");
+           } else {
+               &error ("tarfile \`$tarfileread' contains unexpected object".
+                       " listed by tar as \`$_'; expected \`$pname'");
+           }
+       }
+
+       # if cpio truncated the name above, 
+       # we still can't allow files to expand into /../
+       # need to check for multiple dots on some operating systems
+        if ($tarfn =~ m/[.]{2,}/) {
+            &error ("tarfile \`$tarfileread' contains object with".
+                   "/../ in its name ($pname)");
+       }
+
+        if ($tarfn =~ /\.dpkg-orig$/) {
+            &error ("tarfile \`$tarfileread' contains file with name ending in .dpkg-orig");
+       }
+
+        if ($mode =~ /[sStT]/ && $type ne 'd') {
+            &error ("tarfile \`$tarfileread' contains setuid, setgid".
+                   " or sticky object \`$pname'");
+       }
+
+        if ($tarfn eq "$tarprefix/debian" && $type ne 'd') {
+            &error ("tarfile \`$tarfileread' contains object \`debian'".
                    " that isn't a directory");
-        $fn =~ s,/$,, if $type eq 'd';
-        $dirname= $fn;
-        $dirname =~ s,/[^/]+$,, && !defined($dirincluded{$dirname}) &&
-            &error("tarfile \`$tarfileread' contains object \`$fn' but its containing ".
-                   "directory \`$dirname' does not precede it");
-        $dirincluded{$fn}= 1 if $type eq 'd';
-        $notfileobject{$fn}= 1 if $type ne '-';
+       }
+
+        if ($type eq 'd') { $tarfn =~ s,/$,,; }
+        my $dirname = $tarfn;
+
+        if (($dirname =~ s,/[^/]+$,,) && (! defined ($dirincluded{$dirname}))) {
+            &error ("tarfile \`$tarfileread' contains object \`$pname' but its containing ".
+                   "directory \`$dirname' does not precede it");
+       }
+       if ($type eq 'd') { $dirincluded{$tarfn} = 1; }
+        if ($type ne '-') { $notfileobject{$tarfn} = 1; }
     }
-    close(TAR); $? && subprocerr("tar -t");
+    close (TAR);
+    #$? && subprocerr ("tar -vvtf");
     &reapgzip;
+
+    my $tarsubst = quotemeta ($tarprefix);
+    %dirincluded = map { s/^$tarsubst/$wpfx/; $_=>1 } (keys %dirincluded);
+    %notfileobject = map { s/^$tarsubst/$wpfx/; $_=>1 } (keys %notfileobject);
 }
 
+no strict 'vars';
+
 sub extracttar {
-    my ($tarfileread,$dirchdir) = @_;
+    my ($tarfileread,$dirchdir,$newtopdir) = @_;
     &forkgzipread("$tarfileread");
-    defined($c2= fork) || &syserr("fork for cpio -i");
+    defined($c2= fork) || &syserr("fork for tar -xkf -");
     if (!$c2) {
         chdir("$dirchdir") || &syserr("cannot chdir to \`$dirchdir' for tar extract");
         open(STDIN,"<&GZIP") || &syserr("reopen gzip for cpio -i");
         &cpiostderr;
-        exec('cpio','-Hustar','-im','--no-preserve-owner'); &syserr("exec cpio -i");
+        exec('tar','-xkf','-'); &syserr("exec tar -xkf -");
     }
     close(GZIP);
-    $c2 == waitpid($c2,0) || &syserr("wait for cpio -i");
-    $? && subprocerr("cpio -i");
+    $c2 == waitpid($c2,0) || &syserr("wait for tar -xkf -");
+    $? && subprocerr("tar -xkf -");
     &reapgzip;
+
+    opendir(D,"$dirchdir") || &syserr("Unable to open dir $dirchdir");
+    @dirchdirfiles = grep($_ ne "." && $_ ne "..",readdir(D));
+    closedir(D) || &syserr("Unable to close dir $dirchdir");
+    (@dirchdirfiles==1 && -d "$dirchdir/$dirchdirfiles[0]") ||
+       &error("$tarfileread extracted into >1 directory");
+    rename("$dirchdir/$dirchdirfiles[0]", "$dirchdir/$newtopdir") ||
+       &syserr("Unable to rename $dirchdir/$dirchdirfiles[0] to ".
+               "$dirchdir/$newtopdir");
 }
 
 sub cpiostderr {
@@ -759,9 +908,11 @@ sub cpiostderr {
 }
 
 sub setfile {
-    my ($varref)= @_;
-    &error("repeated file type - files ".$$varref." and $file") if length($$varref);
-    $$varref= $file;
+    my ($varref) = @_;
+    if (defined ($$varref)) { 
+       &error ("repeated file type - files " . $$varref . " and $file"); 
+    }
+    $$varref = $file;
 }
 
 sub checktype {
@@ -839,3 +990,23 @@ sub addfile {
     $md5sum =~ s/^([0-9a-f]{32})\n$/$1/ || &failure("md5sum gave bogus output \`$_'");
     $f{'Files'}.= "\n $md5sum $size $filename";
 }
+
+# replace \ddd with their corresponding character, refuse \ddd > \377
+# modifies $_ (hs)
+{
+    my $backslash;
+sub deoctify {
+    my $fn= $_[0];
+    $backslash= sprintf("\\%03o", unpack("C", "\\")) if !$backslash;
+
+    s/\\{2}/$backslash/g;
+    @_= split(/\\/, $fn);
+
+    foreach (@_) {
+        /^(\d{3})/ or next;
+        &failure("bogus character `\\$1' in `$fn'\n") if oct($1) > 255;
+        $_= pack("c", oct($1)) . $';
+    }
+    return join("", @_);
+} }
+
index 0b41eb369441a747196b69cf73c65cdb17a8201a..cc2994fb8a7f7a417cbc796aab172fcac4945bfa 100755 (executable)
@@ -17,8 +17,9 @@ sub usage {
     print STDERR <<END;
 usage: install-info [--version] [--help] [--debug] [--maxwidth=nnn]
              [--section regexp title] [--infodir=xxx] [--align=nnn]
-             [--calign=nnn] [--quiet] [--menuentry=xxx] [--keep-old]
-             [--description=xxx] [--test] [--remove] [--] filename
+             [--calign=nnn] [--quiet] [--menuentry=xxx] [--info-dir=xxx]
+             [--keep-old] [--description=xxx] [--test] [--remove] [--]
+             filename
 END
 }
 
@@ -38,7 +39,7 @@ $0 =~ m|[^/]+$|; $name= $&;
 
 while ($ARGV[0] =~ m/^--/) {
     $_= shift(@ARGV);
-    last if $eq eq '--';
+    last if $_ eq '--';
     if ($_ eq '--version') {
         &version; exit 0;
     } elsif ($_ eq '--quiet') {
@@ -70,6 +71,8 @@ while ($ARGV[0] =~ m/^--/) {
         $infodir=$';
     } elsif (m/^--menuentry=/) {
         $menuentry=$';
+    } elsif (m/^--info-dir=/) {
+        $infodir=$';
     } elsif (m/^--description=/) {
         $description=$';
     } else {
index 787072016de208612cf1cad2a801555efd06bcfa..a7f1b92908dedfbe21da8671587515c6f1609c61 100644 (file)
 .\" Hey, Emacs!  This is an -*- nroff -*- source file.
-.TH START\-STOP\-DAEMON 8 "29th November 1995" "Debian Project" "Debian GNU/Linux"
+.TH START\-STOP\-DAEMON 8 "15th March 1997" "Debian Project" "Debian GNU/Linux"
 .SH NAME
-start\-stop\-daemon \- Debian package installation tool
+start\-stop\-daemon \- start and stop system daemon programs
+.SH SYNOPSIS
+.B start-stop-daemon
+.BR -S|--start
+.IR "options ... -- arguments ..."
+.HP
+.B start-stop-daemon
+.BR -K|--stop
+.IR "options ..."
+.HP
+.B start-stop-daemon
+.BR -H|--help
+.HP
+.B start-stop-daemon
+.BR -V|--version
 .SH DESCRIPTION
 .B start\-stop\-daemon
-does not have a useful man page.  Please do not report this as a bug,
-as this has already been done many times.
+is used to control the creation and termination of system-level processes.
+Using the
+.BR --exec
+,
+.BR --pidfile
+,
+.BR --user
+, and
+.BR --name
+options, 
+.B start\-stop\-daemon
+can be configured to find existing instances of a running process.
+
+With
+.BR --start
+,
+.B start\-stop\-daemon
+checks for the existence of a specified process.
+If such a process exists,
+.B start\-stop\-daemon
+does nothing, and exits with error status 1 (0 if
+.BR --oknodo
+is specified).  
+If such a process does not exist, it starts an
+instance, using either the executable specified by
+.BR --exec
+, (or, if specified, by
+.BR --startas
+).
+Any arguments given after
+.BR --
+on the command line are passed unmodified to the program being
+started.
+
+With 
+.BR --stop
+,
+.B start\-stop\-daemon
+also checks for the existence of a specified process.
+If such a process exists,
+.B start\-stop\-daemon
+sends it the signal specified by
+.BR --signal
+, and exits with error status 0.
+If such a process does not exist,
+.B start\-stop\-daemon
+exits with error status 1
+(0 if 
+.BR --oknodo
+is specified).  
+
+.SH OPTIONS
+
+.TP
+.I -x|--exec executable
+Check for processes that are instances of this executable (according to 
+.B /proc/
+.I pid
+.B /exe 
+).
+.TP
+.I -p|--pidfile pid-file
+Check for processes whose process-id is specified in 
+.I pid-file.
+.TP
+.I -u|--user username|uid
+Check for processes owned by the user specified by
+.I username 
+or
+.I uid.
+.TP
+.I -n|--name process-name
+Check for processes with the name
+.I process-name
+(according to
+.B /proc/
+.I pid
+.B /stat 
+).
+.TP
+.I -s|--signal signal
+With
+.BR --stop
+, specifies the signal to send to processes being stopped (default 15).
+.TP
+.I -a|--startas pathname
+With 
+.B --start
+, start the process specified by 
+.I pathname.
+If not specified, defaults to the argument given to
+.B --exec.
+.TP
+.I -t|--test
+Print actions that would be taken and set appropriate return value,
+but take no action.
+.TP
+.I -o|--oknodo
+Return exit status 0 instead of 1 if no actions are (would be) taken.
+.TP
+.I -q|--quiet
+Do not print informational messages; only display error messages.
+.TP
+.I -v|--verbose
+Print verbose informational messages.
+.TP
+.I -H|--help
+Print help information; then exit.
+.TP
+.I -V|--version
+Print version information; then exit.
 
-Instead, if you are a competent and accurate writer and are willing to
-spend the time reading the source code and writing good manpages
-please write a better man page than this one.
+.SH AUTHORS
+Ian Jackson <ijackson@gnu.ai.mit.edu>
 
-Type
-.B start\-stop\-daemon \-\-help
-for a brief summary of how to use dpkg.
+Marek Michalkiewicz <marekm@i17linuxb.ists.pwr.wroc.pl>
 
-.SH AUTHOR
-Ian Jackson <ijackson@gnu.ai.mit.edu>.
+Manual page by Klee Dienes <klee@mit.edu>.
diff --git a/scripts/start-stop-daemon.c b/scripts/start-stop-daemon.c
new file mode 100644 (file)
index 0000000..f062e1b
--- /dev/null
@@ -0,0 +1,481 @@
+/*
+ * A rewrite of the original Debian's start-stop-daemon Perl script
+ * in C (faster - it is executed many times during system startup).
+ *
+ * Written by Marek Michalkiewicz <marekm@i17linuxb.ists.pwr.wroc.pl>,
+ * public domain.  Based conceptually on start-stop-daemon.pl, by Ian
+ * Jackson <ijackson@gnu.ai.mit.edu>.  May be used and distributed
+ * freely for any purpose.  Changes by Christian Schwarz
+ * <schwarz@monet.m.isar.de>, to make output conform to the Debian
+ * Console Message Standard, also placed in public domain.  Minor
+ * changes by Klee Dienes <klee@debian.org>, also placed in the Public
+ * Domain. */
+
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdarg.h>
+#include <signal.h>
+#include <sys/stat.h>
+#include <dirent.h>
+#include <unistd.h>
+#include <getopt.h>
+#include <pwd.h>
+
+#define VERSION "version 0.4.1, 1997-01-29"
+
+static int testmode = 0;
+static int quietmode = 0;
+static int exitnodo = 1;
+static int start = 0;
+static int stop = 0;
+static int signal_nr = 15;
+static const char *signal_str = NULL;
+static int user_id = -1;
+static const char *userspec = NULL;
+static const char *cmdname = NULL;
+static char *execname = NULL;
+static char *startas = NULL;
+static const char *pidfile = NULL;
+static const char *progname = "";
+
+static struct stat exec_stat;
+
+struct pid_list {
+       struct pid_list *next;
+       int pid;
+};
+
+static struct pid_list *found = NULL;
+static struct pid_list *killed = NULL;
+
+static void *xmalloc(int size);
+static void push(struct pid_list **list, int pid);
+static void do_help(void);
+static void parse_options(int argc, char * const *argv);
+static int pid_is_exec(int pid, const struct stat *esb);
+static int pid_is_user(int pid, int uid);
+static int pid_is_cmd(int pid, const char *name);
+static void check(int pid);
+static void do_pidfile(const char *name);
+static void do_procfs(void);
+static void do_stop(void);
+
+#ifdef __GNUC__
+static void fatal(const char *format, ...)
+       __attribute__((noreturn, format(printf, 1, 2)));
+static void badusage(const char *msg)
+       __attribute__((noreturn));
+#else
+static void fatal(const char *format, ...);
+static void badusage(const char *msg);
+#endif
+
+static void
+fatal(const char *format, ...)
+{
+       va_list arglist;
+
+       fprintf(stderr, "%s: ", progname);
+       va_start(arglist, format);
+       vfprintf(stderr, format, arglist);
+       va_end(arglist);
+       putc('\n', stderr);
+       exit(2);
+}
+
+
+static void *
+xmalloc(int size)
+{
+       void *ptr;
+
+       ptr = malloc(size);
+       if (ptr)
+               return ptr;
+       fatal("malloc(%d) failed", size);
+}
+
+
+static void
+push(struct pid_list **list, int pid)
+{
+       struct pid_list *p;
+
+       p = xmalloc(sizeof(*p));
+       p->next = *list;
+       p->pid = pid;
+       *list = p;
+}
+
+
+static void
+do_help(void)
+{
+       printf("\
+start-stop-daemon for Debian Linux - small and fast C version written by\n\
+Marek Michalkiewicz <marekm@i17linuxb.ists.pwr.wroc.pl>, public domain.\n"
+VERSION "\n\
+\n\
+Usage:
+  start-stop-daemon -S|--start options ... -- arguments ...\n\
+  start-stop-daemon -K|--stop options ...\n\
+  start-stop-daemon -H|--help\n\
+  start-stop-daemon -V|--version\n\
+\n\
+Options (at least one of --exec|--pidfile|--user is required):
+  -x|--exec <executable>        program to start/check if it is running\n\
+  -p|--pidfile <pid-file>       pid file to check\n\
+  -u|--user <username>|<uid>    stop processes owned by this user\n\
+  -n|--name <process-name>      stop processes with this name\n\
+  -s|--signal <signal>          signal to send (default TERM)\n\
+  -a|--startas <pathname>       program to start (default is <executable>)\n\
+  -t|--test                     test mode, don't do anything\n\
+  -o|--oknodo                   exit status 0 (not 1) if nothing done\n\
+  -q|--quiet                    be more quiet\n\
+  -v|--verbose                  be more verbose\n\
+\n\
+Exit status:  0 = done  1 = nothing done (=> 0 if --oknodo)  2 = trouble\n");
+}
+
+
+static void
+badusage(const char *msg)
+{
+       if (msg)
+               fprintf(stderr, "%s: %s\n", progname, msg);
+       fprintf(stderr, "Try `%s --help' for more information.\n", progname);
+       exit(2);
+}
+
+struct sigpair {
+       const char *name;
+       int signal;
+};
+
+const struct sigpair siglist[] = {
+       { "ABRT", SIGABRT },
+       { "ALRM", SIGALRM },
+       { "FPE", SIGFPE },
+       { "HUP", SIGHUP },
+       { "ILL", SIGILL },
+       { "INT", SIGINT },
+       { "KILL", SIGKILL },
+       { "PIPE", SIGPIPE },
+       { "QUIT", SIGQUIT },
+       { "SEGV", SIGSEGV },
+       { "TERM", SIGTERM },
+       { "USR1", SIGUSR1 },
+       { "USR2", SIGUSR2 },
+       { "CHLD", SIGCHLD },
+       { "CONT", SIGCONT },
+       { "STOP", SIGSTOP },
+       { "TSTP", SIGTSTP },
+       { "TTIN", SIGTTIN },
+       { "TTOU", SIGTTOU }
+};
+
+static int parse_signal (const char *signal_str, int *signal_nr)
+{
+       int i;
+       for (i = 0; i < sizeof (siglist) / sizeof (siglist[0]); i++) {
+               if (strcmp (signal_str, siglist[i].name) == 0) {
+                       *signal_nr = siglist[i].signal;
+                       return 0;
+               }
+       }
+       return -1;
+}
+
+static void
+parse_options(int argc, char * const *argv)
+{
+       static struct option longopts[] = {
+               { "help",       0, NULL, 'H'},
+               { "stop",       0, NULL, 'K'},
+               { "start",      0, NULL, 'S'},
+               { "version",    0, NULL, 'V'},
+               { "startas",    1, NULL, 'a'},
+               { "name",       1, NULL, 'n'},
+               { "oknodo",     0, NULL, 'o'},
+               { "pidfile",    1, NULL, 'p'},
+               { "quiet",      0, NULL, 'q'},
+               { "signal",     1, NULL, 's'},
+               { "test",       0, NULL, 't'},
+               { "user",       1, NULL, 'u'},
+               { "verbose",    0, NULL, 'v'},
+               { "exec",       1, NULL, 'x'},
+               { NULL,         0, NULL, 0}
+       };
+       int c;
+
+       for (;;) {
+               c = getopt_long(argc, argv, "HKSVa:n:op:qs:tu:vx:",
+                               longopts, (int *) 0);
+               if (c == -1)
+                       break;
+               switch (c) {
+               case 'H':  /* --help */
+                       do_help();
+                       exit(0);
+               case 'K':  /* --stop */
+                       stop = 1;
+                       break;
+               case 'S':  /* --start */
+                       start = 1;
+                       break;
+               case 'V':  /* --version */
+                       printf("start-stop-daemon " VERSION "\n");
+                       exit(0);
+               case 'a':  /* --startas <pathname> */
+                       startas = optarg;
+                       break;
+               case 'n':  /* --name <process-name> */
+                       cmdname = optarg;
+                       break;
+               case 'o':  /* --oknodo */
+                       exitnodo = 0;
+                       break;
+               case 'p':  /* --pidfile <pid-file> */
+                       pidfile = optarg;
+                       break;
+               case 'q':  /* --quiet */
+                       quietmode = 1;
+                       break;
+               case 's':  /* --signal <signal> */
+                       signal_str = optarg;
+                       break;
+               case 't':  /* --test */
+                       testmode = 1;
+                       break;
+               case 'u':  /* --user <username>|<uid> */
+                       userspec = optarg;
+                       break;
+               case 'v':  /* --verbose */
+                       quietmode = -1;
+                       break;
+               case 'x':  /* --exec <executable> */
+                       execname = optarg;
+                       break;
+               default:
+                       badusage(NULL);  /* message printed by getopt */
+               }
+       }
+
+       if (signal_str != NULL) {
+               if (sscanf (signal_str, "%d", &signal_nr) != 1) {
+                       if (parse_signal (signal_str, &signal_nr) != 0) {
+                               badusage ("--signal takes a numeric argument or name of signal (KILL, INTR, ...)");
+                       }
+               }       
+       }
+
+       if (start == stop)
+               badusage("need one of --start or --stop");
+
+       if (!execname && !pidfile && !userspec)
+               badusage("need at least one of --exec, --pidfile or --user");
+
+       if (!startas)
+               startas = execname;
+
+       if (start && !startas)
+               badusage("--start needs --exec or --startas");
+}
+
+
+static int
+pid_is_exec(int pid, const struct stat *esb)
+{
+       struct stat sb;
+       char buf[32];
+
+       sprintf(buf, "/proc/%d/exe", pid);
+       if (stat(buf, &sb) != 0)
+               return 0;
+       return (sb.st_dev == esb->st_dev && sb.st_ino == esb->st_ino);
+}
+
+
+static int
+pid_is_user(int pid, int uid)
+{
+       struct stat sb;
+       char buf[32];
+
+       sprintf(buf, "/proc/%d", pid);
+       if (stat(buf, &sb) != 0)
+               return 0;
+       return (sb.st_uid == uid);
+}
+
+
+static int
+pid_is_cmd(int pid, const char *name)
+{
+       char buf[32];
+       FILE *f;
+       int c;
+
+       sprintf(buf, "/proc/%d/stat", pid);
+       f = fopen(buf, "r");
+       if (!f)
+               return 0;
+       while ((c = getc(f)) != EOF && c != '(')
+               ;
+       if (c != '(') {
+               fclose(f);
+               return 0;
+       }
+       /* this hopefully handles command names containing ')' */
+       while ((c = getc(f)) != EOF && c == *name)
+               name++;
+       fclose(f);
+       return (c == ')' && *name == '\0');
+}
+
+
+static void
+check(int pid)
+{
+       if (execname && !pid_is_exec(pid, &exec_stat))
+               return;
+       if (userspec && !pid_is_user(pid, user_id))
+               return;
+       if (cmdname && !pid_is_cmd(pid, cmdname))
+               return;
+       push(&found, pid);
+}
+
+
+static void
+do_pidfile(const char *name)
+{
+       FILE *f;
+       int pid;
+
+       f = fopen(name, "r");
+       if (f) {
+               if (fscanf(f, "%d", &pid) == 1)
+                       check(pid);
+               fclose(f);
+       }
+}
+
+
+static void
+do_procfs(void)
+{
+       DIR *procdir;
+       struct dirent *entry;
+       int foundany, pid;
+
+       procdir = opendir("/proc");
+       if (!procdir)
+               fatal("opendir /proc: %s", strerror(errno));
+
+       foundany = 0;
+       while ((entry = readdir(procdir)) != NULL) {
+               if (sscanf(entry->d_name, "%d", &pid) != 1)
+                       continue;
+               foundany++;
+               check(pid);
+       }
+       closedir(procdir);
+       if (!foundany)
+               fatal("nothing in /proc - not mounted?");
+}
+
+
+static void
+do_stop(void)
+{
+       char what[1024];
+       struct pid_list *p;
+
+       if (cmdname)
+               strcpy(what, cmdname);
+       else if (execname)
+               strcpy(what, execname);
+       else if (pidfile)
+               sprintf(what, "process in pidfile `%s'", pidfile);
+       else if (userspec)
+               sprintf(what, "process(es) owned by `%s'", userspec);
+       else
+               fatal("internal error, please report");
+
+       if (!found) {
+               if (quietmode <= 0)
+                       printf("No %s found running; none killed.\n", what);
+               exit(exitnodo);
+       }
+       for (p = found; p; p = p->next) {
+               if (testmode)
+                       printf("Would send signal %d to %d.\n",
+                              signal_nr, p->pid);
+               else if (kill(p->pid, signal_nr) == 0)
+                       push(&killed, p->pid);
+               else
+                       printf("%s: warning: failed to kill %d: %s\n",
+                              progname, p->pid, strerror(errno));
+       }
+       if (quietmode < 0 && killed) {
+               printf("Stopped %s (pid", what);
+               for (p = killed; p; p = p->next)
+                       printf(" %d", p->pid);
+               printf(").\n");
+       }
+}
+
+
+int
+main(int argc, char **argv)
+{
+       progname = argv[0];
+
+       parse_options(argc, argv);
+       argc -= optind;
+       argv += optind;
+
+       if (execname && stat(execname, &exec_stat))
+               fatal("stat %s: %s", execname, strerror(errno));
+
+       if (userspec && sscanf(userspec, "%d", &user_id) != 1) {
+               struct passwd *pw;
+
+               pw = getpwnam(userspec);
+               if (!pw)
+                       fatal("user `%s' not found\n", userspec);
+
+               user_id = pw->pw_uid;
+       }
+
+       if (pidfile)
+               do_pidfile(pidfile);
+       else
+               do_procfs();
+
+       if (stop) {
+               do_stop();
+               exit(0);
+       }
+
+       if (found) {
+               if (quietmode <= 0)
+                       printf("%s already running.\n", execname);
+               exit(exitnodo);
+       }
+       if (testmode) {
+               printf("Would start %s ", startas);
+               while (argc-- > 0)
+                       printf("%s ", *argv++);
+               printf(".\n");
+               exit(0);
+       }
+       if (quietmode < 0)
+               printf("Starting %s...\n", startas);
+       *--argv = startas;
+       execv(startas, argv);
+       fatal("Unable to start %s: %s", startas, strerror(errno));
+}
index d6719afd91cbb1c811f85449001a26b48e3d3c47..7becd5751dad9353b5cf245b311798f70abc6fa3 100644 (file)
-.\" Hey, Emacs!  This is an -*- nroff -*- source file.
-.TH UPDATE\-ALTERNATIVES 8 "29th November 1995" "Debian Project" "Debian GNU/Linux"
+.\" update-alternatives.8
+.\" This man page is copyright 1997 Charles Briscoe-Smith
+.\" This is free documentation; you can redistribute it and/or modify
+.\" it under the terms of the GNU General Public License as published
+.\" by the Free Software Foundation; either version 2 of the License, or
+.\" (at your option) any later version.  There is NO WARRANTY.  You can
+.\" find the GNU GPL in /usr/doc/copyright/GPL on any Debian system.
+.TH UPDATE-ALTERNATIVES 8 "19 January 1998" "DEBIAN" "Debian GNU/Linux"
 .SH NAME
-update\-alternatives \- Debian package installation tool
+update-alternatives \- maintain symbolic links determining default commands
+.SH SYNOPSIS
+.B update-alternatives
+.RI [ options ]
+.B --install
+.I link name path priority
+.RB [ --slave
+.I link name
+.IR path ]...
+.PP
+.B update-alternatives
+.RI [ options ]
+.B --remove
+.I name path
+.PP
+.B update-alternatives
+.RI [ options ]
+.B --auto
+.I name
+.PP
+.B update-alternatives
+.RI [ options ]
+.B --display
+.I name
 .SH DESCRIPTION
-.B update\-alternatives
-does not have a useful man page.  Please do not report this as a bug,
-as this has already been done many times.
-
-Instead, if you are a competent and accurate writer and are willing to
-spend the time reading the source code and writing good manpages
-please write a better man page than this one.
-
-Type
-.B update\-alternatives \-\-help
-for a brief summary of how to use dpkg.
-
+.B update-alternatives
+creates, removes, maintains and displays information about the symbolic
+links comprising the Debian alternatives system.
+.PP
+It is possible for several programs fulfilling the same or similar
+functions to be installed on a single system at the same time.
+For example, many systems have several text editors installed at once.
+This gives choice to the users of a system, allowing each to use a
+different editor, if desired, but makes it difficult for a program
+to make a good choice of editor to invoke if the
+user has not specified a particular preference.
+.PP
+Debian's alternatives system aims to solve this problem.
+A generic name in the filesystem is
+shared by all files providing interchangable functionality.
+The alternatives system and the system administrator
+together determine which actual file is referenced by this generic name.
+For example, if the text editors
+.BR ed (1)
+and
+.BR nvi (1)
+are both installed on the system, the alternatives system will cause
+the generic name
+.I /usr/bin/editor
+to refer to
+.I /usr/bin/nvi
+by default.  The system administrator can override this and cause
+it
+to refer to
+.I /usr/bin/ed
+instead,
+and the alternatives system will not alter this setting until explicitly
+requested to do so.
+.PP
+The generic name is not a direct symbolic link to the selected alternative.
+Instead, it is a symbolic link to a name in the
+.I alternatives
+.IR directory ,
+which in turn is a symbolic link to the actual file referenced.
+This is done so that the system administrator's changes can be confined
+within the
+.I /etc
+directory: the FSSTND (q.v.) gives reasons why this is a Good Thing.
+.PP
+When each package
+providing a file with a particular functionality is
+installed, changed or removed,
+.B update-alternatives
+is called to update information about that file in the alternatives system.
+.B update-alternatives
+is usually called from the
+.B postinst
+or
+.B prerm
+scripts in Debian packages.
+.PP
+It is often useful for a number of alternatives to be synchronised,
+so that they are changed as a group; for example, when several versions
+of the
+.BR vi (1)
+editor are installed, the man page referenced by
+.I /usr/man/man1/vi.1
+should correspond to the executable referenced by
+.IR /usr/bin/vi .
+.B update-alternatives
+handles this by means of
+.I master
+and
+.I slave
+links; when the master is changed, any associated slaves are changed
+too.
+A master link and its associated slaves make up a
+.I link
+.IR group .
+.PP
+Each link group is, at any given time,
+in one of two modes: automatic or manual.
+When a group is in automatic mode, the alternatives system will
+automatically decide, as packages are installed and removed,
+whether and how to update the links.
+In manual mode, the alternatives system will not change the links;
+it will leave all the decisions to the system administrator.
+.PP
+Link groups are in automatic mode when they are first introduced to
+the system.
+If the system administrator makes changes to the system's
+automatic settings,
+this will be noticed the next time
+.B update-alternatives
+is run on the changed link's group,
+and the group will automatically be switched to manual mode.
+.PP
+Each alternative has a
+.I priority
+associated with it.
+When a link group is in automatic mode,
+the alternatives pointed to by members of the group
+will be those which have the highest priority.
+.SH TERMINOLOGY
+Since the activities of
+.B update-alternatives
+are quite involved, some specific terms will help to explain its
+operation.
+.TP
+generic name
+A name, like
+.IR /usr/bin/editor ,
+which refers, via the alternatives system, to one of a number of
+files of similar function.
+.TP
+symlink
+Without any further qualification, this means a symbolic link in the
+alternatives directory: one which the system administrator is expected
+to adjust.
+.TP
+alternative
+The name of a specific file in the filesystem, which may be made
+accessible via a generic name using the alternatives system.
+.TP
+alternatives directory
+A directory, by default
+.IR /etc/alternatives ,
+containing the symlinks.
+.TP
+administrative directory
+A directory, by default
+.IR /var/lib/dpkg/alternatives ,
+containing
+.BR update-alternatives '
+state information.
+.TP
+link group
+A set of related symlinks, intended to be updated as a group.
+.TP
+master link
+The link in a link group which determines how the other links in the
+group are configured.
+.TP
+slave link
+A link in a link group which is controlled by the setting of
+the master link.
+.TP
+automatic mode
+When a link group is in automatic mode,
+the alternatives system ensures that the links in the group
+point to the highest priority alternatives
+appropriate for the group.
+.TP
+manual mode
+When a link group is in manual mode,
+the alternatives system will not make any changes
+to the system administrator's settings.
+.SH OPTIONS
+Exactly one action must be specified if
+.B update-alternatives
+is to perform any meaningful task.
+Any number of the common options may be specified together with any action.
+.SS "COMMON OPTIONS"
+.TP
+.B --verbose
+Generate more comments about what
+.B update-alternatives
+is doing.
+This option is not yet implemented.
+.TP
+.B --quiet
+Don't generate any comments unless errors occur.
+This option is not yet implemented.
+.TP
+.B --test
+Don't actually do anything, just say what would be done.
+This option is not yet implemented.
+.TP
+.B --help
+Give some usage information (and say which version of
+.B update-alternatives
+this is).
+.TP
+.B --version
+Tell which version of
+.B update-alternatives
+this is (and give some usage information).
+.TP
+\fB--altdir\fR \fIdirectory\fR
+Specifies the alternatives directory, when this is to be
+different from the default.
+.TP
+\fB--admindir\fR \fIdirectory\fR
+Specifies the administrative directory, when this is to be
+different from the default.
+.SS ACTIONS
+.TP
+\fB--install\fR \fIgen link path pri\fR [\fB--slave\fR \fIsgen slink spath\fR] ...
+Add a group of alternatives to the system.
+.I gen
+is the generic name for the master link,
+.I link
+is the name of its symlink, and
+.I path
+is the alternative being introduced for the master link.
+.IR sgen ,
+.I slink
+and
+.I spath
+are the generic name, symlink name and alternative
+for a slave link.
+Zero or more
+.B --slave
+options, each followed by three arguments,
+may be specified.
+.IP
+If the master symlink specified exists already
+in the alternatives system's records,
+the information supplied will be added as a new
+set of alternatives for the group.
+Otherwise, a new group, set to automatic mode,
+will be added with this information.
+If the group is in automatic mode,
+and the newly added alternatives' priority is higher than
+any other installed alternatives for this group,
+the symlinks will be updated to point to the newly added alternatives.
+.TP
+\fB--remove\fR \fIlink path\fR
+Remove an alternative and all of its associated slave links.
+.I link
+is a name in the alternatives directory, and
+.I path
+is an absolute filename to which
+.I name
+could be linked.  If
+.I link
+is indeed linked to
+.IR path ,
+.I link
+will be updated to point to another appropriate alternative, or
+removed if there is no such alternative left.
+Associated slave links will be updated or removed, correspondingly.
+If the link is not currently pointing to
+.IR path ,
+no links are changed;
+only the information about the alternative is removed.
+.TP
+\fB--auto\fR \fIlink\fR
+Switch the master symlink
+.I link
+to automatic mode.
+In the process, this symlink and its slaves are updated
+to point to the highest priority installed alternatives.
+.TP
+\fB--display\fR \fIlink\fR
+Display information about the link group of which
+.I link
+is the master link.
+Information displayed includes the group's mode
+(auto or manual),
+which alternative the symlink currently points to,
+what other alternatives are available
+(and their corresponding slave alternatives),
+and the highest priority alternative currently installed.
+.SH FILES
+.TP
+.I /etc/alternatives/
+The default alternatives directory.
+Can be overridden by the
+.B --altdir
+option.
+.TP
+.I /var/lib/dpkg/alternatives/
+The default administration directory.
+Can be overridden by the
+.B --admindir
+option.
+.SH "EXIT STATUS"
+.IP 0
+The requested action was successfully performed.
+.IP 2
+Problems were encountered whilst parsing the command line
+or performing the action.
+.SH DIAGNOSTICS
+.B update-alternatives
+chatters incessantly about its activities on its standard output channel.
+If problems occur,
+.B update-alternatives
+outputs error messages on its standard error channel and
+returns an exit status of 2.
+These diagnostics should be self-explanatory;
+if you do not find them so, please report this as a bug.
+.SH BUGS
+If you find a bug, please report it using the Debian bug-tracking system,
+or, if that is not possible, email the author directly.
+.PP
+If you find any discrepancy between the operation of
+.B update-alternatives
+and this manual page, it is a bug,
+either in the implementation or the documentation;
+please report it.
 .SH AUTHOR
-Ian Jackson <ijackson@gnu.ai.mit.edu>.
+Debian GNU/Linux update-alternatives is copyright 1995
+Ian Jackson.  It is free software; see the GNU General Public Licence
+version 2 or later for copying conditions.  There is NO warranty.
+.PP
+This manual page is copyright 1997/98 Charles Briscoe-Smith.
+This is free documentation; see the GNU General Public Licence
+version 2 or later for copying conditions.  There is NO WARRANTY.
+.PP
+You can find the GNU GPL in /usr/doc/copyright/GPL on any Debian system.
+.\" .SH ACKNOWLEDGEMENTS
+.SH "SEE ALSO"
+.BR ln (1),
+FSSTND, the linux Filesystem Standard.
index a961253dc25d5626368c5678a182d4d1914f8717..722250ed365a532b1559a180baf0827e9de00043 100755 (executable)
@@ -79,10 +79,10 @@ while (@ARGV) {
         $aslavelink{$sname}= $slink;
         $aslavepath{$sname}= $spath;
     } elsif (m/^--altdir$/) {
-        @ARGV && &badusage("--altdir needs a <directory> argument");
+        @ARGV || &badusage("--altdir needs a <directory> argument");
         $altdir= shift(@ARGV);
     } elsif (m/^--admindir$/) {
-        @ARGV && &badusage("--admindir needs a <directory> argument");
+        @ARGV || &badusage("--admindir needs a <directory> argument");
         $admindir= shift(@ARGV);
     } else {
         &badusage("unknown option \`$_'");
index d9971a84e454f7c5200a11ae5741bce922b2cf5c..480c86d0bd1a8c995a6374e4949ccd286d24c074 100644 (file)
@@ -1,17 +1,23 @@
 .\" Hey, Emacs!  This is an -*- nroff -*- source file.
 .\" Authors: Ian Jackson
-.TH UPDATE\-RC.D 8 "23rd August 1996" "Debian Project" "Debian/GNU Linux"
+.TH UPDATE\-RC.D 8 "2 March 1998" "Debian Project" "Debian/GNU Linux"
 .SH NAME
 update\-rc.d \- install and remove System-V style init script links
 .SH SYNOPSIS
 .B update\-rc.d
+.RI [ -n ]
+.RI [ -f ]
 .IB name " remove"
 .HP
 .B update-rc.d
+.RI [ -n ]
+.RI [ -f ]
 .IB name " defaults"
 .RI [ NN " | " NN-start " " NN-stop ]
 .HP
 .B update-rc.d
+.RI [ -n ]
+.RI [ -f ]
 .I name
 .BR start | stop
 .IR "NN runlevel runlevel " ...
@@ -31,7 +37,7 @@ when changing runlevels and are generally used to start and stop
 system services such as daemons.
 .I runlevel
 is one of the runlevels supported by
-.BR init ", " 0123456 ,
+.BR init ", " 0123456789S ,
 and
 .I NN
 is the two-digit sequence code used by
@@ -53,8 +59,8 @@ options, update-rc.d makes links
 pointing to the script
 .BI /etc/init.d/ name\fR,
 
-If any links
-.BI /etc/rc runlevel .d/?? name
+If any files
+.BI /etc/rc runlevel .d/[SK]?? name
 already exist then
 .B update-rc.d
 does nothing.  This is so that the system administrator can rearrange
@@ -69,7 +75,7 @@ will make links to start the service in runlevels
 .B 2345
 and stop the service in runlevels
 .BR 016 .
-By default all the links will have sequence code, but
+By default all the links will have sequence code 20, but
 this can be overridden by supplying one or two
 .I NN
 arguments; one argument overrides the sequence code for both start and
@@ -120,17 +126,27 @@ directories to the script
 The script must have been deleted already -
 .B update-rc.d
 checks for this.
-
 .B update-rc.d
 is usually called from a package's post-removal script when that
 script detects that its first argument is
 .BR purge ,
 indicating that the user has requested the configuration for the
 package to be removed.
+Any files in the
+.BI /etc/rc runlevel .d
+directories that are not symbolic links to the script
+.BI /etc/init.d/ name
+will be left untouched.
+.SH EXAMPLES
+Insert links using the defaults:
+.nf
+.B "   update-rc.d foobar defaults"
+.fi
+Equivalent command using explicit argument sets:
+.nf
+.B "   update-rc.d foobar start 20 2 3 4 5 . stop 20 0 1 6 ."
+.fi
 .SH BUGS
-This script is written in
-.B sh
-and is therefore far too slow.
 
 There should be a way for the system administrator to specify at least
 the default start and stop runlevels to be used by
@@ -143,14 +159,14 @@ The directory containing the actual init scripts.
 .TP
 .B /etc/rc?.d/
 The directories containing the links used by
+.BR init
+and managed by
+.BR update-rc.d .
 .TP
 .B /etc/init.d/skeleton
 Model for use by writers of
 .B init.d
 scripts.
-.BR init
-and managed by
-.BR update-rc.d .
 .SH SEE ALSO
 .IR "dpkg programmers manual" ,
 .br
diff --git a/scripts/update-rc.d.new-pl b/scripts/update-rc.d.new-pl
deleted file mode 100644 (file)
index 7c8c911..0000000
+++ /dev/null
@@ -1,166 +0,0 @@
-#! /usr/bin/perl
-#
-# update-rc.d  Perl script to update links in /etc/rc?.d
-#
-# Usage:
-#              update-rc.d [-f] <basename> remove
-#              update-rc.d <basename> [options]
-#
-# Options are:
-#              start <codenumber> <runlevel> <runlevel> <runlevel> .
-#              stop  <codenumber> <runlevel> <runlevel> <runlevel> .
-#
-#              defaults [<codenumber> | <startcode> <stopcode>]
-#              (means       start <startcode> 2 3 4 5
-#               as well as  stop  <stopcode>  0 1 2 3 4 5 6
-#              <codenumber> defaults to 20)
-#
-# Version:     @(#)update-rc.d  1.02  11-Jul-1996  miquels@cistron.nl
-#
-# Changes:      1.00 Wrote perl version directly derived from shell version.
-#              1.01 Fixed problem when dangling symlinks are found in
-#                   /etc/rc?.d/. The shell version just exits silently!
-#              1.02 More misc bugs fixed caused by sh -> perl translation
-#
-
-$version= '1.3.2'; # This line modified by Makefile
-
-chdir('/etc') || die "chdir /etc: $!\n";
-
-$initd='init.d';
-
-sub usage {
-  print STDERR <<EOF;
-Debian GNU/Linux update-rc.d $version.  Copyright (C) 1996 Miquel van
-Smoorenburg.  This is free software; see the GNU General Public Licence
-version 2 or later for copying conditions.  There is NO warranty.
-
-update-rc.d: error: @_
-usage: update-rc.d [-f] <basename> remove
-       update-rc.d <basename> defaults [<cn> | <scn> <kcn>]
-       update-rc.d <basename> start|stop <cn> <r> <r> .  ...
-EOF
-  &leave(1);
-}
-
-
-sub getinode {
-       local @tmp;
-
-       unless (@tmp = stat($_[0])) {
-               print STDERR "stat($_[0]): $!\n";
-               $tmp[1] = 0;
-       }
-       $tmp[1];
-}
-
-sub leave {
-       eval $atexit if ($atexit ne '');
-       exit($_[0]);
-}
-
-$force = 0;
-if ($ARGV[0] eq '-f') {
-       shift @ARGV;
-       $force = 1;
-}
-
-&usage("too few arguments") if ($#ARGV < 1);
-
-$bn = shift @ARGV;
-$action = shift @ARGV;
-
-if ($action eq 'remove') {
-       &usage("remove must be only action") if ($#ARGV > 0);
-       if (-f "$initd/$bn") {
-               unless ($force) {
-                       print STDERR "update-rc.d: error: /etc/$initd/$bn exists during rc.d purge (use -f to force).\n";
-                       &leave(1);
-               }
-       } else {
-               $atexit = "unlink('$initd/$bn');";
-       }
-       print  " Removing any system startup links to /etc/$initd/$bn ...\n";
-       open(FD, ">>$initd/$bn");
-       close FD;
-       $own = &getinode("$initd/$bn");
-       @files = split(/\s+/, `echo rc?.d/[SK]*`);
-       foreach $f (@files) {
-               $inode = &getinode($f);
-               if ($inode == $own) {
-                       unless (unlink($f))  {
-                               print STDERR "unlink($f): $!\n";
-                               &leave(1);
-                       }
-                       print "   $f\n";
-               }
-       }
-       &leave(0);
-} elsif ($action eq 'defaults') {
-       if ($#ARGV < 0) {
-               $sn = $kn = 20;
-       } elsif ($#ARGV == 0) {
-               $sn = $kn = $ARGV[0];
-       } elsif ($#ARGV == 1) {
-               $sn = $ARGV[0];
-               $kn = $ARGV[1];
-       } else {
-               &usage("defaults takes only one or two codenumbers");
-       }
-       @ARGV = ('start', "$sn", '2', '3', '4', '5', 'stop',
-                         "$kn", '0', '1', '6');
-} elsif ($action ne 'start' && $action ne 'stop') {
-       &usage("unknown mode or add action $action");
-}
-
-unless (-f "$initd/$bn") {
-       print STDERR "update-rc.d: warning /etc/$initd/$bn doesn't exist during rc.d setup.\n";
-       exit(0);
-}
-
-$own = &getinode("$initd/$bn");
-
-@files = split(/\s+/, `echo rc?.d/[SK]*`);
-foreach $f (@files) {
-       $inode = &getinode($f);
-       if ($inode == $own) {
-               print STDERR " System startup links pointing to /etc/$initd/$bn already exist.\n";
-               exit(0);
-       }
-}
-
-
-print " Adding system startup links pointing to /etc/$initd/$bn ...\n";
-while ($#ARGV >= 1) {
-       if ($ARGV[0] eq 'start') {
-               $ks = 'S';
-       } elsif ($ARGV[0] eq 'stop') {
-               $ks = 'K';
-       } else {
-               &usage("unknown action $1");
-       }
-       shift @ARGV;
-       $number = shift @ARGV;
-       while ($#ARGV >= 0) {
-               $_ = $ARGV[0];
-               if (/^\.$/) {
-                       shift @ARGV;
-                       last;
-               } elsif (/^.$/) {
-                       symlink("../$initd/$bn", "rc$_.d/$ks$number$bn") ||
-                               die "symlink: $!\n";
-                       print "   rc$_.d/$ks$number$bn -> ../$initd/$bn\n";
-                       shift @ARGV;
-                       next;
-               } elsif (/^(start|stop)$/) {
-                       last;
-               }
-               &usage('runlevel is more than one character\n');
-       }
-}
-
-if ($#ARGV >= 0) {
-       &usage("surplus arguments, but not enough for an add action: @ARGV\n");
-}
-
-0;
index 2a38f9cf4e12118ea6c0f1654b7e37683f465d01..71a610684f5ab23e50acef7307c0688bac1e008b 100644 (file)
 #! /usr/bin/perl
 #
-# update-rc.d  Perl script to update links in /etc/rc?.d
+# update-rc.d  Update the links in /etc/rc[0-9S].d/
 #
-# Usage:
-#              update-rc.d [-f] <basename> remove
-#              update-rc.d <basename> [options]
-#
-# Options are:
-#              start <codenumber> <runlevel> <runlevel> <runlevel> .
-#              stop  <codenumber> <runlevel> <runlevel> <runlevel> .
-#
-#              defaults [<codenumber> | <startcode> <stopcode>]
-#              (means       start <startcode> 2 3 4 5
-#               as well as  stop  <stopcode>  0 1 2 3 4 5 6
-#              <codenumber> defaults to 20)
-#
-# Version:     @(#)update-rc.d  1.02  11-Jul-1996  miquels@cistron.nl
-#
-# Changes:      1.00 Wrote perl version directly derived from shell version.
-#              1.01 Fixed problem when dangling symlinks are found in
-#                   /etc/rc?.d/. The shell version just exits silently!
-#              1.02 More misc bugs fixed caused by sh -> perl translation
+# Version:     @(#)update-rc.d.pl  2.02  05-Mar-1998  miquels@cistron.nl
 #
 
-$version= '1.3.2'; # This line modified by Makefile
+$initd = "/etc/init.d";
+$etcd  = "/etc/rc";
+$notreally = 0;
 
-chdir('/etc') || die "chdir /etc: $!\n";
-
-$initd='init.d';
+# Print usage message and die.
 
 sub usage {
-  print STDERR <<EOF;
-Debian GNU/Linux update-rc.d $version.  Copyright (C) 1996 Miquel van
-Smoorenburg.  This is free software; see the GNU General Public Licence
-version 2 or later for copying conditions.  There is NO warranty.
-
-update-rc.d: error: @_
-usage: update-rc.d [-f] <basename> remove
-       update-rc.d <basename> defaults [<cn> | <scn> <kcn>]
-       update-rc.d <basename> start|stop <cn> <r> <r> .  ...
+       print STDERR "update-rc.d: error: @_\n" if ($#_ >= 0);
+       print STDERR <<EOF;
+usage: update-rc.d [-n] [-f] <basename> remove
+       update-rc.d [-n] [-f] <basename> defaults [NN | sNN kNN]
+       update-rc.d [-n] [-f] <basename> start|stop NN runlvl runlvl .  ...
+               -n: not really
+               -f: force
 EOF
-  &leave(1);
+       exit (1);
 }
 
+# Check out options.
 
-sub getinode {
-       local @tmp;
-
-       unless (@tmp = stat($_[0])) {
-               print STDERR "stat($_[0]): $!\n";
-               $tmp[1] = 0;
-       }
-       $tmp[1];
+while($#ARGV >= 0 && ($_ = $ARGV[0]) =~ /^-/) {
+       shift @ARGV;
+       if (/^-n$/) { $notreally++; next }
+       if (/^-f$/) { $force++; next }
+       if (/^-h|--help$/) { &usage; }
+       &usage("unknown option");
 }
 
-sub leave {
-       eval $atexit if ($atexit ne '');
-       exit($_[0]);
+# Action.
+
+&usage() if ($#ARGV < 1);
+$bn = shift @ARGV;
+if ($ARGV[0] ne 'remove') {
+    if (! -f "$initd/$bn") {
+       print STDERR "update-rc.d: $initd/$bn: file does not exist\n";
+       exit (1);
+    }
+} elsif (-f "$initd/$bn") {
+    if (!$force) {
+       printf STDERR "update-rc.d: $initd/$bn exists during rc.d purge (use -f to force)\n";
+       exit (1);
+    } else {
+       printf STDERR "update-rc.d: $initd/$bn exists during rc.d purge (continuing)\n";
+    }
 }
 
-$force = 0;
-if ($ARGV[0] eq '-f') {
-       shift @ARGV;
-       $force = 1;
+$_ = $ARGV[0];
+if    (/^remove$/)     { &checklinks ("remove"); }
+elsif (/^defaults$/)   { &defaults; &makelinks }
+elsif (/^start|stop$/) { &startstop; &makelinks; }
+else                   { &usage; }
+
+exit (0);
+
+# Check if there are links in /etc/rc[0-9S].d/ 
+# Remove if the first argument is "remove" and the links 
+# point to $bn.
+
+sub is_link () {
+    my ($op, $fn, $bn) = @_;
+    if (! -l $fn) {
+       print STDERR "update-rc.d: warning: $fn is not a symbolic link\n";
+       return 0;
+    } else {
+       $linkdst = readlink ($fn);
+       if (! defined $linkdst) {
+           die ("update-rc.d: error reading symbolic link: $!\n");
+       }
+       if (($linkdst ne "../init.d/$bn") && ($linkdst ne "../init.d/$bn")) {
+           print STDERR "update-rc.d: warning: $fn is not a link to ../init.d/$bn\n";
+           return 0;
+       }
+    }
+    return 1;
 }
 
-&usage("too few arguments") if ($#ARGV < 1);
+sub checklinks {
+    my ($i, $found, $fn, $islnk);
 
-$bn = shift @ARGV;
-$action = shift @ARGV;
-
-if ($action eq 'remove') {
-       &usage("remove must be only action") if ($#ARGV > 0);
-       if (-f "$initd/$bn") {
-               unless ($force) {
-                       print STDERR "update-rc.d: error: /etc/$initd/$bn exists during rc.d purge (use -f to force).\n";
-                       &leave(1);
-               }
-       } else {
-               $atexit = "unlink('$initd/$bn');";
-       }
-       print  " Removing any system startup links to /etc/$initd/$bn ...\n";
-       open(FD, ">>$initd/$bn");
-       close FD;
-       $own = &getinode("$initd/$bn");
-       @files = split(/\s+/, `echo rc?.d/[SK]*`);
-       foreach $f (@files) {
-               $inode = &getinode($f);
-               if ($inode == $own) {
-                       unless (unlink($f))  {
-                               print STDERR "unlink($f): $!\n";
-                               &leave(1);
-                       }
-                       print "   $f\n";
-               }
+    print " Removing any system startup links for $initd/$bn ...\n"
+       if ($_[0] eq 'remove');
+
+    $found = 0;
+
+    foreach $i (0..9, 'S') {
+       unless (chdir ("$etcd$i.d")) {
+           next if ($i =~ m/^[789S]$/);
+           die("update-rc.d: chdir $etcd$i.d: $!\n");
        }
-       &leave(0);
-} elsif ($action eq 'defaults') {
-       if ($#ARGV < 0) {
-               $sn = $kn = 20;
-       } elsif ($#ARGV == 0) {
-               $sn = $kn = $ARGV[0];
-       } elsif ($#ARGV == 1) {
-               $sn = $ARGV[0];
-               $kn = $ARGV[1];
-       } else {
-               &usage("defaults takes only one or two codenumbers");
+       opendir(DIR, ".");
+       foreach $_ (readdir(DIR)) {
+           next unless (/^[S|K][0-9]*$bn$/);
+           $fn = "$etcd$i.d/$_";
+           $found = 1;
+           $islnk = &is_link ($_[0], $fn, $bn);
+           next if ($_[0] ne 'remove');
+           if (! $islnk) {
+               print "   $fn is not a link to ../init.d/$bn; not removing\n"; 
+               next;
+           }
+           print "   $etcd$i.d/$_\n";
+           next if ($notreally);
+           unlink ("$etcd$i.d/$_") ||
+               die("update-rc.d: unlink: $!\n");
        }
-       @ARGV = ('start', "$sn", '2', '3', '4', '5', 'stop',
-                         "$kn", '0', '1', '6');
-} elsif ($action ne 'start' && $action ne 'stop') {
-       &usage("unknown mode or add action $action");
+       closedir(DIR);
+    }
+    $found;
 }
 
-unless (-f "$initd/$bn") {
-       print STDERR "update-rc.d: warning /etc/$initd/$bn doesn't exist during rc.d setup.\n";
-       exit(0);
-}
+# Process the arguments after the "defaults" keyword.
 
-$own = &getinode("$initd/$bn");
+sub defaults {
+    my ($start, $stop) = (20, 20);
 
-@files = split(/\s+/, `echo rc?.d/[SK]*`);
-foreach $f (@files) {
-       $inode = &getinode($f);
-       if ($inode == $own) {
-               print STDERR " System startup links pointing to /etc/$initd/$bn already exist.\n";
-               exit(0);
-       }
+    &usage ("defaults takes only one or two codenumbers") if ($#ARGV > 2);
+    $start = $stop = $ARGV[1] if ($#ARGV >= 1);
+    $stop  =         $ARGV[2] if ($#ARGV >= 2);
+    &usage ("codenumber must be a number")
+       if ($start !~ /^[0-9]+$/ || $stop  !~ /^[0-9]+$/);
+
+    $start = sprintf("%02d", $start);
+    $stop  = sprintf("%02d", $stop);
+
+    $stoplinks[0] = $stoplinks[1] = $stoplinks[6] = "K$stop";
+    $startlinks[2] = $startlinks[3] =
+       $startlinks[4] = $startlinks[5] = "S$start";
+
+    1;
 }
 
-print " Adding system startup links pointing to /etc/$initd/$bn ...\n";
-while ($#ARGV >= 1) {
-       if ($ARGV[0] eq 'start') {
-               $ks = 'S';
-       } elsif ($ARGV[0] eq 'stop') {
-               $ks = 'K';
-       } else {
-               &usage("unknown action $1");
+# Process the arguments after the start or stop keyword.
+
+sub startstop {
+
+    my($letter, $NN, $level);
+
+    while ($#ARGV >= 0) {
+       if    ($ARGV[0] eq 'start') { $letter = 'S'; }
+       elsif ($ARGV[0] eq 'stop')  { $letter = 'K' }
+       else {
+           &usage("expected start|stop");
        }
-       shift @ARGV;
-       $number = shift @ARGV;
-       while ($#ARGV >= 0) {
-               $_ = $ARGV[0];
-               if (/^\.$/) {
-                       shift @ARGV;
-                       last;
-               } elsif (/^.$/) {
-                       symlink("../$initd/$bn", "rc$_.d/$ks$number$bn") ||
-                               die "symlink: $!\n";
-                       print "   rc$_.d/$ks$number$bn -> ../$initd/$bn\n";
-                       shift @ARGV;
-                       next;
-               } elsif (/^(start|stop)$/) {
-                       last;
-               }
-               &usage('runlevel is more than one character\n');
+
+       if ($ARGV[1] !~ /^[0-9]+$/) {
+           &usage("expected NN after $ARGV[0]");
        }
+       $NN = sprintf("%02d", $ARGV[1]);
+
+       shift @ARGV; shift @ARGV;
+       $level = shift @ARGV;
+       do {
+           if ($level !~ m/^[0-9S]$/) {
+               &usage(
+                      "expected runlevel [0-9S] (did you forget \".\" ?)");
+           }
+           if (! -d "$etcd$level.d") {
+               print STDERR
+                   "update-rc.d: $etcd$level.d: no such directory\n";
+               exit(1);
+           }
+           $level = 99 if ($level eq 'S');
+           $startlinks[$level] = "$letter$NN" if ($letter eq 'S');
+           $stoplinks[$level]  = "$letter$NN" if ($letter eq 'K');
+       } while (($level = shift @ARGV) ne '.');
+       &usage("action with list of runlevels not terminated by \`.'")
+           if ($level ne '.');
+    }
+    1;
 }
 
-if ($#ARGV >= 0) {
-       &usage("surplus arguments, but not enough for an add action: @ARGV\n");
-}
+# Create the links.
+
+sub makelinks {
+    my($t, $i);
+    my @links;
+
+    if (&checklinks) {
+       print " System startup links for $initd/$bn already exist.\n";
+       exit (0);
+    }
+    print " Adding system startup for $initd/$bn ...\n";
+
+    # nice unreadable perl mess :)
+
+    for($t = 0; $t < 2; $t++) {
+       @links = $t ? @startlinks : @stoplinks;
+       for($i = 0; $i <= $#links; $i++) {
+           $lvl = $i;
+           $lvl = 'S' if ($i == 99);
+           next if ($links[$i] eq '');
+           print "   $etcd$lvl.d/$links[$i]$bn -> ../init.d/$bn\n";
+           next if ($notreally);
+           symlink("../init.d/$bn", "$etcd$lvl.d/$links[$i]$bn")
+               || die("update-rc.d: symlink: $!\n");
+       }
+    }
 
-0;
+    1;
+}
diff --git a/split/.cvsignore b/split/.cvsignore
new file mode 100644 (file)
index 0000000..70845e0
--- /dev/null
@@ -0,0 +1 @@
+Makefile.in
diff --git a/split/Makefile.am b/split/Makefile.am
new file mode 100644 (file)
index 0000000..9d19042
--- /dev/null
@@ -0,0 +1,50 @@
+## Process this file with automake to produce a Makefile.in
+
+AUTOMAKE_OPTIONS       = 1.1 foreign
+
+## Directory definitions
+
+pkglibdir              = $(libdir)/@PACKAGE@
+localedir              = $(datadir)/locale
+
+## Various options
+
+CFLAGS                 = @CFLAGS@ @CWARNS@ -g $(XCFLAGS) -DLOCALEDIR=\"$(localedir)\"
+OPTCFLAGS              = @CFLAGS@ @OPTCFLAGS@ @CWARNS@ -g $(XCFLAGS) -DLOCALEDIR=\"$(localedir)\"
+LDFLAGS                        = @LDFLAGS@ $(XLDFLAGS)
+LIBS                   = @INTLLIBS@ @LIBS@ $(XLIBS)
+
+CXXFLAGS               = @CXXFLAGS@ @CWARNS@ -g $(XCXXFLAGS) -DLOCALEDIR=\"$(localedir)\"
+OPTCXXFLAGS            = @CXXFLAGS @OPTCFLAGS@ @CWARNS@ -g $(XCXXFLAGS) -DLOCALEDIR=\"$(localedir)\"
+
+DEFS                   = -I$(top_srcdir)/include -I$(top_srcdir) -I$(srcdir) \
+                         -I$(top_builddir) -I$(top_builddir)/include -I. \
+                         -I$(top_srcdir)/intl -I$(top_builddir)/intl @DEFS@ \
+                         -DMKSPLITSCRIPT=\"$(pkglibdir)/mksplit\"
+
+## Automake variables
+
+bin_PROGRAMS           = dpkg-split
+pkglib_SCRIPTS         = mksplit
+man_MANS               = dpkg-split.8
+
+EXTRA_DIST             = mksplit.pl dpkg-split.8
+
+dpkg_split_SOURCES     = main.c split.c info.c queue.c join.c dpkg-split.h
+dpkg_split_LDADD       = ../lib/libdpkg.la ../lib/myopt.o
+
+
+CLEANFILES             = $(pkglib_SCRIPTS)
+MAINTAINERCLEANFILES   = $(srcdir)/Makefile.in
+
+## Rules
+
+SUFFIXES               = .pl
+
+.pl:
+       sed -e "s:^#![:space:]*/usr/bin/perl:#! $(perlpath):;" \
+               < $< > $@.new
+       chmod 755 $@.new
+       mv $@.new $@
+
+## End of file.
diff --git a/split/Makefile.in b/split/Makefile.in
deleted file mode 100644 (file)
index 8cdeaf0..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-# Copyright (C) 1994 Ian Murdock <imurdock@debian.org>
-# Copyright (C) 1994,1995 Ian Jackson <ijackson@nyx.cs.du.edu>
-#
-#   This is free software; you can redistribute it and/or modify
-#   it under the terms of the GNU General Public License as
-#   published by the Free Software Foundation; either version 2,
-#   or (at your option) any later version.
-#
-#   This is distributed in the hope that it will be useful, but
-#   WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#   GNU General Public License for more details.
-#
-#   You should have received a copy of the GNU General Public
-#   License along with dpkg; if not, write to the Free Software
-#   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-srcdir = @srcdir@
-VPATH = @srcdir@
-
-prefix = @prefix@
-exec_prefix = $(prefix)
-bindir = $(exec_prefix)/bin
-libdir = $(prefix)/lib
-dpkglibdir = $(libdir)/dpkg
-datadir = /var/lib/dpkg
-partsdir = $(datadir)/parts
-mandir = $(prefix)/man
-man8dir = $(mandir)/man8
-man8 = 8
-perlpath = @perlpath@
-
-SRC = main.c split.c info.c queue.c join.c
-OBJ = main.o split.o info.o queue.o join.o
-
-INSTALL = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_DATA = @INSTALL_DATA@
-
-CC = @CC@
-
-CFLAGS = @CFLAGS@ @CWARNS@ -g $(XCFLAGS)
-LDFLAGS = $(XLDFLAGS)
-LIBS = -L../lib -ldpkg $(XLIBS)
-ALL_CFLAGS = -I../include -I.. @DEFS@ $(CFLAGS)
-
-.SUFFIXES:     .c .o .pl
-
-.c.o:
-               $(CC) $(ALL_CFLAGS) -c $<
-
-.pl:
-               sed <$@.pl 's:^#!/usr/bin/perl:#!$(perlpath):' \
-                 | ../insert-version.pl >$@.new
-               chmod +x $@.new
-               mv $@.new $@
-
-all:           dpkg-split mksplit
-
-dpkg-split:    $(OBJ) ../lib/libdpkg.a
-               $(CC) $(LDFLAGS) -o dpkg-split $(OBJ) $(LIBS)
-
-split.o:       split.c
-               $(CC) -DMKSPLITSCRIPT=\"$(dpkglibdir)/mksplit\" $(ALL_CFLAGS) -c $<
-
-$(OBJ):                                        dpkg-split.h ../config.h ../include/dpkg.h
-build.o split.o queue.o join.o main.o: ../include/dpkg-db.h
-info.o extract.o main.o:               ../include/myopt.h
-main.o:                                        ../version.h
-
-clean:
-               rm -f *.o core dpkg-split
-
-distclean:     clean
-               rm -f Makefile *.orig *~ *.~* ./#*#
-
-install:       all
-               $(INSTALL_PROGRAM) -s dpkg-split $(bindir)/dpkg-split
-               $(INSTALL_PROGRAM) mksplit $(dpkglibdir)/mksplit
-#              $(INSTALL_DATA) dpkg-split.8 $(man8dir)/dpkg-split.$(man8)
diff --git a/split/debugmake b/split/debugmake
deleted file mode 100755 (executable)
index 53497bc..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-set -x
-make 'XCFLAGS=-g -O0' LDFLAGS=-g 'LIBS= -lefence -L../lib -ldpkg' "$@"
index fcc36d2b1522afc7ae252f668a5e6a6eba5e4c16..8491cddbfa1f5395d5dbf3e6f088ac97ae7b786d 100644 (file)
@@ -29,9 +29,9 @@
 #include <ar.h>
 #include <ctype.h>
 
-#include "config.h"
-#include "dpkg.h"
-#include "dpkg-db.h"
+#include <config.h>
+#include <dpkg.h>
+#include <dpkg-db.h>
 #include "dpkg-split.h"
 
 static unsigned long unsignedlong(const char *value, const char *fn, const char *what) {
@@ -40,7 +40,7 @@ static unsigned long unsignedlong(const char *value, const char *fn, const char
 
   r= strtoul(value,&endp,10);
   if (*endp)
-    ohshit("file `%.250s' is corrupt - bad digit (code %d) in %s",fn,*endp,what);
+    ohshit(_("file `%.250s' is corrupt - bad digit (code %d) in %s"),fn,*endp,what);
   return r;
 }
 
@@ -49,7 +49,7 @@ static unsigned long parseheaderlength(const char *inh, size_t len,
   char lintbuf[15];
 
   if (memchr(inh,0,len))
-    ohshit("file `%.250s' is corrupt - %.250s length contains nulls",fn,what);
+    ohshit(_("file `%.250s' is corrupt - %.250s length contains nulls"),fn,what);
   assert(sizeof(lintbuf) > len);
   memcpy(lintbuf,inh,len);
   lintbuf[len]= ' ';
@@ -61,10 +61,10 @@ static char *nextline(char **ripp, const char *fn, const char *what) {
   char *newline, *rip;
 
   rip= *ripp;
-  if (!rip) ohshit("file `%.250s' is corrupt - %.250s missing",fn,what);
+  if (!rip) ohshit(_("file `%.250s' is corrupt - %.250s missing"),fn,what);
   newline= strchr(rip,'\n');
   if (!newline)
-    ohshit("file `%.250s' is corrupt - missing newline after %.250s",fn,what);
+    ohshit(_("file `%.250s' is corrupt - missing newline after %.250s"),fn,what);
   *ripp= newline+1;
   while (newline > rip && isspace(newline[-1])) newline--;
   *newline= 0;
@@ -86,11 +86,11 @@ struct partinfo *read_info(FILE *partfile, const char *fn, struct partinfo *ir)
     if (ferror(partfile)) rerr(fn); else return 0;
   if (memcmp(magicbuf,PARTMAGIC,sizeof(magicbuf))) return 0;
   if (fseek(partfile,-sizeof(arh.ar_name),SEEK_CUR))
-    ohshite("unable to seek back");
+    ohshite(_("unable to seek back"));
   
   if (fread(&arh,1,sizeof(arh),partfile) != sizeof(arh)) rerreof(partfile,fn);
   if (memcmp(arh.ar_fmag,ARFMAG,sizeof(arh.ar_fmag)))
-    ohshit("file `%.250s' is corrupt - bad magic at end of first header",fn);
+    ohshit(_("file `%.250s' is corrupt - bad magic at end of first header"),fn);
   thisilen= parseheaderlength(arh.ar_size,sizeof(arh.ar_size),fn,"info length");
   if (thisilen >= readinfobuflen) {
     readinfobuflen= thisilen+1;
@@ -100,18 +100,18 @@ struct partinfo *read_info(FILE *partfile, const char *fn, struct partinfo *ir)
   if (thisilen & 1) {
     c= getc(partfile);  if (c==EOF) rerreof(partfile,fn);
     if (c != '\n')
-      ohshit("file `%.250s' is corrupt - bad padding character (code %d)",fn,c);
+      ohshit(_("file `%.250s' is corrupt - bad padding character (code %d)"),fn,c);
   }
   readinfobuf[thisilen]= 0;
   if (memchr(readinfobuf,0,thisilen))
-    ohshit("file `%.250s' is corrupt - nulls in info section",fn);
+    ohshit(_("file `%.250s' is corrupt - nulls in info section"),fn);
 
   ir->filename= fn;
 
   rip= readinfobuf;
   ir->fmtversion= nfstrsave(nextline(&rip,fn,"format version number"));
   if (strcmp(ir->fmtversion,SPLITVERSION))
-    ohshit("file `%.250s' is format version `%.250s' - you need a newer " SPLITTER,
+    ohshit(_("file `%.250s' is format version `%.250s' - you need a newer dpkg-split"),
            fn,ir->fmtversion);
 
   ir->package= nfstrsave(nextline(&rip,fn,"package name"));
@@ -119,14 +119,14 @@ struct partinfo *read_info(FILE *partfile, const char *fn, struct partinfo *ir)
   ir->md5sum= nfstrsave(nextline(&rip,fn,"package file MD5 checksum"));
   if (strlen(ir->md5sum) != 32 ||
       strspn(ir->md5sum,"0123456789abcdef") != 32)
-    ohshit("file `%.250s' is corrupt - bad MD5 checksum `%.250s'",fn,ir->md5sum);
+    ohshit(_("file `%.250s' is corrupt - bad MD5 checksum `%.250s'"),fn,ir->md5sum);
 
   ir->orglength= unsignedlong(nextline(&rip,fn,"total length"),fn,"total length");
   ir->maxpartlen= unsignedlong(nextline(&rip,fn,"part offset"),fn,"part offset");
   
   partnums= nextline(&rip,fn,"part numbers");
   slash= strchr(partnums,'/');
-  if (!slash) ohshit("file `%.250s' is corrupt - no slash between part numbers",fn);
+  if (!slash) ohshit(_("file `%.250s' is corrupt - no slash between part numbers"),fn);
   *slash++= 0;
 
   templong= unsignedlong(slash,fn,"number of parts");
@@ -135,36 +135,36 @@ struct partinfo *read_info(FILE *partfile, const char *fn, struct partinfo *ir)
   ir->maxpartn= templong;
   templong= unsignedlong(partnums,fn,"parts number");
   if (templong <= 0 || templong > ir->maxpartn)
-    ohshit("file `%.250s' is corrupt - bad part number",fn);
+    ohshit(_("file `%.250s' is corrupt - bad part number"),fn);
   ir->thispartn= templong;
 
   if (fread(&arh,1,sizeof(arh),partfile) != sizeof(arh)) rerreof(partfile,fn);
   if (memcmp(arh.ar_fmag,ARFMAG,sizeof(arh.ar_fmag)))
-    ohshit("file `%.250s' is corrupt - bad magic at end of second header",fn);
+    ohshit(_("file `%.250s' is corrupt - bad magic at end of second header"),fn);
   if (strncmp(arh.ar_name,"data",4))
-    ohshit("file `%.250s' is corrupt - second member is not data member",fn);
+    ohshit(_("file `%.250s' is corrupt - second member is not data member"),fn);
 
   ir->thispartlen= parseheaderlength(arh.ar_size,sizeof(arh.ar_size),fn,"data length");
   ir->thispartoffset= (ir->thispartn-1)*ir->maxpartlen;
 
   if (ir->maxpartn != (ir->orglength+ir->maxpartlen-1)/ir->maxpartlen)
-    ohshit("file `%.250s' is corrupt - wrong number of parts for quoted sizes",fn);
+    ohshit(_("file `%.250s' is corrupt - wrong number of parts for quoted sizes"),fn);
   if (ir->thispartlen !=
       (ir->thispartn == ir->maxpartn
        ? ir->orglength - ir->thispartoffset : ir->maxpartlen))
-    ohshit("file `%.250s' is corrupt - size is wrong for quoted part number",fn);
+    ohshit(_("file `%.250s' is corrupt - size is wrong for quoted part number"),fn);
 
   ir->filesize= (SARMAG +
                  sizeof(arh) + thisilen + (thisilen&1) +
                  sizeof(arh) + ir->thispartlen + (ir->thispartlen&1));
 
-  if (fstat(fileno(partfile),&stab)) ohshite("unable to fstat part file `%.250s'",fn);
+  if (fstat(fileno(partfile),&stab)) ohshite(_("unable to fstat part file `%.250s'"),fn);
   if (S_ISREG(stab.st_mode)) {
     /* Don't do this check if it's coming from a pipe or something.  It's
      * only an extra sanity check anyway.
      */
     if (stab.st_size < ir->filesize)
-      ohshit("file `%.250s' is corrupt - too short",fn);
+      ohshit(_("file `%.250s' is corrupt - too short"),fn);
   }
 
   ir->headerlen= SARMAG + sizeof(arh) + thisilen + (thisilen&1) + sizeof(arh);
@@ -176,14 +176,14 @@ void mustgetpartinfo(const char *filename, struct partinfo *ri) {
   FILE *part;
   
   part= fopen(filename,"r");
-  if (!part) ohshite("cannot open archive part file `%.250s'",filename);
+  if (!part) ohshite(_("cannot open archive part file `%.250s'"),filename);
   if (!read_info(part,filename,ri))
-    ohshite("file `%.250s' is not an archive part",filename);
+    ohshite(_("file `%.250s' is not an archive part"),filename);
   fclose(part);
 }
 
 void print_info(const struct partinfo *pi) {
-  printf("%s:\n"
+  printf(_("%s:\n"
          "    Part format version:            %s\n"
          "    Part of package:                %s\n"
          "        ... version:                %s\n"
@@ -193,7 +193,7 @@ void print_info(const struct partinfo *pi) {
          "    Part number:                    %d/%d\n"
          "    Part length:                    %lu bytes\n"
          "    Part offset:                    %lu bytes\n"
-         "    Part file size (used portion):  %lu bytes\n\n",
+         "    Part file size (used portion):  %lu bytes\n\n"),
          pi->filename,
          pi->fmtversion,
          pi->package,
@@ -213,17 +213,17 @@ void do_info(const char *const *argv) {
   struct partinfo *pi, ps;
   FILE *part;
 
-  if (!*argv) badusage("--info requires one or more part file arguments");
+  if (!*argv) badusage(_("--info requires one or more part file arguments"));
   
   while ((thisarg= *argv++)) {
     part= fopen(thisarg,"r");
-    if (!part) ohshite("cannot open archive part file `%.250s'",thisarg);
+    if (!part) ohshite(_("cannot open archive part file `%.250s'"),thisarg);
     pi= read_info(part,thisarg,&ps);
     fclose(part);
     if (pi) {
       print_info(pi);
     } else {
-      printf("file `%s' is not an archive part\n",thisarg);
+      printf(_("file `%s' is not an archive part\n"),thisarg);
     }
     if (ferror(stdout)) werr("stdout");
   }
index 9e99f643bc4020fa8af47bb4346b536d05347c6b..69993df46415790f2985ce598578f07f1f6a4b4f 100644 (file)
@@ -25,9 +25,9 @@
 #include <assert.h>
 #include <string.h>
 
-#include "config.h"
-#include "dpkg.h"
-#include "dpkg-db.h"
+#include <config.h>
+#include <dpkg.h>
+#include <dpkg-db.h>
 #include "dpkg-split.h"
 
 void reassemble(struct partinfo **partlist, const char *outputfile) {
@@ -45,11 +45,11 @@ void reassemble(struct partinfo **partlist, const char *outputfile) {
     if (partlist[0]->headerlen > buffersize) buffersize= partlist[0]->headerlen;
   buffer= m_malloc(partlist[0]->maxpartlen);
   output= fopen(outputfile,"w");
-  if (!output) ohshite("unable to open output file `%.250s'",outputfile);
+  if (!output) ohshite(_("unable to open output file `%.250s'"),outputfile);
   for (i=0; i<partlist[0]->maxpartn; i++) {
     pi= partlist[i];
     input= fopen(pi->filename,"r");
-    if (!input) ohshite("unable to (re)open input part file `%.250s'",pi->filename);
+    if (!input) ohshite(_("unable to (re)open input part file `%.250s'"),pi->filename);
     assert(pi->headerlen <= buffersize);
     nr= fread(buffer,1,pi->headerlen,input);
     if (nr != pi->headerlen) rerreof(input,pi->filename);
@@ -65,7 +65,7 @@ void reassemble(struct partinfo **partlist, const char *outputfile) {
     if (nr != pi->thispartlen) werr(outputfile);
   }
   if (fclose(output)) werr(outputfile);
-  printf("done\n");
+  printf(_("done\n"));
 }
 
 
@@ -81,12 +81,12 @@ void addtopartlist(struct partinfo **partlist,
       pi->maxpartlen != refi->maxpartlen) {
     print_info(pi);
     print_info(refi);
-    ohshit("files `%.250s' and `%.250s' are not parts of the same file",
+    ohshit(_("files `%.250s' and `%.250s' are not parts of the same file"),
            pi->filename,refi->filename);
   }
   i= pi->thispartn-1;
   if (partlist[i])
-    ohshit("there are several versions of part %d - at least `%.250s' and `%.250s'",
+    ohshit(_("there are several versions of part %d - at least `%.250s' and `%.250s'"),
            pi->thispartn, pi->filename, partlist[i]->filename);
   partlist[i]= pi;
 }
@@ -99,7 +99,7 @@ void do_join(const char *const *argv) {
   int i;
   
   assert(!queue);
-  if (!*argv) badusage("--join requires one or more part file arguments");
+  if (!*argv) badusage(_("--join requires one or more part file arguments"));
   while ((thisarg= *argv++)) {
     pq= nfmalloc(sizeof(struct partqueue));
 
@@ -120,7 +120,7 @@ void do_join(const char *const *argv) {
     addtopartlist(partlist,pi,refi);
   }
   for (i=0; i<refi->maxpartn; i++) {
-    if (!partlist[i]) ohshit("part %d is missing",i+1);
+    if (!partlist[i]) ohshit(_("part %d is missing"),i+1);
   }
   if (!outputfile) {
     p= nfmalloc(strlen(refi->package)+1+strlen(refi->version)+sizeof(DEBEXT));
index 756dbf4e6bdbf9795da9f381e872576471173ff7..560d10c568f84582c93aac59f097d53a4b353949 100644 (file)
  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
 
+#include <string.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <limits.h>
 #include <assert.h>
 
-#include "config.h"
-#include "dpkg.h"
-#include "dpkg-db.h"
-#include "version.h"
-#include "myopt.h"
+#include <config.h>
+#include <dpkg.h>
+#include <dpkg-db.h>
+#include <version.h>
+#include <myopt.h>
 
 #include "dpkg-split.h"
 
 static void printversion(void) {
-  if (!fputs
-      ("Debian Linux `" SPLITTER "' package split/join tool; "
-       "version " DPKG_VERSION_ARCH ".\n"
-       "Copyright (C) 1994-1996 Ian Jackson.  This is free software; see the\n"
+  if (fputs
+      (_("Debian Linux `dpkg-split' package split/join tool; version "), stdout) < 0) werr ("stdout");
+  if (fputs (DPKG_VERSION_ARCH ".\n", stdout) < 0) werr ("stdout");
+  if (fputs (_("Copyright (C) 1994-1996 Ian Jackson.  This is free software; see the\n"
        "GNU General Public Licence version 2 or later for copying conditions.\n"
-       "There is NO warranty.  See dpkg-split --licence for details.\n",
-       stdout)) werr("stdout");
+       "There is NO warranty.  See dpkg-split --licence for details.\n"),
+       stdout) < 0) werr("stdout");
 }
 
 static void usage(void) {
-  if (!fputs("\
-Usage: " SPLITTER " -s|--split <file> [<prefix>]     Split an archive.\n\
-       " SPLITTER " -j|--join <part> <part> ...      Join parts together.\n\
-       " SPLITTER " -I|--info <part> ...             Display info about a part.\n\
-       " SPLITTER " -h|--help|--version|--licence    Show help/version/licence.\n\
+  if (fputs(_("\
+Usage: dpkg-split -s|--split <file> [<prefix>]     Split an archive.\n\
+       dpkg-split -j|--join <part> <part> ...      Join parts together.\n\
+       dpkg-split -I|--info <part> ...             Display info about a part.\n\
+       dpkg-split -h|--help|--version|--licence    Show help/version/licence.\n\
 \n\
-       " SPLITTER " -a|--auto -o <complete> <part>   Auto-accumulate parts.\n\
-       " SPLITTER " -l|--listq                       List unmatched pieces.\n\
-       " SPLITTER " -d|--discard [<filename> ...]    Discard unmatched pieces.\n\
+       dpkg-split -a|--auto -o <complete> <part>   Auto-accumulate parts.\n\
+       dpkg-split -l|--listq                       List unmatched pieces.\n\
+       dpkg-split -d|--discard [<filename> ...]    Discard unmatched pieces.\n\
 \n\
-Options:  --depotdir <directory>  (default is /var/lib/dpkg/parts)\n\
+Options:  --depotdir <directory>  (default is " ADMINDIR "/" PARTSDIR ")\n\
           -S|--partsize <size>    (in Kb, for -s, default is 450)\n\
           -o|--output <file>      (for -j, default is <package>-<version>.deb)\n\
           -Q|--npquiet            (be quiet when -a is not a part)\n\
           --msdos                 (generate 8.3 filenames)\n\
 \n\
-Exit status: 0 = OK;  1 = -a is not a part;  2 = trouble!\n",
-             stdout)) werr("stdout");
+Exit status: 0 = OK;  1 = -a is not a part;  2 = trouble!\n"),
+             stdout) < 0) werr("stdout");
 }
 
 const char thisname[]= SPLITTER;
-const char printforhelp[]= "Type " SPLITTER " --help for help.";
+const char printforhelp[]= N_("Type dpkg-split --help for help.");
 
 dofunction *action=0;
 const struct cmdinfo *cipaction=0;
@@ -74,12 +75,12 @@ struct partqueue *queue= 0;
 int npquiet= 0, msdos= 0;
 
 void rerr(const char *fn) {
-  ohshite("error reading %s",fn);
+  ohshite(_("error reading %s"),fn);
 }
 
 void rerreof(FILE *f, const char *fn) {
-  if (ferror(f)) ohshite("error reading %.250s",fn);
-  ohshit("unexpected end of file in %.250s",fn);
+  if (ferror(f)) ohshite(_("error reading %.250s"),fn);
+  ohshit(_("unexpected end of file in %.250s"),fn);
 }
 
 static void helponly(const struct cmdinfo *cip, const char *value) {
@@ -97,11 +98,11 @@ static void setpartsize(const struct cmdinfo *cip, const char *value) {
 
   newpartsize= strtol(value,&endp,10);
   if (newpartsize <= 0 || newpartsize > (INT_MAX >> 10))
-    badusage("part size is far too large or is not positive");
+    badusage(_("part size is far too large or is not positive"));
 
   maxpartsize= newpartsize << 10;
   if (maxpartsize <= HEADERALLOWANCE)
-    badusage("part size must be at least %dk (to allow for header)",
+    badusage(_("part size must be at least %dk (to allow for header)"),
              (HEADERALLOWANCE >> 10) + 1);
 }
 
@@ -138,7 +139,7 @@ static const struct cmdinfo cmdinfos[]= {
 
 static void setaction(const struct cmdinfo *cip, const char *value) {
   if (cipaction)
-    badusage("conflicting actions --%s and --%s",cip->olong,cipaction->olong);
+    badusage(_("conflicting actions --%s and --%s"),cip->olong,cipaction->olong);
   cipaction= cip;
   assert(cip-cmdinfos < sizeof(dofunctions)*sizeof(dofunction*));
   action= dofunctions[cip-cmdinfos];
@@ -149,13 +150,17 @@ int main(int argc, const char *const *argv) {
   int l;
   char *p;
 
+  setlocale(LC_ALL, "");
+  bindtextdomain(PACKAGE, LOCALEDIR);
+  textdomain(PACKAGE);
+
   if (setjmp(ejbuf)) { /* expect warning about possible clobbering of argv */
     error_unwind(ehflag_bombout); exit(2);
   }
   push_error_handler(&ejbuf,print_error_fatal,0);
 
   myopt(&argv,cmdinfos);
-  if (!cipaction) badusage("need an action option");
+  if (!cipaction) badusage(_("need an action option"));
 
   l= strlen(depotdir);
   if (l && depotdir[l-1] != '/') {
diff --git a/split/mksplit b/split/mksplit
deleted file mode 100755 (executable)
index 697d8fd..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-#!/usr/bin/perl --
-# This script is only supposed to be called by dpkg-split.
-# Its arguments are:
-#  <sourcefile> <partsize> <prefix> <totalsize> <partsizeallow> <msdostruncyesno>
-# Stdin is also redirected from the source archive by dpkg-split.
-
-# Copyright (C) 1995 Ian Jackson <ijackson@nyx.cs.du.edu>
-#
-#   This is free software; you can redistribute it and/or modify
-#   it under the terms of the GNU General Public License as
-#   published by the Free Software Foundation; either version 2,
-#   or (at your option) any later version.
-#
-#   This is distributed in the hope that it will be useful, but
-#   WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#   GNU General Public License for more details.
-#
-#   You should have received a copy of the GNU General Public
-#   License along with dpkg; if not, write to the Free Software
-#   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-@ARGV == 6 || die "mksplit: bad invocation\n";
-
-($sourcefile,$partsize,$prefix,$orgsize,$partsizeallow,$msdos) = @ARGV;
-
-sub output {
-    $!=0; $rv= `$_[0]`; $? && die "mksplit $_[0]: $! $?\n";
-    $rv =~ s/\n$//; $rv =~ s/\s+$//; $rv =~ s/^\s+//;
-    $rv;
-}
-
-$myversion='2.1';
-$csum= &output("md5sum <\"$sourcefile\"");
-$package= &output("dpkg-deb --field \"$sourcefile\" Package");
-$version= &output("dpkg-deb --field \"$sourcefile\" Version");
-$revision= &output("dpkg-deb --field \"$sourcefile\" Package_Revision");
-$version.= "-$revision" if length($revision);
-$nparts=int(($orgsize+$partsize-1)/$partsize);
-$startat=0;
-$showpartnum=1;
-
-$|=1;
-print("Splitting package $package into $nparts parts: ");
-
-$msdos= ($msdos eq 'yes');
-if ($msdos) {
-    $prefixdir= $prefix; $prefixdir =~ s:(/?)/*[^/]+$:$1:;
-    $cleanprefix= $prefix; $cleanprefix =~ s:^.*/+::;
-    $cleanprefix =~ y/A-Za-z0-9+/a-za-z0-9x/;
-    $cleanprefix =~ y/a-z0-9//cd;
-}
-
-sub add {
-    $data .=
-        sprintf("%-16s%-12d0     0     100644  %-10d%c\n%s%s",
-                $_[0], time, length($_[1]), 0140, $_[1],
-                (length($_[1]) & 1) ? "\n" : "");
-}                 
-
-while ($startat < $orgsize) {
-    $dsp= "$myversion\n$package\n$version\n$csum\n$orgsize\n$partsize\n".
-          "$showpartnum/$nparts\n";
-    defined($thispartreallen= read(STDIN,$pd,$partsize)) || die "mksplit: read: $!\n";
-    $data= "!<arch>\n";
-    print("$showpartnum ");
-    &add('debian-split',$dsp);
-    &add("data.$showpartnum",$pd);
-    if ($thispartreallen > $partsizeallow) {
-        die "Header is too long, making part too long.  Your package name or version\n".
-            "numbers must be extraordinarily long, or something.  Giving up.\n";
-    }
-    if ($msdos) {
-        $basename= "${showpartnum}of$nparts.$cleanprefix";
-        $basename= substr($basename,0,9);
-        $basename =~ s/^([^.]*)\.(.*)$/$2$1/;
-        $basename= "$prefixdir$basename";
-    } else {
-        $basename= "$prefix.${showpartnum}of$nparts";
-    }
-    open(O,"> $basename.deb") || die("mksplit: open $basename.deb: $!\n");
-    print(O $data) || die("mksplit: write $basename.deb: $!\n");
-    close(O) || die("mksplit: close $basename.deb: $!\n");
-    $startat += $partsize;
-    $showpartnum++;
-}
-print("done\n");
-
-exit(0);
index 5f26f66f58b6196cc1ce6fc1d2b35129f9dae625..a7f2cc64624320b06fda00d4b790db75922d7e14 100644 (file)
@@ -38,9 +38,9 @@
 #include <dirent.h>
 #include <string.h>
 
-#include "config.h"
-#include "dpkg.h"
-#include "dpkg-db.h"
+#include <config.h>
+#include <dpkg.h>
+#include <dpkg-db.h>
 #include "dpkg-split.h"
 
 static int decompose_filename(const char *filename, struct partqueue *pq) {
@@ -66,7 +66,7 @@ void scandepot(void) {
 
   assert(!queue);
   depot= opendir(depotdir);
-  if (!depot) ohshite("unable to read depot directory `%.250s'",depotdir);
+  if (!depot) ohshite(_("unable to read depot directory `%.250s'"),depotdir);
   while ((de= readdir(depot))) {
     if (de->d_name[0] == '.') continue;
     pq= nfmalloc(sizeof(struct partqueue));
@@ -102,16 +102,16 @@ void do_auto(const char *const *argv) {
   void *buffer;
   char *p, *q;
 
-  if (!outputfile) badusage("--auto requires the use of the --output option");
+  if (!outputfile) badusage(_("--auto requires the use of the --output option"));
   if (!(partfile= *argv++) || *argv)
-    badusage("--auto requires exactly one part file argument");
+    badusage(_("--auto requires exactly one part file argument"));
 
   refi= nfmalloc(sizeof(struct partqueue));
   part= fopen(partfile,"r");
-  if (!part) ohshite("unable to read part file `%.250s'",partfile);
+  if (!part) ohshite(_("unable to read part file `%.250s'"),partfile);
   if (!read_info(part,partfile,refi)) {
     if (!npquiet)
-      printf("File `%.250s' is not part of a multipart archive.\n",partfile);
+      printf(_("File `%.250s' is not part of a multipart archive.\n"),partfile);
     if (fclose(stdout)) werr("stdout");
     exit(1);
   }
@@ -138,11 +138,11 @@ void do_auto(const char *const *argv) {
   if (j>=0) {
 
     part= fopen(partfile,"r");
-    if (!part) ohshite("unable to reopen part file `%.250s'",partfile);
+    if (!part) ohshite(_("unable to reopen part file `%.250s'"),partfile);
     buffer= nfmalloc(refi->filesize);
     nr= fread(buffer,1,refi->filesize,part);
     if (nr != refi->filesize) rerreof(part,partfile);
-    if (getc(part) != EOF) ohshit("part file `%.250s' has trailing garbage",partfile);
+    if (getc(part) != EOF) ohshit(_("part file `%.250s' has trailing garbage"),partfile);
     if (ferror(part)) rerr(partfile);
     fclose(part);
     p= nfmalloc(strlen(depotdir)+50);
@@ -151,17 +151,17 @@ void do_auto(const char *const *argv) {
     sprintf(q,"%s%s.%lx.%x.%x",depotdir,refi->md5sum,
             refi->maxpartlen,refi->thispartn,refi->maxpartn);
     part= fopen(p,"w");
-    if (!part) ohshite("unable to open new depot file `%.250s'",p);
+    if (!part) ohshite(_("unable to open new depot file `%.250s'"),p);
     nr= fwrite(buffer,1,refi->filesize,part);
     if (nr != refi->filesize) werr(p);
     if (fclose(part)) werr(p);
-    if (rename(p,q)) ohshite("unable to rename new depot file `%.250s' to `%.250s'",p,q);
+    if (rename(p,q)) ohshite(_("unable to rename new depot file `%.250s' to `%.250s'"),p,q);
 
-    printf("Part %d of package %s filed (still want ",refi->thispartn,refi->package);
+    printf(_("Part %d of package %s filed (still want "),refi->thispartn,refi->package);
     /* There are still some parts missing. */
     for (i=0, ap=0; i<refi->maxpartn; i++)
       if (!partlist[i])
-        printf("%s%d", !ap++ ? "" : i==j ? " and " : ", ", i+1);
+        printf("%s%d", !ap++ ? "" : i==j ? _(" and ") : ", ", i+1);
     printf(").\n");
 
   } else {
@@ -174,7 +174,7 @@ void do_auto(const char *const *argv) {
     for (i=0; i<refi->maxpartn; i++)
       if (partlist[i])
         if (unlink(partlist[i]->filename))
-          ohshite("unable to delete used-up depot file `%.250s'",partlist[i]->filename);
+          ohshite(_("unable to delete used-up depot file `%.250s'"),partlist[i]->filename);
 
   }
 
@@ -189,29 +189,29 @@ void do_queue(const char *const *argv) {
   unsigned long bytes;
   int i;
 
-  if (*argv) badusage("--listq does not take any arguments");
+  if (*argv) badusage(_("--listq does not take any arguments"));
   scandepot();
 
-  head= "Junk files left around in the depot directory:\n";
+  head= N_("Junk files left around in the depot directory:\n");
   for (pq= queue; pq; pq= pq->nextinqueue) {
     if (pq->info.md5sum) continue;
-    fputs(head,stdout); head= "";
+    fputs(gettext(head),stdout); head= "";
     if (lstat(pq->info.filename,&stab))
-      ohshit("unable to stat `%.250s'",pq->info.filename);
+      ohshit(_("unable to stat `%.250s'"),pq->info.filename);
     if (S_ISREG(stab.st_mode)) {
       bytes= stab.st_size;
-      printf(" %s (%lu bytes)\n",pq->info.filename,bytes);
+      printf(_(" %s (%lu bytes)\n"),pq->info.filename,bytes);
     } else {
-      printf(" %s (not a plain file)\n",pq->info.filename);
+      printf(_(" %s (not a plain file)\n"),pq->info.filename);
     }
   }
   if (!*head) putchar('\n');
   
-  head= "Packages not yet reassembled:\n";
+  head= N_("Packages not yet reassembled:\n");
   for (pq= queue; pq; pq= pq->nextinqueue) {
     if (!pq->info.md5sum) continue;
     mustgetpartinfo(pq->info.filename,&ti);
-    fputs(head,stdout); head= "";
+    fputs(gettext(head),stdout); head= "";
     printf(" Package %s: part(s) ",ti.package);
     bytes= 0;
     for (i=0; i<ti.maxpartn; i++) {
@@ -221,14 +221,14 @@ void do_queue(const char *const *argv) {
       if (qq) {
         printf("%d ",i+1);
         if (lstat(qq->info.filename,&stab))
-          ohshite("unable to stat `%.250s'",qq->info.filename);
+          ohshite(_("unable to stat `%.250s'"),qq->info.filename);
         if (!S_ISREG(stab.st_mode))
-          ohshit("part file `%.250s' is not a plain file",qq->info.filename);
+          ohshit(_("part file `%.250s' is not a plain file"),qq->info.filename);
         bytes+= stab.st_size;
         qq->info.md5sum= 0; /* don't find this package again */
       }
     }
-    printf("(total %lu bytes)\n",bytes);
+    printf(_("(total %lu bytes)\n"),bytes);
   }
   if (fclose(stdout)) werr("stdout");
 }
@@ -251,8 +251,8 @@ static void discardsome(enum discardwhich which, const char *package) {
     default: internerr("bad discardsome which");
     }
     if (unlink(pq->info.filename))
-      ohshite("unable to discard `%.250s'",pq->info.filename);
-    printf("Deleted %s.\n",pq->info.filename);
+      ohshite(_("unable to discard `%.250s'"),pq->info.filename);
+    printf(_("Deleted %s.\n"),pq->info.filename);
   }
 }
 
index facdeb0e5ba949aa649d75a7dfcd131da347ac22..9b7ec963edb3e24fecc704053ed3293921f03a3d 100644 (file)
@@ -28,9 +28,9 @@
 #include <sys/stat.h>
 #include <fcntl.h>
 
-#include "config.h"
-#include "dpkg.h"
-#include "dpkg-db.h"
+#include <config.h>
+#include <dpkg.h>
+#include <dpkg-db.h>
 #include "dpkg-split.h"
 
 void do_split(const char *const *argv) {
@@ -42,10 +42,10 @@ void do_split(const char *const *argv) {
 
   sourcefile= *argv++;
   if (!sourcefile)
-    badusage("--split needs a source filename argument");
+    badusage(_("--split needs a source filename argument"));
   prefix= *argv++;
   if (prefix && *argv)
-    badusage("--split takes at most a source filename and destination prefix");
+    badusage(_("--split takes at most a source filename and destination prefix"));
   if (!prefix) {
     l= strlen(sourcefile);
     palloc= nfmalloc(l+1);
@@ -59,13 +59,16 @@ void do_split(const char *const *argv) {
   sprintf(partsizebuf,"%ld",maxpartsize-HEADERALLOWANCE);
   sprintf(partsizeallowbuf,"%ld",maxpartsize);
   fd= open(sourcefile,O_RDONLY);
-  if (!fd) ohshite("unable to open source file `%.250s'",sourcefile);
-  if (fstat(fd,&stab)) ohshite("unable to fstat source file");
-  if (!S_ISREG(stab.st_mode)) ohshit("source file `%.250s' not a plain file",sourcefile);
+  if (!fd) ohshite(_("unable to open source file `%.250s'"),sourcefile);
+  if (fstat(fd,&stab)) ohshite(_("unable to fstat source file"));
+  if (!S_ISREG(stab.st_mode)) ohshit(_("source file `%.250s' not a plain file"),sourcefile);
   sprintf(lengthbuf,"%lu",(unsigned long)stab.st_size);
   m_dup2(fd,0);
   execl(MKSPLITSCRIPT,MKSPLITSCRIPT,
         sourcefile,partsizebuf,prefix,lengthbuf,partsizeallowbuf,msdos?"yes":"no",
         (char*)0);
-  ohshite("unable to exec " MKSPLITSCRIPT);
+  ohshite(_("unable to exec mksplit"));
 }
+
+
+
diff --git a/version.h b/version.h
deleted file mode 100644 (file)
index a3eacf5..0000000
--- a/version.h
+++ /dev/null
@@ -1 +0,0 @@
-#define DPKG_VERSION "1.4.0" /* This line modified by Makefile */