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.
This commit is contained in:
Ulrich Drepper 2002-05-01 17:09:58 +00:00
parent 3e992afaaf
commit 531bafd8a6
9 changed files with 66 additions and 21 deletions

View File

@ -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> 2002-04-30 Roland McGrath <roland@frob.com>
Removed old GNU stdio implementation; GNU libio is now the only option. Removed old GNU stdio implementation; GNU libio is now the only option.

View File

@ -19,9 +19,6 @@ libc {
textdomain; textdomain;
} }
GLIBC_2.2 { GLIBC_2.2 {
# functions used in inline functions or macros
__dcngettext;
# b* # b*
bind_textdomain_codeset; bind_textdomain_codeset;

View File

@ -57,6 +57,5 @@ DCNGETTEXT (domainname, msgid1, msgid2, n, category)
#ifdef _LIBC #ifdef _LIBC
/* Alias for function name in GNU C Library. */ /* Alias for function name in GNU C Library. */
INTDEF(__dcngettext)
weak_alias (__dcngettext, dcngettext); weak_alias (__dcngettext, dcngettext);
#endif #endif

View File

@ -38,7 +38,7 @@
prefix. So we have to make a difference here. */ prefix. So we have to make a difference here. */
#ifdef _LIBC #ifdef _LIBC
# define DNGETTEXT __dngettext # define DNGETTEXT __dngettext
# define DCNGETTEXT INTUSE(__dcngettext) # define DCNGETTEXT __dcngettext
#else #else
# define DNGETTEXT dngettext__ # define DNGETTEXT dngettext__
# define DCNGETTEXT dcngettext__ # define DCNGETTEXT dcngettext__

View File

@ -45,7 +45,7 @@
prefix. So we have to make a difference here. */ prefix. So we have to make a difference here. */
#ifdef _LIBC #ifdef _LIBC
# define NGETTEXT __ngettext # define NGETTEXT __ngettext
# define DCNGETTEXT INTUSE(__dcngettext) # define DCNGETTEXT __dcngettext
#else #else
# define NGETTEXT ngettext__ # define NGETTEXT ngettext__
# define DCNGETTEXT dcngettext__ # define DCNGETTEXT dcngettext__

View 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> 2002-04-08 Ulrich Drepper <drepper@redhat.com>
* sysdeps/pthread/timer_getoverr.c: Return real overrun. * sysdeps/pthread/timer_getoverr.c: Return real overrun.

View File

@ -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

View File

@ -3505,7 +3505,7 @@ error while adding equivalent collating symbol"));
else else
{ {
lr_error (ldfile, _("%s: bad symbol <%.*s>"), "LC_COLLATE", 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); ldfile->token.val.str.startmb);
break; break;
} }

View File

@ -45,8 +45,9 @@
#include "simple-hash.h" #include "simple-hash.h"
#include "localedef.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[] = static const char *locnames[] =
{ {
@ -65,14 +66,16 @@ static const char *locnames[] =
static void static void
create_archive (struct locarhandle *ah) create_archive (const char *archivefname, struct locarhandle *ah)
{ {
int fd; int fd;
char fname[] = LOCALEDIR "/locale-archive.XXXXXX"; char fname[strlen (archivefname) + sizeof (".XXXXXX")];
struct locarhead head; struct locarhead head;
void *p; void *p;
size_t total; size_t total;
strcpy (stpcpy (fname, archivefname), ".XXXXXX");
/* Create a temporary file in the correct directory. */ /* Create a temporary file in the correct directory. */
fd = mkstemp (fname); fd = mkstemp (fname);
if (fd == -1) if (fd == -1)
@ -169,7 +172,6 @@ enlarge_archive (struct locarhandle *ah, const struct locarhead *head)
{ {
struct stat64 st; struct stat64 st;
int fd; int fd;
char fname[] = LOCALEDIR "/locale-archive.XXXXXX";
struct locarhead newhead; struct locarhead newhead;
size_t total; size_t total;
void *p; void *p;
@ -177,6 +179,14 @@ enlarge_archive (struct locarhandle *ah, const struct locarhead *head)
struct namehashent *oldnamehashtab; struct namehashent *oldnamehashtab;
struct locrecent *oldlocrectab; struct locrecent *oldlocrectab;
struct locarhandle new_ah; 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 /* Not all of the old file has to be mapped. Change this now this
we will have to access the whole content. */ we will have to access the whole content. */
@ -331,6 +341,12 @@ open_archive (struct locarhandle *ah)
int fd; int fd;
struct locarhead head; struct locarhead head;
int retry = 0; 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: again:
/* Open the archive. We must have exclusive write access. */ /* 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. */ /* Maybe the file does not yet exist. */
if (errno == ENOENT) if (errno == ENOENT)
{ {
create_archive (ah); create_archive (archivefname, ah);
return; return;
} }
else else
@ -711,11 +727,8 @@ add_locales_to_archive (nlist, list, replace)
directory and it therefore must contain a directory and it therefore must contain a
regular file with the same name except a regular file with the same name except a
"SYS_" prefix. */ "SYS_" prefix. */
strcpy (stpcpy (stpcpy (stpcpy (stpcpy (fullname, char *t = stpcpy (stpcpy (fullname, fname), "/");
fname), strcpy (stpcpy (stpcpy (t, d->d_name), "/SYS_"),
"/"),
d->d_name),
"/SYS_"),
d->d_name); d->d_name);
if (stat64 (fullname, &st) == -1) if (stat64 (fullname, &st) == -1)
@ -765,11 +778,10 @@ add_locales_to_archive (nlist, list, replace)
if (S_ISDIR (st.st_mode)) if (S_ISDIR (st.st_mode))
{ {
char *t;
close (fd); close (fd);
strcpy (stpcpy (stpcpy (stpcpy (stpcpy (fullname, fname), t = stpcpy (stpcpy (fullname, fname), "/");
"/"), strcpy (stpcpy (stpcpy (t, locnames[cnt]), "/SYS_"),
locnames[cnt]),
"/SYS_"),
locnames[cnt]); locnames[cnt]);
fd = open64 (fullname, O_RDONLY); fd = open64 (fullname, O_RDONLY);