home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-01-29 | 40.0 KB | 1,140 lines |
- Newsgroups: comp.sources.misc
- From: dvadura@plg.waterloo.edu (Dennis Vadura)
- Subject: REPOST: v27i112: dmake - dmake Version 3.8, Part11/41
- Message-ID: <1992Jan29.215812.17274@sparky.imd.sterling.com>
- X-Md4-Signature: 8471aae0fdee3e9726bad1179d4765b7
- Date: Wed, 29 Jan 1992 21:58:12 GMT
- Approved: kent@sparky.imd.sterling.com
-
- Submitted-by: dvadura@plg.waterloo.edu (Dennis Vadura)
- Posting-number: Volume 27, Issue 112
- Archive-name: dmake/part11
- Environment: Atari-ST, Coherent, Mac, MSDOS, OS/2, UNIX
- Supersedes: dmake: Volume 19, Issue 22-58
-
- ---- Cut Here and feed the following to sh ----
- # this is dmake.shar.11 (part 11 of a multipart archive)
- # do not concatenate these parts, unpack them in order with /bin/sh
- # file dmake/mac/directry.c continued
- #
- if test ! -r _shar_seq_.tmp; then
- echo 'Please unpack part 1 first!'
- exit 1
- fi
- (read Scheck
- if test "$Scheck" != 11; then
- echo Please unpack part "$Scheck" next!
- exit 1
- else
- exit 0
- fi
- ) < _shar_seq_.tmp || exit 1
- if test -f _shar_wnt_.tmp; then
- sed 's/^X//' << 'SHAR_EOF' >> 'dmake/mac/directry.c' &&
- --
- -- This program is distributed in the hope that it will be useful,
- -- but WITHOUT ANY WARRANTY; without even the implied warrant of
- -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- -- GNU General Public License for more details.
- --
- -- You should have received a copy of the GNU General Public License
- -- along with this program; if not, write to the Free Software
- -- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- --
- -- LOG
- -- $Log: directry.c,v $
- X * Revision 1.1 1992/01/24 03:29:45 dvadura
- X * dmake Version 3.8, Initial revision
- X *
- */
- X
- #include <Errors.h>
- #include <Files.h>
- #include <OSUtils.h>
- #include <StdLib.h>
- #include <Strings.h>
- #include <SysEqu.h>
- #include "extern.h"
- X
- X
- X
- /*
- X * Implementation of stat function for dmake on the mac.
- X *
- X * Many fields aren't filled in, and the times are seconds from 1/1//1904,
- X * but it should be enough for dmake (I think we only need st_mtime and
- X * st_mode's S_IFDIR set correctly).
- X */
- PUBLIC int stat(pPath, pStat)
- char *pPath;
- struct stat *pStat;
- {
- X CInfoPBRec infoPB;
- X OSErr err;
- X int retVal;
- X
- X pPath = Unix2MacFName (pPath);
- X
- X infoPB.hFileInfo.ioCompletion = NULL;
- X infoPB.hFileInfo.ioNamePtr = c2pstr (pPath);
- X infoPB.hFileInfo.ioVRefNum = 0;
- X infoPB.hFileInfo.ioFDirIndex = 0;
- X infoPB.hFileInfo.ioDirID = 0;
- X err = PBGetCatInfo(&infoPB, FALSE);
- X p2cstr ((StringPtr) pPath);
- X
- X if (err == noErr) {
- X pStat->st_mtime = (time_t) infoPB.hFileInfo.ioFlMdDat;
- X pStat->st_ctime = (time_t) infoPB.hFileInfo.ioFlCrDat;
- X pStat->st_mode = S_IREAD | S_IEXEC;
- X
- X /* If it is a directory ... */
- X if (infoPB.hFileInfo.ioFlAttrib & 0x10) {
- X pStat->st_size = infoPB.dirInfo.ioDrNmFls;
- X pStat->st_mode |= S_IFDIR;
- X } else {
- X pStat->st_size = infoPB.hFileInfo.ioFlLgLen;
- X pStat->st_mode |= S_IFREG;
- X } /* if ... else */
- X
- X /* If it is writeable */
- X if ((infoPB.hFileInfo.ioFlAttrib & 0x1) == 0) {
- X pStat->st_mode |= S_IWRITE;
- X } /* if */
- X
- X retVal = 0;
- X
- X } else {
- X retVal = -1;
- X } /* if ... else */
- X
- X return (retVal);
- } /* PUBLIC int stat () */
- X
- X
- X
- /*
- X * Return the current working directory, or NULL if there is an error.
- X */
- PUBLIC char *getcwd (char *pPath, size_t pathSize) {
- X DirInfo dirInfo;
- X OSErr err;
- X Str255 dirName;
- X char *pBeginName;
- X char *pC;
- X size_t len;
- X size_t spaceForColon;
- X
- X pPath = Unix2MacFName (pPath);
- X
- X /* Set up the info for the PBGetCatInfo() calls */
- X dirInfo.ioCompletion = NULL;
- X dirInfo.ioNamePtr = dirName;
- X dirInfo.ioVRefNum = 0;
- X dirInfo.ioFDirIndex = -1;
- X dirInfo.ioDrDirID = 0;
- X pBeginName = pPath + pathSize - 1;
- X spaceForColon = 0; /* Make sure we don't have an end colon on the name */
- X
- X /*
- X * Keep going up the directory path until the end is reached or an error
- X * occurs. Ideally, we would check for errors at every level and stop
- X * when we received an fnfErr (File Not Found), but it appears that there
- X * are some problems with network volumes. (During testing, I received
- X * a paramErr (No Default Volume) beyond the top level.) Thus, to keep it
- X * simple, I assume any error past the first directory indicates we have
- X * seen all directories.
- X */
- X while (TRUE) {
- X err = PBGetCatInfo ((CInfoPBPtr) &dirInfo, FALSE);
- X len = ((size_t)(unsigned char) dirName[0]);
- X if ((err == noErr) && (len < pBeginName - pPath)) {
- X p2cstr (dirName);
- X pBeginName -= len + spaceForColon;
- X strcpy (pBeginName, dirName);
- X /* Note that strcpy() adds the '\0' at the end of
- X the first directory for us */
- X if (spaceForColon == 1) {
- X pBeginName[len] = ':';
- X } else {
- X /* The end of the string shouldn't have a ':' */
- X spaceForColon = 1;
- X } /* if */
- X
- X /* Set up for the next call to PBGetCatInfo() with
- X the parent's directory ID */
- X dirInfo.ioDrDirID = dirInfo.ioDrParID;
- X
- X } else if (spaceForColon == 1) {
- X /* We got past the top-level directory */
- X break;
- X
- X } else {
- X /* We either have an error when looking at the first directory
- X or have run out of room. */
- X return (NULL);
- X } /* if ... elses */
- X } /* while */
- X
- X /* Now copy the directory string to the beginning of the path string.
- X (It's possible the directory already starts at the beginning of the
- X string, but this is unlikely and doesn't hurt anything if it does,
- X so we don't bother to check for it.) */
- X pC = pPath;
- X while ((*(pC++) = *(pBeginName++)) != '\0')
- X ;
- X
- X return (pPath);
- } /* PUBLIC char *getcwd () */
- X
- X
- X
- /*
- X * Change the directory to a new default directory.
- X *
- X * Return 0 if successful, or -1 if there is an error.
- X */
- PUBLIC int chdir (char *pPath) {
- X WDPBRec WDPB;
- X VolumeParam vParam;
- X OSErr err;
- X int result;
- X char *pC;
- X char c;
- X
- X pPath = Unix2MacFName (pPath);
- X
- X /* Set up the directory */
- X c2pstr (pPath);
- X WDPB.ioCompletion = NULL;
- X WDPB.ioNamePtr = pPath;
- X WDPB.ioVRefNum = 0;
- X WDPB.ioWDProcID = 0;
- X WDPB.ioWDDirID = 0;
- X err = PBOpenWD (&WDPB, FALSE);
- X /* Restore path to a C-type string in case the caller wants
- X to use it after this call. */
- X p2cstr (pPath);
- X if (err != noErr) {
- X return (-1);
- X } /* if */
- X
- X /* Set up the volume if necessary */
- X if (*pPath != ':') {
- X for (pC = pPath + 1; (*pC != ':') && (*pC != '\0'); ++pC)
- X ;
- X c = *pC;
- X *pC = '\0';
- X vParam.ioCompletion = NULL;
- X vParam.ioNamePtr = c2pstr (pPath);
- X vParam.ioVRefNum = WDPB.ioVRefNum;
- X err = PBSetVol ((ParmBlkPtr) &vParam, FALSE);
- X p2cstr (pPath);
- X *pC = c;
- X result = ((err == noErr) ? 0 : -1);
- X
- X } else {
- X result = 0;
- X } /* if ... else */
- X
- X return (result);
- } /* PUBLIC int chdir () */
- X
- X
- X
- /*
- X * Change the modification time for the file to the current time.
- X *
- X * The normal version of utime can set the modification time to any
- X * time, this function aborts the function if this is tried.
- X *
- X * We return 0 if the modification time was updated and -1 if there
- X * was an error.
- X */
- PUBLIC int utime (char *pPath, time_t *pTimes) {
- X CInfoPBRec infoPB;
- X OSErr err;
- X
- X pPath = Unix2MacFName (pPath);
- X
- X if (pTimes != NULL) {
- X Fatal ("SUBROUTINE SHORTCOMING: utime cannot take a utimbuf struct");
- X } /* if */
- X
- X /* Get the old info */
- X infoPB.hFileInfo.ioCompletion = NULL;
- X infoPB.hFileInfo.ioNamePtr = c2pstr (pPath);
- X infoPB.hFileInfo.ioVRefNum = 0;
- X infoPB.hFileInfo.ioFDirIndex = 0;
- X infoPB.hFileInfo.ioDirID = 0;
- X err = PBGetCatInfo (&infoPB, FALSE);
- X if (err != noErr) {
- X p2cstr ((StringPtr) pPath);
- X return (-1);
- X } /* if */
- X
- X /* Change the modification time and set the new info */
- X GetDateTime (&(infoPB.hFileInfo.ioFlMdDat));
- X infoPB.hFileInfo.ioDirID = 0;
- X err = PBSetCatInfo (&infoPB, FALSE);
- X p2cstr ((StringPtr) pPath);
- X return ((err == noErr) ? 0 : -1);
- } /* PUBLIC int utime () */
- SHAR_EOF
- chmod 0640 dmake/mac/directry.c ||
- echo 'restore of dmake/mac/directry.c failed'
- Wc_c="`wc -c < 'dmake/mac/directry.c'`"
- test 8195 -eq "$Wc_c" ||
- echo 'dmake/mac/directry.c: original size 8195, current size' "$Wc_c"
- rm -f _shar_wnt_.tmp
- fi
- # ============= dmake/mac/dompwmak ==============
- if test -f 'dmake/mac/dompwmak' -a X"$1" != X"-c"; then
- echo 'x - skipping dmake/mac/dompwmak (File already exists)'
- rm -f _shar_wnt_.tmp
- else
- > _shar_wnt_.tmp
- sed 's/^X//' << 'SHAR_EOF' > 'dmake/mac/dompwmak' &&
- newfolder objects
- c -I. -I :mac -d _MPW -s infer -sym off -o :objects:infer.c.o infer.c
- c -I. -I :mac -d _MPW -s make -sym off -o :objects:make.c.o make.c
- c -I. -I :mac -d _MPW -s stat -sym off -o :objects:stat.c.o stat.c
- c -I. -I :mac -d _MPW -s expand -sym off -o :objects:expand.c.o expand.c
- c -I. -I :mac -d _MPW -s dmstring -sym off -o :objects:dmstring.c.o dmstring.c
- c -I. -I :mac -d _MPW -s hash -sym off -o :objects:hash.c.o hash.c
- c -I. -I :mac -d _MPW -s dag -sym off -o :objects:dag.c.o dag.c
- c -I. -I :mac -d _MPW -s dmake -sym off -o :objects:dmake.c.o dmake.c
- c -I. -I :mac -d _MPW -s path -sym off -o :objects:path.c.o path.c
- c -I. -I :mac -d _MPW -s imacs -sym off -o :objects:imacs.c.o imacs.c
- c -I. -I :mac -d _MPW -s sysintf -sym off -o :objects:sysintf.c.o sysintf.c
- c -I. -I :mac -d _MPW -s parse -sym off -o :objects:parse.c.o parse.c
- c -I. -I :mac -d _MPW -s getinp -sym off -o :objects:getinp.c.o getinp.c
- c -I. -I :mac -d _MPW -s quit -sym off -o :objects:quit.c.o quit.c
- c -I. -I :mac -d _MPW -s state -sym off -o :objects:state.c.o state.c
- c -I. -I :mac -d _MPW -s basename -sym off -o :objects:basename.c.o basename.c
- c -I. -I :mac -d _MPW -s dmdump -sym off -o :objects:dmdump.c.o dmdump.c
- c -I. -I :mac -d _MPW -s macparse -sym off -o :objects:macparse.c.o macparse.c
- c -I. -I :mac -d _MPW -s rulparse -sym off -o :objects:rulparse.c.o rulparse.c
- c -I. -I :mac -d _MPW -s percent -sym off -o :objects:percent.c.o percent.c
- c -I. -I :mac -d _MPW -s function -sym off -o :objects:function.c.o function.c
- duplicate -y :mac:arlib.c arlib.c
- c -I. -I :mac -d _MPW -s arlib -sym off -o :objects:arlib.c.o arlib.c
- delete arlib.c
- duplicate -y :mac:bogus.c bogus.c
- c -I. -I :mac -d _MPW -s bogus -sym off -o :objects:bogus.c.o bogus.c
- delete bogus.c
- duplicate -y :mac:dirbrk.c dirbrk.c
- c -I. -I :mac -d _MPW -s dirbrk -sym off -o :objects:dirbrk.c.o dirbrk.c
- delete dirbrk.c
- duplicate -y :mac:directry.c directry.c
- c -I. -I :mac -d _MPW -s directry -sym off -o :objects:directry.c.o directry.c
- delete directry.c
- duplicate -y :mac:environ.c environ.c
- c -I. -I :mac -d _MPW -s environ -sym off -o :objects:environ.c.o environ.c
- delete environ.c
- duplicate -y :mac:main.c main.c
- c -I. -I :mac -d _MPW -s main -sym off -o :objects:main.c.o main.c
- delete main.c
- duplicate -y :mac:rmprq.c rmprq.c
- c -I. -I :mac -d _MPW -s rmprq -sym off -o :objects:rmprq.c.o rmprq.c
- delete rmprq.c
- duplicate -y :mac:ruletab.c ruletab.c
- c -I. -I :mac -d _MPW -s ruletab -sym off -o :objects:ruletab.c.o ruletab.c
- delete ruletab.c
- duplicate -y :mac:tempnam.c tempnam.c
- c -I. -I :mac -d _MPW -s tempnam -sym off -o :objects:tempnam.c.o tempnam.c
- delete tempnam.c
- duplicate -y :mac:tomacfil.c tomacfil.c
- c -I. -I :mac -d _MPW -s tomacfil -sym off -o :objects:tomacfil.c.o tomacfil.c
- delete tomacfil.c
- link -w -c 'MPS ' -t MPST -sym off -o dmake :objects:infer.c.o :objects:make.c.o :objects:stat.c.o :objects:expand.c.o :objects:dmstring.c.o :objects:hash.c.o :objects:dag.c.o :objects:dmake.c.o :objects:path.c.o :objects:imacs.c.o :objects:sysintf.c.o :objects:parse.c.o :objects:getinp.c.o :objects:quit.c.o :objects:state.c.o :objects:basename.c.o :objects:dmdump.c.o :objects:macparse.c.o :objects:rulparse.c.o :objects:percent.c.o :objects:function.c.o :objects:arlib.c.o :objects:bogus.c.o :objects:dirbrk.c.o :objects:directry.c.o :objects:environ.c.o :objects:main.c.o :objects:rmprq.c.o :objects:ruletab.c.o :objects:tempnam.c.o :objects:tomacfil.c.o "Micah:MPW:Libraries:CLibraries:CSANELib.o" "Micah:MPW:Libraries:CLibraries:Math.o" "Micah:MPW:Libraries:CLibraries:StdCLib.o" "Micah:MPW:Libraries:Libraries:Runtime.o" "Micah:MPW:Libraries:Libraries:Interface.o" "Micah:MPW:Libraries:Libraries:Toollibs.o"
- duplicate :mac:startup.mk startup.mk
- SHAR_EOF
- chmod 0640 dmake/mac/dompwmak ||
- echo 'restore of dmake/mac/dompwmak failed'
- Wc_c="`wc -c < 'dmake/mac/dompwmak'`"
- test 3778 -eq "$Wc_c" ||
- echo 'dmake/mac/dompwmak: original size 3778, current size' "$Wc_c"
- rm -f _shar_wnt_.tmp
- fi
- # ============= dmake/mac/environ.c ==============
- if test -f 'dmake/mac/environ.c' -a X"$1" != X"-c"; then
- echo 'x - skipping dmake/mac/environ.c (File already exists)'
- rm -f _shar_wnt_.tmp
- else
- > _shar_wnt_.tmp
- sed 's/^X//' << 'SHAR_EOF' > 'dmake/mac/environ.c' &&
- /* RCS -- $Header: /u2/dvadura/src/generic/dmake/src/mac/environ.c,v 1.1 1992/01/24 03:29:46 dvadura Exp $
- -- SYNOPSIS -- Set up and free for environ
- --
- -- DESCRIPTION
- -- This file contains routines that will fill in and dispose of the
- -- list of environmental variables in the environ global variable.
- --
- -- AUTHOR
- -- Dennis Vadura, dvadura@watdragon.uwaterloo.ca
- -- CS DEPT, University of Waterloo, Waterloo, Ont., Canada
- --
- --
- -- COPYRIGHT
- -- Copyright (c) 1990 by Dennis Vadura. All rights reserved.
- --
- -- This program is free software; you can redistribute it and/or
- -- modify it under the terms of the GNU General Public License
- -- (version 1), as published by the Free Software Foundation, and
- -- found in the file 'LICENSE' included with this distribution.
- --
- -- This program is distributed in the hope that it will be useful,
- -- but WITHOUT ANY WARRANTY; without even the implied warrant of
- -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- -- GNU General Public License for more details.
- --
- -- You should have received a copy of the GNU General Public License
- -- along with this program; if not, write to the Free Software
- -- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- --
- -- LOG
- -- $Log: environ.c,v $
- X * Revision 1.1 1992/01/24 03:29:46 dvadura
- X * dmake Version 3.8, Initial revision
- X *
- */
- X
- #include "extern.h"
- X
- /* The char used to replace the equal signs in environmental variable names. */
- const char kEqualReplace = '_';
- X
- /* Maximum size of a "name=value" environmental string, including the ending '\0'.
- X Larger environmental variables will be clipped before dmake sees them.
- X (Caution: When I tested the program, the Mac or dmake trashed memory
- X when environmental variables of >4K were read in. I looked around a bit
- X and couldn't find out the exact cause, so I simply made this variable.
- X The memory trashing may be related to the value for MAXLINELENGTH.) */
- const int kMaxEnvLen = 1024;
- X
- X
- /* The list of environmental variables in the form "name=value".
- X (Once make_env() has been called.) */
- char **environ = NULL;
- X
- /* Characters replaced during make_env() */
- struct ReplaceChar {
- X char *fpPos;
- X char fC;
- X struct ReplaceChar *fpNext;
- }; /* struct ReplaceChar */
- struct ReplaceChar *gpReplaceList = NULL;
- X
- X
- void AddReplace (char *pReplacePos);
- X
- X
- X
- /*
- X * Set up the environmental variables in a format used by
- X * the environ global variable.
- X *
- X * environ has already been set to main's envp argument when
- X * this suboroutine is called. We assume that envp is a copy
- X * MPW makes for this process' use alone, so we can modify it
- X * below.
- X */
- PUBLIC void make_env () {
- X char **ppCurEnv;
- X char *pCurPos;
- #if 0
- X char **ppMacEnv;
- X char *pMacPos;
- X
- X if (!gMECalled) {
- X gMECalled = TRUE;
- X
- environ = MALLOC (1, char *);
- *environ = NULL;
- #endif
- #if 0
- {
- X int numenv;
- X int len;
- X int firstnil;
- X
- X numenv = 1;
- X ppMacEnv = environ;
- X while (*(ppMacEnv++) != NULL) {
- X ++numenv;
- X } /* while */
- X
- X ppMacEnv = environ;
- X if ((environ = MALLOC (numenv, char *)) == NULL) {
- X No_ram ();
- X } /* if */
- X
- numenv = 80;
- X for (ppCurEnv = environ; (numenv-- > 0) && (*ppMacEnv != NULL); ++ppCurEnv, ++ppMacEnv) {
- X pMacPos = *ppMacEnv;
- X len = strlen (pMacPos) + 1;
- X len += strlen (pMacPos + len) + 1;
- #define MAXLEN 4098
- if (len > MAXLEN) len = MAXLEN;
- X if ((*ppCurEnv = MALLOC (len, char)) == NULL) {
- X No_ram ();
- X } /* if */
- X
- X firstnil = TRUE;
- X for (pCurPos = *ppCurEnv; ((pCurPos - *ppCurEnv) < MAXLEN - 1); ++pCurPos, ++pMacPos) {
- X if (*pMacPos == '=') {
- X *pCurPos = gEqualReplace;
- X
- X } else if (*pMacPos == '\0') {
- X if (firstnil) {
- X *pCurPos = '=';
- X firstnil = FALSE;
- X } else {
- X *pCurPos = *pMacPos;
- X break;
- X } /* if ... else */
- X
- X } else {
- X *pCurPos = *pMacPos;
- X } /* if ... elses */
- X } /* for */
- firstnil = FALSE;
- X } /* for */
- X *ppCurEnv = NULL;
- }
- #endif
- {
- X int firstnil;
- X
- X /* Get rid of any equal signs in any environmental name, and put
- X equal signs between the names and their values */
- X for (ppCurEnv = environ; *ppCurEnv != NULL; ++ppCurEnv) {
- X
- X firstnil = TRUE;
- X for (pCurPos = *ppCurEnv;
- X ((pCurPos - *ppCurEnv < kMaxEnvLen - 1) &&
- X ((*pCurPos != '\0') || !firstnil));
- X ++pCurPos) {
- X if (*pCurPos == '=') {
- X AddReplace (pCurPos);
- X *pCurPos = kEqualReplace;
- X
- X } else if (*pCurPos == '\0') {
- X AddReplace (pCurPos);
- X *pCurPos = '=';
- X firstnil = FALSE;
- X } /* if ... else if */
- X } /* for */
- X
- X /* If the environtmental variable was too large ... */
- X if (*pCurPos != '\0') {
- X AddReplace (pCurPos);
- X *pCurPos = '\0';
- X if (firstnil) {
- X AddReplace (--pCurPos);
- X *pCurPos = '=';
- X } /* if */
- X } /* if */
- X } /* for */
- }
- #if 0
- X } /* if */
- #endif
- } /* PUBLIC void make_env () */
- X
- X
- /*
- X * The character at pReplacePos is about to be replaced. Remember the
- X * old value so we can restore it when we're done.
- X */
- void AddReplace (char *pReplacePos) {
- X struct ReplaceChar *pReplaceChar;
- X
- X if ((pReplaceChar = MALLOC (1, struct ReplaceChar)) == NULL) {
- X No_ram ();
- X } /* if */
- X pReplaceChar->fpPos = pReplacePos;
- X pReplaceChar->fC = *pReplacePos;
- X pReplaceChar->fpNext = gpReplaceList;
- X gpReplaceList = pReplaceChar;
- } /* void AddReplace () */
- X
- X
- /*
- X * Restore the old environmental variables to the way they looked before
- X * the make_env() call, on the unlikely chance that something else will look
- X * at our copy of the environmental variables during the program execution.
- X *
- X */
- PUBLIC void free_env () {
- X struct ReplaceChar *pReplaceChar;
- X
- X while (gpReplaceList != NULL) {
- X pReplaceChar = gpReplaceList;
- X gpReplaceList = pReplaceChar->fpNext;
- X
- X *(pReplaceChar->fpPos) = pReplaceChar->fC;
- X
- X FREE (pReplaceChar);
- X } /* while */
- X
- #if 0
- X char **ppCurEnv;
- X char *pCurPos;
- X
- X if (!gFECalled) {
- X gFECalled = TRUE;
- X
- //FREE (environ);
- environ = NULL;
- #endif
- #if 0
- X /* Restore the environment list to what it was before we
- X read it in. */
- X for (ppCurEnv = environ; *ppCurEnv != NULL; ++ppCurEnv) {
- X for (pCurPos = *ppCurEnv; *pCurPos != '='; ++pCurPos)
- X ;
- X *pCurPos = '\0';
- X } /* for */
- X } /* if */
- #endif
- } /* PUBLIC void free_env () */
- SHAR_EOF
- chmod 0640 dmake/mac/environ.c ||
- echo 'restore of dmake/mac/environ.c failed'
- Wc_c="`wc -c < 'dmake/mac/environ.c'`"
- test 6935 -eq "$Wc_c" ||
- echo 'dmake/mac/environ.c: original size 6935, current size' "$Wc_c"
- rm -f _shar_wnt_.tmp
- fi
- # ============= dmake/mac/eold.c ==============
- if test -f 'dmake/mac/eold.c' -a X"$1" != X"-c"; then
- echo 'x - skipping dmake/mac/eold.c (File already exists)'
- rm -f _shar_wnt_.tmp
- else
- > _shar_wnt_.tmp
- sed 's/^X//' << 'SHAR_EOF' > 'dmake/mac/eold.c' &&
- /* RCS -- $Header: /u2/dvadura/src/generic/dmake/src/mac/eold.c,v 1.1 1992/01/24 03:29:47 dvadura Exp $
- -- SYNOPSIS -- Set up and free for environ
- --
- -- DESCRIPTION
- -- This file contains routines that will fill in and dispose of the
- -- list of environmental variables in the environ global variable.
- --
- -- AUTHOR
- -- Dennis Vadura, dvadura@watdragon.uwaterloo.ca
- -- CS DEPT, University of Waterloo, Waterloo, Ont., Canada
- --
- --
- -- COPYRIGHT
- -- Copyright (c) 1990 by Dennis Vadura. All rights reserved.
- --
- -- This program is free software; you can redistribute it and/or
- -- modify it under the terms of the GNU General Public License
- -- (version 1), as published by the Free Software Foundation, and
- -- found in the file 'LICENSE' included with this distribution.
- --
- -- This program is distributed in the hope that it will be useful,
- -- but WITHOUT ANY WARRANTY; without even the implied warrant of
- -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- -- GNU General Public License for more details.
- --
- -- You should have received a copy of the GNU General Public License
- -- along with this program; if not, write to the Free Software
- -- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- --
- -- LOG
- -- $Log: eold.c,v $
- X * Revision 1.1 1992/01/24 03:29:47 dvadura
- X * dmake Version 3.8, Initial revision
- X *
- */
- X
- #include "extern.h"
- X
- X
- /*
- X * Keep track of any environmental variables that have '='s in their
- X * name.
- X */
- struct EqualPos {
- X char *fpPos;
- X struct equalsign *fpNext;
- } /* struct EqualPos */
- X
- struct EqualPos *gpEqualList;
- X
- /*
- X * The character used to replae the equal signs.
- X */
- const char gEqualReplace = '_';
- X
- X
- X
- /*
- X * Set up the environmental variables in a format used by
- X * the environ global variable.
- X *
- X * environ has already been set to main's envp argument when
- X * this suboroutine is called.
- X */
- void main_env () {
- X char **ppCurEnv;
- X char *pCurPos;
- X struct equalpos *pNewEqual;
- X
- X gpEqualList = NULL;
- X
- X for (ppCurEnv = environ; *ppCurEnv != NULL; ++ppCurEnv) {
- X for (pCurPos = *ppCurEnv; *pCurPos != '\0'; ++pCurPos) {
- X if (*pCurPos == '=') {
- X if ((pNewEqual =
- X (struct EqualPos *) malloc (sizeof (struct EqualPos))) ==
- X NULL) {
- X fputs ("Out of Memory", stderr);
- X exit (EXIT_FAILURE);
- X } /* if */
- X pNewEqual->fpPos = pCurPos;
- X pNewEqual->fpNext = gpEqualList;
- X gpEqualList = pNewEqual;
- X
- X *pCurPos = gEqualReplace;
- X } /* if */
- X } /* for */
- X
- X *pCurPos = '=';
- X } /* for */
- } /* void main_env () */
- X
- X
- X
- /*
- X * Reset the environmental variables so they look like they did
- X * before the main_env() call.
- X *
- X * environ has already been set to main's envp argument when
- X * this suboroutine is called.
- X */
- void main_env () {
- X char **ppCurEnv;
- X char *pCurPos;
- X struct equalpos *pNewEqual;
- X
- X gpEqualList = NULL;
- X
- X for (ppCurEnv = environ; *ppCurEnv != NULL; ++ppCurEnv) {
- X for (pCurPos = *ppCurEnv; *pCurPos != '\0'; ++pCurPos) {
- X if (*pCurPos == '=') {
- X if ((pNewEqual =
- X (struct EqualPos *) malloc (sizeof (struct EqualPos))) ==
- X NULL) {
- X fputs ("Out of Memory", stderr);
- X exit (EXIT_FAILURE);
- X } /* if */
- X pNewEqual->fpPos = pCurPos;
- X pNewEqual->fpNext = gpEqualList;
- X gpEqualList = pNewEqual;
- X
- X *pCurPos = gEqualReplace;
- X } /* if */
- X } /* for */
- X
- X *pCurPos = '=';
- X } /* for */
- } /* void main_env () */
- SHAR_EOF
- chmod 0640 dmake/mac/eold.c ||
- echo 'restore of dmake/mac/eold.c failed'
- Wc_c="`wc -c < 'dmake/mac/eold.c'`"
- test 3810 -eq "$Wc_c" ||
- echo 'dmake/mac/eold.c: original size 3810, current size' "$Wc_c"
- rm -f _shar_wnt_.tmp
- fi
- # ============= dmake/mac/main.c ==============
- if test -f 'dmake/mac/main.c' -a X"$1" != X"-c"; then
- echo 'x - skipping dmake/mac/main.c (File already exists)'
- rm -f _shar_wnt_.tmp
- else
- > _shar_wnt_.tmp
- sed 's/^X//' << 'SHAR_EOF' > 'dmake/mac/main.c' &&
- /* RCS -- $Header: /u2/dvadura/src/generic/dmake/src/mac/main.c,v 1.1 1992/01/24 03:29:48 dvadura Exp $
- -- SYNOPSIS -- The real main function
- --
- -- DESCRIPTION
- -- In order to get the third argument to main(), which is a list of
- -- environmental variables, we have #defined main to dmakemain,
- -- and put the real main here.
- --
- -- The environmental variables are placed in the environ global variable
- -- and set up for processing by dmake in make_env().
- --
- -- AUTHOR
- -- Dennis Vadura, dvadura@watdragon.uwaterloo.ca
- -- CS DEPT, University of Waterloo, Waterloo, Ont., Canada
- --
- --
- -- COPYRIGHT
- -- Copyright (c) 1990 by Dennis Vadura. All rights reserved.
- --
- -- This program is free software; you can redistribute it and/or
- -- modify it under the terms of the GNU General Public License
- -- (version 1), as published by the Free Software Foundation, and
- -- found in the file 'LICENSE' included with this distribution.
- --
- -- This program is distributed in the hope that it will be useful,
- -- but WITHOUT ANY WARRANTY; without even the implied warrant of
- -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- -- GNU General Public License for more details.
- --
- -- You should have received a copy of the GNU General Public License
- -- along with this program; if not, write to the Free Software
- -- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- --
- -- LOG
- -- $Log: main.c,v $
- X * Revision 1.1 1992/01/24 03:29:48 dvadura
- X * dmake Version 3.8, Initial revision
- X *
- */
- X
- #include "extern.h"
- X
- X
- X
- /*
- X * Put envp in environ and call dmake's main().
- X */
- #undef main
- void main (int argc, char *argv[], char *envp[]) {
- X environ = envp;
- X dmakemain (argc, argv);
- } /* void main () */
- SHAR_EOF
- chmod 0640 dmake/mac/main.c ||
- echo 'restore of dmake/mac/main.c failed'
- Wc_c="`wc -c < 'dmake/mac/main.c'`"
- test 1780 -eq "$Wc_c" ||
- echo 'dmake/mac/main.c: original size 1780, current size' "$Wc_c"
- rm -f _shar_wnt_.tmp
- fi
- # ============= dmake/mac/make.sh ==============
- if test -f 'dmake/mac/make.sh' -a X"$1" != X"-c"; then
- echo 'x - skipping dmake/mac/make.sh (File already exists)'
- rm -f _shar_wnt_.tmp
- else
- > _shar_wnt_.tmp
- sed 's/^X//' << 'SHAR_EOF' > 'dmake/mac/make.sh' &&
- newfolder objects
- c -I. -I :mac -d _MPW -s infer -sym off -o :objects:infer.c.o infer.c
- c -I. -I :mac -d _MPW -s make -sym off -o :objects:make.c.o make.c
- c -I. -I :mac -d _MPW -s stat -sym off -o :objects:stat.c.o stat.c
- c -I. -I :mac -d _MPW -s expand -sym off -o :objects:expand.c.o expand.c
- c -I. -I :mac -d _MPW -s dmstring -sym off -o :objects:dmstring.c.o dmstring.c
- c -I. -I :mac -d _MPW -s hash -sym off -o :objects:hash.c.o hash.c
- c -I. -I :mac -d _MPW -s dag -sym off -o :objects:dag.c.o dag.c
- c -I. -I :mac -d _MPW -s dmake -sym off -o :objects:dmake.c.o dmake.c
- c -I. -I :mac -d _MPW -s path -sym off -o :objects:path.c.o path.c
- c -I. -I :mac -d _MPW -s imacs -sym off -o :objects:imacs.c.o imacs.c
- c -I. -I :mac -d _MPW -s sysintf -sym off -o :objects:sysintf.c.o sysintf.c
- c -I. -I :mac -d _MPW -s parse -sym off -o :objects:parse.c.o parse.c
- c -I. -I :mac -d _MPW -s getinp -sym off -o :objects:getinp.c.o getinp.c
- c -I. -I :mac -d _MPW -s quit -sym off -o :objects:quit.c.o quit.c
- c -I. -I :mac -d _MPW -s state -sym off -o :objects:state.c.o state.c
- c -I. -I :mac -d _MPW -s basename -sym off -o :objects:basename.c.o basename.c
- c -I. -I :mac -d _MPW -s dmdump -sym off -o :objects:dmdump.c.o dmdump.c
- c -I. -I :mac -d _MPW -s macparse -sym off -o :objects:macparse.c.o macparse.c
- c -I. -I :mac -d _MPW -s rulparse -sym off -o :objects:rulparse.c.o rulparse.c
- c -I. -I :mac -d _MPW -s percent -sym off -o :objects:percent.c.o percent.c
- c -I. -I :mac -d _MPW -s function -sym off -o :objects:function.c.o function.c
- c -I. -I :mac -d _MPW -s arlib -sym off -o :objects:arlib.c.o :mac:arlib.c
- c -I. -I :mac -d _MPW -s bogus -sym off -o :objects:bogus.c.o :mac:bogus.c
- c -I. -I :mac -d _MPW -s dirbrk -sym off -o :objects:dirbrk.c.o :mac:dirbrk.c
- c -I. -I :mac -d _MPW -s directry -sym off -o :objects:directry.c.o :mac:directry.c
- c -I. -I :mac -d _MPW -s environ -sym off -o :objects:environ.c.o :mac:environ.c
- c -I. -I :mac -d _MPW -s main -sym off -o :objects:main.c.o :mac:main.c
- c -I. -I :mac -d _MPW -s rmprq -sym off -o :objects:rmprq.c.o :mac:rmprq.c
- c -I. -I :mac -d _MPW -s ruletab -sym off -o :objects:ruletab.c.o :mac:ruletab.c
- c -I. -I :mac -d _MPW -s tempnam -sym off -o :objects:tempnam.c.o :mac:tempnam.c
- c -I. -I :mac -d _MPW -s tomacfil -sym off -o :objects:tomacfil.c.o :mac:tomacfil.c
- link -w -c 'MPS ' -t MPST -sym off -o dmake :objects:infer.c.o :objects:make.c.o :objects:stat.c.o :objects:expand.c.o :objects:dmstring.c.o :objects:hash.c.o :objects:dag.c.o :objects:dmake.c.o :objects:path.c.o :objects:imacs.c.o :objects:sysintf.c.o :objects:parse.c.o :objects:getinp.c.o :objects:quit.c.o :objects:state.c.o :objects:basename.c.o :objects:dmdump.c.o :objects:macparse.c.o :objects:rulparse.c.o :objects:percent.c.o :objects:function.c.o :objects:arlib.c.o :objects:bogus.c.o :objects:dirbrk.c.o :objects:directry.c.o :objects:environ.c.o :objects:main.c.o :objects:rmprq.c.o :objects:ruletab.c.o :objects:tempnam.c.o :objects:tomacfil.c.o "CSANELib.o" "Math.o" "StdCLib.o" "Runtime.o" "Interface.o" "Toollibs.o"
- duplicate :mac:startup.mk startup.mk
- SHAR_EOF
- chmod 0640 dmake/mac/make.sh ||
- echo 'restore of dmake/mac/make.sh failed'
- Wc_c="`wc -c < 'dmake/mac/make.sh'`"
- test 3119 -eq "$Wc_c" ||
- echo 'dmake/mac/make.sh: original size 3119, current size' "$Wc_c"
- rm -f _shar_wnt_.tmp
- fi
- # ============= dmake/mac/public.h ==============
- if test -f 'dmake/mac/public.h' -a X"$1" != X"-c"; then
- echo 'x - skipping dmake/mac/public.h (File already exists)'
- rm -f _shar_wnt_.tmp
- else
- > _shar_wnt_.tmp
- sed 's/^X//' << 'SHAR_EOF' > 'dmake/mac/public.h' &&
- /* RCS -- $Header$
- -- WARNING -- This file is AUTOMATICALLY GENERATED DO NOT EDIT IT
- --
- -- SYNOPSIS -- Local functions exported to be visible by others.
- --
- -- DESCRIPTION
- -- This file is generated by 'genpub'. Function declarations
- -- that appear in this file are extracted by 'genpub' from
- -- source files. Any function in the source file whose definition
- -- appears like:
- --
- -- PUBLIC return_type
- -- function( arg_list );
- -- type_expr1 arg1;
- -- ...
- --
- -- has its definition extracted and a line of the form:
- --
- -- return_type function ANSI((type_expr1,type_expr2,...));
- --
- -- entered into the output file.
- --
- -- AUTHOR
- -- Dennis Vadura, dvadura@watdragon.uwaterloo.ca
- -- CS DEPT, University of Waterloo, Waterloo, Ont., Canada
- --
- -- COPYRIGHT
- -- Copyright (c) 1990 by Dennis Vadura. All rights reserved.
- --
- -- This program is free software; you can redistribute it and/or
- -- modify it under the terms of the GNU General Public License
- -- (version 1), as published by the Free Software Foundation, and
- -- found in the file 'LICENSE' included with this distribution.
- --
- -- This program is distributed in the hope that it will be useful,
- -- but WITHOUT ANY WARRANTY; without even the implied warrant of
- -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- -- GNU General Public License for more details.
- --
- -- You should have received a copy of the GNU General Public License
- -- along with this program; if not, write to the Free Software
- -- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- --
- -- LOG
- -- $Log$
- */
- X
- #ifndef _DMAKE_PUBLIC_h
- #define _DMAKE_PUBLIC_h
- X
- void Infer_recipe ANSI((CELLPTR, CELLPTR));
- int Make_targets ANSI(());
- int Exec_commands ANSI((CELLPTR));
- void Pop_dir ANSI((int));
- void Append_line ANSI((char *, int, FILE *, char *, int, int));
- void Stat_target ANSI((CELLPTR, int));
- char * Expand ANSI((char *));
- char * Apply_edit ANSI((char *, char *, char *, int, int));
- void Map_esc ANSI((char *));
- char* Apply_modifiers ANSI((int, char *));
- char* Tokenize ANSI((char *, char *));
- char * _strjoin ANSI((char *, char *, int, int));
- char * _stradd ANSI((char *, char *, int));
- char * _strapp ANSI((char *, char *));
- char * _strdup ANSI((char *));
- char * _strdup2 ANSI((char *));
- char * _strpbrk ANSI((char *, char *));
- char * _strspn ANSI((char *, char *));
- char * _strstr ANSI((char *, char *));
- char * _substr ANSI((char *, char *));
- uint16 Hash ANSI((char *, uint32 *));
- HASHPTR Get_name ANSI((char *, HASHPTR *, int));
- HASHPTR Search_table ANSI((HASHPTR *, char *, uint16 *, uint32 *));
- HASHPTR Def_macro ANSI((char *, char *, int));
- CELLPTR Def_cell ANSI((char *));
- LINKPTR Add_prerequisite ANSI((CELLPTR, CELLPTR, int, int));
- void Clear_prerequisites ANSI((CELLPTR));
- int Test_circle ANSI((CELLPTR, int));
- STRINGPTR Def_recipe ANSI((char *, STRINGPTR, int, int));
- t_attr Rcp_attribute ANSI((char *));
- FILE * Openfile ANSI((char *, int, int));
- FILE * Closefile ANSI(());
- FILE * Search_file ANSI((char *, char **));
- char * Filename ANSI(());
- void No_ram ANSI(());
- int Usage ANSI((int));
- int Version ANSI(());
- char * Get_suffix ANSI((char *));
- char * Build_path ANSI((char *, char *));
- void Make_rules ANSI(());
- void Create_macro_vars ANSI(());
- time_t Do_stat ANSI((char *, char *, char **));
- int Do_touch ANSI((char *, char *, char **));
- void Void_lib_cache ANSI((char *, char *));
- time_t Do_time ANSI(());
- int Do_cmnd ANSI((char *, int, int, CELLPTR, int, int, int));
- char ** Pack_argv ANSI((int, int, char *));
- char * Read_env_string ANSI((char *));
- int Write_env_string ANSI((char *, char *));
- void ReadEnvironment ANSI(());
- void Catch_signals ANSI((void (*)()));
- void Clear_signals ANSI(());
- void Prolog ANSI((int, char* []));
- void Epilog ANSI((int));
- char * Get_current_dir ANSI(());
- int Set_dir ANSI((char*));
- char Get_switch_char ANSI(());
- FILE* Get_temp ANSI((char **, char *, int));
- FILE * Start_temp ANSI((char *, CELLPTR, char **));
- void Open_temp_error ANSI((char *, char *));
- void Link_temp ANSI((CELLPTR, FILE *, char *));
- void Close_temp ANSI((CELLPTR, FILE *));
- void Unlink_temp_files ANSI((CELLPTR));
- void Handle_result ANSI((int, int, int, CELLPTR));
- void Update_time_stamp ANSI((CELLPTR));
- int Remove_file ANSI((char *));
- void Parse ANSI((FILE *));
- int Get_line ANSI((char *, FILE *));
- char * Do_comment ANSI((char *, char **, int));
- char * Get_token ANSI((TKSTRPTR, char *, int));
- void Quit ANSI(());
- void Read_state ANSI(());
- void Write_state ANSI(());
- int Check_state ANSI((CELLPTR, STRINGPTR *, int));
- char* basename ANSI((char *));
- void Dump ANSI(());
- void Dump_recipe ANSI((STRINGPTR));
- int Parse_macro ANSI((char *, int));
- int Macro_op ANSI((char *));
- int Parse_rule_def ANSI((int *));
- int Rule_op ANSI((char *));
- void Add_recipe_to_list ANSI((char *, int, int));
- void Bind_rules_to_targets ANSI((int));
- int Set_group_attributes ANSI((char *));
- DFALINKPTR Match_dfa ANSI((char *));
- void Check_circle_dfa ANSI(());
- void Add_nfa ANSI((char *));
- char * Exec_function ANSI((char *));
- time_t seek_arch ANSI(());
- void tzset ();
- int putenv ANSI((char * /* pEnvString */));
- int Wait_for_child ANSI((int /* abort_flg */, int /* pid */));
- int If_root_path ANSI((char *));
- int stat ANSI((char *, struct stat *));
- void make_env ();
- void free_env ();
- void Remove_prq ANSI((CELLPTR));
- char *tempnam ANSI((char * /* pDir */, char * pPrefix));
- char *Unix2MacFName ANSI((char *pUnixName));
- X
- #endif
- SHAR_EOF
- chmod 0640 dmake/mac/public.h ||
- echo 'restore of dmake/mac/public.h failed'
- Wc_c="`wc -c < 'dmake/mac/public.h'`"
- test 5509 -eq "$Wc_c" ||
- echo 'dmake/mac/public.h: original size 5509, current size' "$Wc_c"
- rm -f _shar_wnt_.tmp
- fi
- # ============= dmake/mac/rmprq.c ==============
- if test -f 'dmake/mac/rmprq.c' -a X"$1" != X"-c"; then
- echo 'x - skipping dmake/mac/rmprq.c (File already exists)'
- rm -f _shar_wnt_.tmp
- else
- > _shar_wnt_.tmp
- sed 's/^X//' << 'SHAR_EOF' > 'dmake/mac/rmprq.c' &&
- /* RCS -- $Header: /u2/dvadura/src/generic/dmake/src/mac/rmprq.c,v 1.1 1992/01/24 03:29:48 dvadura Exp $
- -- SYNOPSIS -- remove prerequisites code.
- --
- -- DESCRIPTION
- -- This code is different for The Mac and for UNIX and parallel make
- -- architectures since the parallel case requires the rm's to be
- -- run in parallel, whereas The Mac guarantees to run them sequentially.
- --
- -- AUTHOR
- -- Dennis Vadura, dvadura@watdragon.uwaterloo.ca
- -- CS DEPT, University of Waterloo, Waterloo, Ont., Canada
- --
- -- COPYRIGHT
- -- Copyright (c) 1990 by Dennis Vadura. All rights reserved.
- --
- -- This program is free software; you can redistribute it and/or
- -- modify it under the terms of the GNU General Public License
- -- (version 1), as published by the Free Software Foundation, and
- -- found in the file 'LICENSE' included with this distribution.
- --
- -- This program is distributed in the hope that it will be useful,
- -- but WITHOUT ANY WARRANTY; without even the implied warrant of
- -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- -- GNU General Public License for more details.
- --
- -- You should have received a copy of the GNU General Public License
- -- along with this program; if not, write to the Free Software
- -- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- --
- -- LOG
- -- $Log: rmprq.c,v $
- X * Revision 1.1 1992/01/24 03:29:48 dvadura
- X * dmake Version 3.8, Initial revision
- X *
- */
- X
- #include "extern.h"
- X
- PUBLIC void
- Remove_prq( tcp )
- CELLPTR tcp;
- {
- X tcp->ce_flag &= ~(F_MADE|F_VISITED);
- X tcp->ce_time = 0L;
- X
- X Make( tcp, NIL(LINK), NIL(CELL) );
- }
- SHAR_EOF
- chmod 0640 dmake/mac/rmprq.c ||
- echo 'restore of dmake/mac/rmprq.c failed'
- Wc_c="`wc -c < 'dmake/mac/rmprq.c'`"
- test 1658 -eq "$Wc_c" ||
- echo 'dmake/mac/rmprq.c: original size 1658, current size' "$Wc_c"
- rm -f _shar_wnt_.tmp
- fi
- # ============= dmake/mac/ruletab.c ==============
- if test -f 'dmake/mac/ruletab.c' -a X"$1" != X"-c"; then
- echo 'x - skipping dmake/mac/ruletab.c (File already exists)'
- rm -f _shar_wnt_.tmp
- else
- > _shar_wnt_.tmp
- sed 's/^X//' << 'SHAR_EOF' > 'dmake/mac/ruletab.c' &&
- /* RCS -- $Header: /u2/dvadura/src/generic/dmake/src/mac/ruletab.c,v 1.1 1992/01/24 03:29:49 dvadura Exp $
- -- SYNOPSIS -- Default initial configuration of dmake.
- --
- -- DESCRIPTION
- -- Define here the initial set of rules that are defined before
- -- dmake performs any processing.
- --
- -- AUTHOR
- -- Dennis Vadura, dvadura@watdragon.uwaterloo.ca
- -- CS DEPT, University of Waterloo, Waterloo, Ont., Canada
- --
- -- COPYRIGHT
- -- Copyright (c) 1990 by Dennis Vadura. All rights reserved.
- --
- -- This program is free software; you can redistribute it and/or
- -- modify it under the terms of the GNU General Public License
- -- (version 1), as published by the Free Software Foundation, and
- -- found in the file 'LICENSE' included with this distribution.
- --
- -- This program is distributed in the hope that it will be useful,
- -- but WITHOUT ANY WARRANTY; without even the implied warrant of
- -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- -- GNU General Public License for more details.
- --
- -- You should have received a copy of the GNU General Public License
- -- along with this program; if not, write to the Free Software
- -- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- SHAR_EOF
- true || echo 'restore of dmake/mac/ruletab.c failed'
- fi
- echo 'End of part 11, continue with part 12'
- echo 12 > _shar_seq_.tmp
- exit 0
- exit 0 # Just in case...
- exit 0 # Just in case...
-