aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--catgets/Makefile4
-rw-r--r--catgets/xopen-msg.awk72
-rwxr-xr-xcatgets/xopen-msg.sed103
4 files changed, 79 insertions, 105 deletions
diff --git a/ChangeLog b/ChangeLog
index 81375e8..0a4d181 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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