v14i046: dmake version 3.5 patch 1 part 01/04
Dennis Vadura
dvadura at watdragon.waterloo.edu
Sat Aug 4 09:26:52 AEST 1990
Posting-number: Volume 14, Issue 46
Submitted-by: dvadura at watdragon.waterloo.edu (Dennis Vadura)
Archive-name: dmake/patch01
#!/bin/sh
# shar: Shell Archiver (v1.22)
#
# This is a patch for dmake version 3.5 patchlevel 1.
# No further patches are forthcomming at this time.
#
# See below for a description of the patch, and what it fixes. The four files
# that make up the patch distribution are really another shell archive that
# applies the patch when unpacked.
#
# To apply the patch, unpack the four files that make up the patch to get the
# file dmake-3.5-patch1, and run that through the shell in the root directory
# of the dmake source distribution to apply the patch.
#
# This patch file is also available on watmsg.uwaterloo.ca (129.97.129.9)
# via anonymous ftp from pub/src/dmake-3.5-patch1.
#
# Many thanks to all those out in net-land who have mailed me code and diffs
# to fix the problems they encountered installing dmake. This patch is a
# result of your efforts.
#
# -dennis
# ---------------------------------------------------------------------------
# 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:
# dmake-3.5-patch1
#
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' > dmake-3.5-patch1 &&
X#!/bin/sh
X# dodiff: Directory tree maintainer (v1.1)
X#
X# dmake version 3.5, patch #1
X# ---------------------------
X#
X# Severity: Medium
X#
X# Nature: Minor teething problems with Sequent Dynix, and MSC 6.0,
X# Fix for BSD 4.3 version of putenv.c, numerous other file
X# reorganization changes to better compile on a wider variety of
X# architectures.
X#
X# Format: Shar containing new versions of affected files. With appropriate
X# patches. (run through sh, and it will do the rest)
X#
X# Also available as pub/src/dmake-3.5-patch1 on watmsg.uwaterloo.edu
X# (129.97.129.9)
X#
X# Prerequisites: dmake version 3.5, patchlevel 1 source distribution
X#
X# Description of Fixes:
X# ---------------------
X# - modified _readme.dos
X# - added sysvr1 initial target (SysV 5.0 Relese 1)
X# - renamed macros.h stdmacs.h (some compilers had trouble with this)
X# - renamed dynix subtree to vf subtree and added a bunch of new
X# targets to bootstrap makefile.
X#
X# UNIX:
X# -----
X# - Fix to improve compiles on sequent machines. Added source for
X# memcpy.c and vfprinft.c which are missing from the dynix C
X# libraries. This also comes with a new make.sh and config.mk file
X# in the appropriate directories.
X#
X# - Fix to bsd43 version of putenv.c, If you had an environment macro
X# defined (say ENV=fred), and you exported a macro whose name began
X# with ENV, say ENVTEST then it would replace the value of ENV,
X# defined previously.
X#
X#
X# MSDOS:
X# ------
X# MSC 6.0: - A couple of nasty quirks with MSC compiles have been fixed up.
X# - size_t redefinition is taken care of, by now defining _TYPES_ in
X# msdos/mscdos/config.h
X# - SIGQUIT is not defined in MSDOS, redefined it to some other signal
X# SIGFPE (which wont ever happen since no floating point is used for
X# dmake).
X# - Provide a new response file msdods/mscdos/mscovl.rsp which defines
X# the link modules as two overlays. This reduces the overall
X# memory requirements of dmake at runtime by about 14k.
X# (looking into exeswapping code for dos, have some but not
X# implemented yet)
X#
X# TCC 2.0: - duplicate definition of -I$(osrdir) in CFLAGS macro if uncommented
X# line in msdos/tccdos/config.mk
X# - wrong definition for LDOBJS in msdos/config.mk
X# (my fault, didn't test after small change to source organization)
X#
X# Remove Obsolete files from distribution
Xrm -f unix/runargv.c
Xrm -f unix/bsd43/dynix/startup.mk
Xrm -f unix/bsd43/dynix/make.sh
Xrm -f unix/bsd43/dynix/ctype.h
Xrm -f unix/bsd43/dynix/config.mk
Xrm -f msdos/tccdos/tcc.rsp
Xrm -f common/macros.h
Xrm -fr unix/bsd43/dynix
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# _readme.p1
X# common/stdmacs.h
X# msdos/mscdos/mscovl.rsp
X# unix/386ix/runargv.c
X# unix/bsd43/runargv.c
X# unix/bsd43/vf
X# unix/bsd43/vf/config.mk
X# unix/bsd43/vf/ctype.h
X# unix/bsd43/vf/make.sh
X# unix/bsd43/vf/memcpy.c
X# unix/bsd43/vf/startup.mk
X# unix/bsd43/vf/vfprintf.c
X# unix/sysvr1
X# unix/sysvr1/config.h
X# unix/sysvr1/config.mk
X# unix/sysvr1/make.sh
X# unix/sysvr1/putenv.c
X# unix/sysvr1/runargv.c
X# unix/sysvr1/startup.mk
X# unix/sysvr1/stdarg.h
X# unix/sysvr1/stdlib.h
X# unix/sysvr1/time.h
X# unix/sysvr1/vfprintf.c
X# unix/sysvr3/runargv.c
X#
Xsed 's/^X//' << 'SHAR_EOF' > _readme.p1 &&
XXdmake version 3.5, patch #1
XX---------------------------
XX
XXSeverity: Medium
XX
XXNature: Minor teething problems with Sequent Dynix, and MSC 6.0,
XX Fix for BSD 4.3 version of putenv.c, numerous other file
XX reorganization changes to better compile on a wider variety of
XX architectures.
XX
XXFormat: Shar containing new versions of affected files. With appropriate
XX patches. (run through sh, and it will do the rest)
XX
XX Also available as pub/src/dmake-3.5-patch1 on watmsg.uwaterloo.edu
XX (129.97.129.9)
XX
XXPrerequisites: dmake version 3.5, patchlevel 1 source distribution
XX
XXDescription of Fixes:
XX---------------------
XX - modified _readme.dos
XX - added sysvr1 initial target (SysV 5.0 Relese 1)
XX - renamed macros.h stdmacs.h (some compilers had trouble with this)
XX - renamed dynix subtree to vf subtree and added a bunch of new
XX targets to bootstrap makefile.
XX
XXUNIX:
XX-----
XX - Fix to improve compiles on sequent machines. Added source for
XX memcpy.c and vfprinft.c which are missing from the dynix C
XX libraries. This also comes with a new make.sh and config.mk file
XX in the appropriate directories.
XX
XX - Fix to bsd43 version of putenv.c, If you had an environment macro
XX defined (say ENV=fred), and you exported a macro whose name began
XX with ENV, say ENVTEST then it would replace the value of ENV,
XX defined previously.
XX
XX
XXMSDOS:
XX------
XXMSC 6.0: - A couple of nasty quirks with MSC compiles have been fixed up.
XX - size_t redefinition is taken care of, by now defining _TYPES_ in
XX msdos/mscdos/config.h
XX - SIGQUIT is not defined in MSDOS, redefined it to some other signal
XX SIGFPE (which wont ever happen since no floating point is used for
XX dmake).
XX - Provide a new response file msdods/mscdos/mscovl.rsp which defines
XX the link modules as two overlays. This reduces the overall
XX memory requirements of dmake at runtime by about 14k.
XX (looking into exeswapping code for dos, have some but not
XX implemented yet)
XX
XXTCC 2.0: - duplicate definition of -I$(osrdir) in CFLAGS macro if uncommented
XX line in msdos/tccdos/config.mk
XX - wrong definition for LDOBJS in msdos/config.mk
XX (my fault, didn't test after small change to source organization)
XSHAR_EOF
Xchmod 0640 _readme.p1 || echo "restore of _readme.p1 fails"
Xset `wc -c _readme.p1`;Sum=$1
Xif test "$Sum" != "2435"
Xthen echo original size 2435, current size $Sum;fi
Xsed 's/^X//' << 'SHAR_EOF' > common/stdmacs.h &&
XX/* RCS -- $Header: /u2/dvadura/src/generic/dmake/src/common/RCS/stdmacs.h,v 1.1 90/07/31 11:09:19 dvadura Exp $
XX-- SYNOPSIS -- general use macros.
XX--
XX-- DESCRIPTION
XX-- ANSI macro relies on the fact that it can be replaced by (), or by
XX-- its value, where the value is one value due to the preprocessors
XX-- handling of arguments that are surrounded by ()'s as a single
XX-- argument.
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: stdmacs.h,v $
XX * Revision 1.1 90/07/31 11:09:19 dvadura
XX * Initial Revison Dmake 3.5
XX *
XX*/
XX
XX#ifndef MACROS_h
XX#define MACROS_h
XX
XX#if defined(__STDC__) || defined(__TURBOC__)
XX#define ANSI(x) x
XX#else
XX#define ANSI(x) ()
XX#endif
XX
XX#define NIL(p) ((p*)NULL)
XX#define offsetof(type,id) ((size_t)&((type*)NULL)->id)
XX
XX#define FALSE 0
XX#define TRUE 1
XX
XX#endif
XX
XSHAR_EOF
Xchmod 0440 common/stdmacs.h || echo "restore of common/stdmacs.h fails"
Xset `wc -c common/stdmacs.h`;Sum=$1
Xif test "$Sum" != "1738"
Xthen echo original size 1738, current size $Sum;fi
Xsed 's/^X//' << 'SHAR_EOF' > msdos/mscdos/mscovl.rsp &&
XX( objects\infer.obj+ objects\make.obj+ objects\stat.obj+ objects\path.obj+
XX objects\basename.obj+ objects\runargv.obj+ objects\arlib.obj+
XX objects\rmprq.obj+ objects\tempnam.obj )+
XX( objects\imacs.obj+ objects\parse.obj+ objects\dump.obj+ objects\macparse.obj+
XX objects\rulparse.obj+ objects\ruletab.obj+ objects\switchar.obj )+
XXobjects\expand.obj+
XXobjects\string.obj+
XXobjects\hash.obj+
XXobjects\dag.obj+
XXobjects\dmake.obj+
XXobjects\sysintf.obj+
XXobjects\getinp.obj+
XXobjects\quit.obj+
XXobjects\percent.obj+
XXobjects\dirbrk.obj+
XXobjects\_chdir.obj
XSHAR_EOF
Xchmod 0640 msdos/mscdos/mscovl.rsp || echo "restore of msdos/mscdos/mscovl.rsp fails"
Xset `wc -c msdos/mscdos/mscovl.rsp`;Sum=$1
Xif test "$Sum" != "545"
Xthen echo original size 545, current size $Sum;fi
Xsed 's/^X//' << 'SHAR_EOF' > unix/386ix/runargv.c &&
XX/* RCS -- $Header: /u2/dvadura/src/generic/dmake/src/unix/386ix/RCS/runargv.c,v 1.1 90/07/31 10:49:16 dvadura Exp $
XX-- SYNOPSIS -- invoke a sub process.
XX--
XX-- DESCRIPTION
XX-- Use the standard methods of executing a sub process.
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: runargv.c,v $
XX * Revision 1.1 90/07/31 10:49:16 dvadura
XX * Initial Revision Dmake 3.5
XX *
XX * Revision 1.1 90/07/20 16:54:53 dvadura
XX * Initial Revision of Version 3.5
XX *
XX*/
XX
XX#include <signal.h>
XX#include "extern.h"
XX#include "sysintf.h"
XX#include "alloc.h"
XX
XXtypedef struct prp {
XX char *prp_cmd;
XX int prp_group;
XX int prp_ignore;
XX int prp_last;
XX struct prp *prp_next;
XX char *prp_dir;
XX} RCP, *RCPPTR;
XX
XXtypedef struct pr {
XX int pr_valid;
XX int pr_pid;
XX CELLPTR pr_target;
XX HOWPTR pr_how;
XX int pr_ignore;
XX int pr_last;
XX RCPPTR pr_recipe;
XX RCPPTR pr_recipe_end;
XX} PR;
XX
XXstatic PR *_procs = NIL(PR);
XXstatic int _proc_cnt = 0;
XXstatic int _abort_flg= FALSE;
XXstatic int _use_i = -1;
XXstatic int _do_upd = 0;
XX
XXstatic void _add_child ANSI((int, CELLPTR, HOWPTR, int, int));
XXstatic void _attach_cmd ANSI((char *, int, int, CELLPTR, HOWPTR, int));
XXstatic void _finished_child ANSI((int, int));
XXstatic int _running ANSI((CELLPTR, HOWPTR));
XX
XXint
XXrunargv(target, how, ignore, group, last, cmd)
XXCELLPTR target;
XXHOWPTR how;
XXint ignore;
XXint group;
XXint last;
XXchar *cmd;
XX{
XX extern int errno;
XX extern char *sys_errlist[];
XX int pid;
XX char *argv[MAXARGV];
XX
XX if( _running(target, how) /*&& Max_proc != 1*/ ) {
XX /* The command will be executed when the previous recipe
XX * line completes. */
XX _attach_cmd( cmd, group, ignore, target, how, last );
XX return(1);
XX }
XX
XX Pack_argv( argv, MAXARGV, group, cmd );
XX
XX while( _proc_cnt == Max_proc )
XX if( Wait_for_child(FALSE, -1) == -1 ) Fatal( "Lost a child" );
XX
XX switch( pid=fork() ){
XX int wid;
XX int status;
XX
XX case -1: /* fork failed */
XX Error("%s: %s", argv[0], sys_errlist[errno]);
XX Handle_result(-1, ignore, _abort_flg, target);
XX return(-1);
XX
XX case 0: /* child */
XX execvp(argv[0], argv);
XX Continue = TRUE; /* survive error message */
XX Error("%s: %s", argv[0], sys_errlist[errno]);
XX kill(getpid(), SIGTERM);
XX /*NOTREACHED*/
XX
XX default: /* parent */
XX _add_child(pid, target, how, ignore, last);
XX }
XX
XX return(1);
XX}
XX
XX
XXint
XXWait_for_child( abort_flg, pid )
XXint abort_flg;
XXint pid;
XX{
XX int wid;
XX int status;
XX int waitchild;
XX
XX waitchild = (pid == -1)? FALSE : Wait_for_completion;
XX
XX do {
XX if( (wid = wait(&status)) == -1 ) return(-1);
XX
XX _abort_flg = abort_flg;
XX _finished_child(wid, status);
XX _abort_flg = FALSE;
XX }
XX while( waitchild && pid != wid );
XX
XX return(0);
XX}
XX
XX
XXvoid
XXClean_up_processes()
XX{
XX register int i;
XX
XX if( _procs != NIL(PR) ) {
XX for( i=0; i<Max_proc; i++ )
XX if( _procs[i].pr_valid )
XX kill(_procs[i].pr_pid, SIGTERM);
XX
XX while( Wait_for_child(TRUE, -1) != -1 );
XX }
XX}
XX
XX
XXstatic void
XX_add_child( pid, target, how, ignore, last )
XXint pid;
XXCELLPTR target;
XXHOWPTR how;
XXint ignore;
XXint last;
XX{
XX register int i;
XX register PR *pp;
XX
XX if( _procs == NIL(PR) ) {
XX TALLOC( _procs, Max_proc, PR );
XX }
XX
XX if( (i = _use_i) == -1 )
XX for( i=0; i<Max_proc; i++ )
XX if( !_procs[i].pr_valid )
XX break;
XX
XX pp = _procs+i;
XX
XX pp->pr_valid = 1;
XX pp->pr_pid = pid;
XX pp->pr_target = target;
XX pp->pr_how = how;
XX pp->pr_ignore = ignore;
XX pp->pr_last = last;
XX
XX Current_target = NIL(HOW);
XX
XX _proc_cnt++;
XX
XX if( Wait_for_completion ) Wait_for_child( FALSE, pid );
XX}
XX
XX
XXstatic void
XX_finished_child(pid, status)
XXint pid;
XXint status;
XX{
XX register int i;
XX register PR *pp;
XX
XX for( i=0; i<Max_proc; i++ )
XX if( _procs[i].pr_valid && _procs[i].pr_pid == pid )
XX break;
XX
XX _procs[i].pr_valid = 0;
XX _proc_cnt--;
XX
XX if( _procs[i].pr_recipe != NIL(RCP) && !_abort_flg ) {
XX RCPPTR rp = _procs[i].pr_recipe;
XX char *dir;
XX
XX Current_target = _procs[i].pr_how;
XX Handle_result( status, _procs[i].pr_ignore, FALSE, _procs[i].pr_target );
XX Current_target = NIL(HOW);
XX
XX _procs[i].pr_recipe = rp->prp_next;
XX
XX _use_i = i;
XX dir = _strdup(Get_current_dir());
XX Set_dir( rp->prp_dir );
XX runargv( _procs[i].pr_target, _procs[i].pr_how, rp->prp_ignore,
XX rp->prp_group, rp->prp_last, rp->prp_cmd );
XX Set_dir(dir);
XX FREE(dir);
XX FREE(rp->prp_dir);
XX _use_i = -1;
XX
XX FREE( rp->prp_cmd );
XX FREE( rp );
XX
XX if( _proc_cnt == Max_proc ) Wait_for_child( FALSE, -1 );
XX }
XX else {
XX Unlink_temp_files( _procs[i].pr_how );
XX Handle_result(status,_procs[i].pr_ignore,_abort_flg,_procs[i].pr_target);
XX
XX if( _procs[i].pr_last && !Doing_bang )
XX Update_time_stamp( _procs[i].pr_target, _procs[i].pr_how );
XX }
XX}
XX
XX
XXstatic int
XX_running( cp, how )
XXCELLPTR cp;
XXHOWPTR how;
XX{
XX register int i;
XX
XX if( !_procs ) return(FALSE);
XX
XX for( i=0; i<Max_proc; i++ )
XX if( _procs[i].pr_valid &&
XX _procs[i].pr_how == how &&
XX _procs[i].pr_target == cp )
XX break;
XX
XX return( i != Max_proc );
XX}
XX
XX
XXstatic void
XX_attach_cmd( cmd, group, ignore, cp, how, last )
XXchar *cmd;
XXint group;
XXint ignore;
XXCELLPTR cp;
XXHOWPTR how;
XXint last;
XX{
XX register int i;
XX RCPPTR rp;
XX
XX for( i=0; i<Max_proc; i++ )
XX if( _procs[i].pr_valid &&
XX _procs[i].pr_how == how &&
XX _procs[i].pr_target == cp )
XX break;
XX
XX TALLOC( rp, 1, RCP );
XX rp->prp_cmd = _strdup(cmd);
XX rp->prp_group = group;
XX rp->prp_ignore= ignore;
XX rp->prp_last = last;
XX rp->prp_dir = _strdup(Get_current_dir());
XX
XX if( _procs[i].pr_recipe == NIL(RCP) )
XX _procs[i].pr_recipe = _procs[i].pr_recipe_end = rp;
XX else {
XX _procs[i].pr_recipe_end->prp_next = rp;
XX _procs[i].pr_recipe_end = rp;
XX }
XX}
XSHAR_EOF
Xchmod 0440 unix/386ix/runargv.c || echo "restore of unix/386ix/runargv.c fails"
Xset `wc -c unix/386ix/runargv.c`;Sum=$1
Xif test "$Sum" != "6805"
Xthen echo original size 6805, current size $Sum;fi
Xsed 's/^X//' << 'SHAR_EOF' > unix/bsd43/runargv.c &&
XX/* RCS -- $Header: /u2/dvadura/src/generic/dmake/src/unix/bsd43/RCS/runargv.c,v 1.1 90/07/31 10:48:36 dvadura Exp $
XX-- SYNOPSIS -- invoke a sub process.
XX--
XX-- DESCRIPTION
XX-- Use the standard methods of executing a sub process.
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: runargv.c,v $
XX * Revision 1.1 90/07/31 10:48:36 dvadura
XX * Initial Revision Dmake 3.5
XX *
XX*/
XX
XX#include <signal.h>
XX#include "extern.h"
XX#include "sysintf.h"
XX#include "alloc.h"
XX
XXtypedef struct prp {
XX char *prp_cmd;
XX int prp_group;
XX int prp_ignore;
XX int prp_last;
XX struct prp *prp_next;
XX char *prp_dir;
XX} RCP, *RCPPTR;
XX
XXtypedef struct pr {
XX int pr_valid;
XX int pr_pid;
XX CELLPTR pr_target;
XX HOWPTR pr_how;
XX int pr_ignore;
XX int pr_last;
XX RCPPTR pr_recipe;
XX RCPPTR pr_recipe_end;
XX} PR;
XX
XXstatic PR *_procs = NIL(PR);
XXstatic int _proc_cnt = 0;
XXstatic int _abort_flg= FALSE;
XXstatic int _use_i = -1;
XXstatic int _do_upd = 0;
XX
XXstatic void _add_child ANSI((int, CELLPTR, HOWPTR, int, int));
XXstatic void _attach_cmd ANSI((char *, int, int, CELLPTR, HOWPTR, int));
XXstatic void _finished_child ANSI((int, int));
XXstatic int _running ANSI((CELLPTR, HOWPTR));
XX
XXint
XXrunargv(target, how, ignore, group, last, cmd)
XXCELLPTR target;
XXHOWPTR how;
XXint ignore;
XXint group;
XXint last;
XXchar *cmd;
XX{
XX extern int errno;
XX extern char *sys_errlist[];
XX int pid;
XX char *argv[MAXARGV];
XX
XX if( _running(target, how) /*&& Max_proc != 1*/ ) {
XX /* The command will be executed when the previous recipe
XX * line completes. */
XX _attach_cmd( cmd, group, ignore, target, how, last );
XX return(1);
XX }
XX
XX Pack_argv( argv, MAXARGV, group, cmd );
XX
XX while( _proc_cnt == Max_proc )
XX if( Wait_for_child(FALSE, -1) == -1 ) Fatal( "Lost a child" );
XX
XX switch( pid=fork() ){
XX int wid;
XX int status;
XX
XX case -1: /* fork failed */
XX Error("%s: %s", argv[0], sys_errlist[errno]);
XX Handle_result(-1, ignore, _abort_flg, target);
XX return(-1);
XX
XX case 0: /* child */
XX execvp(argv[0], argv);
XX Continue = TRUE; /* survive error message */
XX Error("%s: %s", argv[0], sys_errlist[errno]);
XX kill(getpid(), SIGTERM);
XX /*NOTREACHED*/
XX
XX default: /* parent */
XX _add_child(pid, target, how, ignore, last);
XX }
XX
XX return(1);
XX}
XX
XX
XXint
XXWait_for_child( abort_flg, pid )
XXint abort_flg;
XXint pid;
XX{
XX int wid;
XX int status;
XX int waitchild;
XX
XX waitchild = (pid == -1)? FALSE : Wait_for_completion;
XX
XX do {
XX if( (wid = wait(&status)) == -1 ) return(-1);
XX
XX _abort_flg = abort_flg;
XX _finished_child(wid, status);
XX _abort_flg = FALSE;
XX }
XX while( waitchild && pid != wid );
XX
XX return(0);
XX}
XX
XX
XXvoid
XXClean_up_processes()
XX{
XX register int i;
XX
XX if( _procs != NIL(PR) ) {
XX for( i=0; i<Max_proc; i++ )
XX if( _procs[i].pr_valid )
XX kill(_procs[i].pr_pid, SIGTERM);
XX
XX while( Wait_for_child(TRUE, -1) != -1 );
XX }
XX}
XX
XX
XXstatic void
XX_add_child( pid, target, how, ignore, last )
XXint pid;
XXCELLPTR target;
XXHOWPTR how;
XXint ignore;
XXint last;
XX{
XX register int i;
XX register PR *pp;
XX
XX if( _procs == NIL(PR) ) {
XX TALLOC( _procs, Max_proc, PR );
XX }
XX
XX if( (i = _use_i) == -1 )
XX for( i=0; i<Max_proc; i++ )
XX if( !_procs[i].pr_valid )
XX break;
XX
XX pp = _procs+i;
XX
XX pp->pr_valid = 1;
XX pp->pr_pid = pid;
XX pp->pr_target = target;
XX pp->pr_how = how;
XX pp->pr_ignore = ignore;
XX pp->pr_last = last;
XX
XX Current_target = NIL(HOW);
XX
XX _proc_cnt++;
XX
XX if( Wait_for_completion ) Wait_for_child( FALSE, pid );
XX}
XX
XX
XXstatic void
XX_finished_child(pid, status)
XXint pid;
XXint status;
XX{
XX register int i;
XX register PR *pp;
XX
XX for( i=0; i<Max_proc; i++ )
XX if( _procs[i].pr_valid && _procs[i].pr_pid == pid )
XX break;
XX
XX _procs[i].pr_valid = 0;
XX _proc_cnt--;
XX
XX if( _procs[i].pr_recipe != NIL(RCP) && !_abort_flg ) {
XX RCPPTR rp = _procs[i].pr_recipe;
XX char *dir;
XX
XX Current_target = _procs[i].pr_how;
XX Handle_result( status, _procs[i].pr_ignore, FALSE, _procs[i].pr_target );
XX Current_target = NIL(HOW);
XX
XX _procs[i].pr_recipe = rp->prp_next;
XX
XX _use_i = i;
XX dir = _strdup(Get_current_dir());
XX Set_dir( rp->prp_dir );
XX runargv( _procs[i].pr_target, _procs[i].pr_how, rp->prp_ignore,
XX rp->prp_group, rp->prp_last, rp->prp_cmd );
XX Set_dir(dir);
XX FREE(dir);
XX FREE(rp->prp_dir);
XX _use_i = -1;
XX
XX FREE( rp->prp_cmd );
XX FREE( rp );
XX
XX if( _proc_cnt == Max_proc ) Wait_for_child( FALSE, -1 );
XX }
XX else {
XX Unlink_temp_files( _procs[i].pr_how );
XX Handle_result(status,_procs[i].pr_ignore,_abort_flg,_procs[i].pr_target);
XX
XX if( _procs[i].pr_last && !Doing_bang )
XX Update_time_stamp( _procs[i].pr_target, _procs[i].pr_how );
XX }
XX}
XX
XX
XXstatic int
XX_running( cp, how )
XXCELLPTR cp;
XXHOWPTR how;
XX{
XX register int i;
XX
XX if( !_procs ) return(FALSE);
XX
XX for( i=0; i<Max_proc; i++ )
XX if( _procs[i].pr_valid &&
XX _procs[i].pr_how == how &&
XX _procs[i].pr_target == cp )
XX break;
XX
XX return( i != Max_proc );
XX}
XX
XX
XXstatic void
XX_attach_cmd( cmd, group, ignore, cp, how, last )
XXchar *cmd;
XXint group;
XXint ignore;
XXCELLPTR cp;
XXHOWPTR how;
XXint last;
XX{
XX register int i;
XX RCPPTR rp;
XX
XX for( i=0; i<Max_proc; i++ )
XX if( _procs[i].pr_valid &&
XX _procs[i].pr_how == how &&
XX _procs[i].pr_target == cp )
XX break;
XX
XX TALLOC( rp, 1, RCP );
XX rp->prp_cmd = _strdup(cmd);
XX rp->prp_group = group;
XX rp->prp_ignore= ignore;
XX rp->prp_last = last;
XX rp->prp_dir = _strdup(Get_current_dir());
XX
XX if( _procs[i].pr_recipe == NIL(RCP) )
XX _procs[i].pr_recipe = _procs[i].pr_recipe_end = rp;
XX else {
XX _procs[i].pr_recipe_end->prp_next = rp;
XX _procs[i].pr_recipe_end = rp;
XX }
XX}
XSHAR_EOF
Xchmod 0440 unix/bsd43/runargv.c || echo "restore of unix/bsd43/runargv.c fails"
Xset `wc -c unix/bsd43/runargv.c`;Sum=$1
Xif test "$Sum" != "6721"
Xthen echo original size 6721, current size $Sum;fi
Xecho mkdir - unix/bsd43/vf
Xmkdir unix/bsd43/vf
Xsed 's/^X//' << 'SHAR_EOF' > unix/bsd43/vf/config.mk &&
XX# This config file adds vfprintf.c and memcpy.c for those systems that
XX# do not have it.
XX#
XX
XXosredir := $(OS)$(DIRSEPSTR)$(OSRELEASE)$(DIRSEPSTR)$(OSENVIRONMENT)
XX
XX# The following sources are required for BSD4.3
XXOSDESRC := memcpy.c vfprintf.c
XXSRC += $(OSDESRC)
XX.SETDIR=$(osredir) : $(OSDESRC)
XX
XXCFLAGS += -I$(osrdir)$(DIRSEPSTR)$(OSENVIRONMENT)
XSHAR_EOF
Xchmod 0640 unix/bsd43/vf/config.mk || echo "restore of unix/bsd43/vf/config.mk fails"
Xset `wc -c unix/bsd43/vf/config.mk`;Sum=$1
Xif test "$Sum" != "345"
Xthen echo original size 345, current size $Sum;fi
Xsed 's/^X//' << 'SHAR_EOF' > unix/bsd43/vf/ctype.h &&
XX/* ctype.h 4.2 85/09/04 */
XX
XX#define _U 01
XX#define _L 02
XX#define _N 04
XX#define _S 010
XX#define _P 020
XX#define _C 040
XX#define _X 0100
XX#define _B 0200
XX
XXextern char _ctype_[];
XX
XX#define isalpha(c) ((_ctype_+1)[c]&(_U|_L))
XX#define isupper(c) ((_ctype_+1)[c]&_U)
XX#define islower(c) ((_ctype_+1)[c]&_L)
XX#define isdigit(c) ((_ctype_+1)[c]&_N)
XX#define isxdigit(c) ((_ctype_+1)[c]&(_N|_X))
XX#define isspace(c) ((_ctype_+1)[c]&_S)
XX#define ispunct(c) ((_ctype_+1)[c]&_P)
XX#define isalnum(c) ((_ctype_+1)[c]&(_U|_L|_N))
XX#define isprint(c) ((_ctype_+1)[c]&(_P|_U|_L|_N|_B))
XX#define isgraph(c) ((_ctype_+1)[c]&(_P|_U|_L|_N))
XX#define iscntrl(c) ((_ctype_+1)[c]&_C)
XX#define isascii(c) ((unsigned)(c)<=0177)
XX#define toupper(c) ((c)-'a'+'A')
XX#define tolower(c) ((c)-'A'+'a')
XX#define toascii(c) ((c)&0177)
XSHAR_EOF
Xchmod 0440 unix/bsd43/vf/ctype.h || echo "restore of unix/bsd43/vf/ctype.h fails"
Xset `wc -c unix/bsd43/vf/ctype.h`;Sum=$1
Xif test "$Sum" != "782"
Xthen echo original size 782, current size $Sum;fi
Xsed 's/^X//' << 'SHAR_EOF' > unix/bsd43/vf/make.sh &&
XXmkdir objects
XXcc -c -DHELP -I. -Icommon -Iunix -Iunix/bsd43 -Iunix/bsd43/vf -O infer.c
XXmv infer.o objects
XXcc -c -DHELP -I. -Icommon -Iunix -Iunix/bsd43 -Iunix/bsd43/vf -O make.c
XXmv make.o objects
XXcc -c -DHELP -I. -Icommon -Iunix -Iunix/bsd43 -Iunix/bsd43/vf -O stat.c
XXmv stat.o objects
XXcc -c -DHELP -I. -Icommon -Iunix -Iunix/bsd43 -Iunix/bsd43/vf -O expand.c
XXmv expand.o objects
XXcc -c -DHELP -I. -Icommon -Iunix -Iunix/bsd43 -Iunix/bsd43/vf -O string.c
XXmv string.o objects
XXcc -c -DHELP -I. -Icommon -Iunix -Iunix/bsd43 -Iunix/bsd43/vf -O hash.c
XXmv hash.o objects
XXcc -c -DHELP -I. -Icommon -Iunix -Iunix/bsd43 -Iunix/bsd43/vf -O dag.c
XXmv dag.o objects
XXcc -c -DHELP -I. -Icommon -Iunix -Iunix/bsd43 -Iunix/bsd43/vf -O dmake.c
XXmv dmake.o objects
XXcc -c -DHELP -I. -Icommon -Iunix -Iunix/bsd43 -Iunix/bsd43/vf -O path.c
XXmv path.o objects
XXcc -c -DHELP -I. -Icommon -Iunix -Iunix/bsd43 -Iunix/bsd43/vf -O imacs.c
XXmv imacs.o objects
XXcc -c -DHELP -I. -Icommon -Iunix -Iunix/bsd43 -Iunix/bsd43/vf -O sysintf.c
XXmv sysintf.o objects
XXcc -c -DHELP -I. -Icommon -Iunix -Iunix/bsd43 -Iunix/bsd43/vf -O parse.c
XXmv parse.o objects
XXcc -c -DHELP -I. -Icommon -Iunix -Iunix/bsd43 -Iunix/bsd43/vf -O getinp.c
XXmv getinp.o objects
XXcc -c -DHELP -I. -Icommon -Iunix -Iunix/bsd43 -Iunix/bsd43/vf -O quit.c
XXmv quit.o objects
XXcc -c -DHELP -I. -Icommon -Iunix -Iunix/bsd43 -Iunix/bsd43/vf -O basename.c
XXmv basename.o objects
XXcc -c -DHELP -I. -Icommon -Iunix -Iunix/bsd43 -Iunix/bsd43/vf -O dump.c
XXmv dump.o objects
XXcc -c -DHELP -I. -Icommon -Iunix -Iunix/bsd43 -Iunix/bsd43/vf -O macparse.c
XXmv macparse.o objects
XXcc -c -DHELP -I. -Icommon -Iunix -Iunix/bsd43 -Iunix/bsd43/vf -O rulparse.c
XXmv rulparse.o objects
XXcc -c -DHELP -I. -Icommon -Iunix -Iunix/bsd43 -Iunix/bsd43/vf -O percent.c
XXmv percent.o objects
XXcc -c -DHELP -I. -Icommon -Iunix -Iunix/bsd43 -Iunix/bsd43/vf -O unix/arlib.c
XXmv arlib.o objects
XXcc -c -DHELP -I. -Icommon -Iunix -Iunix/bsd43 -Iunix/bsd43/vf -O unix/dirbrk.c
XXmv dirbrk.o objects
XXcc -c -DHELP -I. -Icommon -Iunix -Iunix/bsd43 -Iunix/bsd43/vf -O unix/explode.c
XXmv explode.o objects
XXcc -c -DHELP -I. -Icommon -Iunix -Iunix/bsd43 -Iunix/bsd43/vf -O unix/rmprq.c
XXmv rmprq.o objects
XXcc -c -DHELP -I. -Icommon -Iunix -Iunix/bsd43 -Iunix/bsd43/vf -O unix/ruletab.c
XXmv ruletab.o objects
XXcc -c -DHELP -I. -Icommon -Iunix -Iunix/bsd43 -Iunix/bsd43/vf -O unix/bsd43/putenv.c
XXmv putenv.o objects
XXcc -c -DHELP -I. -Icommon -Iunix -Iunix/bsd43 -Iunix/bsd43/vf -O unix/bsd43/tempnam.c
XXmv tempnam.o objects
XXcc -c -DHELP -I. -Icommon -Iunix -Iunix/bsd43 -Iunix/bsd43/vf -O unix/bsd43/utime.c
XXmv utime.o objects
XXcc -c -DHELP -I. -Icommon -Iunix -Iunix/bsd43 -Iunix/bsd43/vf -O unix/bsd43/setvbuf.c
XXmv setvbuf.o objects
XXcc -c -DHELP -I. -Icommon -Iunix -Iunix/bsd43 -Iunix/bsd43/vf -O unix/bsd43/runargv.c
XXmv runargv.o objects
XXcc -c -DHELP -I. -Icommon -Iunix -Iunix/bsd43 -Iunix/bsd43/vf -O unix/bsd43/vf/memcpy.c
XXmv memcpy.o objects
XXcc -c -DHELP -I. -Icommon -Iunix -Iunix/bsd43 -Iunix/bsd43/vf -O unix/bsd43/vf/vfprintf.c
XXmv vfprintf.o objects
XXcc -o dmake objects/infer.o objects/make.o objects/stat.o objects/expand.o objects/string.o objects/hash.o objects/dag.o objects/dmake.o objects/path.o objects/imacs.o objects/sysintf.o objects/parse.o objects/getinp.o objects/quit.o objects/basename.o objects/dump.o objects/macparse.o objects/rulparse.o objects/percent.o objects/arlib.o objects/dirbrk.o objects/explode.o objects/rmprq.o objects/ruletab.o objects/putenv.o objects/tempnam.o objects/utime.o objects/setvbuf.o objects/runargv.o objects/mem
cpy.o objects/vfprintf.o
XSHAR_EOF
Xchmod 0640 unix/bsd43/vf/make.sh || echo "restore of unix/bsd43/vf/make.sh fails"
Xset `wc -c unix/bsd43/vf/make.sh`;Sum=$1
Xif test "$Sum" != "3588"
Xthen echo original size 3588, current size $Sum;fi
Xsed 's/^X//' << 'SHAR_EOF' > unix/bsd43/vf/memcpy.c &&
XXchar *
XXmemcpy(t, f, n)
XXregister char *t, *f;
XXregister n;
XX{
XX register char *p = t;
XX
XX while( --n >= 0 ) *t++ = *f++;
XX
XX return (p);
XX}
XSHAR_EOF
Xchmod 0440 unix/bsd43/vf/memcpy.c || echo "restore of unix/bsd43/vf/memcpy.c fails"
Xset `wc -c unix/bsd43/vf/memcpy.c`;Sum=$1
Xif test "$Sum" != "137"
Xthen echo original size 137, current size $Sum;fi
Xsed 's/^X//' << 'SHAR_EOF' > unix/bsd43/vf/startup.mk &&
XX# Generic UNIX DMAKE startup file. Customize to suit your needs.
XX# Should work for both SYSV, and BSD 4.3
XX# See the documentation for a description of internally defined macros.
XX#
XX# Disable warnings for macros redefined here that were given
XX# on the command line.
XX__.SILENT := $(.SILENT)
XX.SILENT := yes
XX
XX# Configuration parameters for DMAKE startup.mk file
XX# Set these to NON-NULL if you wish to turn the parameter on.
XX_HAVE_RCS := yes # yes => RCS is installed.
XX_HAVE_SCCS := yes # yes => SCCS is installed.
XX
XX# Applicable suffix definitions
XXA := .a # Libraries
XXE := # Executables
XXF := .f # Fortran
XXO := .o # Objects
XXP := .p # Pascal
XXS := .s # Assembler sources
XXV := ,v # RCS suffix
XX
XX# Recipe execution configurations
XXSHELL := /bin/sh
XXSHELLFLAGS := -ce
XXGROUPSHELL := $(SHELL)
XXGROUPFLAGS :=
XXSHELLMETAS := |();&<>?*][$$:\\#`'"
XXGROUPSUFFIX :=
XX
XX# Standard C-language command names and flags
XX CPP := /lib/cpp # C-preprocessor
XX CC := cc # C-compiler and flags
XX CFLAGS =
XX
XX AS := as # Assembler and flags
XX ASFLAGS =
XX
XX LD = $(CC) # Loader and flags
XX LDFLAGS =
XX LDLIBS =
XX
XX# Definition of $(MAKE) macro for recursive makes.
XX MAKE = $(MAKECMD) $(MFLAGS)
XX
XX# Definition of Print command for this system.
XX PRINT = lpr
XX
XX# Language and Parser generation Tools and their flags
XX YACC := yacc # standard yacc
XX YFLAGS =
XX YTAB := y.tab # yacc output files name stem.
XX
XX LEX := lex # standard lex
XX LFLAGS =
XX LEXYY := lex.yy # lex output file
XX
XX# Other Compilers, Tools and their flags
XX PC := pc # pascal compiler
XX RC := f77 # ratfor compiler
XX FC := f77 # fortran compiler
XX
XX CO := co # check out for RCS
XX COFLAGS := -q
XX
XX AR := ar # archiver
XX ARFLAGS = ruv
XX
XX RM := /bin/rm # remove a file command
XX RMFLAGS =
XX
XX# Implicit generation rules for making inferences.
XX# We don't provide .yr or .ye rules here. They're obsolete.
XX# Rules for making *$O
XX %$O : %.c ; $(CC) $(CFLAGS) -c $<
XX %$O : %$P ; $(PC) $(PFLAGS) -c $<
XX %$O : %$S ; $(AS) $<
XX %$O : %.cl ; class -c $<
XX %$O : %.e %.r %.F %$F
XX $(FC) $(RFLAGS) $(EFLAGS) $(FFLAGS) -c $<
XX
XX# Executables
XX %$E : %$O ; $(LD) $(LDFLAGS) -o $@ $< $(LDLIBES)
XX
XX# lex and yacc rules
XX %.c : %.y ; $(YACC) $(YFLAGS) $<; mv $(YTAB).c $@
XX %.c : %.l ; $(LEX) $(LFLAGS) $<; mv $(LEXYY).c $@
XX
XX# This rule tells how to make *.out from it's immediate list of prerequisites
XX# UNIX only.
XX %.out :; $(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS)
XX
XX# RCS support
XX.IF $(_HAVE_RCS)
XX % : %$V $$(@:d)RCS/$$(@:f)$V;- $(CO) $(COFLAGS) $@
XX .NOINFER : %$V $$(@:d)RCS/$$(@:f)$V
XX.END
XX
XX# SCCS support
XX.IF $(_HAVE_SCCS)
XX % : s.% ; get $@
XX .NOINFER : s.%
XX.END
XX
XX# Recipe to make archive files.
XX%$A :
XX[
XX $(AR) $(ARFLAGS) $@ $?
XX $(RM) $(RMFLAGS) $?
XX ranlib $@
XX]
XX
XX# DMAKE uses this recipe to remove intermediate targets
XX.REMOVE :; $(RM) -f $<
XX
XX# AUGMAKE extensions for SYSV compatibility
XX at B = $(@:b)
XX at D = $(@:d)
XX at F = $(@:f)
XX*B = $(*:b)
XX*D = $(*:d)
XX*F = $(*:f)
XX<B = $(<:b)
XX<D = $(<:d)
XX<F = $(<:f)
XX?B = $(?:b)
XX?F = $(?:f)
XX?D = $(?:d)
XX
XX# Turn warnings back to previous setting.
XX.SILENT := $(__.SILENT)
XX
XX# Local startup file if any
XX.INCLUDE .IGNORE: "_startup.mk"
XSHAR_EOF
Xchmod 0640 unix/bsd43/vf/startup.mk || echo "restore of unix/bsd43/vf/startup.mk fails"
Xset `wc -c unix/bsd43/vf/startup.mk`;Sum=$1
Xif test "$Sum" != "3187"
Xthen echo original size 3187, current size $Sum;fi
Xsed 's/^X//' << 'SHAR_EOF' > unix/bsd43/vf/vfprintf.c &&
XX/*
XX * Copyright (c) 1988 Regents of the University of California.
XX * All rights reserved.
XX *
XX * Redistribution and use in source and binary forms are permitted
XX * provided that the above copyright notice and this paragraph are
XX * duplicated in all such forms and that any documentation,
XX * advertising materials, and other materials related to such
XX * distribution and use acknowledge that the software was developed
XX * by the University of California, Berkeley. The name of the
XX * University may not be used to endorse or promote products derived
XX * from this software without specific prior written permission.
XX * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
XX * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
XX * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
XX */
XX
XX#if defined(LIBC_SCCS) && !defined(lint)
XXstatic char sccsid[] = "@(#)vfprintf.c 5.2 (Berkeley) 6/27/88";
XX#endif /* LIBC_SCCS and not lint */
XX
XX#include <stdio.h>
XX#include <varargs.h>
XX
XXint
XXvfprintf(iop, fmt, ap)
XX FILE *iop;
XX char *fmt;
XX va_list ap;
XX{
XX int len;
XX char localbuf[BUFSIZ];
XX
XX if (iop->_flag & _IONBF) {
XX iop->_flag &= ~_IONBF;
XX iop->_ptr = iop->_base = localbuf;
XX len = _doprnt(fmt, ap, iop);
XX (void) fflush(iop);
XX iop->_flag |= _IONBF;
XX iop->_base = NULL;
XX iop->_bufsiz = 0;
XX iop->_cnt = 0;
XX } else
XX len = _doprnt(fmt, ap, iop);
XX
XX return (ferror(iop) ? EOF : len);
XX}
XX
XSHAR_EOF
Xchmod 0440 unix/bsd43/vf/vfprintf.c || echo "restore of unix/bsd43/vf/vfprintf.c fails"
Xset `wc -c unix/bsd43/vf/vfprintf.c`;Sum=$1
Xif test "$Sum" != "1409"
Xthen echo original size 1409, current size $Sum;fi
Xecho mkdir - unix/sysvr1
Xmkdir unix/sysvr1
Xsed 's/^X//' << 'SHAR_EOF' > unix/sysvr1/config.h &&
XX/* RCS -- $Header: /u2/dvadura/src/generic/dmake/src/unix/sysvr1/RCS/config.h,v 1.1 90/07/31 11:00:15 dvadura Exp $
XX-- SYNOPSIS -- Configurarion include file.
XX--
XX-- DESCRIPTION
XX-- There is one of these for each specific machine configuration.
XX-- It can be used to further tweek the machine specific sources
XX-- so that they compile.
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: config.h,v $
XX * Revision 1.1 90/07/31 11:00:15 dvadura
XX * Initial Revision Dmake 3.5
XX *
XX*/
XX
XX/* define this for configurations that don't have the coreleft function
XX * so that the code compiles. To my knowledge coreleft exists only on
XX * Turbo C, but it is needed here since the function is used in many debug
XX * macros. */
XX#define coreleft() 0L
SHAR_EOF
echo "End of part 1, continue with part 2"
echo "2" > s2_seq_.tmp
exit 0
More information about the Comp.sources.misc
mailing list