dmake 3.6 patch 1 (part 01/05)

Dennis Vadura dvadura at watdragon.waterloo.edu
Thu Nov 1 12:25:45 AEST 1990


#!/bin/sh
# shar:	Shell Archiver  (v1.22)
#
# This is part 1 of a multipart archive                                    
# do not concatenate these parts, unpack them in order with /bin/sh        
#
#	Run the following text with /bin/sh to create:
#	  dm36.p1
#
if test -r s2_seq_.tmp
then echo "Must unpack archives in sequence!"
     next=`cat s2_seq_.tmp`; echo "Please unpack part $next next"
     exit 1; fi
sed 's/^X//' << 'SHAR_EOF' > dm36.p1 &&
X#!/bin/sh
X# dodiff:  Directory tree maintainer (v1.1)
X#
X# DMAKE Version 3.6, patch #1
X# ---------------------------
X# 
X# Severity: Medium
X# 
X# Nature:   Minor teething problems with UNIX, and major problems with MSC
X#           6.0, and TCC 2.0 swapping versions fixed.
X# 
X# Format:   Shar containing new versions of affected files.  With appropriate
X#           patches.  (run the patch file through sh in the source distribution
X#           directory and it will do the rest)
X# 
X#           Also available as pub/src/dmake-3.6-patch1 on watmsg.uwaterloo.edu
X#           (129.97.129.9)
X# 
X#           Archived source on watmsg incorporates this patch.
X# 
X# Prerequisites: dmake version 3.6, patchlevel 1 source distribution
X# 
X# 
X# Description of Fixes:
X# ---------------------
X# 1. Compilation problems with Microsoft compilers, and swapping versions of
X#    dmake.  To the best of my knowledge versions 4.0, 5.0, 5.1 and 6.0 of MSC
X#    now fully compile and generate running binaries both for swapping and non
X#    swapping versions of dmake.
X# 
X# 2. Other fixes include a hack to allow parsing of makefiles shipped over from
X#    DOS that contain cr-lf combinations.  This doesn't seem to impact processing
X#    of normal UNIX makefiles at all.
X# 
X# 3. Changed DOS versions of tempnam.c to use _psp to generate temporary file
X#    names instead of the current time as supplied by time().  The reason for
X#    this is too bizzare to go into here.
X# 
X# 4. Xenix is now a supported make target, as is Atari-ST TOS using GCC.
X# 
X# 5. A number of small tweaks here and there, not serious but might make
X#    compiles on a number of systems cleaner.
X# 
X# 6. Clarification of the documentation in several spots.
X# 
X# 7. Patch to dmake.tf to remove ^G control characters.  NOTE:  This patch
X#    may fail if you never received the ^G characters in the first place.  If
X#    so then please apply the patch by hand.
X# 
X# 8. inferred targets that infer recipes from rules having a .SETDIR attribute
X#    now have the .SETDIR applied prior to making the prerequisites and the
X#    target.
X# 
X# Many thanks to all those that helped find and identify and in some cases
X# provided fixes and/or new code for the above enhancements.
X# 
X# -dennis
X#
X# Remove Obsolete files from distribution
Xrm -f msdos/mscdos/obj60swp.rsp
Xrm -f msdos/mscdos/obj60.rsp
Xrm -f msdos/mscdos/mkswp.bat
Xrm -f msdos/mscdos/mk.bat
Xrm -f msdos/mscdos/lib60swp.rsp
Xrm -f msdos/mscdos/lib60.rsp
X
X# Now use a shar archive to add any new files to the distribution
X# shar:	Shell Archiver  (v1.22)
X#
X#	Run the following text with /bin/sh to create:
X#	  msdos/mscdos/mk40.bat
X#	  msdos/mscdos/mk40swp.bat
X#	  msdos/mscdos/mk50.bat
X#	  msdos/mscdos/mk50swp.bat
X#	  msdos/mscdos/mk51.bat
X#	  msdos/mscdos/mk51swp.bat
X#	  msdos/mscdos/optoff.h
X#	  readme/atari.tos
X#	  readme/patch1
X#	  tos
X#	  tos/arlib.c
X#	  tos/config.h
X#	  tos/config.mk
X#	  tos/dirbrk.c
X#	  tos/make.sh
X#	  tos/rmprq.c
X#	  tos/ruletab.c
X#	  tos/runargv.c
X#	  tos/startup.h
X#	  tos/startup.mk
X#	  tos/sysintf.h
X#
Xsed 's/^X//' << 'SHAR_EOF' > msdos/mscdos/mk40.bat &&
XXmkdir objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  infer.c
XXmv infer.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  make.c
XXmv make.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  stat.c
XXmv stat.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  expand.c
XXmv expand.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  string.c
XXmv string.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  hash.c
XXmv hash.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  dag.c
XXmv dag.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  dmake.c
XXmv dmake.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  path.c
XXmv path.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  imacs.c
XXmv imacs.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  sysintf.c
XXmv sysintf.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  parse.c
XXmv parse.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  getinp.c
XXmv getinp.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  quit.c
XXmv quit.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  basename.c
XXmv basename.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  dump.c
XXmv dump.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  macparse.c
XXmv macparse.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  rulparse.c
XXmv rulparse.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  percent.c
XXmv percent.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  function.c
XXmv function.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  msdos\ruletab.c
XXmv ruletab.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  msdos\dirbrk.c
XXmv dirbrk.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  msdos\runargv.c
XXmv runargv.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  msdos\arlib.c
XXmv arlib.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  msdos\_chdir.c
XXmv _chdir.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  msdos\switchar.c
XXmv switchar.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  msdos\rmprq.c
XXmv rmprq.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  msdos\mscdos\tempnam.c
XXmv tempnam.obj objects
XXlink @msdos\mscdos\obj.rsp,dmake.exe,NUL.MAP;
XSHAR_EOF
Xchmod 0640 msdos/mscdos/mk40.bat || echo "restore of msdos/mscdos/mk40.bat fails"
Xset `wc -c msdos/mscdos/mk40.bat`;Sum=$1
Xif test "$Sum" != "3127"
Xthen echo original size 3127, current size $Sum;fi
Xsed 's/^X//' << 'SHAR_EOF' > msdos/mscdos/mk40swp.bat &&
XXmkdir objects
XXmasm -t -mx -Dmcompact msdos\exec.asm;
XXmv exec.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  infer.c
XXmv infer.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  make.c
XXmv make.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  stat.c
XXmv stat.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  expand.c
XXmv expand.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  string.c
XXmv string.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  hash.c
XXmv hash.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  dag.c
XXmv dag.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  dmake.c
XXmv dmake.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  path.c
XXmv path.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  imacs.c
XXmv imacs.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  sysintf.c
XXmv sysintf.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  parse.c
XXmv parse.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  getinp.c
XXmv getinp.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  quit.c
XXmv quit.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  basename.c
XXmv basename.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  dump.c
XXmv dump.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  macparse.c
XXmv macparse.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  rulparse.c
XXmv rulparse.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  percent.c
XXmv percent.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  function.c
XXmv function.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  msdos\ruletab.c
XXmv ruletab.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  msdos\dirbrk.c
XXmv dirbrk.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  msdos\runargv.c
XXmv runargv.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  msdos\arlib.c
XXmv arlib.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  msdos\_chdir.c
XXmv _chdir.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  msdos\switchar.c
XXmv switchar.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  msdos\rmprq.c
XXmv rmprq.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  msdos\find.c
XXmv find.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  msdos\spawn.c
XXmv spawn.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1  msdos\mscdos\tempnam.c
XXmv tempnam.obj objects
XXlink @msdos\mscdos\objswp.rsp,dmake.exe,NUL.MAP;
XSHAR_EOF
Xchmod 0640 msdos/mscdos/mk40swp.bat || echo "restore of msdos/mscdos/mk40swp.bat fails"
Xset `wc -c msdos/mscdos/mk40swp.bat`;Sum=$1
Xif test "$Sum" != "3411"
Xthen echo original size 3411, current size $Sum;fi
Xsed 's/^X//' << 'SHAR_EOF' > msdos/mscdos/mk50.bat &&
XXmkdir objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs infer.c
XXmv infer.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs make.c
XXmv make.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs stat.c
XXmv stat.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs expand.c
XXmv expand.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs string.c
XXmv string.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs hash.c
XXmv hash.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs dag.c
XXmv dag.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs dmake.c
XXmv dmake.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs path.c
XXmv path.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs imacs.c
XXmv imacs.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs sysintf.c
XXmv sysintf.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs parse.c
XXmv parse.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs getinp.c
XXmv getinp.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs quit.c
XXmv quit.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs basename.c
XXmv basename.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs dump.c
XXmv dump.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs macparse.c
XXmv macparse.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs rulparse.c
XXmv rulparse.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs percent.c
XXmv percent.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs function.c
XXmv function.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs msdos\ruletab.c
XXmv ruletab.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs msdos\dirbrk.c
XXmv dirbrk.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs msdos\runargv.c
XXmv runargv.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs msdos\arlib.c
XXmv arlib.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs msdos\_chdir.c
XXmv _chdir.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs msdos\switchar.c
XXmv switchar.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs msdos\rmprq.c
XXmv rmprq.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs msdos\mscdos\tempnam.c
XXmv tempnam.obj objects
XXlink @msdos\mscdos\obj.rsp,dmake.exe,NUL.MAP;
XSHAR_EOF
Xchmod 0640 msdos/mscdos/mk50.bat || echo "restore of msdos/mscdos/mk50.bat fails"
Xset `wc -c msdos/mscdos/mk50.bat`;Sum=$1
Xif test "$Sum" != "3155"
Xthen echo original size 3155, current size $Sum;fi
Xsed 's/^X//' << 'SHAR_EOF' > msdos/mscdos/mk50swp.bat &&
XXmkdir objects
XXmasm -t -mx -Dmcompact msdos\exec.asm;
XXmv exec.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs infer.c
XXmv infer.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs make.c
XXmv make.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs stat.c
XXmv stat.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs expand.c
XXmv expand.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs string.c
XXmv string.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs hash.c
XXmv hash.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs dag.c
XXmv dag.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs dmake.c
XXmv dmake.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs path.c
XXmv path.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs imacs.c
XXmv imacs.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs sysintf.c
XXmv sysintf.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs parse.c
XXmv parse.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs getinp.c
XXmv getinp.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs quit.c
XXmv quit.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs basename.c
XXmv basename.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs dump.c
XXmv dump.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs macparse.c
XXmv macparse.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs rulparse.c
XXmv rulparse.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs percent.c
XXmv percent.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs function.c
XXmv function.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs msdos\ruletab.c
XXmv ruletab.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs msdos\dirbrk.c
XXmv dirbrk.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs msdos\runargv.c
XXmv runargv.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs msdos\arlib.c
XXmv arlib.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs msdos\_chdir.c
XXmv _chdir.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs msdos\switchar.c
XXmv switchar.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs msdos\rmprq.c
XXmv rmprq.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs msdos\find.c
XXmv find.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs msdos\spawn.c
XXmv spawn.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs msdos\mscdos\tempnam.c
XXmv tempnam.obj objects
XXlink @msdos\mscdos\objswp.rsp,dmake.exe,NUL.MAP;
XSHAR_EOF
Xchmod 0640 msdos/mscdos/mk50swp.bat || echo "restore of msdos/mscdos/mk50swp.bat fails"
Xset `wc -c msdos/mscdos/mk50swp.bat`;Sum=$1
Xif test "$Sum" != "3441"
Xthen echo original size 3441, current size $Sum;fi
Xsed 's/^X//' << 'SHAR_EOF' > msdos/mscdos/mk51.bat &&
XXmkdir objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs infer.c
XXmv infer.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs make.c
XXmv make.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs stat.c
XXmv stat.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs expand.c
XXmv expand.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs string.c
XXmv string.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs hash.c
XXmv hash.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs dag.c
XXmv dag.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs dmake.c
XXmv dmake.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs path.c
XXmv path.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs imacs.c
XXmv imacs.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs sysintf.c
XXmv sysintf.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs parse.c
XXmv parse.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs getinp.c
XXmv getinp.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs quit.c
XXmv quit.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs basename.c
XXmv basename.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs dump.c
XXmv dump.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs macparse.c
XXmv macparse.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs rulparse.c
XXmv rulparse.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs percent.c
XXmv percent.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs function.c
XXmv function.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs msdos\ruletab.c
XXmv ruletab.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs msdos\dirbrk.c
XXmv dirbrk.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs msdos\runargv.c
XXmv runargv.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs msdos\arlib.c
XXmv arlib.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs msdos\_chdir.c
XXmv _chdir.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs msdos\switchar.c
XXmv switchar.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs msdos\rmprq.c
XXmv rmprq.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs msdos\mscdos\tempnam.c
XXmv tempnam.obj objects
XXlink @msdos\mscdos\obj.rsp,dmake.exe,NUL.MAP;
XSHAR_EOF
Xchmod 0640 msdos/mscdos/mk51.bat || echo "restore of msdos/mscdos/mk51.bat fails"
Xset `wc -c msdos/mscdos/mk51.bat`;Sum=$1
Xif test "$Sum" != "3155"
Xthen echo original size 3155, current size $Sum;fi
Xsed 's/^X//' << 'SHAR_EOF' > msdos/mscdos/mk51swp.bat &&
XXmkdir objects
XXmasm -t -mx -Dmcompact msdos\exec.asm;
XXmv exec.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs infer.c
XXmv infer.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs make.c
XXmv make.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs stat.c
XXmv stat.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs expand.c
XXmv expand.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs string.c
XXmv string.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs hash.c
XXmv hash.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs dag.c
XXmv dag.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs dmake.c
XXmv dmake.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs path.c
XXmv path.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs imacs.c
XXmv imacs.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs sysintf.c
XXmv sysintf.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs parse.c
XXmv parse.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs getinp.c
XXmv getinp.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs quit.c
XXmv quit.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs basename.c
XXmv basename.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs dump.c
XXmv dump.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs macparse.c
XXmv macparse.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs rulparse.c
XXmv rulparse.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs percent.c
XXmv percent.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs function.c
XXmv function.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs msdos\ruletab.c
XXmv ruletab.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs msdos\dirbrk.c
XXmv dirbrk.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs msdos\runargv.c
XXmv runargv.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs msdos\arlib.c
XXmv arlib.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs msdos\_chdir.c
XXmv _chdir.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs msdos\switchar.c
XXmv switchar.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs msdos\rmprq.c
XXmv rmprq.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs msdos\find.c
XXmv find.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs msdos\spawn.c
XXmv spawn.obj objects
XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs msdos\mscdos\tempnam.c
XXmv tempnam.obj objects
XXlink @msdos\mscdos\objswp.rsp,dmake.exe,NUL.MAP;
XSHAR_EOF
Xchmod 0640 msdos/mscdos/mk51swp.bat || echo "restore of msdos/mscdos/mk51swp.bat fails"
Xset `wc -c msdos/mscdos/mk51swp.bat`;Sum=$1
Xif test "$Sum" != "3441"
Xthen echo original size 3441, current size $Sum;fi
Xsed 's/^X//' << 'SHAR_EOF' > msdos/mscdos/optoff.h &&
XX#if _MSC_VER < 600
XX# pragma loop_opt(off)
XX#endif
XSHAR_EOF
Xchmod 0640 msdos/mscdos/optoff.h || echo "restore of msdos/mscdos/optoff.h fails"
Xset `wc -c msdos/mscdos/optoff.h`;Sum=$1
Xif test "$Sum" != "49"
Xthen echo original size 49, current size $Sum;fi
Xsed 's/^X//' << 'SHAR_EOF' > readme/atari.tos &&
XXThis file describes the Atari-tos distribution of dmake.
XX
XXThe code to compile on an Atari-ST using GCC was supplied by Edgar Roeder
XX(roeder at cs.uni-sb.de).  I do not have an ST to verify the distribution sources
XXon but I have no reason to believe them to not work.  If there are any
XXproblems please let Edgar or myself know.
XX
XXI know of no bugs or limitation to the the Atari-ST implementation.  Note that
XXit is similar to the DOS version but it does not swap itself out.  This does
XXnot appear to be as much of a problem on the Atari as it is on MSDOS boxes.
XX
XX-dennis
XSHAR_EOF
Xchmod 0640 readme/atari.tos || echo "restore of readme/atari.tos fails"
Xset `wc -c readme/atari.tos`;Sum=$1
Xif test "$Sum" != "566"
Xthen echo original size 566, current size $Sum;fi
Xsed 's/^X//' << 'SHAR_EOF' > readme/patch1 &&
XXDMAKE Version 3.6, patch #1
XX---------------------------
XX
XXSeverity: Medium
XX
XXNature:   Minor teething problems with UNIX, and major problems with MSC
XX	  6.0, and TCC 2.0 swapping versions fixed.
XX
XXFormat:   Shar containing new versions of affected files.  With appropriate
XX          patches.  (run the patch file through sh in the source distribution
XX          directory and it will do the rest)
XX
XX          Also available as pub/src/dmake-3.6-patch1 on watmsg.uwaterloo.edu
XX          (129.97.129.9)
XX
XX          Archived source on watmsg incorporates this patch.
XX
XXPrerequisites: dmake version 3.6, patchlevel 1 source distribution
XX
XX
XXDescription of Fixes:
XX---------------------
XX1. Compilation problems with Microsoft compilers, and swapping versions of
XX   dmake.  To the best of my knowledge versions 4.0, 5.0, 5.1 and 6.0 of MSC
XX   now fully compile and generate running binaries both for swapping and non
XX   swapping versions of dmake.
XX
XX2. Other fixes include a hack to allow parsing of makefiles shipped over from
XX   DOS that contain cr-lf combinations.  This doesn't seem to impact processing
XX   of normal UNIX makefiles at all.
XX
XX3. Changed DOS versions of tempnam.c to use _psp to generate temporary file
XX   names instead of the current time as supplied by time().  The reason for
XX   this is too bizzare to go into here.
XX
XX4. Xenix is now a supported make target, as is Atari-ST TOS using GCC.
XX
XX5. A number of small tweaks here and there, not serious but might make
XX   compiles on a number of systems cleaner.
XX
XX6. Clarification of the documentation in several spots.
XX
XX7. Patch to dmake.tf to remove ^G control characters.  NOTE:  This patch
XX   may fail if you never received the ^G characters in the first place.  If
XX   so then please apply the patch by hand.
XX
XX8. inferred targets that infer recipes from rules having a .SETDIR attribute
XX   now have the .SETDIR applied prior to making the prerequisites and the
XX   target.
XX
XXMany thanks to all those that helped find and identify and in some cases
XXprovided fixes and/or new code for the above enhancements.
XX
XX-dennis
XSHAR_EOF
Xchmod 0640 readme/patch1 || echo "restore of readme/patch1 fails"
Xset `wc -c readme/patch1`;Sum=$1
Xif test "$Sum" != "2063"
Xthen echo original size 2063, current size $Sum;fi
Xecho mkdir - tos
Xmkdir tos
Xsed 's/^X//' << 'SHAR_EOF' > tos/arlib.c &&
XX/* RCS      -- $Header: /u2/dvadura/src/generic/dmake/src/unix/RCS/arlib.c,v 1.1 90/10/06 12:06:53 dvadura Exp $
XX-- SYNOPSIS -- Unix archive manipulation code.
XX-- 
XX-- DESCRIPTION
XX-- 	Originally this code was provided by Eric Gisin of MKS.  I took
XX--	his code and completely rewrote it adding cacheing of lib members
XX--	and other various optimizations.  I kept the overal functional
XX--	idea of the library routines as they are similar to those in GNU
XX--	make and felt it advantageous to maintain a similar interface.
XX--
XX-- AUTHOR
XX--      Dennis Vadura, dvadura at watdragon.uwaterloo.ca
XX--      CS DEPT, University of Waterloo, Waterloo, Ont., Canada
XX--
XX-- COPYRIGHT
XX--      Copyright (c) 1990 by Dennis Vadura.  All rights reserved.
XX-- 
XX--      This program is free software; you can redistribute it and/or
XX--      modify it under the terms of the GNU General Public License
XX--      (version 1), as published by the Free Software Foundation, and
XX--      found in the file 'LICENSE' included with this distribution.
XX-- 
XX--      This program is distributed in the hope that it will be useful,
XX--      but WITHOUT ANY WARRANTY; without even the implied warrant of
XX--      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
XX--      GNU General Public License for more details.
XX-- 
XX--      You should have received a copy of the GNU General Public License
XX--      along with this program;  if not, write to the Free Software
XX--      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
XX--
XX-- LOG
XX--     $Log:	arlib.c,v $
XX * Revision 1.1  90/10/06  12:06:53  dvadura
XX * dmake Release, Version 3.6
XX * 
XX*/
XX
XX#include "extern.h"
XX#include "sysintf.h"
XX#include <ar.h>
XX#include <stdio.h>
XX
XX/* By defining the defines below it is possible to configure the library
XX * code for library cacheing/non-cacheing, ASCII archive headers, and a full
XX * decode of the ar_hdr fields in the scan_ar function. */
XX
XX#define ASCARCH			1	/* ASCII time stored in archive	*/
XX#define LC			1	/* Turn on library cacheing	*/
XX#define DECODE_ALL_AR_FIELDS	0	/* decode only fields make needs*/
XX
XX#if LC
XX#  define FOUND_MEMBER	FALSE
XX#else
XX#  define FOUND_MEMBER	TRUE
XX#  define _cache_member(a, b, c)
XX#  define _check_cache(a, b, c, d)	FALSE
XX#endif
XX
XX#define	MAXFNAME	32	/* Longest file name in archive	*/
XX#define	MAXMNAME	8	/* Max module name < MAXFNAME	*/
XX
XX
XX/* This struct is used to pass the library and member information about the
XX * routines that perform the library seeking/cacheing */
XXstruct ar_args {
XX   char   *lib;
XX   char   *member;
XX   time_t time;
XX};
XX
XX
XXtypedef struct AR {
XX   char    ar_name[MAXFNAME+1];      /* File name */
XX   long    ar_size;                  /* Size in bytes */
XX   time_t  ar_time;                  /* Modification time */
XX
XX#ifdef DOS
XX   char    ar_modname[MAXMNAME+1];   /* DOS module name */
XX#endif
XX
XX#if DECODE_ALL_AR_FIELDS
XX   uint16  ar_mode;         	     /* File mode */
XX   uint16  ar_uid;            	     /* File owner */
XX   uint16  ar_gid;                   /* File group owner */
XX#endif
XX} AR, *ARPTR;
XX
XX
XXstatic int ar_scan  ANSI((FILE *,
XX			  int (*) ANSI((FILE *, struct AR *, struct ar_args *)),
XX			  struct ar_args *));
XXstatic int ar_touch ANSI(( FILE *, time_t ));
XXstatic int time_function  ANSI(( FILE *, struct AR *, struct ar_args * ));
XXstatic int touch_function ANSI(( FILE *, struct AR *, struct ar_args * ));
XX
XX#if LC
XXstatic int _cache_member ANSI((char *, char *, time_t));
XXstatic int _check_cache  ANSI((char *, char *, time_t *, int));
XX#endif
XX
XX/* decoded archive header */
XXstatic AR _ar;
XX
XX
XXtime_t
XXseek_arch(name, lib)/*
XX======================
XX   Look for module 'name' inside 'lib'.  If compiled with cacheing then first
XX   check to see if the specified lib is cached.  If so then return that time
XX   stamp instead of looking into the library. */
XXchar    *name;
XXchar 	*lib;
XX{
XX   FILE   *f;
XX   int    rv;
XX   time_t mtime;
XX   struct ar_args args;
XX
XX   /* Check the cache first (if there is a cache) */
XX   if( _check_cache(name, lib, &mtime, FALSE) )  return( mtime );
XX
XX   /* Open the lib file and perform the scan of the members, looking
XX    * for our particular member.  If cacheing is enabled it will be
XX    * taken care of automatically during the scan. */
XX
XX   args.lib    = lib;
XX   args.member = name;
XX   args.time   = (time_t)0L;
XX
XX   if( (f = fopen(lib, "rb")) == NIL(FILE) ) return( (time_t)0L );
XX   rv = ar_scan(f, time_function, &args );
XX   fclose( f );
XX
XX   if( rv < 0 ) Fatal("(%s): Invalid library format", lib);
XX
XX   return( args.time );
XX}
XX
XX
XXint
XXtouch_arch(name, lib)/*
XX=======================
XX   Look for module 'name' inside 'lib'.  If compiled with cacheing then first
XX   check to see if the specified lib is cached.  If so then set that time
XX   stamp and write it into the library.  Returns 0 on success, non-zero
XX   on failure. */
XXchar   *name;
XXchar   *lib;
XX{
XX   FILE   *f;
XX   int    rv;
XX   struct ar_args args;
XX
XX   /* Open the lib file and perform the scan of the members, looking
XX    * for our particular member.  If cacheing is enabled it will be
XX    * taken care of automatically during the scan. */
XX
XX   args.lib    = lib;
XX   args.member = name;
XX   args.time   = (time_t)0L;
XX
XX   if( (f = fopen(lib, "rb+")) == NIL(FILE) ) return( (time_t)1L );
XX   rv = ar_scan(f, touch_function, &args );
XX   fclose( f );
XX
XX   if( rv < 0 ) Fatal("(%s): Invalid library format", lib);
XX
XX   return( 0 );
XX}
XX
XX
XX
XXstatic int
XXtime_function(f, arp, argp)/*
XX=============================
XX   get library member's time, if it matches than return it in argp, if
XX   cacheing is enabled than cache the library members also. */
XXFILE           *f;      /* library file          */
XXstruct AR      *arp;    /* library member header */
XXstruct ar_args *argp;
XX{
XX   int rv = _cache_member( arp->ar_name, argp->lib, arp->ar_time );
XX
XX   if( strcmp(argp->member, arp->ar_name) == 0 ) {
XX      argp->time = arp->ar_time;
XX
XX      if( arp->ar_time == 0 && !(Glob_attr & A_SILENT) )
XX         Warning( "(%s): Can't extract library member timestamp; using EPOCH",
XX	          argp->member);
XX
XX      return( rv );  /* 1 => no cacheing, 0 => cacheing */
XX   }
XX
XX   return( FALSE ); /* continue scan */
XX}
XX
XX
XX
XXstatic int
XXtouch_function(f, arp, argp)/*
XX==============================
XX   Update library member's time stamp, and write new time value into cache
XX   if required. */
XXFILE           *f;      /* library file */
XXstruct AR      *arp;    /* library member header */
XXstruct ar_args *argp;
XX{
XX   extern time_t time ANSI(( time_t * ));
XX   time_t now = time((time_t*) NULL);  /* Current time.		  */
XX
XX   if( strcmp(argp->member, arp->ar_name) == 0 ) {
XX      _check_cache( argp->member, argp->lib, &now, TRUE );
XX      ar_touch(f, now );
XX
XX      return( TRUE );
XX   }
XX
XX   return( FALSE ); /* continue scan */
XX}
XX
XX
XX
XX
XXstatic int
XXar_scan(f, function, arg)/*
XX===========================
XX   Scan the opened archive, and call the given function for each member found.
XX   The function will be called with the file positioned at the beginning of
XX   the member and it can read up to arp->ar_size bytes of the archive member.
XX   If the function returns 1, we stop and return 1.  We return 0 at the end
XX   of the archive, or -1 if the archive has invalid format.  This interface
XX   is more general than required by "make", but it can be used by other
XX   utilities.  */
XXregister FILE *f;
XXint      (*function) ANSI((FILE *, struct AR *, struct ar_args *));
XXstruct ar_args *arg;
XX{
XX   extern long atol ANSI((char *));
XX   register char *p;
XX   struct ar_hdr arhdr;   /* external archive header */
XX   off_t         offset;  /* member seek offset      */
XX
XX#if ASCARCH
XX   char magic[SARMAG];
XX#else
XX   unsigned short word;
XX#endif
XX
XX   fseek( f, 0L, 0 );	/* Start at the beginning of the archive file */
XX
XX#if ASCARCH
XX   fread( magic, sizeof(magic), 1, f );
XX   if( strncmp(magic, ARMAG, SARMAG) != 0 ) return( -1 );
XX#else
XX   fread( (char*)&word, sizeof(word), 1, f );
XX   if( word != ARMAG ) return( -1 );
XX#endif
XX
XX   /* scan the library, calling `function' for each member
XX    */
XX   while( 1 ) {
XX      if( fread((char*) &arhdr, sizeof(arhdr), 1, f) != 1 ) break;
XX      offset = ftell(f);
XX      strncpy(_ar.ar_name, arhdr.ar_name, sizeof(arhdr.ar_name));
XX
XX      for( p = &_ar.ar_name[sizeof(arhdr.ar_name)];
XX           --p >= _ar.ar_name && *p == ' ';);
XX
XX      p[1] = '\0';
XX      if( *p == '/' ) *p = 0; 	/* Only SysV has trailing '/' */
XX
XX#if ASCARCH
XX      if( strncmp(arhdr.ar_fmag, ARFMAG, sizeof(arhdr.ar_fmag)) != 0 )
XX         return( -1 );
XX      _ar.ar_time = atol(arhdr.ar_date);
XX      _ar.ar_size = atol(arhdr.ar_size);
XX#else
XX      _ar.ar_time = arhdr.ar_date;
XX      _ar.ar_size = arhdr.ar_size;
XX#endif
XX
XX
XX#if DECODE_ALL_AR_FIELDS
XX#if ASCARCH
XX      _ar.ar_mode = atoi(arhdr.ar_mode);
XX      _ar.ar_uid  = atoi(arhdr.ar_uid);
XX      _ar.ar_gid  = atoi(arhdr.ar_gid);
XX#else
XX      _ar.ar_mode = arhdr.ar_mode;
XX      _ar.ar_size = arhdr.ar_size;
XX      _ar.ar_uid = arhdr.ar_uid;
XX      _ar.ar_gid = arhdr.ar_gid;
XX#endif
XX#endif
XX
XX      if( (*function)(f, &_ar, arg) ) return( 1 );
XX      fseek( f, offset + (_ar.ar_size+1 & ~1L), 0 );
XX   }
XX
XX   if( !feof(f) ) return( -1 );
XX   return 0;
XX}
XX
XX
XX
XXstatic int
XXar_touch( f, now )/*
XX====================
XX   touch module header timestamp. */
XXFILE   *f;
XXtime_t now;
SHAR_EOF
echo "End of part 1, continue with part 2"
echo "2" > s2_seq_.tmp
exit 0
-- 
--------------------------------------------------------------------------------
"This is almost worth the HIGH blood pressure!" he  |Dennis Vadura
thought as yet another mosquito exploded.-R.Patching|dvadura at dragon.uwaterloo.ca
================================================================================



More information about the Comp.sources.bugs mailing list