Update.
authorUlrich Drepper <drepper@redhat.com>
Wed, 1 May 2002 17:09:58 +0000 (17:09 +0000)
committerUlrich Drepper <drepper@redhat.com>
Wed, 1 May 2002 17:09:58 +0000 (17:09 +0000)
2002-04-30  Jakub Jelinek  <jakub@redhat.com>

* locale/programs/locarchive.c (create_archive): Add archivefname
argument, create fname from it.
(enlarge_archive): Honour output_prefix.
(open_archive): Likewise.

2002-04-30  Jakub Jelinek  <jakub@redhat.com>

* locale/programs/locarchive.c (add_locales_to_archive): Don't nest
too many stpcpy macros.

2002-04-26  Bruno Haible  <bruno@clisp.org>

* locale/programs/ld-collate.c (collate_read): Cast first argument
for "%.*s" to int.

2002-04-26  Bruno Haible  <bruno@clisp.org>

* include/libintl.h (__ngettext, __dngettext, __dcngettext,
__dcngettext_internal): New declarations.
(__gettext, __dgettext, __dcgettext, __dcgettext_internal): Add
attribute declarations.

ChangeLog
intl/Versions
intl/dcngettext.c
intl/dngettext.c
intl/ngettext.c
linuxthreads/ChangeLog
linuxthreads/sysdeps/unix/sysv/linux/x86_64/Makefile [new file with mode: 0644]
locale/programs/ld-collate.c
locale/programs/locarchive.c

index 54a7416..d1d9a5b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,27 @@
+2002-04-30  Jakub Jelinek  <jakub@redhat.com>
+
+       * locale/programs/locarchive.c (create_archive): Add archivefname
+       argument, create fname from it.
+       (enlarge_archive): Honour output_prefix.
+       (open_archive): Likewise.
+
+2002-04-30  Jakub Jelinek  <jakub@redhat.com>
+
+       * locale/programs/locarchive.c (add_locales_to_archive): Don't nest
+       too many stpcpy macros.
+
+2002-04-26  Bruno Haible  <bruno@clisp.org>
+
+       * locale/programs/ld-collate.c (collate_read): Cast first argument
+       for "%.*s" to int.
+
+2002-04-26  Bruno Haible  <bruno@clisp.org>
+
+       * include/libintl.h (__ngettext, __dngettext, __dcngettext,
+       __dcngettext_internal): New declarations.
+       (__gettext, __dgettext, __dcgettext, __dcgettext_internal): Add
+       attribute declarations.
+
 2002-04-30  Roland McGrath  <roland@frob.com>
 
        Removed old GNU stdio implementation; GNU libio is now the only option.
index 4571faf..d76982d 100644 (file)
@@ -19,9 +19,6 @@ libc {
     textdomain;
   }
   GLIBC_2.2 {
-    # functions used in inline functions or macros
-    __dcngettext;
-
     # b*
     bind_textdomain_codeset;
 
index 6d360a1..72ffa77 100644 (file)
@@ -57,6 +57,5 @@ DCNGETTEXT (domainname, msgid1, msgid2, n, category)
 
 #ifdef _LIBC
 /* Alias for function name in GNU C Library.  */
-INTDEF(__dcngettext)
 weak_alias (__dcngettext, dcngettext);
 #endif
index 2f24f9c..c315d7e 100644 (file)
@@ -38,7 +38,7 @@
    prefix.  So we have to make a difference here.  */
 #ifdef _LIBC
 # define DNGETTEXT __dngettext
-# define DCNGETTEXT INTUSE(__dcngettext)
+# define DCNGETTEXT __dcngettext
 #else
 # define DNGETTEXT dngettext__
 # define DCNGETTEXT dcngettext__
index 7843d75..e050924 100644 (file)
@@ -45,7 +45,7 @@
    prefix.  So we have to make a difference here.  */
 #ifdef _LIBC
 # define NGETTEXT __ngettext
-# define DCNGETTEXT INTUSE(__dcngettext)
+# define DCNGETTEXT __dcngettext
 #else
 # define NGETTEXT ngettext__
 # define DCNGETTEXT dcngettext__
index 86fe8e8..747e409 100644 (file)
@@ -1,3 +1,7 @@
+2002-04-30  Jakub Jelinek  <jakub@redhat.com>
+
+       * sysdeps/unix/sysv/linux/x86_64/Makefile: New file.
+
 2002-04-08  Ulrich Drepper  <drepper@redhat.com>
 
        * sysdeps/pthread/timer_getoverr.c: Return real overrun.
diff --git a/linuxthreads/sysdeps/unix/sysv/linux/x86_64/Makefile b/linuxthreads/sysdeps/unix/sysv/linux/x86_64/Makefile
new file mode 100644 (file)
index 0000000..50b4ee3
--- /dev/null
@@ -0,0 +1,9 @@
+ifeq ($(subdir),linuxthreads)
+# gcc -m64 has /usr/lib64/crti.o hardcoded in the specs file, because otherwise
+# it would normally find 32bit crti.o.
+LDFLAGS-pthread.so += -specs=$(objpfx)specs
+before-compile += $(objpfx)specs
+generated += specs
+$(objpfx)specs:
+       $(CC) $(CFLAGS) $(CPPFLAGS) -dumpspecs | sed 's_/usr/lib64/crti.o_crti.o_g' > $@
+endif
index ca58266..9d2bca4 100644 (file)
@@ -3505,7 +3505,7 @@ error while adding equivalent collating symbol"));
          else
            {
              lr_error (ldfile, _("%s: bad symbol <%.*s>"), "LC_COLLATE",
-                       ldfile->token.val.str.lenmb,
+                       (int) ldfile->token.val.str.lenmb,
                        ldfile->token.val.str.startmb);
              break;
            }
index 861dd5b..be55147 100644 (file)
@@ -45,8 +45,9 @@
 #include "simple-hash.h"
 #include "localedef.h"
 
+extern const char *output_prefix;
 
-static const char archivefname[] = LOCALEDIR "/locale-archive";
+#define ARCHIVE_NAME LOCALEDIR "/locale-archive"
 
 static const char *locnames[] =
   {
@@ -65,14 +66,16 @@ static const char *locnames[] =
 
 
 static void
-create_archive (struct locarhandle *ah)
+create_archive (const char *archivefname, struct locarhandle *ah)
 {
   int fd;
-  char fname[] = LOCALEDIR "/locale-archive.XXXXXX";
+  char fname[strlen (archivefname) + sizeof (".XXXXXX")];
   struct locarhead head;
   void *p;
   size_t total;
 
+  strcpy (stpcpy (fname, archivefname), ".XXXXXX");
+
   /* Create a temporary file in the correct directory.  */
   fd = mkstemp (fname);
   if (fd == -1)
@@ -169,7 +172,6 @@ enlarge_archive (struct locarhandle *ah, const struct locarhead *head)
 {
   struct stat64 st;
   int fd;
-  char fname[] = LOCALEDIR "/locale-archive.XXXXXX";
   struct locarhead newhead;
   size_t total;
   void *p;
@@ -177,6 +179,14 @@ enlarge_archive (struct locarhandle *ah, const struct locarhead *head)
   struct namehashent *oldnamehashtab;
   struct locrecent *oldlocrectab;
   struct locarhandle new_ah;
+  size_t prefix_len = output_prefix ? strlen (output_prefix) : 0;
+  char archivefname[prefix_len + sizeof (ARCHIVE_NAME)];
+  char fname[prefix_len + sizeof (ARCHIVE_NAME) + sizeof (".XXXXXX") - 1];
+
+  if (output_prefix)
+    memcpy (archivefname, output_prefix, prefix_len);
+  strcpy (archivefname + prefix_len, ARCHIVE_NAME);
+  strcpy (stpcpy (fname, archivefname), ".XXXXXX");
 
   /* Not all of the old file has to be mapped.  Change this now this
      we will have to access the whole content.  */
@@ -331,6 +341,12 @@ open_archive (struct locarhandle *ah)
   int fd;
   struct locarhead head;
   int retry = 0;
+  size_t prefix_len = output_prefix ? strlen (output_prefix) : 0;
+  char archivefname[prefix_len + sizeof (ARCHIVE_NAME)];
+
+  if (output_prefix)
+    memcpy (archivefname, output_prefix, prefix_len);
+  strcpy (archivefname + prefix_len, ARCHIVE_NAME);
 
  again:
   /* Open the archive.  We must have exclusive write access.  */
@@ -340,7 +356,7 @@ open_archive (struct locarhandle *ah)
       /* Maybe the file does not yet exist.  */
       if (errno == ENOENT)
        {
-         create_archive (ah);
+         create_archive (archivefname, ah);
          return;
        }
       else
@@ -711,11 +727,8 @@ add_locales_to_archive (nlist, list, replace)
                             directory and it therefore must contain a
                             regular file with the same name except a
                             "SYS_" prefix.  */
-                         strcpy (stpcpy (stpcpy (stpcpy (stpcpy (fullname,
-                                                                 fname),
-                                                         "/"),
-                                                 d->d_name),
-                                         "/SYS_"),
+                         char *t = stpcpy (stpcpy (fullname, fname), "/");
+                         strcpy (stpcpy (stpcpy (t, d->d_name), "/SYS_"),
                                  d->d_name);
 
                          if (stat64 (fullname, &st) == -1)
@@ -765,11 +778,10 @@ add_locales_to_archive (nlist, list, replace)
 
            if (S_ISDIR (st.st_mode))
              {
+               char *t;
                close (fd);
-               strcpy (stpcpy (stpcpy (stpcpy (stpcpy (fullname, fname),
-                                               "/"),
-                                       locnames[cnt]),
-                               "/SYS_"),
+               t = stpcpy (stpcpy (fullname, fname), "/");
+               strcpy (stpcpy (stpcpy (t, locnames[cnt]), "/SYS_"),
                        locnames[cnt]);
 
                fd = open64 (fullname, O_RDONLY);