[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: multiple arch support for dpkg



Jules Bean wrote:
> However, he suggests a file called /etc/dpkg/architectures which the user
> modifies by commenting out the current line and uncommenting out the on he
> wants.  E.g:
> 
> The default is:
> 
> i386:i386 all
> # uncomment below for pentium
> #i386: pentium i386 all
> 
> I suggest, instead, that there be a file /usr/lib/dpkg/architectures which
> looks like this:
> 
> pentium:pentium i386 all
> i386:i386 all
> 
> This is not modified by the user.  Instead, the user simply sets
> /etc/dpkg/architecture to simply 'pentium' or 'i386'.  In this way,
> the developers, not the users are responsible for working out which arch's
> go together.  All the user has to do is choose one.

Yes, but this does lose the user some control. Suppose you want to install
i386 package in preference, but pentium optimized packages if they are newer
than the i386 packages (because some developers have started releasing stuff
pentium optimized first, for example.). If /usr/lib/dpkg/architectures just
has the above 2 lines, you cannot do it. If the file is in /etc, you just 
use:

i386: i386 pentium all

> Secondly, (although this is not very important) I would suggest that it is
> more appropriate for apt to access the architecture list by using libdpkg
> or by a dpkg flag 'dpkg --print-all-architectures' rather than directly
> accessing files under /etc/dpkg.

Sounds like a good idea, though it would mean moving the architecture list
parsing code into libdpkg (it's currently in dpkg proper.)

I attach a new version of the patch. I accidentially gave patch options that
made it ignore 2 new files I added to the dpkg source code, that are the
meat of my changes. This one shows those new files too.

-- 
see shy jo
diff --new-file -ur o/dpkg-1.4.0.26/ChangeLog dpkg-1.4.0.26.3/ChangeLog
--- o/dpkg-1.4.0.26/ChangeLog	Thu Jul 23 05:26:46 1998
+++ dpkg-1.4.0.26.3/ChangeLog	Sat Jul 25 21:17:22 1998
@@ -1,3 +1,27 @@
+dpkg (1.4.0.26.3) experimental; urgency=low
+
+  * Non-maintainer upload.
+  
+  * lib/parse.c: fixed an error that was making the status file contain
+    only the architecture of the last package installed, and was making dpkg
+    -s not print the architecture.
+
+ -- Joey Hess <joeyh@master.debian.org>  Sat, 25 Jul 1998 21:16:22 -0700
+
+dpkg (1.4.0.26.2) experimental; urgency=low
+
+  * Non-maintainer upload.
+  
+  * Modified dpkg to parse a file, /etc/dpkg/arch, to determine which
+    architectures of packages it can install, in a user configurable way.
+  * Modified dpkg to save architecture info to the status file, this
+    information will be of use to apt. Also made it display the info in dpkg
+    -s.
+  * Modified archtable to make pentium be a unique arch, instead of being
+    mapped to i386. This is for the pentium optimized debian project.
+
+ -- Joey Hess <joeyh@master.debian.org>  Sat, 25 Jul 1998 13:08:23 -0700
+
 dpkg (1.4.0.26) unstable; urgency=low
 
   * Non-maintainer upload.
diff --new-file -ur o/dpkg-1.4.0.26/archtable dpkg-1.4.0.26.3/archtable
--- o/dpkg-1.4.0.26/archtable	Sun May 25 05:49:10 1997
+++ dpkg-1.4.0.26.3/archtable	Sat Jul 25 17:00:49 1998
@@ -17,7 +17,7 @@
 i486	i386	i486
 i586	i386	i486
 i686	i386	i486
-pentium	i386	i486
+pentium	pentium	i486
 sparc	sparc	sparc
 alpha	alpha	alpha
 m68k	m68k	m68k
diff --new-file -ur o/dpkg-1.4.0.26/config.log dpkg-1.4.0.26.3/config.log
--- o/dpkg-1.4.0.26/config.log	Thu Jul 23 05:29:55 1998
+++ dpkg-1.4.0.26.3/config.log	Sat Jul 25 21:27:59 1998
@@ -5,7 +5,19 @@
 ltconfig:580: checking if gcc static flag -static works
 ltconfig:581: gcc -o conftest    -static conftest.c  1>&5
 ltconfig:613: checking for ld used by GCC
-GNU ld version 2.9 (with BFD 2.9)
+GNU ld version 2.9.1 (with BFD 2.9.1)
+ltconfig:960: checking if global_symbol_pipe works
+ltconfig:961: gcc -c   conftest.c 1>&5
+ltconfig:964: eval "/usr/bin/nm -B conftest.o | sed -n -e 's/^.* [ABCDGISTUW] \([_A-Za-z][_A-Za-z0-9]*\)$/\1 \1/p' > conftest.nm"
+ltconfig:1022: gcc -o conftest  -fno-builtin   conftest.c conftestm.o 1>&5
+ltconfig:418: checking whether we are using GNU C
+ltconfig:426: gcc -E conftest.c
+ltconfig:537: checking if gcc PIC flag -fPIC works
+ltconfig:538: gcc -c  -fPIC -DPIC  conftest.c 1>&5
+ltconfig:580: checking if gcc static flag -static works
+ltconfig:581: gcc -o conftest    -static conftest.c  1>&5
+ltconfig:613: checking for ld used by GCC
+GNU ld version 2.9.1 (with BFD 2.9.1)
 ltconfig:960: checking if global_symbol_pipe works
 ltconfig:961: gcc -c   conftest.c 1>&5
 ltconfig:964: eval "/usr/bin/nm -B conftest.o | sed -n -e 's/^.* [ABCDGISTUW] \([_A-Za-z][_A-Za-z0-9]*\)$/\1 \1/p' > conftest.nm"
diff --new-file -ur o/dpkg-1.4.0.26/debian/changelog dpkg-1.4.0.26.3/debian/changelog
--- o/dpkg-1.4.0.26/debian/changelog	Thu Jul 23 05:26:46 1998
+++ dpkg-1.4.0.26.3/debian/changelog	Sat Jul 25 21:17:22 1998
@@ -1,3 +1,27 @@
+dpkg (1.4.0.26.3) experimental; urgency=low
+
+  * Non-maintainer upload.
+  
+  * lib/parse.c: fixed an error that was making the status file contain
+    only the architecture of the last package installed, and was making dpkg
+    -s not print the architecture.
+
+ -- Joey Hess <joeyh@master.debian.org>  Sat, 25 Jul 1998 21:16:22 -0700
+
+dpkg (1.4.0.26.2) experimental; urgency=low
+
+  * Non-maintainer upload.
+  
+  * Modified dpkg to parse a file, /etc/dpkg/arch, to determine which
+    architectures of packages it can install, in a user configurable way.
+  * Modified dpkg to save architecture info to the status file, this
+    information will be of use to apt. Also made it display the info in dpkg
+    -s.
+  * Modified archtable to make pentium be a unique arch, instead of being
+    mapped to i386. This is for the pentium optimized debian project.
+
+ -- Joey Hess <joeyh@master.debian.org>  Sat, 25 Jul 1998 13:08:23 -0700
+
 dpkg (1.4.0.26) unstable; urgency=low
 
   * Non-maintainer upload.
diff --new-file -ur o/dpkg-1.4.0.26/doc/manuals-version dpkg-1.4.0.26.3/doc/manuals-version
--- o/dpkg-1.4.0.26/doc/manuals-version	Thu Jul 23 05:34:41 1998
+++ dpkg-1.4.0.26.3/doc/manuals-version	Sat Jul 25 21:33:02 1998
@@ -1,2 +1,2 @@
-<!entity manuals-version "1.4.0.26">
-<!entity dpkg-version "1.4.0.26">
+<!entity manuals-version "1.4.0.26.3">
+<!entity dpkg-version "1.4.0.26.3">
diff --new-file -ur o/dpkg-1.4.0.26/dpkg/Makefile.am dpkg-1.4.0.26.3/dpkg/Makefile.am
--- o/dpkg-1.4.0.26/dpkg/Makefile.am	Fri Jul 11 12:47:01 1997
+++ dpkg-1.4.0.26.3/dpkg/Makefile.am	Sat Jul 25 15:15:12 1998
@@ -28,7 +28,7 @@
 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
+			  archives.h arch.c arch.h
 dpkg_LDADD		= ../lib/libdpkg.la ../lib/myopt.o
 
 BUILT_SOURCES		= archtable.h
diff --new-file -ur o/dpkg-1.4.0.26/dpkg/arch.c dpkg-1.4.0.26.3/dpkg/arch.c
--- o/dpkg-1.4.0.26/dpkg/arch.c	Wed Dec 31 16:00:00 1969
+++ dpkg-1.4.0.26.3/dpkg/arch.c	Sat Jul 25 16:43:01 1998
@@ -0,0 +1,115 @@
+/*
+ * dpkg - main program for package management
+ * arch.c - parser for arch table files
+ *
+ * Copyright (C) 1998 Joey Hess <joeyh@debian.org>
+ *
+ * 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.
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+#include <config.h>
+#include <dpkg.h>
+#include <dpkg-db.h>
+
+#include "arch.h"
+#include "main.h"
+
+char **arch_table=NULL;
+int arch_table_count=0;
+
+int arch_read=0;
+
+/*
+ * Read and parse a dpkg arch definition file, storing it in arch_table.
+ */
+int read_arch(const char *archfile) {
+  FILE *file;
+  char linebuf[1024];
+  int len, archlen=strlen(architecture);
+  char *l;
+  
+  file= fopen(archfile,"r");
+  
+  if (!file) { 
+    /* This isn't fatal, the arch definition file is optional. */
+    return 0;
+  }
+  
+  while (fgets(linebuf,sizeof(linebuf),file)) {  
+    len= strlen(linebuf);
+
+    if (len == 0)
+      ohshit(_("fgets gave an empty null-terminated string from %.250s'"),
+        archfile);
+   
+    /*
+     * We can ignore all lines that do not pertain to this system's
+     * architecture. This has a side effect of ignoring comments.
+     */
+    if (len > archlen + 1 &&
+        strncmp(linebuf,architecture,archlen) == 0 &&
+        linebuf[archlen] == ':') {
+
+      /* parse remainder of line one word at a time */
+      l= linebuf + archlen + 1;
+      l= strtok(l," \t\n");
+      while (l) {
+        if (! arch_table)
+          arch_table= m_malloc(sizeof(char *));
+        else
+          arch_table= m_realloc(arch_table,sizeof(char *) * 
+				(arch_table_count + 1));
+
+        arch_table[arch_table_count]= m_malloc(strlen(l)+1);
+        strncpy(arch_table[arch_table_count], l, strlen(l));
+	arch_table[arch_table_count++][strlen(l)]='\0';
+
+        l= strtok(NULL," \t\n");
+      }
+    }
+  }
+
+  return 1;
+}
+
+/*
+ * Returns true if an architecture may be installed on this system.
+ */
+int isvalid_arch(const char *testarch) {
+  int i;
+  
+  if (! testarch || ! *testarch)
+    return 0;
+
+  /*
+   * If arch_table is empty, we fall back on a default of
+   * only allowing the true architecture and arch all.
+   */
+   if (! arch_table && (
+       strcmp(testarch,"all") == 0 ||
+       strcmp(testarch,architecture) == 0))
+     return 1;
+
+  for (i= 0; i < arch_table_count; i++) {
+    if (strcmp(arch_table[i],testarch) == 0)
+      return 1;
+  }
+
+  return 0;
+}
diff --new-file -ur o/dpkg-1.4.0.26/dpkg/arch.h dpkg-1.4.0.26.3/dpkg/arch.h
--- o/dpkg-1.4.0.26/dpkg/arch.h	Wed Dec 31 16:00:00 1969
+++ dpkg-1.4.0.26.3/dpkg/arch.h	Sat Jul 25 16:38:05 1998
@@ -0,0 +1,28 @@
+/*
+ * dpkg - main program for package management
+ * arch.h - parser for arch table files
+ *
+ * Copyright (C) 1998 Joey Hess <joeyh@debian.org>
+ *
+ * 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.
+ */
+
+int read_arch(const char *);
+int isvalid_arch(const char *);
+
+char **arch_table;
+int arch_table_count;
+
+int arch_read;
diff --new-file -ur o/dpkg-1.4.0.26/dpkg/processarc.c dpkg-1.4.0.26.3/dpkg/processarc.c
--- o/dpkg-1.4.0.26/dpkg/processarc.c	Sun Mar 30 12:45:27 1997
+++ dpkg-1.4.0.26.3/dpkg/processarc.c	Sat Jul 25 16:28:50 1998
@@ -43,6 +43,7 @@
 #include "filesdb.h"
 #include "main.h"
 #include "archives.h"
+#include "arch.h"
 
 void process_archive(const char *filename) {
   static const struct TarFunctions tf = {
@@ -182,9 +183,12 @@
     return;
   }
 
-  if (pkg->available.architecture && *pkg->available.architecture &&
-      strcmp(pkg->available.architecture,"all") &&
-      strcmp(pkg->available.architecture,architecture))
+	if (!arch_read) {
+		read_arch(SYSCONFDIR "/" ARCHTABLEFILE);
+		arch_read=1;
+	}
+
+  if (! isvalid_arch(pkg->available.architecture))
     forcibleerr(fc_architecture,
                 _("package architecture (%s) does not match system (%s)"),
                 pkg->available.architecture,architecture);
@@ -754,7 +758,7 @@
   pkg->installed.description= pkg->available.description;
   pkg->installed.maintainer= pkg->available.maintainer;
   pkg->installed.source= pkg->available.source;
-  pkg->installed.architecture= 0; /* This is irrelevant in the status file. */
+  pkg->installed.architecture= pkg->available.architecture;
   pkg->installed.installedsize= pkg->available.installedsize;
   pkg->installed.version= pkg->available.version;
 
@@ -893,6 +897,7 @@
     otherpkg->installed.essential= 0;
     otherpkg->installed.description= otherpkg->installed.maintainer= 0;
     otherpkg->installed.installedsize= otherpkg->installed.source= 0;
+    otherpkg->installed.architecture= 0;
     otherpkg->installed.conffiles= 0;
     blankversion(&otherpkg->installed.version);
     otherpkg->installed.arbs= 0;
diff --new-file -ur o/dpkg-1.4.0.26/dpkg/remove.c dpkg-1.4.0.26.3/dpkg/remove.c
--- o/dpkg-1.4.0.26/dpkg/remove.c	Sat Apr  4 10:18:54 1998
+++ dpkg-1.4.0.26.3/dpkg/remove.c	Sat Jul 25 13:21:09 1998
@@ -475,6 +475,7 @@
     pkg->installed.essential= 0;
     pkg->installed.description= pkg->installed.maintainer= 0;
     pkg->installed.source= pkg->installed.installedsize= 0;
+    pkg->installed.architecture= 0;
     blankversion(&pkg->installed.version);
     pkg->installed.arbs= 0;
   }
diff --new-file -ur o/dpkg-1.4.0.26/include/Makefile.am dpkg-1.4.0.26.3/include/Makefile.am
--- o/dpkg-1.4.0.26/include/Makefile.am	Sat Jul 12 17:06:56 1997
+++ dpkg-1.4.0.26.3/include/Makefile.am	Sat Jul 25 15:24:26 1998
@@ -40,7 +40,8 @@
 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 SYSCONFDIR[ 	]*"\).*\(".*\):\1$(pkgsysconfdir)/\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:; \
diff --new-file -ur o/dpkg-1.4.0.26/include/dpkg.h.in dpkg-1.4.0.26.3/include/dpkg.h.in
--- o/dpkg-1.4.0.26/include/dpkg.h.in	Sat Mar  8 11:40:48 1997
+++ dpkg-1.4.0.26.3/include/dpkg.h.in	Sat Jul 25 15:26:07 1998
@@ -67,6 +67,9 @@
 #define POSTRMFILE         "postrm"
 #define LISTFILE           "list"
 
+#define SYSCONFDIR      "/etc/dpkg"
+#define ARCHTABLEFILE	"architectures"
+
 #define ADMINDIR        "/var/lib/dpkg"
 #define STATUSFILE      "status"
 #define AVAILFILE       "available"
diff --new-file -ur o/dpkg-1.4.0.26/lib/parse.c dpkg-1.4.0.26.3/lib/parse.c
--- o/dpkg-1.4.0.26/lib/parse.c	Sat Mar  8 11:40:49 1997
+++ dpkg-1.4.0.26.3/lib/parse.c	Sat Jul 25 21:26:41 1998
@@ -205,8 +205,6 @@
     if (flags & pdb_recordavailable)
       parsemustfield(file,filename,lno, warnto,warncount,&newpig,1,
                      &newpifp->architecture, "architecture");
-    else if (newpifp->architecture && *newpifp->architecture)
-      newpifp->architecture= 0;
 
     /* Check the Config-Version information:
      * If there is a Config-Version it is definitely to be used, but
diff --new-file -ur o/dpkg-1.4.0.26/po/en.po dpkg-1.4.0.26.3/po/en.po
--- o/dpkg-1.4.0.26/po/en.po	Thu Jul 23 05:35:04 1998
+++ dpkg-1.4.0.26.3/po/en.po	Sat Jul 25 21:33:36 1998
@@ -6,7 +6,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 1998-07-23 08:31-0400\n"
+"POT-Creation-Date: 1998-07-25 21:29-0700\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"
@@ -529,25 +529,25 @@
 msgid "several package info entries found, only one allowed"
 msgstr "several package info entries found, only one allowed"
 
-#: lib/parse.c:221
+#: lib/parse.c:219
 msgid "Configured-Version for package with inappropriate Status"
 msgstr "Configured-Version for package with inappropriate Status"
 
-#: lib/parse.c:235
+#: lib/parse.c:233
 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
+#: lib/parse.c:281
 #, c-format
 msgid "failed to read from `%.255s'"
 msgstr "failed to read from `%.255s'"
 
-#: lib/parse.c:285
+#: lib/parse.c:283
 #, c-format
 msgid "failed to close after read: `%.255s'"
 msgstr "failed to close after read: `%.255s'"
 
-#: lib/parse.c:286
+#: lib/parse.c:284
 #, c-format
 msgid "no package information in `%.255s'"
 msgstr "no package information in `%.255s'"
@@ -2181,67 +2181,67 @@
 msgid "; however:\n"
 msgstr "; however:\n"
 
-#: dpkg/processarc.c:105
+#: dpkg/processarc.c:106
 msgid "cannot access archive"
 msgstr "cannot access archive"
 
-#: dpkg/processarc.c:115
+#: dpkg/processarc.c:116
 #, c-format
 msgid "error ensuring `%.250s' doesn't exist"
 msgstr "error ensuring `%.250s' doesn't exist"
 
-#: dpkg/processarc.c:120
+#: dpkg/processarc.c:121
 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"
 
-#: dpkg/processarc.c:123
+#: dpkg/processarc.c:124
 msgid "wait for dpkg-split failed"
 msgstr "wait for dpkg-split failed"
 
-#: dpkg/processarc.c:144
+#: dpkg/processarc.c:145
 msgid "unable to get unique filename for control info"
 msgstr "unable to get unique filename for control info"
 
-#: dpkg/processarc.c:166
+#: dpkg/processarc.c:167
 msgid "failed to exec dpkg-deb to extract control information"
 msgstr "failed to exec dpkg-deb to extract control information"
 
-#: dpkg/processarc.c:180
+#: dpkg/processarc.c:181
 #, c-format
 msgid "Recorded info about %s from %s.\n"
 msgstr "Recorded info about %s from %s.\n"
 
-#: dpkg/processarc.c:189
+#: dpkg/processarc.c:193
 #, c-format
 msgid "package architecture (%s) does not match system (%s)"
 msgstr "package architecture (%s) does not match system (%s)"
 
-#: dpkg/processarc.c:206
+#: dpkg/processarc.c:210
 #, c-format
 msgid "Selecting previously deselected package %s.\n"
 msgstr "Selecting previously deselected package %s.\n"
 
-#: dpkg/processarc.c:209
+#: dpkg/processarc.c:213
 #, c-format
 msgid "Skipping deselected package %s.\n"
 msgstr "Skipping deselected package %s.\n"
 
-#: dpkg/processarc.c:220
+#: dpkg/processarc.c:224
 #, c-format
 msgid "dpkg - warning: downgrading %.250s from %.250s to %.250s.\n"
 msgstr "dpkg - warning: downgrading %.250s from %.250s to %.250s.\n"
 
-#: dpkg/processarc.c:225
+#: dpkg/processarc.c:229
 #, 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"
 
-#: dpkg/processarc.c:235
+#: dpkg/processarc.c:239
 #, c-format
 msgid "Version %.250s of %.250s already installed, skipping.\n"
 msgstr "Version %.250s of %.250s already installed, skipping.\n"
 
-#: dpkg/processarc.c:268
+#: dpkg/processarc.c:272
 #, c-format
 msgid ""
 "dpkg: regarding %s containing %s, pre-dependency problem:\n"
@@ -2250,136 +2250,136 @@
 "dpkg: regarding %s containing %s, pre-dependency problem:\n"
 "%s"
 
-#: dpkg/processarc.c:271
+#: dpkg/processarc.c:275
 #, c-format
 msgid "pre-dependency problem - not installing %.250s"
 msgstr "pre-dependency problem - not installing %.250s"
 
-#: dpkg/processarc.c:272
+#: dpkg/processarc.c:276
 msgid "dpkg: warning - ignoring pre-dependency problem !\n"
 msgstr "dpkg: warning - ignoring pre-dependency problem !\n"
 
-#: dpkg/processarc.c:286
+#: dpkg/processarc.c:290
 #, c-format
 msgid "Preparing to replace %s %s (using %s) ...\n"
 msgstr "Preparing to replace %s %s (using %s) ...\n"
 
-#: dpkg/processarc.c:291
+#: dpkg/processarc.c:295
 #, c-format
 msgid "Unpacking %s (from %s) ...\n"
 msgstr "Unpacking %s (from %s) ...\n"
 
-#: dpkg/processarc.c:311
+#: dpkg/processarc.c:315
 #, c-format
 msgid "name of conffile (starting `%.250s') is too long (>%d characters)"
 msgstr "name of conffile (starting `%.250s') is too long (>%d characters)"
 
-#: dpkg/processarc.c:365
+#: dpkg/processarc.c:369
 #, c-format
 msgid "read error in %.250s"
 msgstr "read error in %.250s"
 
 #. conff= fopen()
-#: dpkg/processarc.c:367
+#: dpkg/processarc.c:371
 #, c-format
 msgid "error closing %.250s"
 msgstr "error closing %.250s"
 
-#: dpkg/processarc.c:369
+#: dpkg/processarc.c:373
 #, c-format
 msgid "error trying to open %.250s"
 msgstr "error trying to open %.250s"
 
-#: dpkg/processarc.c:401
+#: dpkg/processarc.c:405
 #, c-format
 msgid "De-configuring %s, so that we can remove %s ...\n"
 msgstr "De-configuring %s, so that we can remove %s ...\n"
 
-#: dpkg/processarc.c:458
+#: dpkg/processarc.c:462
 #, c-format
 msgid "Unpacking replacement %.250s ...\n"
 msgstr "Unpacking replacement %.250s ...\n"
 
-#: dpkg/processarc.c:534
+#: dpkg/processarc.c:538
 msgid "unable to exec dpkg-deb to get filesystem archive"
 msgstr "unable to exec dpkg-deb to get filesystem archive"
 
-#: dpkg/processarc.c:542
+#: dpkg/processarc.c:546
 msgid "unable to fdopen dpkg-deb extract pipe"
 msgstr "unable to fdopen dpkg-deb extract pipe"
 
-#: dpkg/processarc.c:548
+#: dpkg/processarc.c:552
 msgid "error reading dpkg-deb tar output"
 msgstr "error reading dpkg-deb tar output"
 
-#: dpkg/processarc.c:551
+#: dpkg/processarc.c:555
 msgid "unexpected EOF in filesystem tarfile - corrupted package archive"
 msgstr "unexpected EOF in filesystem tarfile - corrupted package archive"
 
-#: dpkg/processarc.c:553
+#: dpkg/processarc.c:557
 msgid "corrupted filesystem tarfile - corrupted package archive"
 msgstr "corrupted filesystem tarfile - corrupted package archive"
 
-#: dpkg/processarc.c:610
+#: dpkg/processarc.c:614
 #, c-format
 msgid "dpkg: warning - unable to delete old file `%.250s': %s\n"
 msgstr "dpkg: warning - unable to delete old file `%.250s': %s\n"
 
-#: dpkg/processarc.c:632 dpkg/processarc.c:867 dpkg/remove.c:287
+#: dpkg/processarc.c:636 dpkg/processarc.c:871 dpkg/remove.c:287
 msgid "cannot read info directory"
 msgstr "cannot read info directory"
 
-#: dpkg/processarc.c:645
+#: dpkg/processarc.c:649
 #, 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'"
 
-#: dpkg/processarc.c:657
+#: dpkg/processarc.c:661
 #, c-format
 msgid "unable to remove obsolete info file `%.250s'"
 msgstr "unable to remove obsolete info file `%.250s'"
 
-#: dpkg/processarc.c:660
+#: dpkg/processarc.c:664
 #, c-format
 msgid "unable to install (supposed) new info file `%.250s'"
 msgstr "unable to install (supposed) new info file `%.250s'"
 
-#: dpkg/processarc.c:667
+#: dpkg/processarc.c:671
 msgid "unable to open temp control directory"
 msgstr "unable to open temp control directory"
 
-#: dpkg/processarc.c:676
+#: dpkg/processarc.c:680
 #, c-format
 msgid "package contains overly-long control info file name (starting `%.50s')"
 msgstr "package contains overly-long control info file name (starting `%.50s')"
 
-#: dpkg/processarc.c:681
+#: dpkg/processarc.c:685
 #, c-format
 msgid "package control info contained directory `%.250s'"
 msgstr "package control info contained directory `%.250s'"
 
-#: dpkg/processarc.c:683
+#: dpkg/processarc.c:687
 #, 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"
 
-#: dpkg/processarc.c:689
+#: dpkg/processarc.c:693
 #, c-format
 msgid "dpkg: warning - package %s contained list as info file"
 msgstr "dpkg: warning - package %s contained list as info file"
 
-#: dpkg/processarc.c:696
+#: dpkg/processarc.c:700
 #, c-format
 msgid "unable to install new info file `%.250s' as `%.250s'"
 msgstr "unable to install new info file `%.250s' as `%.250s'"
 
-#: dpkg/processarc.c:847
+#: dpkg/processarc.c:851
 #, c-format
 msgid "(Noting disappearance of %s, which has been completely replaced.)\n"
 msgstr "(Noting disappearance of %s, which has been completely replaced.)\n"
 
-#: dpkg/processarc.c:883
+#: dpkg/processarc.c:887
 #, c-format
 msgid "unable to delete disappearing control info file `%.250s'"
 msgstr "unable to delete disappearing control info file `%.250s'"
diff --new-file -ur o/dpkg-1.4.0.26/po/fr.po dpkg-1.4.0.26.3/po/fr.po
--- o/dpkg-1.4.0.26/po/fr.po	Thu Jul 23 05:35:04 1998
+++ dpkg-1.4.0.26.3/po/fr.po	Sat Jul 25 21:33:38 1998
@@ -17,7 +17,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: Debian dpkg 1.4.0.14\n"
-"POT-Creation-Date: 1998-07-23 08:31-0400\n"
+"POT-Creation-Date: 1998-07-25 21:29-0700\n"
 "PO-Revision-Date: 1997-05-13 22:07 EDT\n"
 "Last-Translator: Christophe Le Bars <clebars@debian.org>\n"
 "Language-Team: French\n"
@@ -599,27 +599,27 @@
 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
+#: lib/parse.c:219
 msgid "Configured-Version for package with inappropriate Status"
 msgstr "\"Configured-Version\" du paquet avec un état inapproprié"
 
-#: lib/parse.c:235
+#: lib/parse.c:233
 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
+#: lib/parse.c:281
 #, c-format
 msgid "failed to read from `%.255s'"
 msgstr "échec pour lire à partir de `%.255s'"
 
-#: lib/parse.c:285
+#: lib/parse.c:283
 #, c-format
 msgid "failed to close after read: `%.255s'"
 msgstr "échec pour fermer après lecture: `%.255s'"
 
-#: lib/parse.c:286
+#: lib/parse.c:284
 #, c-format
 msgid "no package information in `%.255s'"
 msgstr "pas d'informations du paquet dans `%.255s'"
@@ -2347,74 +2347,74 @@
 msgid "; however:\n"
 msgstr "; malgré tout:\n"
 
-#: dpkg/processarc.c:105
+#: dpkg/processarc.c:106
 msgid "cannot access archive"
 msgstr "ne peut pas accéder à l'archive"
 
-#: dpkg/processarc.c:115
+#: dpkg/processarc.c:116
 #, c-format
 msgid "error ensuring `%.250s' doesn't exist"
 msgstr "erreur en considérant que `%.250s' n'existe pas"
 
-#: dpkg/processarc.c:120
+#: dpkg/processarc.c:121
 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é"
 
-#: dpkg/processarc.c:123
+#: dpkg/processarc.c:124
 msgid "wait for dpkg-split failed"
 msgstr "attente de l'échec de dpkg-split"
 
-#: dpkg/processarc.c:144
+#: dpkg/processarc.c:145
 msgid "unable to get unique filename for control info"
 msgstr ""
 "impossible d'obtenir un nom de fichier unique pour les informations de "
 "contrôle"
 
-#: dpkg/processarc.c:166
+#: dpkg/processarc.c:167
 msgid "failed to exec dpkg-deb to extract control information"
 msgstr ""
 "échec pour exécuter dpkg-deb pour extraire les informations de contrôle"
 
-#: dpkg/processarc.c:180
+#: dpkg/processarc.c:181
 #, c-format
 msgid "Recorded info about %s from %s.\n"
 msgstr "Enregistrement de l'information sur %s de %s.\n"
 
-#: dpkg/processarc.c:189
+#: dpkg/processarc.c:193
 #, 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)"
 
-#: dpkg/processarc.c:206
+#: dpkg/processarc.c:210
 #, c-format
 msgid "Selecting previously deselected package %s.\n"
 msgstr "Sélection du paquet %s précédemment déselectionné.\n"
 
-#: dpkg/processarc.c:209
+#: dpkg/processarc.c:213
 #, c-format
 msgid "Skipping deselected package %s.\n"
 msgstr "Paquet déselectionné %s ignoré.\n"
 
-#: dpkg/processarc.c:220
+#: dpkg/processarc.c:224
 #, 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"
 
-#: dpkg/processarc.c:225
+#: dpkg/processarc.c:229
 #, 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"
 
-#: dpkg/processarc.c:235
+#: dpkg/processarc.c:239
 #, c-format
 msgid "Version %.250s of %.250s already installed, skipping.\n"
 msgstr "Version %.250s de %.250s déjà installée, paquet ignoré.\n"
 
-#: dpkg/processarc.c:268
+#: dpkg/processarc.c:272
 #, c-format
 msgid ""
 "dpkg: regarding %s containing %s, pre-dependency problem:\n"
@@ -2423,152 +2423,152 @@
 "dpkg: concernant %s contenant %s, problème de pré-dépendance:\n"
 "%s"
 
-#: dpkg/processarc.c:271
+#: dpkg/processarc.c:275
 #, c-format
 msgid "pre-dependency problem - not installing %.250s"
 msgstr "problème de pré-dépendance - %.250s non installé"
 
-#: dpkg/processarc.c:272
+#: dpkg/processarc.c:276
 msgid "dpkg: warning - ignoring pre-dependency problem !\n"
 msgstr "dpkg: avertissement - problème de pré-dépendance ignoré !\n"
 
-#: dpkg/processarc.c:286
+#: dpkg/processarc.c:290
 #, 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"
 
-#: dpkg/processarc.c:291
+#: dpkg/processarc.c:295
 #, c-format
 msgid "Unpacking %s (from %s) ...\n"
 msgstr "Dépaquetage de %s (à partir de %s) ...\n"
 
-#: dpkg/processarc.c:311
+#: dpkg/processarc.c:315
 #, 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)"
 
-#: dpkg/processarc.c:365
+#: dpkg/processarc.c:369
 #, c-format
 msgid "read error in %.250s"
 msgstr "erreur de lecture dans %.250s"
 
 #. conff= fopen()
-#: dpkg/processarc.c:367
+#: dpkg/processarc.c:371
 #, c-format
 msgid "error closing %.250s"
 msgstr "erreur de fermeture de %.250s"
 
-#: dpkg/processarc.c:369
+#: dpkg/processarc.c:373
 #, c-format
 msgid "error trying to open %.250s"
 msgstr "erreur en essayant d'ouvrir %.250s"
 
-#: dpkg/processarc.c:401
+#: dpkg/processarc.c:405
 #, c-format
 msgid "De-configuring %s, so that we can remove %s ...\n"
 msgstr "Déconfiguration de %s, pour pouvoir supprimer %s ...\n"
 
-#: dpkg/processarc.c:458
+#: dpkg/processarc.c:462
 #, c-format
 msgid "Unpacking replacement %.250s ...\n"
 msgstr "Dépaquetage de la mise à jour de %.250s ...\n"
 
-#: dpkg/processarc.c:534
+#: dpkg/processarc.c:538
 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"
 
-#: dpkg/processarc.c:542
+#: dpkg/processarc.c:546
 msgid "unable to fdopen dpkg-deb extract pipe"
 msgstr "impossible de \"fdopen\" le tube d'extraction de dpkg-deb"
 
-#: dpkg/processarc.c:548
+#: dpkg/processarc.c:552
 msgid "error reading dpkg-deb tar output"
 msgstr "erreur en lisant la sortie du \"tar\" de dpkg-deb"
 
-#: dpkg/processarc.c:551
+#: dpkg/processarc.c:555
 msgid "unexpected EOF in filesystem tarfile - corrupted package archive"
 msgstr ""
 "EOF inattendu dans l'archive du système de fichiers - archive du paquet "
 "corrompue"
 
-#: dpkg/processarc.c:553
+#: dpkg/processarc.c:557
 msgid "corrupted filesystem tarfile - corrupted package archive"
 msgstr "archive du système de fichiers corrompue - archive du paquet corrompue"
 
-#: dpkg/processarc.c:610
+#: dpkg/processarc.c:614
 #, c-format
 msgid "dpkg: warning - unable to delete old file `%.250s': %s\n"
 msgstr ""
 "dpkg: avertissement - impossible de supprimer le fichier `%.250s': %s\n"
 
-#: dpkg/processarc.c:632 dpkg/processarc.c:867 dpkg/remove.c:287
+#: dpkg/processarc.c:636 dpkg/processarc.c:871 dpkg/remove.c:287
 msgid "cannot read info directory"
 msgstr "ne peut pas lire le répertoire d'informations"
 
-#: dpkg/processarc.c:645
+#: dpkg/processarc.c:649
 #, 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"
 
-#: dpkg/processarc.c:657
+#: dpkg/processarc.c:661
 #, c-format
 msgid "unable to remove obsolete info file `%.250s'"
 msgstr "impossible de supprimer le fichier d'information obsolète `%.250s'"
 
-#: dpkg/processarc.c:660
+#: dpkg/processarc.c:664
 #, c-format
 msgid "unable to install (supposed) new info file `%.250s'"
 msgstr ""
 "impossible d'installer le (supposé) nouveau fichier d'information `%.250s'"
 
-#: dpkg/processarc.c:667
+#: dpkg/processarc.c:671
 msgid "unable to open temp control directory"
 msgstr "impossible d'ouvrir le répertoire de contrôle temporaire"
 
-#: dpkg/processarc.c:676
+#: dpkg/processarc.c:680
 #, 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')"
 
-#: dpkg/processarc.c:681
+#: dpkg/processarc.c:685
 #, c-format
 msgid "package control info contained directory `%.250s'"
 msgstr "l'information de contrôle du paquet contient le répertoire `%.250s'"
 
-#: dpkg/processarc.c:683
+#: dpkg/processarc.c:687
 #, 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"
 
-#: dpkg/processarc.c:689
+#: dpkg/processarc.c:693
 #, 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"
 
-#: dpkg/processarc.c:696
+#: dpkg/processarc.c:700
 #, c-format
 msgid "unable to install new info file `%.250s' as `%.250s'"
 msgstr ""
 "impossible d'installer le nouveau fichier d'information `%.250s' comme "
 "`%.250s'"
 
-#: dpkg/processarc.c:847
+#: dpkg/processarc.c:851
 #, 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"
 
-#: dpkg/processarc.c:883
+#: dpkg/processarc.c:887
 #, c-format
 msgid "unable to delete disappearing control info file `%.250s'"
 msgstr ""

Reply to: