| # po2tbl.sed - Convert Uniforum style .po file to lookup table for catgets |
| # 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/>. |
| # |
| 1 { |
| i\ |
| /* Automatically generated by po2tbl.sed from @PACKAGE NAME@.pot. */\ |
| \ |
| #if HAVE_CONFIG_H\ |
| # include <config.h>\ |
| #endif\ |
| \ |
| #include "libgettext.h"\ |
| \ |
| const struct _msg_ent _msg_tbl[] = { |
| h |
| s/.*/0/ |
| x |
| } |
| # |
| # Write msgid entries in C array form. |
| # |
| /^msgid/ { |
| s/msgid[ ]*\(".*"\)/ {\1/ |
| tb |
| # Append the next line |
| :b |
| N |
| # Look whether second part is continuation line. |
| s/\(.*\)"\(\n\)"\(.*"\)/\1\2\3/ |
| # Yes, then branch. |
| ta |
| # Because we assume that the input file correctly formed the line |
| # just read cannot be again be a msgid line. So it's safe to ignore |
| # it. |
| s/\(.*\)\n.*/\1/ |
| bc |
| # We found a continuation line. But before printing insert '\'. |
| :a |
| s/\(.*\)\(\n.*\)/\1\\\2/ |
| P |
| # We cannot use D here. |
| s/.*\n\(.*\)/\1/ |
| # Some buggy seds do not clear the `successful substitution since last ``t''' |
| # flag on `N', so we do a `t' here to clear it. |
| tb |
| # Not reached |
| :c |
| 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 |
| G |
| s/\(.*\)\n\([0-9]*\)/\1, \2},/ |
| s/\(.*\)"$/\1/ |
| p |
| } |
| # |
| # Last line. |
| # |
| $ { |
| i\ |
| };\ |
| |
| g |
| s/0*\(.*\)/int _msg_tbl_length = \1;/p |
| } |
| d |