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>
Removed old GNU stdio implementation; GNU libio is now the only option.

View File

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

View 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

View 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__

View 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__

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>
* 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
{
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;
}

View 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);