--- /dev/null
+# : Makefile.SH,v 9820Revision: 4.0.1.2 9820Date: 91/06/07 10:14:43 $
+#
+# $Log: makefile.sm,v $
+# Revision 4.0.1.1 92/06/08 11:50:00 lwall
+# Initial revision
+#
+# Revision 4.0.1.2 91/06/07 10:14:43 lwall
+# patch4: cflags now emits entire cc command except for the filename
+# patch4: alternate make programs are now semi-supported
+# patch4: uperl.o no longer tries to link in libraries prematurely
+# patch4: installperl now installs x2p stuff too
+#
+# Revision 4.0.1.1 91/04/11 17:30:39 lwall
+# patch1: C flags are now settable on a per-file basis
+#
+# Revision 4.0 91/03/20 00:58:54 lwall
+# 4.0 baseline.
+#
+#
+
+CC = cgcc
+YACC = bison -y
+LDFLAGS =
+CLDFLAGS =
+SMALL =
+LARGE =
+mallocsrc = malloc.c
+mallocobj = malloc.o
+SLN = ln -s
+
+libs = -lgdbm -lpml
+
+public = perl.ttp
+
+# To use an alternate make, set in config.sh.
+MAKE = make
+
+
+CCCMD = $(CC) -O2 -fomit-frame-pointer -fstrength-reduce -c -DMYMALLOC
+
+private =
+
+scripts =
+
+manpages = perl.man h2ph.man
+
+util = echo.ttp perlglob.ttp
+
+sh = Makefile.SH makedepend.SH h2ph.SH
+
+h1 = EXTERN.h INTERN.h arg.h array.h cmd.h config.h form.h handy.h
+h2 = hash.h perl.h regcomp.h regexp.h spat.h stab.h str.h util.h
+
+h = $(h1) $(h2)
+
+c1 = array.c cmd.c cons.c consarg.c doarg.c doio.c dolist.c dump.c
+c2 = eval.c form.c hash.c $(mallocsrc) perl.c regcomp.c regexec.c
+c3 = stab.c str.c toke.c util.c atarist.c usersub.c
+
+c = $(c1) $(c2) $(c3)
+
+obj1 = array.o cmd.o cons.o consarg.o doarg.o doio.o dolist.o dump.o
+obj2 = eval.o form.o hash.o $(mallocobj) perl.o regcomp.o regexec.o
+obj3 = stab.o str.o toke.o util.o atarist.o
+
+obj = $(obj1) $(obj2) $(obj3)
+
+lintflags = -hbvxac
+
+# grrr
+SHELL = /bin/sh
+
+.c.o:
+ $(CCCMD) $*.c
+
+all: $(public) $(util)
+
+# This is the standard version that contains no "taint" checks and is
+# used for all scripts that aren't set-id or running under something set-id.
+# The $& notation is tells Sequent machines that it can do a parallel make,
+# and is harmless otherwise.
+
+perl.ttp: perly.o $(obj) usersub.o
+ $(CC) $(LARGE) $(CLDFLAGS) $(obj) perly.o usersub.o $(libs) -o perl.ttp -v -s
+
+echo.ttp: wildmat.o echo.c
+ $(CC) -O -mshort -fomit-frame-pointer -o echo.ttp \
+ echo.c wildmat.o -liio16 -s
+
+perlglob.ttp: wildmat.o perlglob.c
+ $(CC) -O -mshort -fomit-frame-pointer -o perlglob.ttp \
+ perlglob.c wildmat.o -liio16 -s
+
+wildmat.o: wildmat.c
+ $(CC) -O -mshort -fomit-frame-pointer -c wildmat.c
+
+perly.h: perly.c
+ @ echo Dummy dependency for dumb parallel make
+ touch perly.h
+
+perly.c: perly.y perly.fixer
+ @ echo 'Expect either' 29 shift/reduce and 59 reduce/reduce conflicts...
+ @ echo ' or' 27 shift/reduce and 61 reduce/reduce conflicts...
+ $(YACC) -d perly.y
+ sh ./perly.fixer y.tab.c perly.c
+ mv y.tab.h perly.h
+ echo 'extern YYSTYPE yylval;' >>perly.h
+
+perly.o: perly.c perly.h $(h)
+ $(CCCMD) perly.c
+
+
+clean:
+ rm -f *.o
+
+realclean: clean
+ rm -f *.ttp report core
+ rm -f perly.c perly.h
+
+# The following lint has practically everything turned on. Unfortunately,
+# you have to wade through a lot of mumbo jumbo that can't be suppressed.
+# If the source file has a /*NOSTRICT*/ somewhere, ignore the lint message
+# for that spot.
+
+lint: perly.c $(c)
+ lint $(lintflags) $(defs) perly.c $(c) > perl.fuzz
+
+depend: makedepend
+ - test -f perly.h || cp /dev/null perly.h
+ ./makedepend
+ - test -s perly.h || /bin/rm -f perly.h
+
+test: perl
+ - cd t && chmod +x TEST */*.t
+ - cd t && (rm -f perl; $(SLN) ../perl .) && ./perl TEST </dev/tty
+
+clist:
+ echo $(c) | tr ' ' '\012' >.clist
+
+hlist:
+ echo $(h) | tr ' ' '\012' >.hlist
+
+shlist:
+ echo $(sh) | tr ' ' '\012' >.shlist
+
+# AUTOMATICALLY GENERATED MAKE DEPENDENCIES--PUT NOTHING BELOW THIS LINE
+# If this runs make out of memory, delete /usr/include lines.
+array.o: EXTERN.h
+array.o: arg.h
+array.o: array.c
+array.o: array.h
+array.o: cmd.h
+array.o: config.h
+array.o: form.h
+array.o: handy.h
+array.o: hash.h
+array.o: perl.h
+array.o: regexp.h
+array.o: spat.h
+array.o: stab.h
+array.o: str.h
+array.o: util.h
+cmd.o: EXTERN.h
+cmd.o: arg.h
+cmd.o: array.h
+cmd.o: cmd.c
+cmd.o: cmd.h
+cmd.o: config.h
+cmd.o: form.h
+cmd.o: handy.h
+cmd.o: hash.h
+cmd.o: perl.h
+cmd.o: regexp.h
+cmd.o: spat.h
+cmd.o: stab.h
+cmd.o: str.h
+cmd.o: util.h
+cons.o: EXTERN.h
+cons.o: arg.h
+cons.o: array.h
+cons.o: cmd.h
+cons.o: config.h
+cons.o: cons.c
+cons.o: form.h
+cons.o: handy.h
+cons.o: hash.h
+cons.o: perl.h
+cons.o: perly.h
+cons.o: regexp.h
+cons.o: spat.h
+cons.o: stab.h
+cons.o: str.h
+cons.o: util.h
+consarg.o: EXTERN.h
+consarg.o: arg.h
+consarg.o: array.h
+consarg.o: cmd.h
+consarg.o: config.h
+consarg.o: consarg.c
+consarg.o: form.h
+consarg.o: handy.h
+consarg.o: hash.h
+consarg.o: perl.h
+consarg.o: regexp.h
+consarg.o: spat.h
+consarg.o: stab.h
+consarg.o: str.h
+consarg.o: util.h
+doarg.o: EXTERN.h
+doarg.o: arg.h
+doarg.o: array.h
+doarg.o: cmd.h
+doarg.o: config.h
+doarg.o: doarg.c
+doarg.o: form.h
+doarg.o: handy.h
+doarg.o: hash.h
+doarg.o: perl.h
+doarg.o: regexp.h
+doarg.o: spat.h
+doarg.o: stab.h
+doarg.o: str.h
+doarg.o: util.h
+doio.o: EXTERN.h
+doio.o: arg.h
+doio.o: array.h
+doio.o: cmd.h
+doio.o: config.h
+doio.o: doio.c
+doio.o: form.h
+doio.o: handy.h
+doio.o: hash.h
+doio.o: perl.h
+doio.o: regexp.h
+doio.o: spat.h
+doio.o: stab.h
+doio.o: str.h
+doio.o: util.h
+dolist.o: EXTERN.h
+dolist.o: arg.h
+dolist.o: array.h
+dolist.o: cmd.h
+dolist.o: config.h
+dolist.o: dolist.c
+dolist.o: form.h
+dolist.o: handy.h
+dolist.o: hash.h
+dolist.o: perl.h
+dolist.o: regexp.h
+dolist.o: spat.h
+dolist.o: stab.h
+dolist.o: str.h
+dolist.o: util.h
+dump.o: EXTERN.h
+dump.o: arg.h
+dump.o: array.h
+dump.o: cmd.h
+dump.o: config.h
+dump.o: dump.c
+dump.o: form.h
+dump.o: handy.h
+dump.o: hash.h
+dump.o: perl.h
+dump.o: regexp.h
+dump.o: spat.h
+dump.o: stab.h
+dump.o: str.h
+dump.o: util.h
+eval.o: EXTERN.h
+eval.o: arg.h
+eval.o: array.h
+eval.o: cmd.h
+eval.o: config.h
+eval.o: eval.c
+eval.o: form.h
+eval.o: handy.h
+eval.o: hash.h
+eval.o: perl.h
+eval.o: regexp.h
+eval.o: spat.h
+eval.o: stab.h
+eval.o: str.h
+eval.o: util.h
+form.o: EXTERN.h
+form.o: arg.h
+form.o: array.h
+form.o: cmd.h
+form.o: config.h
+form.o: form.c
+form.o: form.h
+form.o: handy.h
+form.o: hash.h
+form.o: perl.h
+form.o: regexp.h
+form.o: spat.h
+form.o: stab.h
+form.o: str.h
+form.o: util.h
+hash.o: EXTERN.h
+hash.o: arg.h
+hash.o: array.h
+hash.o: cmd.h
+hash.o: config.h
+hash.o: form.h
+hash.o: handy.h
+hash.o: hash.c
+hash.o: hash.h
+hash.o: perl.h
+hash.o: regexp.h
+hash.o: spat.h
+hash.o: stab.h
+hash.o: str.h
+hash.o: util.h
+perl.o: EXTERN.h
+perl.o: arg.h
+perl.o: array.h
+perl.o: cmd.h
+perl.o: config.h
+perl.o: form.h
+perl.o: handy.h
+perl.o: hash.h
+perl.o: patchlevel.h
+perl.o: perl.c
+perl.o: perl.h
+perl.o: perly.h
+perl.o: regexp.h
+perl.o: spat.h
+perl.o: stab.h
+perl.o: str.h
+perl.o: util.h
+regcomp.o: EXTERN.h
+regcomp.o: INTERN.h
+regcomp.o: arg.h
+regcomp.o: array.h
+regcomp.o: cmd.h
+regcomp.o: config.h
+regcomp.o: form.h
+regcomp.o: handy.h
+regcomp.o: hash.h
+regcomp.o: perl.h
+regcomp.o: regcomp.c
+regcomp.o: regcomp.h
+regcomp.o: regexp.h
+regcomp.o: spat.h
+regcomp.o: stab.h
+regcomp.o: str.h
+regcomp.o: util.h
+regexec.o: EXTERN.h
+regexec.o: arg.h
+regexec.o: array.h
+regexec.o: cmd.h
+regexec.o: config.h
+regexec.o: form.h
+regexec.o: handy.h
+regexec.o: hash.h
+regexec.o: perl.h
+regexec.o: regcomp.h
+regexec.o: regexec.c
+regexec.o: regexp.h
+regexec.o: spat.h
+regexec.o: stab.h
+regexec.o: str.h
+regexec.o: util.h
+stab.o: EXTERN.h
+stab.o: arg.h
+stab.o: array.h
+stab.o: cmd.h
+stab.o: config.h
+stab.o: form.h
+stab.o: handy.h
+stab.o: hash.h
+stab.o: perl.h
+stab.o: regexp.h
+stab.o: spat.h
+stab.o: stab.c
+stab.o: stab.h
+stab.o: str.h
+stab.o: util.h
+str.o: EXTERN.h
+str.o: arg.h
+str.o: array.h
+str.o: cmd.h
+str.o: config.h
+str.o: form.h
+str.o: handy.h
+str.o: hash.h
+str.o: perl.h
+str.o: perly.h
+str.o: regexp.h
+str.o: spat.h
+str.o: stab.h
+str.o: str.c
+str.o: str.h
+str.o: util.h
+toke.o: EXTERN.h
+toke.o: arg.h
+toke.o: array.h
+toke.o: cmd.h
+toke.o: config.h
+toke.o: form.h
+toke.o: handy.h
+toke.o: hash.h
+toke.o: perl.h
+toke.o: perly.h
+toke.o: regexp.h
+toke.o: spat.h
+toke.o: stab.h
+toke.o: str.h
+toke.o: toke.c
+toke.o: util.h
+util.o: EXTERN.h
+util.o: arg.h
+util.o: array.h
+util.o: cmd.h
+util.o: config.h
+util.o: form.h
+util.o: handy.h
+util.o: hash.h
+util.o: perl.h
+util.o: regexp.h
+util.o: spat.h
+util.o: stab.h
+util.o: str.h
+util.o: util.c
+util.o: util.h
+atarist.o: EXTERN.h
+atarist.o: arg.h
+atarist.o: array.h
+atarist.o: cmd.h
+atarist.o: config.h
+atarist.o: form.h
+atarist.o: handy.h
+atarist.o: hash.h
+atarist.o: perl.h
+atarist.o: regexp.h
+atarist.o: spat.h
+atarist.o: stab.h
+atarist.o: str.h
+atarist.o: atarist.c
+atarist.o: util.h
+
+malloc.o: EXTERN.h
+malloc.o: arg.h
+malloc.o: array.h
+malloc.o: cmd.h
+malloc.o: config.h
+malloc.o: form.h
+malloc.o: handy.h
+malloc.o: hash.h
+malloc.o: perl.h
+malloc.o: regexp.h
+malloc.o: spat.h
+malloc.o: stab.h
+malloc.o: str.h
+malloc.o: malloc.c
+malloc.o: util.h
+
--- /dev/null
+# : Makefile.SH,v 9820Revision: 4.0.1.2 9820Date: 91/06/07 10:14:43 $
+#
+# $Log: makefile.st,v $
+# Revision 4.0.1.1 92/06/08 11:50:13 lwall
+# Initial revision
+#
+# Revision 4.0.1.2 91/06/07 10:14:43 lwall
+# patch4: cflags now emits entire cc command except for the filename
+# patch4: alternate make programs are now semi-supported
+# patch4: uperl.o no longer tries to link in libraries prematurely
+# patch4: installperl now installs x2p stuff too
+#
+# Revision 4.0.1.1 91/04/11 17:30:39 lwall
+# patch1: C flags are now settable on a per-file basis
+#
+# Revision 4.0 91/03/20 00:58:54 lwall
+# 4.0 baseline.
+#
+#
+
+CC = cgcc
+YACC = bison -y
+LDFLAGS =
+CLDFLAGS =
+SMALL =
+LARGE =
+mallocsrc =
+mallocobj =
+SLN = ln -s
+
+libs = -lgdbm -lpml
+
+public = perl.ttp
+
+# To use an alternate make, set in config.sh.
+MAKE = make
+
+
+CCCMD = $(CC) -O2 -fomit-frame-pointer -fstrength-reduce -c
+
+private =
+
+scripts =
+
+manpages = perl.man h2ph.man
+
+util = echo.ttp perlglob.ttp
+
+sh = Makefile.SH makedepend.SH h2ph.SH
+
+h1 = EXTERN.h INTERN.h arg.h array.h cmd.h config.h form.h handy.h
+h2 = hash.h perl.h regcomp.h regexp.h spat.h stab.h str.h util.h
+
+h = $(h1) $(h2)
+
+c1 = array.c cmd.c cons.c consarg.c doarg.c doio.c dolist.c dump.c
+c2 = eval.c form.c hash.c $(mallocsrc) perl.c regcomp.c regexec.c
+c3 = stab.c str.c toke.c util.c atarist.c usersub.c
+
+c = $(c1) $(c2) $(c3)
+
+obj1 = array.o cmd.o cons.o consarg.o doarg.o doio.o dolist.o dump.o
+obj2 = eval.o form.o hash.o $(mallocobj) perl.o regcomp.o regexec.o
+obj3 = stab.o str.o toke.o util.o atarist.o
+
+obj = $(obj1) $(obj2) $(obj3)
+
+lintflags = -hbvxac
+
+# grrr
+SHELL = /bin/sh
+
+.c.o:
+ $(CCCMD) $*.c
+
+all: $(public) $(util)
+
+# This is the standard version that contains no "taint" checks and is
+# used for all scripts that aren't set-id or running under something set-id.
+# The $& notation is tells Sequent machines that it can do a parallel make,
+# and is harmless otherwise.
+
+perl.ttp: perly.o $(obj) usersub.o
+ $(CC) $(LARGE) $(CLDFLAGS) $(obj) perly.o usersub.o $(libs) -o perl.ttp -v -s
+
+echo.ttp: wildmat.o echo.c
+ $(CC) -O -mshort -fomit-frame-pointer -o echo.ttp \
+ echo.c wildmat.o -liio16 -s
+
+perlglob.ttp: wildmat.o perlglob.c
+ $(CC) -O -mshort -fomit-frame-pointer -o perlglob.ttp \
+ perlglob.c wildmat.o -liio16 -s
+
+# we cant do a uperl.o, so we do our best.
+#
+uperl.a: perly.o $(obj)
+ car rs uperl.a perly.o $(obj)
+
+wildmat.o: wildmat.c
+ $(CC) -O -mshort -fomit-frame-pointer -c wildmat.c
+
+perly.h: perly.c
+ @ echo Dummy dependency for dumb parallel make
+ touch perly.h
+
+perly.c: perly.y perly.fixer
+ @ echo 'Expect either' 29 shift/reduce and 59 reduce/reduce conflicts...
+ @ echo ' or' 27 shift/reduce and 61 reduce/reduce conflicts...
+ $(YACC) -d perly.y
+ sh ./perly.fixer y.tab.c perly.c
+ mv y.tab.h perly.h
+ echo 'extern YYSTYPE yylval;' >>perly.h
+
+perly.o: perly.c perly.h $(h)
+ $(CCCMD) perly.c
+
+
+clean:
+ rm -f *.o
+
+realclean: clean
+ rm -f *.ttp report core
+ rm -f perly.c perly.h
+
+# The following lint has practically everything turned on. Unfortunately,
+# you have to wade through a lot of mumbo jumbo that can't be suppressed.
+# If the source file has a /*NOSTRICT*/ somewhere, ignore the lint message
+# for that spot.
+
+lint: perly.c $(c)
+ lint $(lintflags) $(defs) perly.c $(c) > perl.fuzz
+
+depend: makedepend
+ - test -f perly.h || cp /dev/null perly.h
+ ./makedepend
+ - test -s perly.h || /bin/rm -f perly.h
+
+test: perl
+ - cd t && chmod +x TEST */*.t
+ - cd t && (rm -f perl; $(SLN) ../perl .) && ./perl TEST </dev/tty
+
+clist:
+ echo $(c) | tr ' ' '\012' >.clist
+
+hlist:
+ echo $(h) | tr ' ' '\012' >.hlist
+
+shlist:
+ echo $(sh) | tr ' ' '\012' >.shlist
+
+# AUTOMATICALLY GENERATED MAKE DEPENDENCIES--PUT NOTHING BELOW THIS LINE
+# If this runs make out of memory, delete /usr/include lines.
+array.o: EXTERN.h
+array.o: arg.h
+array.o: array.c
+array.o: array.h
+array.o: cmd.h
+array.o: config.h
+array.o: form.h
+array.o: handy.h
+array.o: hash.h
+array.o: perl.h
+array.o: regexp.h
+array.o: spat.h
+array.o: stab.h
+array.o: str.h
+array.o: util.h
+cmd.o: EXTERN.h
+cmd.o: arg.h
+cmd.o: array.h
+cmd.o: cmd.c
+cmd.o: cmd.h
+cmd.o: config.h
+cmd.o: form.h
+cmd.o: handy.h
+cmd.o: hash.h
+cmd.o: perl.h
+cmd.o: regexp.h
+cmd.o: spat.h
+cmd.o: stab.h
+cmd.o: str.h
+cmd.o: util.h
+cons.o: EXTERN.h
+cons.o: arg.h
+cons.o: array.h
+cons.o: cmd.h
+cons.o: config.h
+cons.o: cons.c
+cons.o: form.h
+cons.o: handy.h
+cons.o: hash.h
+cons.o: perl.h
+cons.o: perly.h
+cons.o: regexp.h
+cons.o: spat.h
+cons.o: stab.h
+cons.o: str.h
+cons.o: util.h
+consarg.o: EXTERN.h
+consarg.o: arg.h
+consarg.o: array.h
+consarg.o: cmd.h
+consarg.o: config.h
+consarg.o: consarg.c
+consarg.o: form.h
+consarg.o: handy.h
+consarg.o: hash.h
+consarg.o: perl.h
+consarg.o: regexp.h
+consarg.o: spat.h
+consarg.o: stab.h
+consarg.o: str.h
+consarg.o: util.h
+doarg.o: EXTERN.h
+doarg.o: arg.h
+doarg.o: array.h
+doarg.o: cmd.h
+doarg.o: config.h
+doarg.o: doarg.c
+doarg.o: form.h
+doarg.o: handy.h
+doarg.o: hash.h
+doarg.o: perl.h
+doarg.o: regexp.h
+doarg.o: spat.h
+doarg.o: stab.h
+doarg.o: str.h
+doarg.o: util.h
+doio.o: EXTERN.h
+doio.o: arg.h
+doio.o: array.h
+doio.o: cmd.h
+doio.o: config.h
+doio.o: doio.c
+doio.o: form.h
+doio.o: handy.h
+doio.o: hash.h
+doio.o: perl.h
+doio.o: regexp.h
+doio.o: spat.h
+doio.o: stab.h
+doio.o: str.h
+doio.o: util.h
+dolist.o: EXTERN.h
+dolist.o: arg.h
+dolist.o: array.h
+dolist.o: cmd.h
+dolist.o: config.h
+dolist.o: dolist.c
+dolist.o: form.h
+dolist.o: handy.h
+dolist.o: hash.h
+dolist.o: perl.h
+dolist.o: regexp.h
+dolist.o: spat.h
+dolist.o: stab.h
+dolist.o: str.h
+dolist.o: util.h
+dump.o: EXTERN.h
+dump.o: arg.h
+dump.o: array.h
+dump.o: cmd.h
+dump.o: config.h
+dump.o: dump.c
+dump.o: form.h
+dump.o: handy.h
+dump.o: hash.h
+dump.o: perl.h
+dump.o: regexp.h
+dump.o: spat.h
+dump.o: stab.h
+dump.o: str.h
+dump.o: util.h
+eval.o: EXTERN.h
+eval.o: arg.h
+eval.o: array.h
+eval.o: cmd.h
+eval.o: config.h
+eval.o: eval.c
+eval.o: form.h
+eval.o: handy.h
+eval.o: hash.h
+eval.o: perl.h
+eval.o: regexp.h
+eval.o: spat.h
+eval.o: stab.h
+eval.o: str.h
+eval.o: util.h
+form.o: EXTERN.h
+form.o: arg.h
+form.o: array.h
+form.o: cmd.h
+form.o: config.h
+form.o: form.c
+form.o: form.h
+form.o: handy.h
+form.o: hash.h
+form.o: perl.h
+form.o: regexp.h
+form.o: spat.h
+form.o: stab.h
+form.o: str.h
+form.o: util.h
+hash.o: EXTERN.h
+hash.o: arg.h
+hash.o: array.h
+hash.o: cmd.h
+hash.o: config.h
+hash.o: form.h
+hash.o: handy.h
+hash.o: hash.c
+hash.o: hash.h
+hash.o: perl.h
+hash.o: regexp.h
+hash.o: spat.h
+hash.o: stab.h
+hash.o: str.h
+hash.o: util.h
+perl.o: EXTERN.h
+perl.o: arg.h
+perl.o: array.h
+perl.o: cmd.h
+perl.o: config.h
+perl.o: form.h
+perl.o: handy.h
+perl.o: hash.h
+perl.o: patchlevel.h
+perl.o: perl.c
+perl.o: perl.h
+perl.o: perly.h
+perl.o: regexp.h
+perl.o: spat.h
+perl.o: stab.h
+perl.o: str.h
+perl.o: util.h
+regcomp.o: EXTERN.h
+regcomp.o: INTERN.h
+regcomp.o: arg.h
+regcomp.o: array.h
+regcomp.o: cmd.h
+regcomp.o: config.h
+regcomp.o: form.h
+regcomp.o: handy.h
+regcomp.o: hash.h
+regcomp.o: perl.h
+regcomp.o: regcomp.c
+regcomp.o: regcomp.h
+regcomp.o: regexp.h
+regcomp.o: spat.h
+regcomp.o: stab.h
+regcomp.o: str.h
+regcomp.o: util.h
+regexec.o: EXTERN.h
+regexec.o: arg.h
+regexec.o: array.h
+regexec.o: cmd.h
+regexec.o: config.h
+regexec.o: form.h
+regexec.o: handy.h
+regexec.o: hash.h
+regexec.o: perl.h
+regexec.o: regcomp.h
+regexec.o: regexec.c
+regexec.o: regexp.h
+regexec.o: spat.h
+regexec.o: stab.h
+regexec.o: str.h
+regexec.o: util.h
+stab.o: EXTERN.h
+stab.o: arg.h
+stab.o: array.h
+stab.o: cmd.h
+stab.o: config.h
+stab.o: form.h
+stab.o: handy.h
+stab.o: hash.h
+stab.o: perl.h
+stab.o: regexp.h
+stab.o: spat.h
+stab.o: stab.c
+stab.o: stab.h
+stab.o: str.h
+stab.o: util.h
+str.o: EXTERN.h
+str.o: arg.h
+str.o: array.h
+str.o: cmd.h
+str.o: config.h
+str.o: form.h
+str.o: handy.h
+str.o: hash.h
+str.o: perl.h
+str.o: perly.h
+str.o: regexp.h
+str.o: spat.h
+str.o: stab.h
+str.o: str.c
+str.o: str.h
+str.o: util.h
+toke.o: EXTERN.h
+toke.o: arg.h
+toke.o: array.h
+toke.o: cmd.h
+toke.o: config.h
+toke.o: form.h
+toke.o: handy.h
+toke.o: hash.h
+toke.o: perl.h
+toke.o: perly.h
+toke.o: regexp.h
+toke.o: spat.h
+toke.o: stab.h
+toke.o: str.h
+toke.o: toke.c
+toke.o: util.h
+util.o: EXTERN.h
+util.o: arg.h
+util.o: array.h
+util.o: cmd.h
+util.o: config.h
+util.o: form.h
+util.o: handy.h
+util.o: hash.h
+util.o: perl.h
+util.o: regexp.h
+util.o: spat.h
+util.o: stab.h
+util.o: str.h
+util.o: util.c
+util.o: util.h
+atarist.o: EXTERN.h
+atarist.o: arg.h
+atarist.o: array.h
+atarist.o: cmd.h
+atarist.o: config.h
+atarist.o: form.h
+atarist.o: handy.h
+atarist.o: hash.h
+atarist.o: perl.h
+atarist.o: regexp.h
+atarist.o: spat.h
+atarist.o: stab.h
+atarist.o: str.h
+atarist.o: atarist.c
+atarist.o: util.h
+
+malloc.o: EXTERN.h
+malloc.o: arg.h
+malloc.o: array.h
+malloc.o: cmd.h
+malloc.o: config.h
+malloc.o: form.h
+malloc.o: handy.h
+malloc.o: hash.h
+malloc.o: perl.h
+malloc.o: regexp.h
+malloc.o: spat.h
+malloc.o: stab.h
+malloc.o: str.h
+malloc.o: malloc.c
+malloc.o: util.h
+
-/* $RCSfile: dolist.c,v $$Revision: 4.0.1.4 $$Date: 91/11/11 16:33:19 $
+/* $RCSfile: dolist.c,v $$Revision: 4.0.1.5 $$Date: 92/06/08 13:13:27 $
*
* Copyright (c) 1991, Larry Wall
*
* License or the Artistic License, as specified in the README file.
*
* $Log: dolist.c,v $
+ * Revision 4.0.1.5 92/06/08 13:13:27 lwall
+ * patch20: g pattern modifer sometimes returned extra values
+ * patch20: m/$pattern/g didn't work
+ * patch20: pattern modifiers i and o didn't interact right
+ * patch20: @ in unpack failed too often
+ * patch20: Perl now distinguishes overlapped copies from non-overlapped
+ * patch20: slice on null list in scalar context returned random value
+ * patch20: splice with negative offset didn't work with $[ = 1
+ * patch20: fixed some memory leaks in splice
+ * patch20: scalar keys %array now counts keys for you
+ *
* Revision 4.0.1.4 91/11/11 16:33:19 lwall
* patch19: added little-endian pack/unpack options
* patch19: sort $subname was busted by changes in 4.018
#include "EXTERN.h"
#include "perl.h"
+static int sortcmp();
+static int sortsub();
#ifdef BUGGY_MSC
#pragma function(memcmp)
char *myhint = hint;
int global;
int safebase;
+ char *truebase = s;
+ register REGEXP *rx = spat->spat_regexp;
hint = Nullch;
if (!spat) {
if (debug & 8)
deb("2.SPAT /%s/\n",t);
#endif
- if (spat->spat_regexp) {
- regfree(spat->spat_regexp);
- spat->spat_regexp = Null(REGEXP*); /* crucial if regcomp aborts */
- }
+ if (!global && rx)
+ regfree(rx);
+ spat->spat_regexp = Null(REGEXP*); /* crucial if regcomp aborts */
spat->spat_regexp = regcomp(t,t+tmpstr->str_cur,
spat->spat_flags & SPAT_FOLD);
if (!spat->spat_regexp->prelen && lastspat)
spat = lastspat;
if (spat->spat_flags & SPAT_KEEP) {
- scanconst(spat,spat->spat_regexp->precomp, spat->spat_regexp->prelen);
+ if (!(spat->spat_flags & SPAT_FOLD))
+ scanconst(spat,spat->spat_regexp->precomp,
+ spat->spat_regexp->prelen);
if (spat->spat_runtime)
arg_free(spat->spat_runtime); /* it won't change, so */
spat->spat_runtime = Nullarg; /* no point compiling again */
}
}
if (global) {
- if (spat->spat_regexp->startp[0]) {
- s = spat->spat_regexp->endp[0];
+ if (rx) {
+ if (rx->startp[0]) {
+ s = rx->endp[0];
+ if (s == rx->startp[0])
+ s++;
+ if (s > strend) {
+ regfree(rx);
+ rx = spat->spat_regexp;
+ goto nope;
+ }
+ }
+ regfree(rx);
}
}
else if (!spat->spat_regexp->nparens)
gimme = G_SCALAR; /* accidental array context? */
- if (regexec(spat->spat_regexp, s, strend, s, 0,
+ rx = spat->spat_regexp;
+ if (regexec(rx, s, strend, s, 0,
srchstr->str_pok & SP_STUDIED ? srchstr : Nullstr,
safebase)) {
- if (spat->spat_regexp->subbase || global)
+ if (rx->subbase || global)
curspat = spat;
lastspat = spat;
goto gotcha;
ch = '?';
else
ch = '/';
- deb("2.SPAT %c%s%c\n",ch,spat->spat_regexp->precomp,ch);
+ deb("2.SPAT %c%s%c\n",ch,rx->precomp,ch);
}
#endif
- if (!spat->spat_regexp->prelen && lastspat)
+ if (!rx->prelen && lastspat) {
spat = lastspat;
+ rx = spat->spat_regexp;
+ }
t = s;
play_it_again:
- if (global && spat->spat_regexp->startp[0])
- t = s = spat->spat_regexp->endp[0];
+ if (global && rx->startp[0]) {
+ t = s = rx->endp[0];
+ if (s == rx->startp[0])
+ s++,t++;
+ if (s > strend)
+ goto nope;
+ }
if (myhint) {
if (myhint < s || myhint > strend)
fatal("panic: hint in do_match");
s = myhint;
- if (spat->spat_regexp->regback >= 0) {
- s -= spat->spat_regexp->regback;
+ if (rx->regback >= 0) {
+ s -= rx->regback;
if (s < t)
s = t;
}
#endif
else if (spat->spat_flags & SPAT_ALL)
goto yup;
- if (s && spat->spat_regexp->regback >= 0) {
+ if (s && rx->regback >= 0) {
++spat->spat_short->str_u.str_useful;
- s -= spat->spat_regexp->regback;
+ s -= rx->regback;
if (s < t)
s = t;
}
spat->spat_short = Nullstr; /* opt is being useless */
}
}
- if (!spat->spat_regexp->nparens && !global) {
+ if (!rx->nparens && !global) {
gimme = G_SCALAR; /* accidental array context? */
safebase = FALSE;
}
- if (regexec(spat->spat_regexp, s, strend, t, 0,
+ if (regexec(rx, s, strend, truebase, 0,
srchstr->str_pok & SP_STUDIED ? srchstr : Nullstr,
safebase)) {
- if (spat->spat_regexp->subbase || global)
+ if (rx->subbase || global)
curspat = spat;
lastspat = spat;
if (spat->spat_flags & SPAT_ONCE)
}
else {
if (global)
- spat->spat_regexp->startp[0] = Nullch;
+ rx->startp[0] = Nullch;
if (gimme == G_ARRAY)
return sp;
str_sset(str,&str_no);
if (gimme == G_ARRAY) {
int iters, i, len;
- iters = spat->spat_regexp->nparens;
+ iters = rx->nparens;
if (global && !iters)
i = 1;
else
for (i = !i; i <= iters; i++) {
st[++sp] = str_mortal(&str_no);
/*SUPPRESS 560*/
- if (s = spat->spat_regexp->startp[i]) {
- len = spat->spat_regexp->endp[i] - s;
+ if (s = rx->startp[i]) {
+ len = rx->endp[i] - s;
if (len > 0)
str_nset(st[sp],s,len);
}
}
- if (global)
+ if (global) {
+ truebase = rx->subbeg;
goto play_it_again;
+ }
return sp;
}
else {
if (spat->spat_flags & SPAT_ONCE)
spat->spat_flags |= SPAT_USED;
if (global) {
- spat->spat_regexp->subbeg = t;
- spat->spat_regexp->subend = strend;
- spat->spat_regexp->startp[0] = s;
- spat->spat_regexp->endp[0] = s + spat->spat_short->str_cur;
+ rx->subbeg = t;
+ rx->subend = strend;
+ rx->startp[0] = s;
+ rx->endp[0] = s + spat->spat_short->str_cur;
curspat = spat;
goto gotcha;
}
if (sawampersand) {
char *tmps;
- if (spat->spat_regexp->subbase)
- Safefree(spat->spat_regexp->subbase);
- tmps = spat->spat_regexp->subbase = nsavestr(t,strend-t);
- spat->spat_regexp->subbeg = tmps;
- spat->spat_regexp->subend = tmps + (strend-t);
- tmps = spat->spat_regexp->startp[0] = tmps + (s - t);
- spat->spat_regexp->endp[0] = tmps + spat->spat_short->str_cur;
+ if (rx->subbase)
+ Safefree(rx->subbase);
+ tmps = rx->subbase = nsavestr(t,strend-t);
+ rx->subbeg = tmps;
+ rx->subend = tmps + (strend-t);
+ tmps = rx->startp[0] = tmps + (s - t);
+ rx->endp[0] = tmps + spat->spat_short->str_cur;
curspat = spat;
}
str_sset(str,&str_yes);
return sp;
nope:
- spat->spat_regexp->startp[0] = Nullch;
- ++spat->spat_short->str_u.str_useful;
- if (global)
- spat->spat_regexp->startp[0] = Nullch;
+ rx->startp[0] = Nullch;
+ if (spat->spat_short)
+ ++spat->spat_short->str_u.str_useful;
if (gimme == G_ARRAY)
return sp;
str_sset(str,&str_no);
goto reparse;
break;
case '@':
- if (len > strend - s)
+ if (len > strend - strbeg)
fatal("@ outside of string");
s = strbeg + len;
break;
len = along;
if (checksum) {
while (len-- > 0) {
- bcopy(s,(char*)&ashort,sizeof(short));
+ Copy(s,&ashort,1,short);
s += sizeof(short);
culong += ashort;
}
}
else {
while (len-- > 0) {
- bcopy(s,(char*)&ashort,sizeof(short));
+ Copy(s,&ashort,1,short);
s += sizeof(short);
str = Str_new(38,0);
str_numset(str,(double)ashort);
len = along;
if (checksum) {
while (len-- > 0) {
- bcopy(s,(char*)&aushort,sizeof(unsigned short));
+ Copy(s,&aushort,1,unsigned short);
s += sizeof(unsigned short);
#ifdef HAS_NTOHS
if (datumtype == 'n')
}
else {
while (len-- > 0) {
- bcopy(s,(char*)&aushort,sizeof(unsigned short));
+ Copy(s,&aushort,1,unsigned short);
s += sizeof(unsigned short);
str = Str_new(39,0);
#ifdef HAS_NTOHS
len = along;
if (checksum) {
while (len-- > 0) {
- bcopy(s,(char*)&aint,sizeof(int));
+ Copy(s,&aint,1,int);
s += sizeof(int);
if (checksum > 32)
cdouble += (double)aint;
}
else {
while (len-- > 0) {
- bcopy(s,(char*)&aint,sizeof(int));
+ Copy(s,&aint,1,int);
s += sizeof(int);
str = Str_new(40,0);
str_numset(str,(double)aint);
len = along;
if (checksum) {
while (len-- > 0) {
- bcopy(s,(char*)&auint,sizeof(unsigned int));
+ Copy(s,&auint,1,unsigned int);
s += sizeof(unsigned int);
if (checksum > 32)
cdouble += (double)auint;
}
else {
while (len-- > 0) {
- bcopy(s,(char*)&auint,sizeof(unsigned int));
+ Copy(s,&auint,1,unsigned int);
s += sizeof(unsigned int);
str = Str_new(41,0);
str_numset(str,(double)auint);
len = along;
if (checksum) {
while (len-- > 0) {
- bcopy(s,(char*)&along,sizeof(long));
+ Copy(s,&along,1,long);
s += sizeof(long);
if (checksum > 32)
cdouble += (double)along;
}
else {
while (len-- > 0) {
- bcopy(s,(char*)&along,sizeof(long));
+ Copy(s,&along,1,long);
s += sizeof(long);
str = Str_new(42,0);
str_numset(str,(double)along);
len = along;
if (checksum) {
while (len-- > 0) {
- bcopy(s,(char*)&aulong,sizeof(unsigned long));
+ Copy(s,&aulong,1,unsigned long);
s += sizeof(unsigned long);
#ifdef HAS_NTOHL
if (datumtype == 'N')
}
else {
while (len-- > 0) {
- bcopy(s,(char*)&aulong,sizeof(unsigned long));
+ Copy(s,&aulong,1,unsigned long);
s += sizeof(unsigned long);
str = Str_new(43,0);
#ifdef HAS_NTOHL
if (sizeof(char*) > strend - s)
break;
else {
- bcopy(s,(char*)&aptr,sizeof(char*));
+ Copy(s,&aptr,1,char*);
s += sizeof(char*);
}
str = Str_new(44,0);
if (s + sizeof(quad) > strend)
aquad = 0;
else {
- bcopy(s,(char*)&aquad,sizeof(quad));
+ Copy(s,&aquad,1,quad);
s += sizeof(quad);
}
str = Str_new(42,0);
if (s + sizeof(unsigned quad) > strend)
auquad = 0;
else {
- bcopy(s,(char*)&auquad,sizeof(unsigned quad));
+ Copy(s,&auquad,1,unsigned quad);
s += sizeof(unsigned quad);
}
str = Str_new(43,0);
len = along;
if (checksum) {
while (len-- > 0) {
- bcopy(s, (char *)&afloat, sizeof(float));
+ Copy(s, &afloat,1, float);
s += sizeof(float);
cdouble += afloat;
}
}
else {
while (len-- > 0) {
- bcopy(s, (char *)&afloat, sizeof(float));
+ Copy(s, &afloat,1, float);
s += sizeof(float);
str = Str_new(47, 0);
str_numset(str, (double)afloat);
len = along;
if (checksum) {
while (len-- > 0) {
- bcopy(s, (char *)&adouble, sizeof(double));
+ Copy(s, &adouble,1, double);
s += sizeof(double);
cdouble += adouble;
}
}
else {
while (len-- > 0) {
- bcopy(s, (char *)&adouble, sizeof(double));
+ Copy(s, &adouble,1, double);
s += sizeof(double);
str = Str_new(48, 0);
str_numset(str, (double)adouble);
sp--;
}
else {
- if (numarray) {
+ if (sp == max)
+ st[sp] = &str_undef;
+ else if (numarray) {
if (st[max])
st[sp] = afetch(ary,
((int)str_gnum(st[max])) - arybase, lval);
STR **tmparyval;
if (++sp < max) {
- offset = ((int)str_gnum(st[sp])) - arybase;
+ offset = (int)str_gnum(st[sp]);
if (offset < 0)
offset += ary->ary_fill + 1;
+ else
+ offset -= arybase;
if (++sp < max) {
length = (int)str_gnum(st[sp++]);
if (length < 0)
}
else {
st[sp] = ary->ary_array[offset+length-1];
- if (ary->ary_flags & ARF_REAL)
+ if (ary->ary_flags & ARF_REAL) {
str_2mortal(st[sp]);
+ for (i = length - 1, dst = &ary->ary_array[offset]; i > 0; i--)
+ str_free(*dst++); /* free them now */
+ }
}
ary->ary_fill += diff;
if (after) { /* anything to pull down? */
src = ary->ary_array + offset + length;
dst = src + diff; /* diff is negative */
- Copy(src, dst, after, STR*);
+ Move(src, dst, after, STR*);
}
Zero(&ary->ary_array[ary->ary_fill+1], -diff, STR*);
/* avoid later double free */
if (offset) {
src = ary->ary_array;
dst = src - diff;
- Copy(src, dst, offset, STR*);
+ Move(src, dst, offset, STR*);
}
ary->ary_array -= diff; /* diff is positive */
ary->ary_max += diff;
astore(ary, ary->ary_fill + diff, Nullstr);
else
ary->ary_fill += diff;
+ dst = ary->ary_array + ary->ary_fill;
+ for (i = diff; i > 0; i--) {
+ if (*dst) /* str was hanging around */
+ str_free(*dst); /* after $#foo */
+ dst--;
+ }
if (after) {
dst = ary->ary_array + ary->ary_fill;
src = dst - diff;
for (i = after; i; i--) {
- if (*dst) /* str was hanging around */
- str_free(*dst); /* after $#foo */
- *dst-- = *src;
- *src-- = Nullstr;
+ *dst-- = *src--;
}
}
}
}
sp += length - 1;
}
- else if (length) {
- st[sp] = tmparyval[length-1];
- if (ary->ary_flags & ARF_REAL)
+ else if (length--) {
+ st[sp] = tmparyval[length];
+ if (ary->ary_flags & ARF_REAL) {
str_2mortal(st[sp]);
+ while (length-- > 0)
+ str_free(tmparyval[length]);
+ }
Safefree(tmparyval);
}
else
*down-- = *up;
}
i = arglast[2] - arglast[1];
- Copy(down+1,up,i/2,STR*);
+ Move(down+1,up,i/2,STR*);
return arglast[2] - 1;
}
if (stab) {
if (!stab_sub(stab) || !(sortcmd = stab_sub(stab)->cmd))
fatal("Undefined subroutine \"%s\" in sort",
- stab_name(stab));
- stash = stab_stash(stab);
+ stab_ename(stab));
+ stash = stab_estash(stab);
}
else
sortcmd = Nullcmd;
return sp+max;
}
-int
+static int
sortsub(str1,str2)
STR **str1;
STR **str2;
return (int)str_gnum(*stack->ary_array);
}
+static int
sortcmp(strp1,strp2)
STR **strp1;
STR **strp2;
if (!maxarg)
return sp;
str = Str_new(49,0);
- stab_fullname(str, csv->stab);
+ stab_efullname(str, csv->stab);
(void)astore(stack,++sp, str_2mortal(str));
(void)astore(stack,++sp,
str_2mortal(str_nmake((double)csv->hasargs)) );
int dovalues = (kv == O_VALUES || kv == O_HASH);
if (gimme != G_ARRAY) {
- str_sset(str,&str_undef);
+ i = 0;
+ (void)hiterinit(hash);
+ /*SUPPRESS 560*/
+ while (entry = hiternext(hash)) {
+ i++;
+ }
+ str_numset(str,(double)i);
STABSET(str);
st[++sp] = str;
return sp;