Commit fd5e2b03 authored by Per Cederqvist's avatar Per Cederqvist
Browse files

Initial revision

parent 91b1b117
'xrdef {Overview-pg}{1}
'xrdef {Overview-snt}{Chapter'tie1}
'xrdef {Regular Expression Syntax-pg}{2}
'xrdef {Regular Expression Syntax-snt}{Chapter'tie2}
'xrdef {Syntax Bits-pg}{2}
'xrdef {Syntax Bits-snt}{Section'tie2.1}
'xrdef {Predefined Syntaxes-pg}{5}
'xrdef {Predefined Syntaxes-snt}{Section'tie2.2}
'xrdef {Collating Elements vs. Characters-pg}{6}
'xrdef {Collating Elements vs. Characters-snt}{Section'tie2.3}
'xrdef {The Backslash Character-pg}{7}
'xrdef {The Backslash Character-snt}{Section'tie2.4}
'xrdef {Common Operators-pg}{9}
'xrdef {Common Operators-snt}{Chapter'tie3}
'xrdef {Match-self Operator-pg}{9}
'xrdef {Match-self Operator-snt}{Section'tie3.1}
'xrdef {Match-any-character Operator-pg}{9}
'xrdef {Match-any-character Operator-snt}{Section'tie3.2}
'xrdef {Concatenation Operator-pg}{10}
'xrdef {Concatenation Operator-snt}{Section'tie3.3}
'xrdef {Repetition Operators-pg}{10}
'xrdef {Repetition Operators-snt}{Section'tie3.4}
'xrdef {Match-zero-or-more Operator-pg}{10}
'xrdef {Match-zero-or-more Operator-snt}{Section'tie3.4.1}
'xrdef {Match-one-or-more Operator-pg}{11}
'xrdef {Match-one-or-more Operator-snt}{Section'tie3.4.2}
'xrdef {Match-zero-or-one Operator-pg}{11}
'xrdef {Match-zero-or-one Operator-snt}{Section'tie3.4.3}
'xrdef {Interval Operators-pg}{12}
'xrdef {Interval Operators-snt}{Section'tie3.4.4}
'xrdef {Alternation Operator-pg}{13}
'xrdef {Alternation Operator-snt}{Section'tie3.5}
'xrdef {List Operators-pg}{13}
'xrdef {List Operators-snt}{Section'tie3.6}
'xrdef {Character Class Operators-pg}{14}
'xrdef {Character Class Operators-snt}{Section'tie3.6.1}
'xrdef {Range Operator-pg}{15}
'xrdef {Range Operator-snt}{Section'tie3.6.2}
'xrdef {Grouping Operators-pg}{16}
'xrdef {Grouping Operators-snt}{Section'tie3.7}
'xrdef {Back-reference Operator-pg}{17}
'xrdef {Back-reference Operator-snt}{Section'tie3.8}
'xrdef {Anchoring Operators-pg}{18}
'xrdef {Anchoring Operators-snt}{Section'tie3.9}
'xrdef {Match-beginning-of-line Operator-pg}{18}
'xrdef {Match-beginning-of-line Operator-snt}{Section'tie3.9.1}
'xrdef {Match-end-of-line Operator-pg}{19}
'xrdef {Match-end-of-line Operator-snt}{Section'tie3.9.2}
'xrdef {GNU Operators-pg}{20}
'xrdef {GNU Operators-snt}{Chapter'tie4}
'xrdef {Word Operators-pg}{20}
'xrdef {Word Operators-snt}{Section'tie4.1}
'xrdef {Non-Emacs Syntax Tables-pg}{20}
'xrdef {Non-Emacs Syntax Tables-snt}{Section'tie4.1.1}
'xrdef {Match-word-boundary Operator-pg}{20}
'xrdef {Match-word-boundary Operator-snt}{Section'tie4.1.2}
'xrdef {Match-within-word Operator-pg}{20}
'xrdef {Match-within-word Operator-snt}{Section'tie4.1.3}
'xrdef {Match-beginning-of-word Operator-pg}{21}
'xrdef {Match-beginning-of-word Operator-snt}{Section'tie4.1.4}
'xrdef {Match-end-of-word Operator-pg}{21}
'xrdef {Match-end-of-word Operator-snt}{Section'tie4.1.5}
'xrdef {Match-word-constituent Operator-pg}{21}
'xrdef {Match-word-constituent Operator-snt}{Section'tie4.1.6}
'xrdef {Match-non-word-constituent Operator-pg}{21}
'xrdef {Match-non-word-constituent Operator-snt}{Section'tie4.1.7}
'xrdef {Buffer Operators-pg}{21}
'xrdef {Buffer Operators-snt}{Section'tie4.2}
'xrdef {Match-beginning-of-buffer Operator-pg}{21}
'xrdef {Match-beginning-of-buffer Operator-snt}{Section'tie4.2.1}
'xrdef {Match-end-of-buffer Operator-pg}{21}
'xrdef {Match-end-of-buffer Operator-snt}{Section'tie4.2.2}
'xrdef {GNU Emacs Operators-pg}{22}
'xrdef {GNU Emacs Operators-snt}{Chapter'tie5}
'xrdef {Syntactic Class Operators-pg}{22}
'xrdef {Syntactic Class Operators-snt}{Section'tie5.1}
'xrdef {Emacs Syntax Tables-pg}{22}
'xrdef {Emacs Syntax Tables-snt}{Section'tie5.1.1}
'xrdef {Match-syntactic-class Operator-pg}{22}
'xrdef {Match-syntactic-class Operator-snt}{Section'tie5.1.2}
'xrdef {Match-not-syntactic-class Operator-pg}{22}
'xrdef {Match-not-syntactic-class Operator-snt}{Section'tie5.1.3}
'xrdef {What Gets Matched?-pg}{23}
'xrdef {What Gets Matched?-snt}{Chapter'tie6}
'xrdef {Programming with Regex-pg}{24}
'xrdef {Programming with Regex-snt}{Chapter'tie7}
'xrdef {GNU Regex Functions-pg}{24}
'xrdef {GNU Regex Functions-snt}{Section'tie7.1}
'xrdef {GNU Pattern Buffers-pg}{24}
'xrdef {GNU Pattern Buffers-snt}{Section'tie7.1.1}
'xrdef {GNU Regular Expression Compiling-pg}{26}
'xrdef {GNU Regular Expression Compiling-snt}{Section'tie7.1.2}
'xrdef {GNU Matching-pg}{27}
'xrdef {GNU Matching-snt}{Section'tie7.1.3}
'xrdef {GNU Searching-pg}{28}
'xrdef {GNU Searching-snt}{Section'tie7.1.4}
'xrdef {Matching/Searching with Split Data-pg}{29}
'xrdef {Matching/Searching with Split Data-snt}{Section'tie7.1.5}
'xrdef {Searching with Fastmaps-pg}{30}
'xrdef {Searching with Fastmaps-snt}{Section'tie7.1.6}
'xrdef {GNU Translate Tables-pg}{31}
'xrdef {GNU Translate Tables-snt}{Section'tie7.1.7}
'xrdef {Using Registers-pg}{32}
'xrdef {Using Registers-snt}{Section'tie7.1.8}
'xrdef {Freeing GNU Pattern Buffers-pg}{34}
'xrdef {Freeing GNU Pattern Buffers-snt}{Section'tie7.1.9}
'xrdef {POSIX Regex Functions-pg}{35}
'xrdef {POSIX Regex Functions-snt}{Section'tie7.2}
'xrdef {POSIX Pattern Buffers-pg}{35}
'xrdef {POSIX Pattern Buffers-snt}{Section'tie7.2.1}
'xrdef {POSIX Regular Expression Compiling-pg}{35}
'xrdef {POSIX Regular Expression Compiling-snt}{Section'tie7.2.2}
'xrdef {POSIX Matching-pg}{37}
'xrdef {POSIX Matching-snt}{Section'tie7.2.3}
'xrdef {Reporting Errors-pg}{38}
'xrdef {Reporting Errors-snt}{Section'tie7.2.4}
'xrdef {Using Byte Offsets-pg}{39}
'xrdef {Using Byte Offsets-snt}{Section'tie7.2.5}
'xrdef {Freeing POSIX Pattern Buffers-pg}{39}
'xrdef {Freeing POSIX Pattern Buffers-snt}{Section'tie7.2.6}
'xrdef {BSD Regex Functions-pg}{40}
'xrdef {BSD Regex Functions-snt}{Section'tie7.3}
'xrdef {BSD Regular Expression Compiling-pg}{40}
'xrdef {BSD Regular Expression Compiling-snt}{Section'tie7.3.1}
'xrdef {BSD Searching-pg}{40}
'xrdef {BSD Searching-snt}{Section'tie7.3.2}
'xrdef {Copying-pg}{42}
'xrdef {Copying-snt}{Appendix'tie'char65{}}
'xrdef {Copying-pg}{42}
'xrdef {Copying-snt}{}
'xrdef {Copying-pg}{43}
'xrdef {Copying-snt}{}
'xrdef {Copying-pg}{48}
'xrdef {Copying-snt}{}
'xrdef {Index-pg}{50}
'xrdef {Index-snt}{}
\initial {$}
\entry {\code {$}}{19}
\initial {(}
\entry {\code {(}}{16}
\initial {)}
\entry {\code {)}}{16}
\initial {*}
\entry {\samp {*}}{10}
\initial {-}
\entry {\samp {-}}{13}
\initial {.}
\entry {\samp {.}}{9}
\initial {:}
\entry {\samp {:]} in regex}{14}
\initial {?}
\entry {\samp {?}}{11}
\initial {[}
\entry {\samp {[}}{13}
\entry {\samp {[:} in regex}{14}
\entry {\samp {[{\tt\hat}}}{13}
\initial {]}
\entry {\samp {]}}{13}
\initial {{\tt\char'173}}
\entry {\samp {{\tt\char'173}}}{12}
\initial {{\tt\char'174}}
\entry {\code {{\tt\char'174}}}{13}
\initial {{\tt\char'175}}
\entry {\samp {{\tt\char'175}}}{12}
\initial {{\tt\char43}}
\entry {\samp {{\tt\char43}}}{11}
\initial {{\tt\hat}}
\entry {\samp {{\tt\hat}}}{13}
\entry {\code {{\tt\hat}}}{18}
\initial {{\tt\indexbackslash }}
\entry {{\tt\indexbackslash }}{7}
\entry {\samp {{\tt\indexbackslash }}}{13}
\entry {\samp {{\tt\indexbackslash }'}}{21}
\entry {\code {{\tt\indexbackslash }(}}{16}
\entry {\code {{\tt\indexbackslash })}}{16}
\entry {\samp {{\tt\indexbackslash }`}}{21}
\entry {\samp {{\tt\indexbackslash }{\tt\char'173}}}{12}
\entry {\code {{\tt\indexbackslash }{\tt\char'174}}}{13}
\entry {\samp {{\tt\indexbackslash }{\tt\char'175}}}{12}
\entry {\samp {{\tt\indexbackslash }{\tt\gtr}}}{21}
\entry {\samp {{\tt\indexbackslash }{\tt\less}}}{21}
\entry {\samp {{\tt\indexbackslash }b}}{20}
\entry {\samp {{\tt\indexbackslash }B}}{20}
\entry {\samp {{\tt\indexbackslash }s}}{22}
\entry {\samp {{\tt\indexbackslash }S}}{22}
\entry {\samp {{\tt\indexbackslash }w}}{21}
\entry {\samp {{\tt\indexbackslash }W}}{21}
\initial {A}
\entry {alternation operator}{13}
\entry {alternation operator and \samp {{\tt\hat}}}{18}
\entry {anchoring}{18}
\entry {anchors}{18, 19}
\entry {Awk}{5}
\initial {B}
\entry {back references}{17}
\entry {backtracking}{10, 13}
\entry {beginning-of-line operator}{18}
\entry {bracket expression}{13}
\initial {C}
\entry {character classes}{14}
\initial {E}
\entry {Egrep}{5}
\entry {Emacs}{5}
\entry {end-of-line operator}{19}
\entry {\code {end\ \r {in\ \code {struct\ re_registers}}}}{32}
\initial {G}
\entry {Grep}{5}
\entry {grouping}{16}
\initial {I}
\entry {interval expression}{12}
\initial {M}
\entry {matching list}{13}
\entry {matching newline}{13}
\initial {N}
\entry {\code {newline{\_}anchor \r {field in pattern buffer}}}{18}
\entry {nonmatching list}{13}
\entry {\code {not{\_}bol \r {field in pattern buffer}}}{18}
\entry {\code {num_regs\ \r {in\ \code {struct\ re_registers}}}}{32}
\initial {O}
\entry {open-group operator and \samp {{\tt\hat}}}{18}
\entry {or operator}{13}
\initial {P}
\entry {parenthesizing}{16}
\entry {POSIX Awk}{5}
\initial {R}
\entry {\code {re_registers}}{32}
\entry {\code {RE{\_}BACKSLASH{\_}ESCAPE{\_}IN{\_}LIST}}{3}
\entry {\code {RE{\_}BK{\_}PLUS{\_}QM}}{3}
\entry {\code {RE{\_}CHAR{\_}CLASSES}}{3}
\entry {\code {RE{\_}CONTEXT{\_}INDEP{\_}ANCHORS}}{3}
\entry {\code {RE{\_}CONTEXT{\_}INDEP{\_}ANCHORS \r {(and \samp {{\tt\hat}})}}}{18}
\entry {\code {RE{\_}CONTEXT{\_}INDEP{\_}OPS}}{3}
\entry {\code {RE{\_}CONTEXT{\_}INVALID{\_}OPS}}{3}
\entry {\code {RE{\_}DOT{\_}NEWLINE}}{4}
\entry {\code {RE{\_}DOT{\_}NOT{\_}NULL}}{4}
\entry {\code {RE{\_}INTERVALS}}{4}
\entry {\code {RE{\_}LIMITED{\_}OPS}}{4}
\entry {\code {RE{\_}NEWLINE{\_}ALT}}{4}
\entry {\code {RE{\_}NO{\_}BK{\_}BRACES}}{4}
\entry {\code {RE{\_}NO{\_}BK{\_}PARENS}}{4}
\entry {\code {RE{\_}NO{\_}BK{\_}REFS}}{4}
\entry {\code {RE{\_}NO{\_}BK{\_}VBAR}}{4}
\entry {\code {RE{\_}NO{\_}EMPTY{\_}RANGES}}{4}
\entry {\code {re{\_}pattern{\_}buffer}}{24}
\entry {\code {RE{\_}UNMATCHED{\_}RIGHT{\_}PAREN{\_}ORD}}{4}
\entry {\code {REG{\_}ICASE}}{36}
\entry {\code {regex.c}}{1}
\entry {\code {regex.h}}{1}
\entry {regexp anchoring}{18}
\entry {\code {regs{\_}allocated}}{32}
\entry {\code {REGS{\_}FIXED}}{33}
\entry {\code {REGS{\_}REALLOCATE}}{32}
\entry {\code {REGS{\_}UNALLOCATED}}{32}
\entry {regular expressions, syntax of}{2}
\initial {S}
\entry {\code {start\ \r {in\ \code {struct\ re_registers}}}}{32}
\entry {subexpressions}{16}
\entry {syntax bits}{2}
\entry {syntax of regular expressions}{2}
\initial {W}
\entry {word boundaries, matching}{20}
Wed Sep 16 09:29:27 1992 Karl Berry (karl@hayley)
* xmalloc.c (xmalloc): use char *, not void *, as some compilers
bomb out on the latter.
* Makefile.in (LOADLIBES): use LIBS instead, as that what's
Autoconf wants to define.
* other.c: remove tests for ^/$ around newlines.
Tue Sep 15 11:01:15 1992 Karl Berry (karl@hayley)
* fileregex.c (main): call re_search_2 instead of re_search.
* Makefile.in (regex.o): make target dregex.o, so VPATH doesn't
find ../regex.o.
Sun Sep 13 06:50:03 1992 Karl Berry (karl@hayley)
* Created.
# Makefile for regex testing.
#
# Copyright (C) 1992 Free Software Foundation, Inc.
#
# 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, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
CPPFLAGS =
CFLAGS = -g
LDFLAGS =
srcdir = @srcdir@
VPATH = @srcdir@:../@srcdir@
CC = @CC@
DEFS = @DEFS@
LIBS = @LIBS@ $(LOADLIBES)
ETAGS = etags
SHELL = /bin/sh
debug = -DDEBUG
ALL_CPPFLAGS = -I. -I$(srcdir) -I../$(srcdir) $(DEFS) $(CPPFLAGS) $(debug)
.c.o:
$(CC) $(ALL_CPPFLAGS) $(CFLAGS) -c $<
# Define this as `../regex.o' to get the optimized version.
regex_o = dregex.o
test_h = test.h
test_o = test.o bsd-interf.o other.o tregress.o psx-basic.o psx-extend.o \
psx-generic.o psx-group.o psx-interf.o psx-interv.o
common_o = printchar.o upcase.o xmalloc.o $(malloc)
# We have a lot of mallocs we can try when we run afoul of strange bugs.
malloc = @ALLOCA@
#malloc = # the libc malloc
#malloc = g++malloc.o
#malloc = debugmalloc.o
#malloc = emacsmalloc.o
emacsmallocflags = -Drcheck -Dbotch=abort -DUSG
# default is to do nothing.
default:
all: regex syntax
regex: $(regex_o) $(common_o) $(test_o) main.o
$(CC) -o $@ $(LDFLAGS) $^ $(LIBS)
# As long as we're doing tests, we enable debugging.
dregex.o: regex.c regex.h
rm -f $@
$(CC) $(ALL_CPPFLAGS) $(CFLAGS) -c $<
mv regex.o $@
# iregex is the interactive regex.
iregex: $(common_o) $(regex_o) iregex.o
$(CC) -o $@ $(LDFLAGS) $^ $(LIBS)
# fileregex searches for an r.e. in every line of a given file.
fileregex_o = fileregex.o printchar.o $(regex_o)
fileregex: $(fileregex_o)
$(CC) -o $@ $(LDFLAGS) $(fileregex_o) $(LIBS)
# cppregex is regex with a preprocessed regex.c. Useful when the
# problem is inside some macro.
cppregex: regexcpp.o $(common_o) $(test_o) main.o
$(CC) -o $@ $(LDFLAGS) $^ $(LIBS)
regexcpp.o: regexcpp.c
regexcpp.c: regex.c regexcpp.sed
rm -f regexcpp.c
$(CC) -E $(ALL_CPPFLAGS) $< \
| egrep -v '^#|^ *$$' \
| sed -f regexcpp.sed \
> regexcpp.c
chmod a-w regexcpp.c
# Have to give this malloc special flags.
emacsmalloc.o: emacsmalloc.c
$(CC) -c $(CFLAGS) $(ALL_CPPFLAGS) $(emacsmallocflags) $<
syntax: syntax.o
$(CC) $(CFLAGS) $< -o $@
syntax.c: syntax.skel bits
sed '/\[\[\[replace.*\]\]\]/r bits' syntax.skel > $@
bits: regex.h
sed -n 1,/RE_SYNTAX_EMACS/p $< \
| grep "#define RE_.*1" \
| sed 's/^#define \(RE_[A-Z_]*\) .*/ TEST_BIT (\1);/' > $@
check: regex
./regex
TAGS: regex.h regex.c *.h *.c
$(ETAGS) -t $^
depend:
gcc -MM $(ALL_CPPFLAGS) *.c > /tmp/depend
.PHONY: depend
install:
.PHONY: install
clean mostlyclean:
rm -f *.o regex cppregex iregex fileregex regexcpp.c syntax
distclean: clean
rm -f bits syntax.c Makefile
extraclean: distclean
rm -f *~* *\#* patch* *.orig *.rej *.bak core a.out
realclean: distclean
rm -f TAGS
Makefile: Makefile.in ../config.status
(cd ..; sh config.status)
# Prevent GNU make 3 from overflowing arg limit on system V.
.NOEXPORT:
# Assumes $(distdir) is the place to put our files.
distfiles = ChangeLog TAGS *.in *.c *.h regexcpp.sed syntax.skel
dist: Makefile TAGS
mkdir $(distdir)
ln $(distfiles) $(distdir)
# Automatically-generated dependencies below here.
alloca.o : alloca.c
bsd-interf.o : bsd-interf.c
debugmalloc.o : debugmalloc.c
emacsmalloc.o : emacsmalloc.c getpagesize.h
fileregex.o : fileregex.c .././regex.h
g++malloc.o : g++malloc.c //usr/include/stdio.h getpagesize.h
iregex.o : iregex.c .././regex.h
main.o : main.c test.h .././regex.h
malloc-test.o : malloc-test.c
other.o : other.c test.h .././regex.h
printchar.o : printchar.c
psx-basic.o : psx-basic.c test.h .././regex.h
psx-extend.o : psx-extend.c test.h .././regex.h
psx-generic.o : psx-generic.c test.h .././regex.h
psx-group.o : psx-group.c test.h .././regex.h
psx-interf.o : psx-interf.c test.h .././regex.h
psx-interv.o : psx-interv.c test.h .././regex.h
syntax.o : syntax.c .././regex.h
test.o : test.c test.h .././regex.h
tregress.o : tregress.c test.h .././regex.h
upcase.o : upcase.c
xmalloc.o : xmalloc.c
# Makefile for regex testing.
#
# Copyright (C) 1992 Free Software Foundation, Inc.
#
# 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, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
CPPFLAGS =
CFLAGS = -g
LDFLAGS =
srcdir = @srcdir@
VPATH = @srcdir@:../@srcdir@
CC = @CC@
DEFS = @DEFS@
LIBS = @LIBS@ $(LOADLIBES)
ETAGS = etags
SHELL = /bin/sh
debug = -DDEBUG
ALL_CPPFLAGS = -I. -I$(srcdir) -I../$(srcdir) $(DEFS) $(CPPFLAGS) $(debug)
.c.o:
$(CC) $(ALL_CPPFLAGS) $(CFLAGS) -c $<
# Define this as `../regex.o' to get the optimized version.
regex_o = dregex.o
test_h = test.h
test_o = test.o bsd-interf.o other.o tregress.o psx-basic.o psx-extend.o \
psx-generic.o psx-group.o psx-interf.o psx-interv.o
common_o = printchar.o upcase.o xmalloc.o $(malloc)
# We have a lot of mallocs we can try when we run afoul of strange bugs.
malloc = @ALLOCA@
#malloc = # the libc malloc
#malloc = g++malloc.o
#malloc = debugmalloc.o
#malloc = emacsmalloc.o
emacsmallocflags = -Drcheck -Dbotch=abort -DUSG
# default is to do nothing.
default:
all: regex syntax
regex: $(regex_o) $(common_o) $(test_o) main.o
$(CC) -o $@ $(LDFLAGS) $^ $(LIBS)
# As long as we're doing tests, we enable debugging.
dregex.o: regex.c regex.h
rm -f $@
$(CC) $(ALL_CPPFLAGS) $(CFLAGS) -c $<
mv regex.o $@
# iregex is the interactive regex.
iregex: $(common_o) $(regex_o) iregex.o
$(CC) -o $@ $(LDFLAGS) $^ $(LIBS)
# fileregex searches for an r.e. in every line of a given file.
fileregex_o = fileregex.o printchar.o $(regex_o)
fileregex: $(fileregex_o)
$(CC) -o $@ $(LDFLAGS) $(fileregex_o) $(LIBS)
# cppregex is regex with a preprocessed regex.c. Useful when the
# problem is inside some macro.
cppregex: regexcpp.o $(common_o) $(test_o) main.o
$(CC) -o $@ $(LDFLAGS) $^ $(LIBS)
regexcpp.o: regexcpp.c
regexcpp.c: regex.c regexcpp.sed
rm -f regexcpp.c
$(CC) -E $(ALL_CPPFLAGS) $< \
| egrep -v '^#|^ *$$' \
| sed -f regexcpp.sed \
> regexcpp.c
chmod a-w regexcpp.c
# Have to give this malloc special flags.
emacsmalloc.o: emacsmalloc.c
$(CC) -c $(CFLAGS) $(ALL_CPPFLAGS) $(emacsmallocflags) $<
syntax: syntax.o
$(CC) $(CFLAGS) $< -o $@
syntax.c: syntax.skel bits
sed '/\[\[\[replace.*\]\]\]/r bits' syntax.skel > $@
bits: regex.h
sed -n 1,/RE_SYNTAX_EMACS/p $< \
| grep "#define RE_.*1" \
| sed 's/^#define \(RE_[A-Z_]*\) .*/ TEST_BIT (\1);/' > $@
check: regex
./regex
TAGS: regex.h regex.c *.h *.c
$(ETAGS) -t $^
depend:
gcc -MM $(ALL_CPPFLAGS) *.c > /tmp/depend
.PHONY: depend
install:
.PHONY: install
clean mostlyclean:
rm -f *.o regex cppregex iregex fileregex regexcpp.c syntax
distclean: clean
rm -f bits syntax.c Makefile
extraclean: distclean
rm -f *~* *\#* patch* *.orig *.rej *.bak core a.out
realclean: distclean
rm -f TAGS
Makefile: Makefile.in ../config.status
(cd ..; sh config.status)
# Prevent GNU make 3 from overflowing arg limit on system V.
.NOEXPORT:
# Assumes $(distdir) is the place to put our files.
distfiles = ChangeLog TAGS *.in *.c *.h regexcpp.sed syntax.skel
dist: Makefile TAGS
mkdir $(distdir)
ln $(distfiles) $(distdir)
# Automatically-generated dependencies below here.
alloca.o : alloca.c
bsd-interf.o : bsd-interf.c
debugmalloc.o : debugmalloc.c
emacsmalloc.o : emacsmalloc.c getpagesize.h
fileregex.o : fileregex.c .././regex.h
g++malloc.o : g++malloc.c //usr/include/stdio.h getpagesize.h
iregex.o : iregex.c .././regex.h
main.o : main.c test.h .././regex.h
malloc-test.o : malloc-test.c
other.o : other.c test.h .././regex.h
printchar.o : printchar.c
psx-basic.o : psx-basic.c test.h .././regex.h
psx-extend.o : psx-extend.c test.h .././regex.h
psx-generic.o : psx-generic.c test.h .././regex.h
psx-group.o : psx-group.c test.h .././regex.h
psx-interf.o : psx-interf.c test.h .././regex.h
psx-interv.o : psx-interv.c test.h .././regex.h
syntax.o : syntax.c .././regex.h
test.o : test.c test.h .././regex.h
tregress.o : tregress.c test.h .././regex.h
upcase.o : upcase.c
xmalloc.o : xmalloc.c
/*
alloca -- (mostly) portable public-domain implementation -- D A Gwyn
last edit: 86/05/30 rms
include config.h, since on VMS it renames some symbols.
Use xmalloc instead of malloc.
This implementation of the PWB library alloca() function,
which is used to allocate space off the run-time stack so
that it is automatically reclaimed upon procedure exit,