perl 4.0 patch 27: patch #20, continued
authorLarry Wall <lwall@netlabs.com>
Mon, 8 Jun 1992 04:49:57 +0000 (04:49 +0000)
committerLarry Wall <lwall@netlabs.com>
Mon, 8 Jun 1992 04:49:57 +0000 (04:49 +0000)
See patch #20.

atarist/makefile.sm [new file with mode: 0644]
atarist/makefile.st [new file with mode: 0644]
atarist/test/osexample.pl [new file with mode: 0644]
dolist.c
hints/ncr_tower.sh
hints/next.sh
makedepend.SH
os2/mktemp.c
patchlevel.h

diff --git a/atarist/makefile.sm b/atarist/makefile.sm
new file mode 100644 (file)
index 0000000..6c2afbf
--- /dev/null
@@ -0,0 +1,457 @@
+# : 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
+
diff --git a/atarist/makefile.st b/atarist/makefile.st
new file mode 100644 (file)
index 0000000..a016a30
--- /dev/null
@@ -0,0 +1,462 @@
+# : 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
+
diff --git a/atarist/test/osexample.pl b/atarist/test/osexample.pl
new file mode 100644 (file)
index 0000000..47bc8e2
--- /dev/null
@@ -0,0 +1,5 @@
+require 'osbind.pl';
+
+ &Cconws("Hello World\r\n");
+ $str = "This is a string being printed by Fwrite Gemdos trap\r\n";
+ &Fwrite(1, length($str), $str);
index a452e8e..fb27a64 100644 (file)
--- a/dolist.c
+++ b/dolist.c
@@ -1,4 +1,4 @@
-/* $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
  *
@@ -6,6 +6,17 @@
  *    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
@@ -40,6 +51,8 @@
 #include "EXTERN.h"
 #include "perl.h"
 
+static int sortcmp();
+static int sortsub();
 
 #ifdef BUGGY_MSC
  #pragma function(memcmp)
@@ -63,6 +76,8 @@ int *arglast;
     char *myhint = hint;
     int global;
     int safebase;
+    char *truebase = s;
+    register REGEXP *rx = spat->spat_regexp;
 
     hint = Nullch;
     if (!spat) {
@@ -100,16 +115,17 @@ int *arglast;
        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 */
@@ -120,16 +136,27 @@ int *arglast;
            }
        }
        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;
@@ -152,21 +179,28 @@ int *arglast;
                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;
            }
@@ -190,9 +224,9 @@ int *arglast;
 #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;
                }
@@ -207,14 +241,14 @@ int *arglast;
                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)
@@ -223,7 +257,7 @@ int *arglast;
        }
        else {
            if (global)
-               spat->spat_regexp->startp[0] = Nullch;
+               rx->startp[0] = Nullch;
            if (gimme == G_ARRAY)
                return sp;
            str_sset(str,&str_no);
@@ -238,7 +272,7 @@ int *arglast;
     if (gimme == G_ARRAY) {
        int iters, i, len;
 
-       iters = spat->spat_regexp->nparens;
+       iters = rx->nparens;
        if (global && !iters)
            i = 1;
        else
@@ -251,14 +285,16 @@ int *arglast;
        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 {
@@ -274,23 +310,23 @@ yup:
     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);
@@ -299,10 +335,9 @@ yup:
     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);
@@ -628,7 +663,7 @@ int *arglast;
                goto reparse;
            break;
        case '@':
-           if (len > strend - s)
+           if (len > strend - strbeg)
                fatal("@ outside of string");
            s = strbeg + len;
            break;
@@ -775,14 +810,14 @@ int *arglast;
                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);
@@ -798,7 +833,7 @@ int *arglast;
                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')
@@ -813,7 +848,7 @@ int *arglast;
            }
            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
@@ -835,7 +870,7 @@ int *arglast;
                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;
@@ -845,7 +880,7 @@ int *arglast;
            }
            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);
@@ -859,7 +894,7 @@ int *arglast;
                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;
@@ -869,7 +904,7 @@ int *arglast;
            }
            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);
@@ -883,7 +918,7 @@ int *arglast;
                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;
@@ -893,7 +928,7 @@ int *arglast;
            }
            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);
@@ -909,7 +944,7 @@ int *arglast;
                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')
@@ -927,7 +962,7 @@ int *arglast;
            }
            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
@@ -951,7 +986,7 @@ int *arglast;
                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);
@@ -966,7 +1001,7 @@ int *arglast;
                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);
@@ -979,7 +1014,7 @@ int *arglast;
                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);
@@ -996,14 +1031,14 @@ int *arglast;
                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);
@@ -1018,14 +1053,14 @@ int *arglast;
                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);
@@ -1182,7 +1217,9 @@ int *arglast;
        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);
@@ -1225,9 +1262,11 @@ int *arglast;
     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)
@@ -1284,8 +1323,11 @@ int *arglast;
        }
        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;
 
@@ -1306,7 +1348,7 @@ int *arglast;
            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 */
@@ -1334,7 +1376,7 @@ int *arglast;
                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;
@@ -1345,14 +1387,17 @@ int *arglast;
                    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--;
                    }
                }
            }
@@ -1374,10 +1419,13 @@ int *arglast;
            }
            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
@@ -1450,7 +1498,7 @@ int *arglast;
            *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;
 }
 
@@ -1543,8 +1591,8 @@ int *arglast;
            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;
@@ -1587,7 +1635,7 @@ int *arglast;
     return sp+max;
 }
 
-int
+static int
 sortsub(str1,str2)
 STR **str1;
 STR **str2;
@@ -1598,6 +1646,7 @@ STR **str2;
     return (int)str_gnum(*stack->ary_array);
 }
 
+static int
 sortcmp(strp1,strp2)
 STR **strp1;
 STR **strp2;
@@ -1736,7 +1785,7 @@ int *arglast;
     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)) );
@@ -1848,7 +1897,13 @@ int *arglast;
     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;
index 8b99201..aa517d7 100644 (file)
@@ -1,2 +1,8 @@
+optimize='-O0'
 ccflags="$ccflags -W2,-Sl,2000"
+eval_cflags='large="-W0,-XL"'
+teval_cflags=$eval_cflags
 d_mkdir=$undef
+usemymalloc='y'
+mallocsrc='malloc.c'
+mallocobj='malloc.o'
index 8c77055..8a1fe39 100644 (file)
@@ -2,3 +2,4 @@
 nativegcc='define'
 groupstype="int"
 usemymalloc="n"
+libswanted='dbm sys_s'
index 8fb59cd..4665624 100644 (file)
@@ -13,11 +13,15 @@ case "$0" in
 */*) cd `expr X$0 : 'X\(.*\)/'` ;;
 esac
 echo "Extracting makedepend (with variable substitutions)"
+rm -f makedepend
 $spitshell >makedepend <<!GROK!THIS!
 $startsh
-# $RCSfile: makedepend.SH,v $$Revision: 4.0.1.3 $$Date: 91/11/05 17:56:33 $
+# $RCSfile: makedepend.SH,v $$Revision: 4.0.1.4 $$Date: 92/06/08 13:51:24 $
 #
 # $Log:        makedepend.SH,v $
+# Revision 4.0.1.4  92/06/08  13:51:24  lwall
+# patch20: various and sundry fixes
+# 
 # Revision 4.0.1.3  91/11/05  17:56:33  lwall
 # patch11: various portability fixes
 # 
@@ -53,6 +57,9 @@ uniq='$uniq'
 
 $spitshell >>makedepend <<'!NO!SUBS!'
 
+PATH="$PATH:."
+export PATH
+
 $cat /dev/null >.deptmp
 $rm -f *.c.c c/*.c.c
 if test -f Makefile; then
@@ -83,21 +90,28 @@ for file in `$cat .clist`; do
 # for file in `cat /dev/null`; do
     case "$file" in
     *.c) filebase=`basename $file .c` ;;
-    *.y) filebase=`basename $file .c` ;;
+    *.y) filebase=`basename $file .y` ;;
+    esac
+    case "$file" in
+    */*) finc="-I`echo $file | sed 's#/[^/]*$##`" ;;
+    *)   finc= ;;
     esac
     $echo "Finding dependencies for $filebase.o."
-    $sed -n <$file >$file.c \
+    ( $echo "#line 1 \"$file\""; \
+      $sed -n <$file \
        -e "/^${filebase}_init(/q" \
        -e '/^#/{' \
        -e 's|/\*.*$||' \
        -e 's|\\$||' \
        -e p \
-       -e '}'
-    $cppstdin -I/usr/local/include -I. $cppflags $cppminus <$file.c | sed -e 's#\.[0-9][0-9]*\.c#'"$file.c#" | \
+       -e '}' ) >$file.c
+    $cppstdin $finc -I/usr/local/include -I. $cppflags $cppminus <$file.c |
     $sed \
+       -e 's#\.[0-9][0-9]*\.c#'"$file.c#" \
        -e 's/^[         ]*#[    ]*line/#/' \
-       -e '/^# *[0-9][0-9]* *"/!d' \
+       -e '/^# *[0-9][0-9]* *[".\/]/!d' \
        -e 's/^.*"\(.*\)".*$/'$filebase'.o: \1/' \
+       -e 's/^# *[0-9][0-9]* \(.*\)$/'$filebase'.o: \1/' \
        -e 's|: \./|: |' \
        -e 's|\.c\.c|.c|' | \
     $uniq | $sort | $uniq >> .deptmp
index e70507a..a14bc63 100644 (file)
@@ -1,28 +1 @@
-/* MKTEMP.C using TMP environment variable */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <io.h>
-
-void Mktemp(char *file)
-{
-  char fname[32], *tmp;
-
-  tmp = getenv("TMP");
-
-  if ( tmp != NULL )
-  {
-    strcpy(fname, file);
-    strcpy(file, tmp);
-
-    if ( file[strlen(file) - 1] != '\\' )
-      strcat(file, "\\");
-
-    strcat(file, fname);
-  }
-
-  mktemp(file);
-}
-
-/* End of MKTEMP.C */
+(deprecated)
index 9705476..466db5f 100644 (file)
@@ -1 +1 @@
-#define PATCHLEVEL 26
+#define PATCHLEVEL 27