From 531bafd8a6384b15f1ddc7f2360bb55a4542856a Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Wed, 1 May 2002 17:09:58 +0000 Subject: [PATCH] Update. 2002-04-30 Jakub Jelinek * 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 * locale/programs/locarchive.c (add_locales_to_archive): Don't nest too many stpcpy macros. 2002-04-26 Bruno Haible * locale/programs/ld-collate.c (collate_read): Cast first argument for "%.*s" to int. 2002-04-26 Bruno Haible * include/libintl.h (__ngettext, __dngettext, __dcngettext, __dcngettext_internal): New declarations. (__gettext, __dgettext, __dcgettext, __dcgettext_internal): Add attribute declarations. --- ChangeLog | 24 +++++++++++ intl/Versions | 3 -- intl/dcngettext.c | 1 - intl/dngettext.c | 2 +- intl/ngettext.c | 2 +- linuxthreads/ChangeLog | 4 ++ .../sysdeps/unix/sysv/linux/x86_64/Makefile | 9 +++++ locale/programs/ld-collate.c | 2 +- locale/programs/locarchive.c | 40 ++++++++++++------- 9 files changed, 66 insertions(+), 21 deletions(-) create mode 100644 linuxthreads/sysdeps/unix/sysv/linux/x86_64/Makefile diff --git a/ChangeLog b/ChangeLog index 54a74168d3..d1d9a5bcf8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,27 @@ +2002-04-30 Jakub Jelinek + + * 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 + + * locale/programs/locarchive.c (add_locales_to_archive): Don't nest + too many stpcpy macros. + +2002-04-26 Bruno Haible + + * locale/programs/ld-collate.c (collate_read): Cast first argument + for "%.*s" to int. + +2002-04-26 Bruno Haible + + * include/libintl.h (__ngettext, __dngettext, __dcngettext, + __dcngettext_internal): New declarations. + (__gettext, __dgettext, __dcgettext, __dcgettext_internal): Add + attribute declarations. + 2002-04-30 Roland McGrath 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 + + * sysdeps/unix/sysv/linux/x86_64/Makefile: New file. + 2002-04-08 Ulrich Drepper * 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);