po2test.awk 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. # po2test.awk - Convert Uniforum style .po file to C code for testing.
  2. # Copyright (C) 2012-2026 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. # Output current message (in msg) as argument of the INPUT or OUTPUT macro,
  18. # depending on msgtype
  19. function output_message() {
  20. # Ignore messages containing <PRI.*> markers which would have to be
  21. # replaced by the correct format depending on the word size
  22. if (msg && msg !~ /<PRI.*>/)
  23. printf ("%s(%s)\n", msgtype == "msgid" ? "INPUT" : "OUTPUT", msg)
  24. msg = 0
  25. }
  26. $1 ~ /msg(id|str)/ {
  27. # Output collected message
  28. output_message()
  29. # Collect next message
  30. msgtype = $1
  31. sub(/^msg(id|str)[ \t]*/, "", $0)
  32. msg = $0
  33. next
  34. }
  35. /^".*"/ {
  36. # Append to current message
  37. msg = msg "\n" $0
  38. }
  39. END {
  40. # Output last collected message
  41. output_message()
  42. }