--- /dev/null
+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
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
--- /dev/null
+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:
- 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'.
--- /dev/null
+## 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.
+++ /dev/null
-# 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
+++ /dev/null
-(-*- 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.
/* 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
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
--- /dev/null
+(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))
+
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/ .*//'`"
--- /dev/null
+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
+])
--- /dev/null
+# 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
+])
--- /dev/null
+# 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
+])
#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
+++ /dev/null
-/* 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
+++ /dev/null
-#! /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
-
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,
[ --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
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
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,
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),
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)
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])
--- /dev/null
+build
+tmp-main
+tmp-dev
+substvars
--- /dev/null
+;;
+;; /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)
--- /dev/null
+
+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
+
+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.)
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.
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.
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
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
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
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"
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
#!/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 \
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
--- /dev/null
+libdpkg 0 dpkg (>= 1.4.0.9)
-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)
+++ /dev/null
-shlibs.default.i386
\ No newline at end of file
+++ /dev/null
-shlibs:Pre-Depends=libc5 (>= 5.2.18), ncurses3.0
--- /dev/null
+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:
--- /dev/null
+## 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.
+++ /dev/null
-# 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
+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,
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.
--- /dev/null
+<!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 ©1997 Klee Dienes <samp/<klee@@mit.edu>/.
+
+<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 <tom&at;lpsg.demon.co.uk> on Tue, 4 Mar 1997
+21:34:57 +0000, with subsequent modifications by Klee Dienes <klee&at;debian.org>
+
+<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/"<none>"/. 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>
+++ /dev/null
-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
-<!entity manuals-version "2.1.1.0">
-<!entity dpkg-version "1.4.0">
+<!entity manuals-version "">
+<!entity dpkg-version "1.4.1">
+++ /dev/null
-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 -------
+++ /dev/null
-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
+++ /dev/null
-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.
-
+++ /dev/null
-\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
+++ /dev/null
-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
+++ /dev/null
-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.
-
+++ /dev/null
-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.
+++ /dev/null
-(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);
-}
+++ /dev/null
-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.
+++ /dev/null
-<!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 ©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*!@<+ 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, &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/<varargs.h>/ 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/<stdarg.h>/ 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/&&/ 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>
+++ /dev/null
-<!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 ©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/<>/ (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/:/]<var/upstream-version/[<tt/-/<var/debian-revision/].
-<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><unknown></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 <iwj10@cus.cam.ac.uk>
-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/<</,
-<tt/<=/,
-<tt/=/,
-<tt/>=/ and
-<tt/>>/
-for strictly earlier, earlier or equal, exactly equal, later or equal
-and strictly later, respectively. The forms <tt/</ and <tt/>/
-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 >/dev/null
-</example>
-and in your postrm
-<example>
-if [ purge = "$1" ]; then
- update-rc.d <var/package/ remove >/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 <rob@mars.org>, 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>
--- /dev/null
+% 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.
--- /dev/null
+<!--
+ 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)+>
--- /dev/null
+% 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
--- /dev/null
+Makefile.in
--- /dev/null
+## 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.
+++ /dev/null
-# 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)
#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
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)++;
}
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;
}
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) +
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);
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);
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);
}
}
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;
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);
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",
(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);
+++ /dev/null
-#!/bin/sh
-set -x
-make XCFLAGS='-g -O0' LDFLAGS=-g LIBS='-lefence -L../lib -ldpkg' "$@"
#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];
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);
}
}
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;
}
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")) {
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;
!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) {
}
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");
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");
} 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);
}
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]);
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]);
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"));
}
}
}
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);
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);
}
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); }
+
+
+
#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;
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,
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);
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) {
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))== '!') {
}
}
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) {
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; }
}
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");
}
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);
}
#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;
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];
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);
--- /dev/null
+Makefile.in
--- /dev/null
+## 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.
+++ /dev/null
-# 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
#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"
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();
#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"
#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 <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"
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"
};
+++ /dev/null
-#!/bin/sh
-set -x
-make 'XCFLAGS=-g -O0' LDFLAGS=-g 'EXTERNLIBS= -lncurses_g -lefence' "$@"
#define TOTAL_LIST_WIDTH 180
#define MAX_DISPLAY_INFO 120
+#include <signal.h>
+
struct helpmenuentry {
char key;
const struct helpmessage *msg;
+++ /dev/null
-#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;
-}
#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"
#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"
{ "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)
#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"
#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"
#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"
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);
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;
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;
# 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}= '';
}
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.
*/
$maxnlines= 22;
-open(SRC,"helpmsgs.src") || die $!;
+open(SRC,$ARGV[0]) || die $!;
open(NC,">helpmsgs.cc.new") || die $!;
open(NH,">helpmsgs.h.new") || die $!;
#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"
#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"
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;
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);
}
// 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);
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;
}
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);
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);
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)
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]");
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 {
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;
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);
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);
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;
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;
#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"
#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"
#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"
{ "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)
#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"
#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"
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));
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;
#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"
+++ /dev/null
-#!/bin/sh
-while cat p; do echo ===================; done
--- /dev/null
+Makefile.in
--- /dev/null
+## 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.
+++ /dev/null
-# 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
#include <stdio.h>
#include <stdlib.h>
+struct versionrevision {
+ unsigned long epoch;
+ const char *version;
+ const char *revision;
+};
+
enum deptype {
dep_suggests,
dep_recommends,
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;
};
struct filedetails {
struct filedetails *next;
- char *name, *msdosname, *size, *md5sum;
+ char *name;
+ char *msdosname;
+ char *size;
+ char *md5sum;
};
struct pkginfoperfile { /* pif */
-
/*
* libdpkg - Debian packaging suite library routines
* dpkg.h - general header for Debian package handling
#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[];
+++ /dev/null
-#!/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;
-}
+++ /dev/null
-#!/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
--- /dev/null
+Makefile.in
--- /dev/null
+## 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.
+++ /dev/null
-# 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
#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) {
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;
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;
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
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
#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
}
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"));
}
/*
* xgames xherc xmach32 xmach8 xmono xnet xs3 xsvga xtexstuff xv
* xvga16 xxgdb zip
*/
+
+
+
+
+
+
+
#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;
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;
}
*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) {
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]);
}
}
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--;
}
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);
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;
}
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++;
+++ /dev/null
-#!/bin/sh
-set -x
-make 'XCFLAGS=-g -DMDEBUG -O0' LDFLAGS=-g 'LIBS= -lefence -L../lib -ldpkg' "$@"
#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,
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);
}
const char *which;
FILE *file;
struct varbuf vb;
+ int old_umask;
which= available ? "available" : "status";
oldfn= m_malloc(strlen(filename)+sizeof(OLDDBEXT));
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) {
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);
}
#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];
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);
}
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) {
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;
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;
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();
}
+
+
#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;
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;
}
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
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);
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;
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,
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,
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,
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);
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,
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);
}
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;
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);
}
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++;
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;
}
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++;
}
#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;
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) {
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;
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);
}
#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.
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
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) {
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);
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);
}
}
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);
}
#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;
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++;
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;
}
#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
#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[]= {
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);
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);
}
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) {
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);
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));
} /* 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) {
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;
}
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;
}
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;
#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++= '%';
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);
}
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;
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;
}
(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;
}
}
-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;
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;
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);
}
}
#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"));
}
-#include "tarfn.h"
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+#include <tarfn.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
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;
* 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];
*/
#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);
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;
}
#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,
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);
}
--- /dev/null
+Makefile.in
--- /dev/null
+## 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.
+++ /dev/null
-# 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
* 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"
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;
}
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);
}
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: " : "",
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.
*/
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");
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) {
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);
}
}
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);
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;
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
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.)
} 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;
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;
}
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;
}
(!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 {
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;
}
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;
}
}
/* 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;
}
}
}
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;
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())) {
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);
} 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;
case act_avail:
break;
default:
- internerr("unknown action");
+ internerr(_("unknown action"));
}
modstatdb_shutdown();
* 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"
*/
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--;
}
* 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"
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; }
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);
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) {
/* 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);
*/
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)) {
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) {
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);
}
}
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);
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;
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:
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;
} 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;
}
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;
}
} 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;
}
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;
}
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;
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,"-");
}
+++ /dev/null
-#!/bin/sh
-set -x
-make XCFLAGS=-g LDFLAGS=-g 'LIBS= -lefence -L../lib -ldpkg' "$@"
* 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"
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
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);
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;
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;
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;
}
}
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;
*/
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");
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);
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++;
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: */
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++;
-.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
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>.
#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"
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;
}
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");
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
}
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);
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);
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);
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);
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
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();
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");
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);
!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);
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);
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;
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;
}
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;
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);
}
}
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 */
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;
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");
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;
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));
}
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");
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[]= {
{ "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 }
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);
}
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);
}
#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"
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;
}
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;
}
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;
}
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 {
#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"
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;
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);
* 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') {
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;
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--;
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);
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;
}
}
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))) {
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);
}
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;
}
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;
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--;
* 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) {
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;
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);
}
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);
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*);
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++;
}
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--;
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,
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);
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);
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;
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);
#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\
-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;
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;
}
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\
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);
}
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;
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\
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\
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);
}
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;
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 ),
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) {
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);
}
}
myopt(&argv,cmdinfos);
- if (!cipaction) badusage("need an action option");
+ if (!cipaction) badusage(_("need an action option"));
setvbuf(stdout,0,_IONBF,0);
filesdbinit();
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,
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);
#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"
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) {
} 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);
}
/* 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:
}
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);
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");
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)++;
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 {
* 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"
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;
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;
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. */
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 ? */
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
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);
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;
}
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);
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;
}
}
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));
}
} 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);
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"));
}
}
}
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);
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;
}
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
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);
"upgrade", versiondescribe(&pkg->installed.version,
vdew_nonambig),
(char*)0);
- printf("Unpacking replacement %.250s ...\n",pkg->name);
+ printf(_("Unpacking replacement %.250s ...\n"),pkg->name);
}
/*
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]);
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;
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));
}
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);
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);
} 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,'.')) {
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);
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
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");
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 */
* 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"
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;
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;
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);
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;
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) {
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",
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;
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 */
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);
}
} 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
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;
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);
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 */
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;
#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"
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");
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);
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);
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);
* 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"
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");
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;
}
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) {
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);
--- /dev/null
+Makefile.in
--- /dev/null
+## 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.
+++ /dev/null
-# (-*- 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
* 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;
{
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) {
}
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);
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);
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);
}
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;
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;
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;
}
+
--- /dev/null
+Makefile.in
--- /dev/null
+## 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.
+++ /dev/null
-# 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 *~ *.~* ./#*#
' -- "$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
"
# 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;
# 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 ]
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
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
"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."
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] "
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
/* ) ;;
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
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 '
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
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.
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 '
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
+
+
. ./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.
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
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
read response
xit=0
+
+++ /dev/null
-#!/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
--- /dev/null
+Makefile.in
+cat-id-tbl.c
+dpkg.pot
+en.fmo
+fr.gmo
+stamp-cat-id
--- /dev/null
+ ../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
--- /dev/null
+# 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
--- /dev/null
+# 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"
--- /dev/null
+# 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"
--- /dev/null
+Makefile.in
+elisp-comp
#!/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";
--- /dev/null
+## 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.
+++ /dev/null
-# 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
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
";
}
$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 '';
$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 $."); }
+
$parsechangelog= 'dpkg-parsechangelog';
grep($capit{lc $_}=$_, qw(Pre-Depends Standards-Version Installed-Size));
$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));
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 ||
}
sub outputclose {
+ my ($dosubstvars) = @_;
for $f (keys %f) { $substvar{"F:$f"}= $f{$f}; }
if (length($varlistfile)) {
$varlistfile="./$varlistfile" if $varlistfile =~ m/\s/;
}
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<");
;; 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
(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 ()
(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."
(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
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> }
-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
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"
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
}
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"
}
"$@"
}
-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
$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$//;
sub dorename {
return unless $dorename;
+ return if $testmode;
if (@ssrc) {
if (@sdest) {
unlink($rsrc) || &quit("rename: remove duplicate old link \`$rsrc': $!");
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: $!");
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
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$/) {
$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]*)[=:]/) {
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}) &&
$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;
}
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$/) {
}
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");
}
$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'};
$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");
for $f (keys %override) { $f{&capit($f)}= $override{$f}; }
for $f (keys %remove) { delete $f{&capit($f)}; }
-&outputclose;
+&outputclose(0);
}
}
-$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;
$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");
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'");
}
@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;
$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$//;
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
.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
.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
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 .
.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
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
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
-#!/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>|\'\']
";
}
-$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);
".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";
$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'");
}
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 {
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")
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"}) ||
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$// ||
$_ 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);
&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 _;
}
}
- 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);
} 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",
}
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}");
&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 {
}
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 {
$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("", @_);
+} }
+
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
}
while ($ARGV[0] =~ m/^--/) {
$_= shift(@ARGV);
- last if $eq eq '--';
+ last if $_ eq '--';
if ($_ eq '--version') {
&version; exit 0;
} elsif ($_ eq '--quiet') {
$infodir=$';
} elsif (m/^--menuentry=/) {
$menuentry=$';
+ } elsif (m/^--info-dir=/) {
+ $infodir=$';
} elsif (m/^--description=/) {
$description=$';
} else {
.\" 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>.
--- /dev/null
+/*
+ * 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));
+}
-.\" 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.
$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 \`$_'");
.\" 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 " ...
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
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
.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
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
.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
+++ /dev/null
-#! /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;
#! /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;
+}
--- /dev/null
+Makefile.in
--- /dev/null
+## 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.
+++ /dev/null
-# 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)
+++ /dev/null
-#!/bin/sh
-set -x
-make 'XCFLAGS=-g -O0' LDFLAGS=-g 'LIBS= -lefence -L../lib -ldpkg' "$@"
#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) {
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;
}
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]= ' ';
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;
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;
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"));
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");
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);
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"
" 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,
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");
}
#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) {
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);
if (nr != pi->thispartlen) werr(outputfile);
}
if (fclose(output)) werr(outputfile);
- printf("done\n");
+ printf(_("done\n"));
}
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;
}
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));
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));
* 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;
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) {
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);
}
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];
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] != '/') {
+++ /dev/null
-#!/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);
#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) {
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));
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);
}
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);
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 {
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);
}
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++) {
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");
}
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);
}
}
#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) {
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);
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"));
}
+
+
+
+++ /dev/null
-#define DPKG_VERSION "1.4.0" /* This line modified by Makefile */