Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!usc!samsung!uunet!sparky!kent From: dvadura@watdragon.waterloo.edu (Dennis Vadura) Newsgroups: comp.sources.misc Subject: v20i084: dmake - dmake version 3.7, Patch02i/12 Message-ID: <1991Jun29.222731.4579@sparky.IMD.Sterling.COM> Date: 29 Jun 91 22:27:31 GMT References: Sender: kent@sparky.IMD.Sterling.COM (Kent Landfield) Organization: Sterling Software, IMD Lines: 1269 Approved: kent@sparky.imd.sterling.com X-Md4-Signature: 8ae0c4a5af6b62edcaa78aaf87e7f3c8 Submitted-by: Dennis Vadura Posting-number: Volume 20, Issue 84 Archive-name: dmake/patch02i Patch-To: dmake: Volume 19, Issue 22-58 #!/bin/sh # this is dp2.08 (part 8 of a multipart archive) # do not concatenate these parts, unpack them in order with /bin/sh # file dm37p2 continued # if test ! -r _shar_seq_.tmp; then echo 'Please unpack part 1 first!' exit 1 fi (read Scheck if test "$Scheck" != 8; 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 echo 'x - still skipping dm37p2' else echo 'x - continuing file dm37p2' sed 's/^X//' << 'SHAR_EOF' >> 'dm37p2' && Xint Usage ANSI((int)); Xint Version ANSI(()); Xchar * Get_suffix ANSI((char *)); Xchar * Build_path ANSI((char *, char *)); Xvoid Make_rules ANSI(()); Xvoid Create_macro_vars ANSI(()); Xtime_t Do_stat ANSI((char *, char *, char **)); Xint Do_touch ANSI((char *, char *, char **)); Xvoid Void_lib_cache ANSI((char *, char *)); Xtime_t Do_time ANSI(()); Xint Do_cmnd ANSI((char *, int, int, CELLPTR, int, int, int)); Xchar ** Pack_argv ANSI((int, int, char *)); Xchar * Read_env_string ANSI((char *)); Xint Write_env_string ANSI((char *, char *)); Xvoid ReadEnvironment ANSI(()); Xvoid Catch_signals ANSI((void (*)())); Xvoid Clear_signals ANSI(()); Xvoid Prolog ANSI((int, char* [])); Xvoid Epilog ANSI((int)); Xchar * Get_current_dir ANSI(()); Xint Set_dir ANSI((char*)); Xchar Get_switch_char ANSI(()); XFILE* Get_temp ANSI((char **, char *, int)); XFILE * Start_temp ANSI((char *, CELLPTR, char **)); Xvoid Open_temp_error ANSI((char *, char *)); Xvoid Link_temp ANSI((CELLPTR, FILE *, char *)); Xvoid Close_temp ANSI((CELLPTR, FILE *)); Xvoid Unlink_temp_files ANSI((CELLPTR)); Xvoid Handle_result ANSI((int, int, int, CELLPTR)); Xvoid Update_time_stamp ANSI((CELLPTR)); Xvoid Parse ANSI((FILE *)); Xint Get_line ANSI((char *, FILE *)); Xchar * Do_comment ANSI((char *, char **, int)); Xchar * Get_token ANSI((TKSTRPTR, char *, int)); Xvoid Quit ANSI(()); Xvoid Read_state ANSI(()); Xvoid Write_state ANSI(()); Xint Check_state ANSI((CELLPTR, STRINGPTR *, int)); Xchar* basename ANSI((char *)); Xvoid Dump ANSI(()); Xvoid Dump_recipe ANSI((STRINGPTR)); Xint Parse_macro ANSI((char *, int)); Xint Macro_op ANSI((char *)); Xint Parse_rule_def ANSI((int *)); Xint Rule_op ANSI((char *)); Xvoid Add_recipe_to_list ANSI((char *, int, int)); Xvoid Bind_rules_to_targets ANSI((int)); Xint Set_group_attributes ANSI((char *)); XDFALINKPTR Match_dfa ANSI((char *)); Xvoid Check_circle_dfa ANSI(()); Xvoid Add_nfa ANSI((char *)); Xchar * Exec_function ANSI((char *)); Xint If_root_path ANSI((char *)); Xint runargv ANSI((CELLPTR, int, int, int, int, char *)); Xvoid Clean_up_processes ANSI(()); Xint Wait_for_child ANSI((int, int)); Xtime_t seek_arch ANSI((char*, char*)); Xint touch_arch ANSI((char*, char*)); Xint _chdir ANSI((char *)); Xvoid Remove_prq ANSI((CELLPTR)); Xvoid Hook_std_writes ANSI((char *)); XX X#endif XSHAR_EOF Xchmod 0640 msdos/ztcdos/public.h || Xecho 'restore of msdos/ztcdos/public.h failed' XWc_c="`wc -c < 'msdos/ztcdos/public.h'`" Xtest 5417 -eq "$Wc_c" || X echo 'msdos/ztcdos/public.h: original size 5417, current size' "$Wc_c" Xfi X# ============= msdos/ztcdos/startup.mk ============== Xif test -f 'msdos/ztcdos/startup.mk' -a X"$1" != X"-c"; then X echo 'x - skipping msdos/ztcdos/startup.mk (File already exists)' Xelse Xecho 'x - extracting msdos/ztcdos/startup.mk (Text)' Xsed 's/^X//' << 'SHAR_EOF' > 'msdos/ztcdos/startup.mk' && X# MSDOS DMAKE startup file. Customize to suit your needs. X# Assumes MKS toolkit for the tool commands, and Zortech C. Change as req'd. X# See the documentation for a description of internally defined macros. X# X# Disable warnings for macros redefined here that were given X# on the command line. X__.SILENT := $(.SILENT) X.SILENT := yes XX X# Configuration parameters for DMAKE startup.mk file X# Set these to NON-NULL if you wish to turn the parameter on. X_HAVE_RCS := yes # yes => RCS is installed. X_HAVE_SCCS := # yes => SCCS is installed. XX X# Applicable suffix definitions XA := .lib # Libraries XE := .exe # Executables XF := .for # Fortran XO := .obj # Objects XP := .pas # Pascal XS := .asm # Assembler sources XV := # RCS suffix XX X# See if these are defined XTMPDIR := $(ROOTDIR)/tmp X.IMPORT .IGNORE : TMPDIR SHELL COMSPEC XX X# Recipe execution configurations X# First set SHELL, If it is not defined, use COMSPEC, otherwise X# it is assumed to be MKS Korn SHELL. X.IF $(SHELL) == $(NULL) X.IF $(COMSPEC) == $(NULL) XX SHELL := $(ROOTDIR)/bin/sh$E X.ELSE XX SHELL := $(COMSPEC) X.END X.END XGROUPSHELL := $(SHELL) XX X# Now set remaining arguments depending on which SHELL we X# are going to use. COMSPEC (assumed to be command.com) or X# MKS Korn Shell. X.IF $(SHELL)==$(COMSPEC) XX SHELLFLAGS := $(SWITCHAR)c XX GROUPFLAGS := $(SHELLFLAGS) XX SHELLMETAS := *"?<> XX GROUPSUFFIX := .bat XX DIRSEPSTR := \\ XX DIVFILE = $(TMPFILE:s,/,\) X.ELSE XX SHELLFLAGS := -c XX GROUPFLAGS := XX SHELLMETAS := *"?<>|()&][$$\#`' XX GROUPSUFFIX := .ksh XX .MKSARGS := yes XX DIVFILE = $(TMPFILE:s,/,${DIVSEP_shell_${USESHELL}}) XX DIVSEP_shell_yes := \\\ XX DIVSEP_shell_no := \\ X.END XX X# Standard C-language command names and flags XX CC := ztc # C-compiler and flags XX CFLAGS += XX XX AS := masm # Assembler and flags XX ASFLAGS += XX XX LD = blink # Loader and flags XX LDFLAGS += XX LDLIBS = XX X# Definition of $(MAKE) macro for recursive makes. XX MAKE = $(MAKECMD) $(MFLAGS) XX X# Language and Parser generation Tools and their flags XX YACC := yacc # standard yacc XX YFLAGS += XX YTAB := ytab # yacc output files name stem. XX XX LEX := lex # standard lex XX LFLAGS += XX LEXYY := lex_yy # lex output file XX X# Other Compilers, Tools and their flags XX PC := any_pc # pascal compiler XX RC := anyf77 # ratfor compiler XX FC := anyf77 # fortran compiler XX XX CO := co # check out for RCS XX COFLAGS += -q XX XX AR := ar # archiver XX ARFLAGS+= ruv XX XX RM := rm # remove a file command XX RMFLAGS += XX X# Implicit generation rules for making inferences. X# We don't provide .yr or .ye rules here. They're obsolete. X# Rules for making *$O XX %$O : %.c ; $(CC) $(CFLAGS) -c $< XX %$O : %.cpp ; $(CC) $(CFLAGS) -c $< XX %$O : %$P ; $(PC) $(PFLAGS) -c $< XX %$O : %$S ; $(AS) $(ASFLAGS) $(<:s,/,\); XX %$O : %.cl ; class -c $< XX %$O : %.e %.r %.F %$F ; $(FC) $(RFLAGS) $(EFLAGS) $(FFLAGS) -c $< XX X# Executables XX %$E : %$O ; $(CC) $(LDFLAGS) -o$@ $< $(LDLIBS) XX X# lex and yacc rules XX %.c : %.y ; $(YACC) $(YFLAGS) $<; mv $(YTAB).c $@ XX %.c : %.l ; $(LEX) $(LFLAGS) $<; mv $(LEXYY).c $@ XX X# RCS support X.IF $(_HAVE_RCS) XX % : $$(@:d)RCS$$(DIRSEPSTR)$$(@:f)$V;- $(CO) $(COFLAGS) $@ XX .NOINFER : $$(@:d)RCS$$(DIRSEPSTR)$$(@:f)$V X.END XX X# SCCS support X.IF $(_HAVE_SCCS) XX % : s.% ; get $@ XX .NOINFER : s.% X.END XX X# Recipe to make archive files. X%$A : X[ XX $(AR) $(ARFLAGS) $@ $? XX $(RM) $(RMFLAGS) $? X] XX X# DMAKE uses this recipe to remove intermediate targets X.REMOVE :; $(RM) -f $< XX X# AUGMAKE extensions for SYSV compatibility X@B = $(@:b) X@D = $(@:d) X@F = $(@:f) X*B = $(*:b) X*D = $(*:d) X*F = $(*:f) X 'msdos/ztcdos/tempnam.c' && X/*LINTLIBRARY*/ X#include X#include X#include X#include XX X#if defined(max) X# undef max X#endif X#define max(A,B) (((A)<(B))?(B):(A)) XX Xextern char *mktemp(); Xextern int access(); Xint _access(); XX X/* Zortech C stdio.h doesn't define P_tmpdir, so let's do it here */ X/* Under DOS leave the default tmpdir pointing here! */ Xstatic char *P_tmpdir = ""; XX Xchar * Xtempnam(dir, prefix) Xconst char *dir; /* use this directory please (if non-NULL) */ Xconst char *prefix; /* use this (if non-NULL) as filename prefix */ X{ XX static int count = 0; XX register char *p, *q, *tmpdir; XX int tl=0, dl=0, pl; XX char buf[30]; XX XX pl = strlen(P_tmpdir); XX XX if( (tmpdir = getenv("TMPDIR")) != NULL ) tl = strlen(tmpdir); XX if( dir != NULL ) dl = strlen(dir); XX XX if( (p = malloc((unsigned)(max(max(dl,tl),pl)+13))) == NULL ) XX return(NULL); XX XX *p = '\0'; XX XX if( (tl == 0) || (_access( strcpy(p, tmpdir), 0) != 0) ) XX if( (dl == 0) || (_access( strcpy(p, dir), 0) != 0) ) XX if( _access( strcpy(p, P_tmpdir), 0) != 0 ) XX if( !prefix ) XX prefix = "tp"; XX XX if(prefix) XX { XX *(p+strlen(p)+2) = '\0'; XX (void)strncat(p, prefix, 2); XX } XX XX sprintf( buf, "%08x", _psp ); XX buf[6]='\0'; XX (void)strcat(p, buf ); XX sprintf( buf, "%04d", count++ ); XX q=p+strlen(p)-6; XX *q++ = buf[0]; *q++ = buf[1]; XX *q++ = buf[2]; *q++ = buf[3]; XX XX if( (q = strrchr(p,'.')) != NULL ) *q = '\0'; XX XX return(p); X} XX XX XX X_access( name, flag ) Xchar *name; Xint flag; X{ XX char *p; XX int r; XX XX if( name == NULL || !*name ) return(1); /* NULL dir means current dir */ XX r = access( name, flag ); XX p = name+strlen(name)-1; XX if(*p != '/' && *p != '\\') strcat( p, "/" ); XX XX return( r ); X} XSHAR_EOF Xchmod 0440 msdos/ztcdos/tempnam.c || Xecho 'restore of msdos/ztcdos/tempnam.c failed' XWc_c="`wc -c < 'msdos/ztcdos/tempnam.c'`" Xtest 1738 -eq "$Wc_c" || X echo 'msdos/ztcdos/tempnam.c: original size 1738, current size' "$Wc_c" Xfi X# ============= unix/coherent/config.h ============== Xif test ! -d 'unix'; then X echo 'x - creating directory unix' X mkdir 'unix' Xfi Xif test ! -d 'unix/coherent'; then X echo 'x - creating directory unix/coherent' X mkdir 'unix/coherent' Xfi Xif test -f 'unix/coherent/config.h' -a X"$1" != X"-c"; then X echo 'x - skipping unix/coherent/config.h (File already exists)' Xelse Xecho 'x - extracting unix/coherent/config.h (Text)' Xsed 's/^X//' << 'SHAR_EOF' > 'unix/coherent/config.h' && X/* X-- COHERENT config.h X-- SYNOPSIS -- Configurarion include file. X-- X-- DESCRIPTION X-- There is one of these for each specific machine configuration. X-- It can be used to further tweek the machine specific sources X-- so that they compile. X-- X-- AUTHOR X-- Dennis Vadura, dvadura@watdragon.uwaterloo.ca X-- CS DEPT, University of Waterloo, Waterloo, Ont., Canada X-- X-- COPYRIGHT X-- Copyright (c) 1990 by Dennis Vadura. All rights reserved. X-- X-- This program is free software; you can redistribute it and/or X-- modify it under the terms of the GNU General Public License X-- (version 1), as published by the Free Software Foundation, and X-- found in the file 'LICENSE' included with this distribution. X-- X-- This program is distributed in the hope that it will be useful, X-- but WITHOUT ANY WARRANTY; without even the implied warrant of X-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the X-- GNU General Public License for more details. X-- X-- You should have received a copy of the GNU General Public License X-- along with this program; if not, write to the Free Software X-- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. X-- X-- LOG X-- $Log: config.h,v $ XX * Revision 1.1 91/06/24 11:09:20 dvadura XX * dmake release Version 3.7 XX * XX * Revision 1.1 91/05/06 15:28:20 dvadura XX * dmake Release Version 3.7 XX * X*/ XX X/* 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. */ X#define coreleft() 0L XX Xextern char *getcwd (); XX X/* Define setvbuf, SysV doesn't have one */ X#define setvbuf(fp, bp, type, len) setbuf( fp, NULL ); X#define tzset settz XX X/* We don't care about CONST */ X#define CONST X#define void int Xtypedef paddr_t off_t; XX X/* options. . . */ X#define ASCARCH 0 XSHAR_EOF Xchmod 0444 unix/coherent/config.h || Xecho 'restore of unix/coherent/config.h failed' XWc_c="`wc -c < 'unix/coherent/config.h'`" Xtest 1940 -eq "$Wc_c" || X echo 'unix/coherent/config.h: original size 1940, current size' "$Wc_c" Xfi X# ============= unix/coherent/config.mk ============== Xif test -f 'unix/coherent/config.mk' -a X"$1" != X"-c"; then X echo 'x - skipping unix/coherent/config.mk (File already exists)' Xelse Xecho 'x - extracting unix/coherent/config.mk (Text)' Xsed 's/^X//' << 'SHAR_EOF' > 'unix/coherent/config.mk' && X# This is the COHERENT configuration file for DMAKE X# It simply modifies the values of SRC, and checks to see if X# OSENVIRONMENT is defined. If so it includes the appropriate X# config.mk file. X# X# It also sets the values of .SOURCE.c and .SOURCE.h to include the local X# directory. X# Xosrdir := $(OS)$(DIRSEPSTR)$(OSRELEASE) XX X# The following are required sources XOSDSRC := vfprintf.c getcwd.c X.IF $(OSDSRC) XX SRC += $(OSDSRC) XX .SETDIR=$(osrdir) : $(OSDSRC) X.END XX X.SOURCE.h : $(osrdir) XX X# Local configuration modifications for CFLAGS, there's local SysV includes X# too. XCFLAGS += -I$(osrdir) XX X# See if we modify anything in the lower levels. X.IF $(OSENVIRONMENT) != $(NULL) XX .INCLUDE .IGNORE : $(osrdir)$(DIRSEPSTR)$(OSENVIRONMENT)$(DIRSEPSTR)config.mk X.END XSHAR_EOF Xchmod 0644 unix/coherent/config.mk || Xecho 'restore of unix/coherent/config.mk failed' XWc_c="`wc -c < 'unix/coherent/config.mk'`" Xtest 765 -eq "$Wc_c" || X echo 'unix/coherent/config.mk: original size 765, current size' "$Wc_c" Xfi X# ============= unix/coherent/getcwd.c ============== Xif test -f 'unix/coherent/getcwd.c' -a X"$1" != X"-c"; then X echo 'x - skipping unix/coherent/getcwd.c (File already exists)' Xelse Xecho 'x - extracting unix/coherent/getcwd.c (Text)' Xsed 's/^X//' << 'SHAR_EOF' > 'unix/coherent/getcwd.c' && X#if __STDC__ Xchar *getcwd(char *buffer, int length) X#else Xchar *getcwd (buffer, length) Xchar *buffer; Xint length; X#endif X{ XX extern char *getwd(); XX XX char *dir; XX dir = getwd(); XX if (dir) XX { XX strncpy(buffer,dir,length); XX return buffer; XX } XX else XX { XX *buffer = 0; XX return (char *) 0; XX } X} XX XSHAR_EOF Xchmod 0444 unix/coherent/getcwd.c || Xecho 'restore of unix/coherent/getcwd.c failed' XWc_c="`wc -c < 'unix/coherent/getcwd.c'`" Xtest 306 -eq "$Wc_c" || X echo 'unix/coherent/getcwd.c: original size 306, current size' "$Wc_c" Xfi X# ============= unix/coherent/make.sh ============== Xif test -f 'unix/coherent/make.sh' -a X"$1" != X"-c"; then X echo 'x - skipping unix/coherent/make.sh (File already exists)' Xelse Xecho 'x - extracting unix/coherent/make.sh (Text)' Xsed 's/^X//' << 'SHAR_EOF' > 'unix/coherent/make.sh' && Xmkdir objects Xcc -c -I. -Iunix -Iunix/coherent -O infer.c Xmv infer.o objects Xcc -c -I. -Iunix -Iunix/coherent -O make.c Xmv make.o objects Xcc -c -I. -Iunix -Iunix/coherent -O stat.c Xmv stat.o objects Xcc -c -I. -Iunix -Iunix/coherent -O expand.c Xmv expand.o objects Xcc -c -I. -Iunix -Iunix/coherent -O dmstring.c Xmv dmstring.o objects Xcc -c -I. -Iunix -Iunix/coherent -O hash.c Xmv hash.o objects Xcc -c -I. -Iunix -Iunix/coherent -O dag.c Xmv dag.o objects Xcc -c -I. -Iunix -Iunix/coherent -O dmake.c Xmv dmake.o objects Xcc -c -I. -Iunix -Iunix/coherent -O path.c Xmv path.o objects Xcc -c -I. -Iunix -Iunix/coherent -O imacs.c Xmv imacs.o objects Xcc -c -I. -Iunix -Iunix/coherent -O sysintf.c Xmv sysintf.o objects Xcc -c -I. -Iunix -Iunix/coherent -O parse.c Xmv parse.o objects Xcc -c -I. -Iunix -Iunix/coherent -O getinp.c Xmv getinp.o objects Xcc -c -I. -Iunix -Iunix/coherent -O quit.c Xmv quit.o objects Xcc -c -I. -Iunix -Iunix/coherent -O state.c Xmv state.o objects Xcc -c -I. -Iunix -Iunix/coherent -O basename.c Xmv basename.o objects Xcc -c -I. -Iunix -Iunix/coherent -O dmdump.c Xmv dmdump.o objects Xcc -c -I. -Iunix -Iunix/coherent -O macparse.c Xmv macparse.o objects Xcc -c -I. -Iunix -Iunix/coherent -O rulparse.c Xmv rulparse.o objects Xcc -c -I. -Iunix -Iunix/coherent -O percent.c Xmv percent.o objects Xcc -c -I. -Iunix -Iunix/coherent -O function.c Xmv function.o objects Xcc -c -I. -Iunix -Iunix/coherent -O unix/arlib.c Xmv arlib.o objects Xcc -c -I. -Iunix -Iunix/coherent -O unix/dirbrk.c Xmv dirbrk.o objects Xcc -c -I. -Iunix -Iunix/coherent -O unix/rmprq.c Xmv rmprq.o objects Xcc -c -I. -Iunix -Iunix/coherent -O unix/ruletab.c Xmv ruletab.o objects Xcc -c -I. -Iunix -Iunix/coherent -O unix/runargv.c Xmv runargv.o objects Xcc -c -I. -Iunix -Iunix/coherent -O unix/coherent/vfprintf.c Xmv vfprintf.o objects Xcc -c -I. -Iunix -Iunix/coherent -O unix/coherent/getcwd.c Xmv getcwd.o objects Xcc -o dmake objects/infer.o objects/make.o objects/stat.o objects/expand.o objects/dmstring.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/state.o objects/basename.o objects/dmdump.o objects/macparse.o objects/rulparse.o objects/percent.o objects/function.o objects/arlib.o objects/dirbrk.o objects/rmprq.o objects/ruletab.o objects/runargv.o objects/vfprintf.o objects/getcwd.o Xcp unix/coherent/startup.mk startup.mk XSHAR_EOF Xchmod 0644 unix/coherent/make.sh || Xecho 'restore of unix/coherent/make.sh failed' XWc_c="`wc -c < 'unix/coherent/make.sh'`" Xtest 2405 -eq "$Wc_c" || X echo 'unix/coherent/make.sh: original size 2405, current size' "$Wc_c" Xfi X# ============= unix/coherent/public.h ============== Xif test -f 'unix/coherent/public.h' -a X"$1" != X"-c"; then X echo 'x - skipping unix/coherent/public.h (File already exists)' Xelse Xecho 'x - extracting unix/coherent/public.h (Text)' Xsed 's/^X//' << 'SHAR_EOF' > 'unix/coherent/public.h' && X/* RCS -- $Header$ X-- WARNING -- This file is AUTOMATICALLY GENERATED DO NOT EDIT IT X-- X-- SYNOPSIS -- Local functions exported to be visible by others. X-- X-- DESCRIPTION X-- This file is generated by 'genpub'. Function declarations X-- that appear in this file are extracted by 'genpub' from X-- source files. Any function in the source file whose definition X-- appears like: X-- X-- PUBLIC return_type X-- function( arg_list ); X-- type_expr1 arg1; X-- ... X-- X-- has its definition extracted and a line of the form: X-- X-- return_type function ANSI((type_expr1,type_expr2,...)); X-- X-- entered into the output file. X-- X-- AUTHOR X-- Dennis Vadura, dvadura@watdragon.uwaterloo.ca X-- CS DEPT, University of Waterloo, Waterloo, Ont., Canada X-- X-- COPYRIGHT X-- Copyright (c) 1990 by Dennis Vadura. All rights reserved. X-- X-- This program is free software; you can redistribute it and/or X-- modify it under the terms of the GNU General Public License X-- (version 1), as published by the Free Software Foundation, and X-- found in the file 'LICENSE' included with this distribution. X-- X-- This program is distributed in the hope that it will be useful, X-- but WITHOUT ANY WARRANTY; without even the implied warrant of X-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the X-- GNU General Public License for more details. X-- X-- You should have received a copy of the GNU General Public License X-- along with this program; if not, write to the Free Software X-- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. X-- X-- LOG X-- $Log$ X*/ XX X#ifndef _DMAKE_PUBLIC_h X#define _DMAKE_PUBLIC_h XX Xvoid Infer_recipe ANSI((CELLPTR, CELLPTR)); Xint Make_targets ANSI(()); Xint Exec_commands ANSI((CELLPTR)); Xvoid Pop_dir ANSI((int)); Xvoid Append_line ANSI((char *, int, FILE *, char *, int, int)); Xvoid Stat_target ANSI((CELLPTR, int)); Xchar * Expand ANSI((char *)); Xchar * Apply_edit ANSI((char *, char *, char *, int, int)); Xvoid Map_esc ANSI((char *)); Xchar* Apply_modifiers ANSI((int, char *)); Xchar* Tokenize ANSI((char *, char *)); Xchar * _strjoin ANSI((char *, char *, int, int)); Xchar * _stradd ANSI((char *, char *, int)); Xchar * _strapp ANSI((char *, char *)); Xchar * _strdup ANSI((char *)); Xchar * _strpbrk ANSI((char *, char *)); Xchar * _strspn ANSI((char *, char *)); Xchar * _strstr ANSI((char *, char *)); Xchar * _substr ANSI((char *, char *)); Xuint16 Hash ANSI((char *, uint32 *)); XHASHPTR Get_name ANSI((char *, HASHPTR *, int)); XHASHPTR Search_table ANSI((HASHPTR *, char *, uint16 *, uint32 *)); XHASHPTR Def_macro ANSI((char *, char *, int)); XCELLPTR Def_cell ANSI((char *)); XLINKPTR Add_prerequisite ANSI((CELLPTR, CELLPTR, int, int)); Xvoid Clear_prerequisites ANSI((CELLPTR)); Xint Test_circle ANSI((CELLPTR, int)); XSTRINGPTR Def_recipe ANSI((char *, STRINGPTR, int, int)); Xt_attr Rcp_attribute ANSI((char *)); Xint main ANSI((int, char **)); XFILE * Openfile ANSI((char *, int, int)); XFILE * Closefile ANSI(()); XFILE * Search_file ANSI((char *, char **)); Xchar * Filename ANSI(()); Xvoid No_ram ANSI(()); Xint Usage ANSI((int)); Xint Version ANSI(()); Xchar * Get_suffix ANSI((char *)); Xchar * Build_path ANSI((char *, char *)); Xvoid Make_rules ANSI(()); Xvoid Create_macro_vars ANSI(()); Xtime_t Do_stat ANSI((char *, char *, char **)); Xint Do_touch ANSI((char *, char *, char **)); Xvoid Void_lib_cache ANSI((char *, char *)); Xtime_t Do_time ANSI(()); Xint Do_cmnd ANSI((char *, int, int, CELLPTR, int, int, int)); Xchar ** Pack_argv ANSI((int, int, char *)); Xchar * Read_env_string ANSI((char *)); Xint Write_env_string ANSI((char *, char *)); Xvoid ReadEnvironment ANSI(()); Xvoid Catch_signals ANSI((void (*)())); Xvoid Clear_signals ANSI(()); Xvoid Prolog ANSI((int, char* [])); Xvoid Epilog ANSI((int)); Xchar * Get_current_dir ANSI(()); Xint Set_dir ANSI((char*)); Xchar Get_switch_char ANSI(()); XFILE* Get_temp ANSI((char **, char *, int)); XFILE * Start_temp ANSI((char *, CELLPTR, char **)); Xvoid Open_temp_error ANSI((char *, char *)); Xvoid Link_temp ANSI((CELLPTR, FILE *, char *)); Xvoid Close_temp ANSI((CELLPTR, FILE *)); Xvoid Unlink_temp_files ANSI((CELLPTR)); Xvoid Handle_result ANSI((int, int, int, CELLPTR)); Xvoid Update_time_stamp ANSI((CELLPTR)); Xvoid Parse ANSI((FILE *)); Xint Get_line ANSI((char *, FILE *)); Xchar * Do_comment ANSI((char *, char **, int)); Xchar * Get_token ANSI((TKSTRPTR, char *, int)); Xvoid Quit ANSI(()); Xvoid Read_state ANSI(()); Xvoid Write_state ANSI(()); Xint Check_state ANSI((CELLPTR, STRINGPTR *, int)); Xchar* basename ANSI((char *)); Xvoid Dump ANSI(()); Xvoid Dump_recipe ANSI((STRINGPTR)); Xint Parse_macro ANSI((char *, int)); Xint Macro_op ANSI((char *)); Xint Parse_rule_def ANSI((int *)); Xint Rule_op ANSI((char *)); Xvoid Add_recipe_to_list ANSI((char *, int, int)); Xvoid Bind_rules_to_targets ANSI((int)); Xint Set_group_attributes ANSI((char *)); XDFALINKPTR Match_dfa ANSI((char *)); Xvoid Check_circle_dfa ANSI(()); Xvoid Add_nfa ANSI((char *)); Xchar * Exec_function ANSI((char *)); Xtime_t seek_arch ANSI((char *, char *)); Xint If_root_path ANSI((char *)); Xvoid Remove_prq ANSI((CELLPTR)); Xint runargv ANSI((CELLPTR, int, int, int, int, char *)); Xint Wait_for_child ANSI((int, int)); Xvoid Clean_up_processes ANSI(()); XX X#endif XSHAR_EOF Xchmod 0640 unix/coherent/public.h || Xecho 'restore of unix/coherent/public.h failed' XWc_c="`wc -c < 'unix/coherent/public.h'`" Xtest 5318 -eq "$Wc_c" || X echo 'unix/coherent/public.h: original size 5318, current size' "$Wc_c" Xfi X# ============= unix/coherent/startup.mk ============== Xif test -f 'unix/coherent/startup.mk' -a X"$1" != X"-c"; then X echo 'x - skipping unix/coherent/startup.mk (File already exists)' Xelse Xecho 'x - extracting unix/coherent/startup.mk (Text)' Xsed 's/^X//' << 'SHAR_EOF' > 'unix/coherent/startup.mk' && X# Generic UNIX DMAKE startup file. Customize to suit your needs. X# Should work for both SYSV, and BSD 4.3 X# See the documentation for a description of internally defined macros. X# X# Disable warnings for macros redefined here that were given X# on the command line. X__.SILENT := $(.SILENT) X.SILENT := yes XX X# Configuration parameters for DMAKE startup.mk file X# Set these to NON-NULL if you wish to turn the parameter on. X_HAVE_RCS := yes # yes => RCS is installed. X_HAVE_SCCS := yes # yes => SCCS is installed. XX X# Applicable suffix definitions XA := .a # Libraries XE := # Executables XF := .f # Fortran XO := .o # Objects XP := .p # Pascal XS := .s # Assembler sources XV := ,v # RCS suffix XX X# Recipe execution configurations XSHELL := /bin/sh XSHELLFLAGS := -ce XGROUPSHELL := $(SHELL) XGROUPFLAGS := XSHELLMETAS := |();&<>?*][$$:\\#`'" XGROUPSUFFIX := XDIVFILE = $(TMPFILE) XX X# 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 X# Definition of $(MAKE) macro for recursive makes. XX MAKE = $(MAKECMD) $(MFLAGS) XX X# Definition of Print command for this system. XX PRINT = lpr XX X# 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 X# 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 X# Implicit generation rules for making inferences. X# We don't provide .yr or .ye rules here. They're obsolete. X# Rules for making *$O XX %$O : %.c ; $(CC) $(CFLAGS) -c $< XX %$O : %$P ; $(PC) $(PFLAGS) -c $< XX %$O : %$S ; $(AS) $(ASFLAGS) $< XX %$O : %.cl ; class -c $< XX %$O : %.e %.r %.F %$F XX $(FC) $(RFLAGS) $(EFLAGS) $(FFLAGS) -c $< XX X# Executables XX %$E : %$O ; $(LD) $(LDFLAGS) -o $@ $< $(LDLIBES) XX X# lex and yacc rules XX %.c : %.y ; $(YACC) $(YFLAGS) $<; mv $(YTAB).c $@ XX %.c : %.l ; $(LEX) $(LFLAGS) $<; mv $(LEXYY).c $@ XX X# This rule tells how to make *.out from it's immediate list of prerequisites X# UNIX only. XX %.out :; $(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS) XX X# RCS support X.IF $(_HAVE_RCS) XX % : %$V $$(@:d)RCS/$$(@:f)$V;- $(CO) $(COFLAGS) $@ XX .NOINFER : %$V $$(@:d)RCS/$$(@:f)$V X.END XX X# SCCS support X.IF $(_HAVE_SCCS) XX % : s.% ; get $@ XX .NOINFER : s.% X.END XX X# Recipe to make archive files. X%$A : X[ XX $(AR) $(ARFLAGS) $@ $? XX $(RM) $(RMFLAGS) $? XX ranlib $@ X] XX X# DMAKE uses this recipe to remove intermediate targets X.REMOVE :; $(RM) -f $< XX X# AUGMAKE extensions for SYSV compatibility X@B = $(@:b) X@D = $(@:d) X@F = $(@:f) X*B = $(*:b) X*D = $(*:d) X*F = $(*:f) X 'unix/coherent/stdarg.h' && X/* XX * stdarg.h XX * XX * defines ANSI style macros for accessing arguments of a function which takes XX * a variable number of arguments XX * XX */ XX X#if !defined(__STDARG_H__) X#define __STDARG_H__ XX X#if !defined(_VA_LIST_) && !defined(_VA_LIST) X#define _VA_LIST_ X#define _VA_LIST Xtypedef char *va_list; X#endif XX X#define va_dcl int va_alist X#define va_start(ap,v) ap = (va_list)&va_alist X#define va_arg(ap,t) ((t*)(ap += sizeof(t)))[-1] X#define va_end(ap) ap = NULL X#endif XSHAR_EOF Xchmod 0444 unix/coherent/stdarg.h || Xecho 'restore of unix/coherent/stdarg.h failed' XWc_c="`wc -c < 'unix/coherent/stdarg.h'`" Xtest 469 -eq "$Wc_c" || X echo 'unix/coherent/stdarg.h: original size 469, current size' "$Wc_c" Xfi X# ============= unix/coherent/stdlib.h ============== Xif test -f 'unix/coherent/stdlib.h' -a X"$1" != X"-c"; then X echo 'x - skipping unix/coherent/stdlib.h (File already exists)' Xelse Xecho 'x - extracting unix/coherent/stdlib.h (Text)' Xsed 's/^X//' << 'SHAR_EOF' > 'unix/coherent/stdlib.h' && X#ifndef _STDLIB_INCLUDED_ X#define _STDLIB_INCLUDED_ XX Xextern /*GOTO*/ _exit(); Xextern /*GOTO*/ exit(); Xextern /*GOTO*/ abort(); Xextern int system(); Xextern char *getenv(); Xextern char *calloc(); Xextern char *malloc(); Xextern char *realloc(); Xextern free(); Xextern int errno; XX X#ifndef EIO X# include X#endif XX X#endif /* _STDLIB_INCLUDED_ */ XSHAR_EOF Xchmod 0444 unix/coherent/stdlib.h || Xecho 'restore of unix/coherent/stdlib.h failed' XWc_c="`wc -c < 'unix/coherent/stdlib.h'`" Xtest 346 -eq "$Wc_c" || X echo 'unix/coherent/stdlib.h: original size 346, current size' "$Wc_c" Xfi X# ============= unix/coherent/time.h ============== Xif test -f 'unix/coherent/time.h' -a X"$1" != X"-c"; then X echo 'x - skipping unix/coherent/time.h (File already exists)' Xelse Xecho 'x - extracting unix/coherent/time.h (Text)' Xsed 's/^X//' << 'SHAR_EOF' > 'unix/coherent/time.h' && X/* X** Berkeley get this wrong! X*/ X#ifndef TIME_h X#define TIME_h XX Xtypedef long time_t; /* this is the thing we use */ XX X#endif TIME_h XX XSHAR_EOF Xchmod 0444 unix/coherent/time.h || Xecho 'restore of unix/coherent/time.h failed' XWc_c="`wc -c < 'unix/coherent/time.h'`" Xtest 133 -eq "$Wc_c" || X echo 'unix/coherent/time.h: original size 133, current size' "$Wc_c" Xfi X# ============= unix/coherent/vfprintf.c ============== Xif test -f 'unix/coherent/vfprintf.c' -a X"$1" != X"-c"; then X echo 'x - skipping unix/coherent/vfprintf.c (File already exists)' Xelse Xecho 'x - extracting unix/coherent/vfprintf.c (Text)' Xsed 's/^X//' << 'SHAR_EOF' > 'unix/coherent/vfprintf.c' && X/* Portable vfprintf and vprintf by Robert A. Larson */ XX X/* Copyright 1989 Robert A. Larson. XX * Distribution in any form is allowed as long as the author XX * retains credit, changes are noted by their author and the XX * copyright message remains intact. This program comes as-is XX * with no warentee of fitness for any purpouse. XX * XX * Thanks to Doug Gwen, Chris Torek, and others who helped clarify XX * the ansi printf specs. XX * XX * Please send any bug fixes and improvments to blarson@skat.usc.edu . XX * The use of goto is NOT a bug. XX */ XX X/* Feb 9, 1989 blarson First usenet release */ XX X/* This code implements the vfprintf function, without relying on XX * the existance of _doprint or other system specific code. XX * XX * Define NOVOID if void * is not a supported type. XX * XX * Two compile options are available for efficency: XX * INTSPRINTF should be defined if sprintf is int and returns XX * the number of chacters formated. XX * LONGINT should be defined if sizeof(long) == sizeof(int) XX * XX * They only make the code smaller and faster, they need not be XX * defined. XX * XX * UNSIGNEDSPECIAL should be defined if unsigned is treated differently XX * than int in argument passing. If this is definded, and LONGINT is not, XX * the compiler must support the type unsingned long. XX * XX * Most quirks and bugs of the available fprintf fuction are duplicated, XX * however * in the width and precision fields will work correctly XX * even if fprintf does not support this. The %n format and the return XX * count will only work if fprintf returns the number of characters XX * formatted. XX * XX * Bad format strings, or those with very long width and precision XX * fields (including expanded * fields) will cause undesired results. XX */ XX X#ifdef OSK /* os9/68k can take advantage of both */ X#define INTSPRINTF X#define LONGINT X#endif X#define NOVOID 1 XX X/* This must be a typedef not a #define! */ X#ifdef NOVOID Xtypedef char *pointer; X#else Xtypedef void *pointer; X#endif XX X#include XX X#ifdef INTSPRINTF X#define Sprintf(string,format,arg) (sprintf((string),(format),(arg))) X#else X#define Sprintf(string,format,arg) (\ XX sprintf((string),(format),(arg)),\ XX strlen(string)\ X) X#endif XX X#include XX Xtypedef int *intp; XX Xint vfprintf(dest, format, args) XFILE *dest; Xregister char *format; Xva_list args; X{ XX register char c; XX register char *tp; XX register int count = 0; XX char tempfmt[64]; X#ifndef LONGINT XX int longflag; X#endif XX XX tempfmt[0] = '%'; XX while(c = *format++) { XX if(c=='%') { XX tp = &tempfmt[1]; X#ifndef LONGINT XX longflag = 0; X#endif Xcontinue_format: XX switch(c = *format++) { XX case 's': XX *tp++ = c; XX *tp = '\0'; XX count += fprintf(dest, tempfmt, va_arg(args, char *)); XX break; XX case 'u': XX case 'x': XX case 'o': XX case 'X': X#ifdef UNSIGNEDSPECIAL XX *tp++ = c; XX *tp = '\0'; X#ifndef LONGINT XX if(longflag) XX count += fprintf(dest, tempfmt, va_arg(args, unsigned long)); XX else X#endif XX count += fprintf(dest, tempfmt, va_arg(args, unsigned)); XX break; X#endif XX case 'd': XX case 'c': XX case 'i': XX *tp++ = c; XX *tp = '\0'; X#ifndef LONGINT XX if(longflag) XX count += fprintf(dest, tempfmt, va_arg(args, long)); XX else X#endif XX count += fprintf(dest, tempfmt, va_arg(args, int)); XX break; XX case 'f': XX case 'e': XX case 'E': XX case 'g': XX case 'G': XX *tp++ = c; XX *tp = '\0'; XX count += fprintf(dest, tempfmt, va_arg(args, double)); XX break; XX case 'p': XX *tp++ = c; XX *tp = '\0'; XX count += fprintf(dest, tempfmt, va_arg(args, pointer)); XX break; XX case '-': XX case '+': XX case '0': XX case '1': XX case '2': XX case '3': XX case '4': XX case '5': XX case '6': XX case '7': XX case '8': XX case '9': XX case '.': XX case ' ': XX case '#': XX case 'h': XX *tp++ = c; XX goto continue_format; XX case 'l': X#ifndef LONGINT XX longflag = 1; XX *tp++ = c; X#endif XX goto continue_format; XX case '*': XX tp += Sprintf(tp, "%d", va_arg(args, int)); XX goto continue_format; XX case 'n': XX *va_arg(args, intp) = count; XX break; XX case '%': XX default: XX putc(c, dest); XX count++; XX break; XX } XX } else { XX putc(c, dest); XX count++; XX } XX } XX return count; X} XX Xvprintf(format, args) Xchar *format; Xva_list args; X{ XX return vfprintf(stdout, format, args); X} XSHAR_EOF Xchmod 0444 unix/coherent/vfprintf.c || Xecho 'restore of unix/coherent/vfprintf.c failed' XWc_c="`wc -c < 'unix/coherent/vfprintf.c'`" Xtest 4312 -eq "$Wc_c" || X echo 'unix/coherent/vfprintf.c: original size 4312, current size' "$Wc_c" Xfi X# ============= unix/sysvr3/pwd/config.mk ============== Xif test ! -d 'unix/sysvr3'; then X echo 'x - creating directory unix/sysvr3' X mkdir 'unix/sysvr3' Xfi Xif test ! -d 'unix/sysvr3/pwd'; then X echo 'x - creating directory unix/sysvr3/pwd' X mkdir 'unix/sysvr3/pwd' Xfi Xif test -f 'unix/sysvr3/pwd/config.mk' -a X"$1" != X"-c"; then X echo 'x - skipping unix/sysvr3/pwd/config.mk (File already exists)' Xelse Xecho 'x - extracting unix/sysvr3/pwd/config.mk (Text)' Xsed 's/^X//' << 'SHAR_EOF' > 'unix/sysvr3/pwd/config.mk' && X# This is the Sys VR3 PWD configuration file. It configures SysvR3 unix X# versions of dmake to use a provided version of getcwd rather than the X# standard library version that uses popen to capture the output of pwd. X# XX Xosredir := $(OS)$(DIRSEPSTR)$(OSRELEASE)$(DIRSEPSTR)$(OSENVIRONMENT) XX X# The following are required sources XOSRESRC := getcwd.c XX X.IF $(OSRESRC) XX SRC += $(OSRESRC) XX .SETDIR=$(osredir) : $(OSRESRC) X.END XX X.SOURCE.h : $(osredir) XX X# Local configuration modifications for CFLAGS, there's local SysV includes X# too. XCFLAGS += -I$(osredir) XSHAR_EOF Xchmod 0640 unix/sysvr3/pwd/config.mk || Xecho 'restore of unix/sysvr3/pwd/config.mk failed' XWc_c="`wc -c < 'unix/sysvr3/pwd/config.mk'`" Xtest 559 -eq "$Wc_c" || X echo 'unix/sysvr3/pwd/config.mk: original size 559, current size' "$Wc_c" Xfi X# ============= unix/sysvr3/pwd/getcwd.c ============== Xif test -f 'unix/sysvr3/pwd/getcwd.c' -a X"$1" != X"-c"; then X echo 'x - skipping unix/sysvr3/pwd/getcwd.c (File already exists)' Xelse Xecho 'x - extracting unix/sysvr3/pwd/getcwd.c (Text)' Xsed 's/^X//' << 'SHAR_EOF' > 'unix/sysvr3/pwd/getcwd.c' && X/* XX getcwd -- get pathname of current working directory XX XX public-domain implementation XX XX last edit: 03-Nov-1990 Gwyn@BRL.MIL XX XX complies with the following standards: XX IEEE Std 1003.1-1988 XX SVID Issue 3 XX X/Open Portability Guide Issue 2 (when "XPG2" is defined) XX X/Open Portability Guide Issue 3 XX XX This implementation of getcwd() can be used to replace the UNIX XX System V library routine (which uses popen() to capture the output of XX the "pwd" command). Once that is done, "pwd" can be reimplemented as XX just puts(getcwd((char*)0,0)), assuming "XPG2" is defined below. XX XX This implementation depends on every directory having entries for XX "." and "..". It also depends on the internals of the XX data structures to some degree. SHAR_EOF true || echo 'restore of dm37p2 failed' fi echo 'End of part 8' echo 'File dm37p2 is continued in part 9' echo 9 > _shar_seq_.tmp exit 0 exit 0 # Just in case... -- Kent Landfield INTERNET: kent@sparky.IMD.Sterling.COM Sterling Software, IMD UUCP: uunet!sparky!kent Phone: (402) 291-8300 FAX: (402) 291-4362 Please send comp.sources.misc-related mail to kent@uunet.uu.net.