diff options
author | joseph <joseph@7b3dc134-2b1b-0410-93df-9e9f96275f8d> | 2012-07-31 15:30:38 +0000 |
---|---|---|
committer | joseph <joseph@7b3dc134-2b1b-0410-93df-9e9f96275f8d> | 2012-07-31 15:30:38 +0000 |
commit | dd3105b347f432016fcdc1abd472c3717f557c9e (patch) | |
tree | cbaaecdaa1d3ad240177c9040f7f46c1387716ce /libc/intl | |
parent | 20f73aac36c2b2c240dcc379d5117488fe44960c (diff) |
Merge changes between r19464 and r19920 from /fsf/trunk.
git-svn-id: svn://svn.eglibc.org/trunk@19921 7b3dc134-2b1b-0410-93df-9e9f96275f8d
Diffstat (limited to 'libc/intl')
-rw-r--r-- | libc/intl/Makefile | 4 | ||||
-rw-r--r-- | libc/intl/loadmsgcat.c | 7 | ||||
-rw-r--r-- | libc/intl/po2test.awk | 46 | ||||
-rw-r--r-- | libc/intl/po2test.sed | 51 |
4 files changed, 53 insertions, 55 deletions
diff --git a/libc/intl/Makefile b/libc/intl/Makefile index afc01f046..239aad9dc 100644 --- a/libc/intl/Makefile +++ b/libc/intl/Makefile @@ -88,9 +88,9 @@ $(objpfx)tst-gettext6.out: tst-gettext6.sh $(objpfx)tst-gettext6 endif # eglibc: endif -$(objpfx)msgs.h: po2test.sed ../po/de.po +$(objpfx)msgs.h: po2test.awk ../po/de.po $(make-target-directory) - LC_ALL=C sed -f $^ > $@ + LC_ALL=C $(AWK) -f $^ > $@ CFLAGS-tst-gettext.c = -DTESTSTRS_H=\"$(objpfx)msgs.h\" CFLAGS-tst-translit.c = -DOBJPFX=\"$(objpfx)\" diff --git a/libc/intl/loadmsgcat.c b/libc/intl/loadmsgcat.c index 4e34a368b..a217fcce4 100644 --- a/libc/intl/loadmsgcat.c +++ b/libc/intl/loadmsgcat.c @@ -1,5 +1,5 @@ /* Load needed message catalogs. - Copyright (C) 1995-2005, 2007 Free Software Foundation, Inc. + Copyright (C) 1995-2012 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -27,6 +27,7 @@ # include <config.h> #endif +#include <assert.h> #include <ctype.h> #include <errno.h> #include <fcntl.h> @@ -835,11 +836,13 @@ _nl_load_domain (domain_file, domainbinding) fd = -1; use_mmap = 1; } + + assert (MAP_FAILED == (void *) -1); #endif /* If the data is not yet available (i.e. mmap'ed) we try to load it manually. */ - if (data == MAP_FAILED) + if (data == (struct mo_file_header *) -1) { size_t to_read; char *read_ptr; diff --git a/libc/intl/po2test.awk b/libc/intl/po2test.awk new file mode 100644 index 000000000..f2f010a97 --- /dev/null +++ b/libc/intl/po2test.awk @@ -0,0 +1,46 @@ +# po2test.awk - Convert Uniforum style .po file to C code for testing. +# Copyright (C) 2012 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see <http://www.gnu.org/licenses/>. +# + +# Output current message (in msg) as argument of the INPUT or OUTPUT macro, +# depending on msgtype +function output_message() { + # Ignore messages containing <PRI.*> markers which would have to be + # replaced by the correct format depending on the word size + if (msg && msg !~ /<PRI.*>/) + printf ("%s(%s)\n", msgtype == "msgid" ? "INPUT" : "OUTPUT", msg) + msg = 0 +} + +$1 ~ /msg(id|str)/ { + # Output collected message + output_message() + # Collect next message + msgtype = $1 + sub(/^msg(id|str)[ \t]*/, "", $0) + msg = $0 + next +} + +/^".*"/ { + # Append to current message + msg = msg "\n" $0 +} + +END { + # Output last collected message + output_message() +} diff --git a/libc/intl/po2test.sed b/libc/intl/po2test.sed deleted file mode 100644 index 0db1d99d7..000000000 --- a/libc/intl/po2test.sed +++ /dev/null @@ -1,51 +0,0 @@ -# po2test.sed - Convert Uniforum style .po file to C code for testing. -# Copyright (C) 2000,2003 Free Software Foundation, Inc. -# Ulrich Drepper <drepper@cygnus.com>, 2000. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, see <http://www.gnu.org/licenses/>. -# - -# -# We copy the original message as a comment into the .msg file. But enclose -# them with INPUT ( ). -# -s/^msgid[ ]*"\(.*\)"/INPUT ("\1")/ -# Clear flag from last substitution and jump if matching -tb - -# -# Copy the translations as well and enclose them with OUTPUT ( ). -# -s/^msgstr[ ]*"\(.*\)"/OUTPUT ("\1")/ -# Clear flag from last substitution and jump if matching -tb - -d - -:b -# Append the next line. -$!N -# Check whether second part is a continuation line. If so, before printing -# insert '\'. -s/\(.*\)")\(\n\)"\(.*\)"/\1\\\2\3")/ -P -ta -# No, go to the top and process it. Note that `D' includes a jump to the start!! -D -# Yes, we found a continuation line. -:a -# We cannot use the sed command `D' here -s/[^\n]*\n// -# Clear the substitution flag and do the next line. -tb |