diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | catgets/Makefile | 4 | ||||
-rw-r--r-- | catgets/xopen-msg.awk | 72 | ||||
-rwxr-xr-x | catgets/xopen-msg.sed | 103 |
4 files changed, 79 insertions, 105 deletions
@@ -1,5 +1,10 @@ 2012-07-04 Andreas Schwab <schwab@linux-m68k.org> + * catgets/Makefile ($(objpfx)de.msg): Use xopen-msg.awk instead of + xopen-msg.sed. + * catgets/xopen-msg.awk: New file. + * catgets/xopen-msg.sed: Removed. + * intl/Makefile ($(objpfx)msgs.h): Use po2test.awk instead of po2text.sed. * intl/po2test.awk: New file. diff --git a/catgets/Makefile b/catgets/Makefile index a95028f..c11edd3 100644 --- a/catgets/Makefile +++ b/catgets/Makefile @@ -70,8 +70,8 @@ $(objpfx)de/libc.cat: $(objpfx)de.msg $(objpfx)gencat $(objpfx)tst-catgets.out: $(objpfx)de/libc.cat # Generate a non-simple input file. -$(objpfx)de.msg: $(..)po/de.po - LC_ALL=C sed -f xopen-msg.sed $< > $@ +$(objpfx)de.msg: xopen-msg.awk $(..)po/de.po + LC_ALL=C $(AWK) -f $^ $< > $@ $(objpfx)test-gencat.out: test-gencat.sh $(objpfx)test-gencat \ $(objpfx)sample.SJIS.cat diff --git a/catgets/xopen-msg.awk b/catgets/xopen-msg.awk new file mode 100644 index 0000000..43d421d --- /dev/null +++ b/catgets/xopen-msg.awk @@ -0,0 +1,72 @@ +# xopen-msg.awk - Convert Uniforum style .po file to X/Open style .msg file +# 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/>. +# +# +# The first directive in the .msg should be the definition of the +# message set number. We use always set number 1. +# +BEGIN { + print "$set 1 # Automatically created by xopen-msg.awk" + num = 0 +} + +# +# The .msg file contains, other then the .po file, only the translations +# but each given a unique ID. Starting from 1 and incrementing by 1 for +# each message we assign them to the messages. +# It is important that the .po file used to generate the ../intl/msg.h file +# (with po2test.awk) is the same as the one used here. (At least the order +# of declarations must not be changed.) +# +function output_message() { + # Ignore messages containing <PRI.*> which would have to be replaced + # by the correct format depending on the word size + if (msg && msg !~ /<PRI.*>/) { + if (msgtype == "msgid") { + # We copy the original message as a comment into the .msg file. + gsub(/\n/, "\n$ ", msg) + printf "$ Original Message: %s\n", msg + } else { + gsub(/\n/, "\\\n", msg) + printf "%d %s\n", ++num, msg + } + } + msg = 0 +} + +$1 ~ "msg(id|str)" { + # Output collected message + output_message() + # Collect next message + msgtype = $1 + sub(/^msg(id|str)[ \t]*"/, "", $0) + sub(/"$/, "", $0) + msg = $0 + next +} + +/^".*"/ { + # Append to current message + sub(/^"/, "", $0) + sub(/"$/, "", $0) + msg = msg "\n" $0 + next +} + +END { + # Output last collected message + output_message() +} diff --git a/catgets/xopen-msg.sed b/catgets/xopen-msg.sed deleted file mode 100755 index d96a6d7..0000000 --- a/catgets/xopen-msg.sed +++ /dev/null @@ -1,103 +0,0 @@ -# po2msg.sed - Convert Uniforum style .po file to X/Open style .msg file -# Copyright (C) 1995 Free Software Foundation, Inc. -# Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995. -# -# 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/>. -# -# -# The first directive in the .msg should be the definition of the -# message set number. We use always set number 1. -# -1 { - i\ -$set 1 # Automatically created by po2msg.sed - h - s/.*/0/ - x -} -# -# We copy all comments into the .msg file. Perhaps they can help. -# -/^#/ s/^#[ ]*/$ /p -# -# We copy the original message as a comment into the .msg file. -# -/^msgid/ { -# Does not work now -# /"$/! { -# s/\\$// -# s/$/ ... (more lines following)"/ -# } - s/^msgid[ ]*"\(.*\)"$/$ Original Message: \1/ - p -} -# -# The .msg file contains, other then the .po file, only the translations -# but each given a unique ID. Starting from 1 and incrementing by 1 for -# each message we assign them to the messages. -# It is important that the .po file used to generate the cat-id-tbl.c file -# (with po-to-tbl) is the same as the one used here. (At least the order -# of declarations must not be changed.) -# -/^msgstr/ { - s/msgstr[ ]*"\(.*\)"/\1/ - x -# The following nice solution is by -# Bruno <Haible@ma2s2.mathematik.uni-karlsruhe.de> - td -# Increment a decimal number in pattern space. -# First hide trailing `9' digits. - :d - s/9\(_*\)$/_\1/ - td -# Assure at least one digit is available. - s/^\(_*\)$/0\1/ -# Increment the last digit. - s/8\(_*\)$/9\1/ - s/7\(_*\)$/8\1/ - s/6\(_*\)$/7\1/ - s/5\(_*\)$/6\1/ - s/4\(_*\)$/5\1/ - s/3\(_*\)$/4\1/ - s/2\(_*\)$/3\1/ - s/1\(_*\)$/2\1/ - s/0\(_*\)$/1\1/ -# Convert the hidden `9' digits to `0's. - s/_/0/g - x -# Bring the line in the format `<number> <message>' - G - s/^[^\n]*$/& / - s/\(.*\)\n\([0-9]*\)/\2 \1/ -# Clear flag from last substitution. - tb -# Append the next line. - :b - N -# Look whether second part is a continuation line. - s/\(.*\n\)"\(.*\)"/\1\2/ -# Yes, then branch. - ta - P - D -# Note that `D' includes a jump to the start!! -# We found a continuation line. But before printing insert '\'. - :a - s/\(.*\)\(\n.*\)/\1\\\2/ - P -# We cannot use the sed command `D' here - s/.*\n\(.*\)/\1/ - tb -} -d |