1 # po2tbl.sed - Convert Uniforum style .po file to lookup table for catgets 2 # Copyright (C) 1995 Free Software Foundation, Inc. 3 # Ulrich Drepper <drepper (a] gnu.ai.mit.edu>, 1995. 4 # 5 # This program is free software; you can redistribute it and/or modify 6 # it under the terms of the GNU General Public License as published by 7 # the Free Software Foundation; either version 2, or (at your option) 8 # any later version. 9 # 10 # This program is distributed in the hope that it will be useful, 11 # but WITHOUT ANY WARRANTY; without even the implied warranty of 12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 # GNU General Public License for more details. 14 # 15 # You should have received a copy of the GNU General Public License 16 # along with this program; if not, write to the Free Software 17 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 # 19 1 { 20 i\ 21 /* Automatically generated by po2tbl.sed from @PACKAGE NAME@.pot. */\ 22 \ 23 #if HAVE_CONFIG_H\ 24 # include <config.h>\ 25 #endif\ 26 \ 27 #include "libgettext.h"\ 28 \ 29 const struct _msg_ent _msg_tbl[] = { 30 h 31 s/.*/0/ 32 x 33 } 34 # 35 # Write msgid entries in C array form. 36 # 37 /^msgid/ { 38 s/msgid[ ]*\(".*"\)/ {\1/ 39 tb 40 # Append the next line 41 :b 42 N 43 # Look whether second part is continuation line. 44 s/\(.*\)"\(\n\)"\(.*"\)/\1\2\3/ 45 # Yes, then branch. 46 ta 47 # Because we assume that the input file correctly formed the line 48 # just read cannot be again be a msgid line. So it's safe to ignore 49 # it. 50 s/\(.*\)\n.*/\1/ 51 bc 52 # We found a continuation line. But before printing insert '\'. 53 :a 54 s/\(.*\)\(\n.*\)/\1\\\2/ 55 P 56 # We cannot use D here. 57 s/.*\n\(.*\)/\1/ 58 # Some buggy seds do not clear the `successful substitution since last ``t''' 59 # flag on `N', so we do a `t' here to clear it. 60 tb 61 # Not reached 62 :c 63 x 64 # The following nice solution is by 65 # Bruno <Haible (a] ma2s2.mathematik.uni-karlsruhe.de> 66 td 67 # Increment a decimal number in pattern space. 68 # First hide trailing `9' digits. 69 :d 70 s/9\(_*\)$/_\1/ 71 td 72 # Assure at least one digit is available. 73 s/^\(_*\)$/0\1/ 74 # Increment the last digit. 75 s/8\(_*\)$/9\1/ 76 s/7\(_*\)$/8\1/ 77 s/6\(_*\)$/7\1/ 78 s/5\(_*\)$/6\1/ 79 s/4\(_*\)$/5\1/ 80 s/3\(_*\)$/4\1/ 81 s/2\(_*\)$/3\1/ 82 s/1\(_*\)$/2\1/ 83 s/0\(_*\)$/1\1/ 84 # Convert the hidden `9' digits to `0's. 85 s/_/0/g 86 x 87 G 88 s/\(.*\)\n\([0-9]*\)/\1, \2},/ 89 s/\(.*\)"$/\1/ 90 p 91 } 92 # 93 # Last line. 94 # 95 $ { 96 i\ 97 };\ 98 99 g 100 s/0*\(.*\)/int _msg_tbl_length = \1;/p 101 } 102 d 103