summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog24
-rw-r--r--intl/Versions3
-rw-r--r--intl/dcngettext.c1
-rw-r--r--intl/dngettext.c2
-rw-r--r--intl/ngettext.c2
-rw-r--r--linuxthreads/ChangeLog4
-rw-r--r--linuxthreads/sysdeps/unix/sysv/linux/x86_64/Makefile9
-rw-r--r--locale/programs/ld-collate.c2
-rw-r--r--locale/programs/locarchive.c40
9 files changed, 66 insertions, 21 deletions
diff --git a/ChangeLog b/ChangeLog
index 54a74168d3..d1d9a5bcf8 100644
--- 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.
diff --git a/intl/Versions b/intl/Versions
index 4571faf6e4..d76982dbe3 100644
--- a/intl/Versions
+++ b/intl/Versions
@@ -19,9 +19,6 @@ libc {
textdomain;
}
GLIBC_2.2 {
- # functions used in inline functions or macros
- __dcngettext;
-
# b*
bind_textdomain_codeset;
diff --git a/intl/dcngettext.c b/intl/dcngettext.c
index 6d360a109a..72ffa77a02 100644
--- a/intl/dcngettext.c
+++ b/intl/dcngettext.c
@@ -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
diff --git a/intl/dngettext.c b/intl/dngettext.c
index 2f24f9c1c9..c315d7eb10 100644
--- a/intl/dngettext.c
+++ b/intl/dngettext.c
@@ -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__
diff --git a/intl/ngettext.c b/intl/ngettext.c
index 7843d75711..e050924495 100644
--- a/intl/ngettext.c
+++ b/intl/ngettext.c
@@ -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__
diff --git a/linuxthreads/ChangeLog b/linuxthreads/ChangeLog
index 86fe8e8e71..747e409521 100644
--- a/linuxthreads/ChangeLog
+++ b/linuxthreads/ChangeLog
@@ -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
index 0000000000..50b4ee38fb
--- /dev/null
+++ b/linuxthreads/sysdeps/unix/sysv/linux/x86_64/Makefile
@@ -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
diff --git a/locale/programs/ld-collate.c b/locale/programs/ld-collate.c
index ca58266839..9d2bca437a 100644
--- a/locale/programs/ld-collate.c
+++ b/locale/programs/ld-collate.c
@@ -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;
}
diff --git a/locale/programs/locarchive.c b/locale/programs/locarchive.c
index 861dd5bd68..be5514790e 100644
--- a/locale/programs/locarchive.c
+++ b/locale/programs/locarchive.c
@@ -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);