1# po2test.awk - Convert Uniforum style .po file to C code for testing.
2# Copyright (C) 2012-2022 Free Software Foundation, Inc.
3#
4# This program is free software; you can redistribute it and/or modify
5# it under the terms of the GNU General Public License as published by
6# the Free Software Foundation; either version 2, or (at your option)
7# any later version.
8#
9# This program is distributed in the hope that it will be useful,
10# but WITHOUT ANY WARRANTY; without even the implied warranty of
11# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12# GNU General Public License for more details.
13#
14# You should have received a copy of the GNU General Public License
15# along with this program; if not, see <https://www.gnu.org/licenses/>.
16#
17
18# Output current message (in msg) as argument of the INPUT or OUTPUT macro,
19# depending on msgtype
20function output_message() {
21    # Ignore messages containing <PRI.*> markers which would have to be
22    # replaced by the correct format depending on the word size
23    if (msg && msg !~ /<PRI.*>/)
24	printf ("%s(%s)\n", msgtype == "msgid" ? "INPUT" : "OUTPUT", msg)
25    msg = 0
26}
27
28$1 ~ /msg(id|str)/ {
29    # Output collected message
30    output_message()
31    # Collect next message
32    msgtype = $1
33    sub(/^msg(id|str)[ \t]*/, "", $0)
34    msg = $0
35    next
36}
37
38/^".*"/ {
39    # Append to current message
40    msg = msg "\n" $0
41}
42
43END {
44    # Output last collected message
45    output_message()
46}
47