Support Automake's `aclocal' scheme. Deposit Autoconf fragments in
[cfd] / txtlib.in
CommitLineData
b91e2391 1#! /bin/sh
2
3# -*-sh-*-
4#
a7855629 5# $Id: txtlib.in,v 1.4 2003/09/24 22:45:57 mdw Exp $
b91e2391 6#
7# Manipulate simple libraries of text chunks
8#
9# (c) 1997 Mark Wooding
10#
11
12#----- Licensing notice -----------------------------------------------------
13#
14# This file is part of the Common Files Distribution (`common').
15#
16# `Common' is free software; you can redistribute it and/or modify
17# it under the terms of the GNU General Public License as published by
18# the Free Software Foundation; either version 2 of the License, or
19# (at your option) any later version.
20#
21# `Common' is distributed in the hope that it will be useful,
22# but WITHOUT ANY WARRANTY; without even the implied warranty of
23# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24# GNU General Public License for more details.
25#
26# You should have received a copy of the GNU General Public License
27# along with `common'; if not, write to the Free Software Foundation,
28# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
29
30#----- Revision history -----------------------------------------------------
31#
32# $Log: txtlib.in,v $
a7855629 33# Revision 1.4 2003/09/24 22:45:57 mdw
34# Support Automake's `aclocal' scheme. Deposit Autoconf fragments in
35# `aclocal's' repository. Apply heinous bodging to `txtlib' and
36# `mkaclocal'.
37#
8ab91619 38# Revision 1.3 2001/01/20 12:02:12 mdw
39# Honour TMPDIR environment variable.
40#
4969747b 41# Revision 1.2 1999/11/11 17:49:15 mdw
42# Regular expression fixes for parsing version numbers.
43#
44# Revision 1.1.1.1 1999/05/05 19:23:47 mdw
45# New import. The old CVS repository was lost in a disk disaster.
b91e2391 46#
47
a7855629 48set -e
49
b91e2391 50# --- Handle command line arguments ---
51
52files=""
53mode=x
54out=""
55
56# --- Parse command line arguments ---
57
58while [ $# -gt 0 ]; do
59 case $1 in
60 -h | --h | --he | --hel | --help)
61 cat <<EOF
62Usage: txtlib [-lx] [-o FILE] [LIBRARY...]
63
64In \`extract' mode (-x, default), extracts chunks named on standard input
65from the list of libraries, and writes the result to standard output.
66
67In \`list' mode (-l), lists the chunks defined in the text libraries given.
68
69Options:
70
71-h, --help Print this help text.
72-v, --version Print the program's version number.
73-l, --list List chunks defined in text libraries.
74-x, --extract Extract chunks from text libraries (default).
75-o, --output=FILE Extract chunks to FILE, not standard output.
76EOF
77 exit 0
78 ;;
79 -v | --v | --ve | --ver | --vers | --versi | --versio | --version)
a7855629 80 version=`echo '$Revision: 1.4 $' |
4969747b 81 sed -n -e 's;^.*: \([0-9.]*\) *\\$;\1;p'`
b91e2391 82 echo "txtlib $version; Common Files Distribution version @VERSION@"
83 exit 0
84 ;;
85 -o | --o | --ou | --out | --outp | --outpu | --output)
86 out="$2";
87 shift
88 ;;
89 -o*)
90 out=`echo $1 | sed -e 's/^-[a-z]//'`
91 ;;
92 --o=* | --ou=* | --out=* | --outp=* | --outpu=* | --output=*)
93 out=`echo $1 | sed -e 's/^--[a-z]*=//'`
94 ;;
95 -l | --l | --li | --lis | --list)
96 mode=l
97 ;;
98 -x | --e | --ex | --ext | --extr | --extra | --extrac | --extract)
99 mode=x
100 ;;
101 --)
102 shift
103 break
104 ;;
105 -)
106 break
107 ;;
108 -*)
109 echo "txtlib: unknown option \`$1'" >&2
110 exit 1
111 ;;
112 *)
113 break
114 ;;
115 esac
116 shift
117done
118
119test "$out" = "-" && out=""
120
121# --- Build a `sed' script ---
122
123case $mode in
124 l)
a7855629 125 sed -n -e "/^.*\*@-\([-a-zA-Z0-9_]*\)-@\*.*$/ s//\1/p" /dev/null "$@"
b91e2391 126 ;;
127 x)
8ab91619 128 t=${TMPDIR-/tmp}/txtlib.$$
b91e2391 129 if mkdir -m 700 $t; then :
130 else
131 echo >&2 "txtlib: could not create temporary directory"
132 exit 1
133 fi
134 sedfile=/$t/sed
135 while read LINE; do
136 echo "/\*@-$LINE-@\*/,/\*@-#-@\*/ p"
137 done >$sedfile
a7855629 138 test -z "$out" || exec >"$out"
b91e2391 139 sed -e '/\*@-[-a-zA-Z0-9_]*-@\*/ i\
a7855629 140 *@-#-@*' /dev/null "$@" | sed -n -f $sedfile | sed -e '/\*@-#-@\*/ d'
b91e2391 141 rm -rf $t
142 ;;
143esac