home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / misc / volume20 / dmake / patch02i < prev    next >
Text File  |  1991-06-29  |  39KB  |  1,278 lines

  1. Newsgroups: comp.sources.misc
  2. From: Dennis Vadura <dvadura@watdragon.waterloo.edu>
  3. Subject:  v20i084:  dmake - dmake version 3.7, Patch02i/12
  4. Message-ID: <1991Jun29.222731.4579@sparky.IMD.Sterling.COM>
  5. X-Md4-Signature: 8ae0c4a5af6b62edcaa78aaf87e7f3c8
  6. Date: Sat, 29 Jun 1991 22:27:31 GMT
  7. Approved: kent@sparky.imd.sterling.com
  8.  
  9. Submitted-by: Dennis Vadura <dvadura@watdragon.waterloo.edu>
  10. Posting-number: Volume 20, Issue 84
  11. Archive-name: dmake/patch02i
  12. Patch-To: dmake: Volume 19, Issue 22-58
  13.  
  14. #!/bin/sh
  15. # this is dp2.08 (part 8 of a multipart archive)
  16. # do not concatenate these parts, unpack them in order with /bin/sh
  17. # file dm37p2 continued
  18. #
  19. if test ! -r _shar_seq_.tmp; then
  20.     echo 'Please unpack part 1 first!'
  21.     exit 1
  22. fi
  23. (read Scheck
  24.  if test "$Scheck" != 8; then
  25.     echo Please unpack part "$Scheck" next!
  26.     exit 1
  27.  else
  28.     exit 0
  29.  fi
  30. ) < _shar_seq_.tmp || exit 1
  31. if test ! -f _shar_wnt_.tmp; then
  32.     echo 'x - still skipping dm37p2'
  33. else
  34. echo 'x - continuing file dm37p2'
  35. sed 's/^X//' << 'SHAR_EOF' >> 'dm37p2' &&
  36. Xint Usage ANSI((int));
  37. Xint Version ANSI(());
  38. Xchar * Get_suffix ANSI((char *));
  39. Xchar * Build_path ANSI((char *, char *));
  40. Xvoid Make_rules ANSI(());
  41. Xvoid Create_macro_vars ANSI(());
  42. Xtime_t Do_stat ANSI((char *, char *, char **));
  43. Xint Do_touch ANSI((char *, char *, char **));
  44. Xvoid Void_lib_cache ANSI((char *, char *));
  45. Xtime_t Do_time ANSI(());
  46. Xint Do_cmnd ANSI((char *, int, int, CELLPTR, int, int, int));
  47. Xchar ** Pack_argv ANSI((int, int, char *));
  48. Xchar * Read_env_string ANSI((char *));
  49. Xint Write_env_string ANSI((char *, char *));
  50. Xvoid ReadEnvironment ANSI(());
  51. Xvoid Catch_signals ANSI((void (*)()));
  52. Xvoid Clear_signals ANSI(());
  53. Xvoid Prolog ANSI((int, char* []));
  54. Xvoid Epilog ANSI((int));
  55. Xchar * Get_current_dir ANSI(());
  56. Xint Set_dir ANSI((char*));
  57. Xchar Get_switch_char ANSI(());
  58. XFILE* Get_temp ANSI((char **, char *, int));
  59. XFILE * Start_temp ANSI((char *, CELLPTR, char **));
  60. Xvoid Open_temp_error ANSI((char *, char *));
  61. Xvoid Link_temp ANSI((CELLPTR, FILE *, char *));
  62. Xvoid Close_temp ANSI((CELLPTR, FILE *));
  63. Xvoid Unlink_temp_files ANSI((CELLPTR));
  64. Xvoid Handle_result ANSI((int, int, int, CELLPTR));
  65. Xvoid Update_time_stamp ANSI((CELLPTR));
  66. Xvoid Parse ANSI((FILE *));
  67. Xint Get_line ANSI((char *, FILE *));
  68. Xchar * Do_comment ANSI((char *, char **, int));
  69. Xchar * Get_token ANSI((TKSTRPTR, char *, int));
  70. Xvoid Quit ANSI(());
  71. Xvoid Read_state ANSI(());
  72. Xvoid Write_state ANSI(());
  73. Xint Check_state ANSI((CELLPTR, STRINGPTR *, int));
  74. Xchar* basename ANSI((char *));
  75. Xvoid Dump ANSI(());
  76. Xvoid Dump_recipe ANSI((STRINGPTR));
  77. Xint Parse_macro ANSI((char *, int));
  78. Xint Macro_op ANSI((char *));
  79. Xint Parse_rule_def ANSI((int *));
  80. Xint Rule_op ANSI((char *));
  81. Xvoid Add_recipe_to_list ANSI((char *, int, int));
  82. Xvoid Bind_rules_to_targets ANSI((int));
  83. Xint Set_group_attributes ANSI((char *));
  84. XDFALINKPTR Match_dfa ANSI((char *));
  85. Xvoid Check_circle_dfa ANSI(());
  86. Xvoid Add_nfa ANSI((char *));
  87. Xchar * Exec_function ANSI((char *));
  88. Xint If_root_path ANSI((char *));
  89. Xint runargv ANSI((CELLPTR, int, int, int, int, char *));
  90. Xvoid Clean_up_processes ANSI(());
  91. Xint Wait_for_child ANSI((int, int));
  92. Xtime_t seek_arch ANSI((char*, char*));
  93. Xint touch_arch ANSI((char*, char*));
  94. Xint _chdir ANSI((char *));
  95. Xvoid Remove_prq ANSI((CELLPTR));
  96. Xvoid Hook_std_writes ANSI((char *));
  97. XX
  98. X#endif
  99. XSHAR_EOF
  100. Xchmod 0640 msdos/ztcdos/public.h ||
  101. Xecho 'restore of msdos/ztcdos/public.h failed'
  102. XWc_c="`wc -c < 'msdos/ztcdos/public.h'`"
  103. Xtest 5417 -eq "$Wc_c" ||
  104. X    echo 'msdos/ztcdos/public.h: original size 5417, current size' "$Wc_c"
  105. Xfi
  106. X# ============= msdos/ztcdos/startup.mk ==============
  107. Xif test -f 'msdos/ztcdos/startup.mk' -a X"$1" != X"-c"; then
  108. X    echo 'x - skipping msdos/ztcdos/startup.mk (File already exists)'
  109. Xelse
  110. Xecho 'x - extracting msdos/ztcdos/startup.mk (Text)'
  111. Xsed 's/^X//' << 'SHAR_EOF' > 'msdos/ztcdos/startup.mk' &&
  112. X# MSDOS DMAKE startup file.  Customize to suit your needs.
  113. X# Assumes MKS toolkit for the tool commands, and Zortech C.  Change as req'd.
  114. X# See the documentation for a description of internally defined macros.
  115. X#
  116. X# Disable warnings for macros redefined here that were given
  117. X# on the command line.
  118. X__.SILENT := $(.SILENT)
  119. X.SILENT   := yes
  120. XX
  121. X# Configuration parameters for DMAKE startup.mk file
  122. X# Set these to NON-NULL if you wish to turn the parameter on.
  123. X_HAVE_RCS    := yes        # yes => RCS  is installed.
  124. X_HAVE_SCCS    :=         # yes => SCCS is installed.
  125. XX
  126. X# Applicable suffix definitions
  127. XA := .lib    # Libraries
  128. XE := .exe    # Executables
  129. XF := .for    # Fortran
  130. XO := .obj    # Objects
  131. XP := .pas    # Pascal
  132. XS := .asm    # Assembler sources
  133. XV :=         # RCS suffix
  134. XX
  135. X# See if these are defined
  136. XTMPDIR := $(ROOTDIR)/tmp
  137. X.IMPORT .IGNORE : TMPDIR SHELL COMSPEC
  138. XX
  139. X# Recipe execution configurations
  140. X# First set SHELL, If it is not defined, use COMSPEC, otherwise
  141. X# it is assumed to be MKS Korn SHELL.
  142. X.IF $(SHELL) == $(NULL)
  143. X.IF $(COMSPEC) == $(NULL)
  144. XX   SHELL := $(ROOTDIR)/bin/sh$E
  145. X.ELSE
  146. XX   SHELL := $(COMSPEC)
  147. X.END
  148. X.END
  149. XGROUPSHELL := $(SHELL)
  150. XX
  151. X# Now set remaining arguments depending on which SHELL we
  152. X# are going to use.  COMSPEC (assumed to be command.com) or
  153. X# MKS Korn Shell.
  154. X.IF $(SHELL)==$(COMSPEC)
  155. XX   SHELLFLAGS  := $(SWITCHAR)c
  156. XX   GROUPFLAGS  := $(SHELLFLAGS)
  157. XX   SHELLMETAS  := *"?<>
  158. XX   GROUPSUFFIX := .bat
  159. XX   DIRSEPSTR   := \\
  160. XX   DIVFILE      = $(TMPFILE:s,/,\)
  161. X.ELSE
  162. XX   SHELLFLAGS  := -c
  163. XX   GROUPFLAGS  := 
  164. XX   SHELLMETAS  := *"?<>|()&][$$\#`'
  165. XX   GROUPSUFFIX := .ksh
  166. XX   .MKSARGS    := yes
  167. XX   DIVFILE      = $(TMPFILE:s,/,${DIVSEP_shell_${USESHELL}})
  168. XX   DIVSEP_shell_yes := \\\
  169. XX   DIVSEP_shell_no  := \\
  170. X.END
  171. XX
  172. X# Standard C-language command names and flags
  173. XX   CC      := ztc        # C-compiler and flags
  174. XX   CFLAGS  +=
  175. XX
  176. XX   AS      := masm        # Assembler and flags
  177. XX   ASFLAGS +=
  178. XX
  179. XX   LD       = blink        # Loader and flags
  180. XX   LDFLAGS +=
  181. XX   LDLIBS   =
  182. XX
  183. X# Definition of $(MAKE) macro for recursive makes.
  184. XX   MAKE = $(MAKECMD) $(MFLAGS)
  185. XX
  186. X# Language and Parser generation Tools and their flags
  187. XX   YACC      := yacc        # standard yacc
  188. XX   YFLAGS +=
  189. XX   YTAB      := ytab        # yacc output files name stem.
  190. XX
  191. XX   LEX      := lex        # standard lex
  192. XX   LFLAGS +=
  193. XX   LEXYY  := lex_yy        # lex output file
  194. XX
  195. X# Other Compilers, Tools and their flags
  196. XX   PC    := any_pc        # pascal compiler
  197. XX   RC    := anyf77        # ratfor compiler
  198. XX   FC    := anyf77        # fortran compiler
  199. XX
  200. XX   CO       := co        # check out for RCS
  201. XX   COFLAGS += -q
  202. XX
  203. XX   AR     := ar            # archiver
  204. XX   ARFLAGS+= ruv
  205. XX
  206. XX   RM       := rm        # remove a file command
  207. XX   RMFLAGS +=
  208. XX
  209. X# Implicit generation rules for making inferences.
  210. X# We don't provide .yr or .ye rules here.  They're obsolete.
  211. X# Rules for making *$O
  212. XX   %$O : %.c ; $(CC) $(CFLAGS) -c $<
  213. XX   %$O : %.cpp ; $(CC) $(CFLAGS) -c $<
  214. XX   %$O : %$P ; $(PC) $(PFLAGS) -c $<
  215. XX   %$O : %$S ; $(AS) $(ASFLAGS) $(<:s,/,\);
  216. XX   %$O : %.cl ; class -c $<
  217. XX   %$O : %.e %.r %.F %$F ; $(FC) $(RFLAGS) $(EFLAGS) $(FFLAGS) -c $<
  218. XX
  219. X# Executables
  220. XX   %$E : %$O ; $(CC) $(LDFLAGS) -o$@ $< $(LDLIBS)
  221. XX
  222. X# lex and yacc rules
  223. XX   %.c : %.y ; $(YACC)  $(YFLAGS) $<; mv $(YTAB).c $@
  224. XX   %.c : %.l ; $(LEX)   $(LFLAGS) $<; mv $(LEXYY).c $@
  225. XX
  226. X# RCS support
  227. X.IF $(_HAVE_RCS)
  228. XX   % : $$(@:d)RCS$$(DIRSEPSTR)$$(@:f)$V;- $(CO) $(COFLAGS) $@
  229. XX   .NOINFER : $$(@:d)RCS$$(DIRSEPSTR)$$(@:f)$V
  230. X.END
  231. XX
  232. X# SCCS support
  233. X.IF $(_HAVE_SCCS)
  234. XX   % : s.% ; get $@
  235. XX   .NOINFER : s.%
  236. X.END
  237. XX
  238. X# Recipe to make archive files.
  239. X%$A :
  240. X[
  241. XX   $(AR) $(ARFLAGS) $@ $?
  242. XX   $(RM) $(RMFLAGS) $?
  243. X]
  244. XX
  245. X# DMAKE uses this recipe to remove intermediate targets
  246. X.REMOVE :; $(RM) -f $<
  247. XX
  248. X# AUGMAKE extensions for SYSV compatibility
  249. X@B = $(@:b)
  250. X@D = $(@:d)
  251. X@F = $(@:f)
  252. X*B = $(*:b)
  253. X*D = $(*:d)
  254. X*F = $(*:f)
  255. X<B = $(<:b)
  256. X<D = $(<:d)
  257. X<F = $(<:f)
  258. X?B = $(?:b)
  259. X?F = $(?:f)
  260. X?D = $(?:d)
  261. XX
  262. X# Turn warnings back to previous setting.
  263. X.SILENT := $(__.SILENT)
  264. XX
  265. X# Local init file if any, gets parsed before user makefile
  266. X.INCLUDE .IGNORE: "_startup.mk"
  267. XSHAR_EOF
  268. Xchmod 0640 msdos/ztcdos/startup.mk ||
  269. Xecho 'restore of msdos/ztcdos/startup.mk failed'
  270. XWc_c="`wc -c < 'msdos/ztcdos/startup.mk'`"
  271. Xtest 3861 -eq "$Wc_c" ||
  272. X    echo 'msdos/ztcdos/startup.mk: original size 3861, current size' "$Wc_c"
  273. Xfi
  274. X# ============= msdos/ztcdos/tempnam.c ==============
  275. Xif test -f 'msdos/ztcdos/tempnam.c' -a X"$1" != X"-c"; then
  276. X    echo 'x - skipping msdos/ztcdos/tempnam.c (File already exists)'
  277. Xelse
  278. Xecho 'x - extracting msdos/ztcdos/tempnam.c (Text)'
  279. Xsed 's/^X//' << 'SHAR_EOF' > 'msdos/ztcdos/tempnam.c' &&
  280. X/*LINTLIBRARY*/
  281. X#include <stdio.h>
  282. X#include <string.h>
  283. X#include <stdlib.h>
  284. X#include <dos.h>
  285. XX
  286. X#if defined(max)
  287. X#   undef  max
  288. X#endif
  289. X#define max(A,B) (((A)<(B))?(B):(A))
  290. XX
  291. Xextern char *mktemp();
  292. Xextern int access();
  293. Xint _access();
  294. XX
  295. X/* Zortech C stdio.h doesn't define P_tmpdir, so let's do it here */
  296. X/* Under DOS leave the default tmpdir pointing here!        */
  297. Xstatic char *P_tmpdir = "";
  298. XX
  299. Xchar *
  300. Xtempnam(dir, prefix)
  301. Xconst char *dir;        /* use this directory please (if non-NULL) */
  302. Xconst char *prefix;        /* use this (if non-NULL) as filename prefix */
  303. X{
  304. XX   static         int count = 0;
  305. XX   register char *p, *q, *tmpdir;
  306. XX   int            tl=0, dl=0, pl;
  307. XX   char          buf[30];
  308. XX
  309. XX   pl = strlen(P_tmpdir);
  310. XX
  311. XX   if( (tmpdir = getenv("TMPDIR")) != NULL ) tl = strlen(tmpdir);
  312. XX   if( dir != NULL ) dl = strlen(dir);
  313. XX
  314. XX   if( (p = malloc((unsigned)(max(max(dl,tl),pl)+13))) == NULL )
  315. XX     return(NULL);
  316. XX
  317. XX   *p = '\0';
  318. XX
  319. XX   if( (tl == 0) || (_access( strcpy(p, tmpdir), 0) != 0) )
  320. XX     if( (dl == 0) || (_access( strcpy(p, dir), 0) != 0) )
  321. XX    if( _access( strcpy(p, P_tmpdir), 0) != 0 )
  322. XX       if( !prefix )
  323. XX          prefix = "tp";
  324. XX
  325. XX   if(prefix)
  326. XX   {
  327. XX      *(p+strlen(p)+2) = '\0';
  328. XX      (void)strncat(p, prefix, 2);
  329. XX   }
  330. XX
  331. XX   sprintf( buf, "%08x", _psp );
  332. XX   buf[6]='\0';
  333. XX   (void)strcat(p, buf );
  334. XX   sprintf( buf, "%04d", count++ );
  335. XX   q=p+strlen(p)-6;
  336. XX   *q++ = buf[0]; *q++ = buf[1];
  337. XX   *q++ = buf[2]; *q++ = buf[3];
  338. XX
  339. XX   if( (q = strrchr(p,'.')) != NULL ) *q = '\0';
  340. XX
  341. XX   return(p);
  342. X}
  343. XX
  344. XX
  345. XX
  346. X_access( name, flag )
  347. Xchar *name;
  348. Xint  flag;
  349. X{
  350. XX   char *p;
  351. XX   int r;
  352. XX
  353. XX   if( name == NULL || !*name ) return(1);  /* NULL dir means current dir */
  354. XX   r = access( name, flag );
  355. XX   p = name+strlen(name)-1;
  356. XX   if(*p != '/' && *p != '\\') strcat( p, "/" );
  357. XX
  358. XX   return( r );
  359. X}
  360. XSHAR_EOF
  361. Xchmod 0440 msdos/ztcdos/tempnam.c ||
  362. Xecho 'restore of msdos/ztcdos/tempnam.c failed'
  363. XWc_c="`wc -c < 'msdos/ztcdos/tempnam.c'`"
  364. Xtest 1738 -eq "$Wc_c" ||
  365. X    echo 'msdos/ztcdos/tempnam.c: original size 1738, current size' "$Wc_c"
  366. Xfi
  367. X# ============= unix/coherent/config.h ==============
  368. Xif test ! -d 'unix'; then
  369. X    echo 'x - creating directory unix'
  370. X    mkdir 'unix'
  371. Xfi
  372. Xif test ! -d 'unix/coherent'; then
  373. X    echo 'x - creating directory unix/coherent'
  374. X    mkdir 'unix/coherent'
  375. Xfi
  376. Xif test -f 'unix/coherent/config.h' -a X"$1" != X"-c"; then
  377. X    echo 'x - skipping unix/coherent/config.h (File already exists)'
  378. Xelse
  379. Xecho 'x - extracting unix/coherent/config.h (Text)'
  380. Xsed 's/^X//' << 'SHAR_EOF' > 'unix/coherent/config.h' &&
  381. X/*
  382. X-- COHERENT config.h
  383. X-- SYNOPSIS -- Configurarion include file.
  384. X-- 
  385. X-- DESCRIPTION
  386. X--     There is one of these for each specific machine configuration.
  387. X--    It can be used to further tweek the machine specific sources
  388. X--    so that they compile.
  389. X--
  390. X-- AUTHOR
  391. X--      Dennis Vadura, dvadura@watdragon.uwaterloo.ca
  392. X--      CS DEPT, University of Waterloo, Waterloo, Ont., Canada
  393. X--
  394. X-- COPYRIGHT
  395. X--      Copyright (c) 1990 by Dennis Vadura.  All rights reserved.
  396. X-- 
  397. X--      This program is free software; you can redistribute it and/or
  398. X--      modify it under the terms of the GNU General Public License
  399. X--      (version 1), as published by the Free Software Foundation, and
  400. X--      found in the file 'LICENSE' included with this distribution.
  401. X-- 
  402. X--      This program is distributed in the hope that it will be useful,
  403. X--      but WITHOUT ANY WARRANTY; without even the implied warrant of
  404. X--      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  405. X--      GNU General Public License for more details.
  406. X-- 
  407. X--      You should have received a copy of the GNU General Public License
  408. X--      along with this program;  if not, write to the Free Software
  409. X--      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  410. X--
  411. X-- LOG
  412. X--     $Log:    config.h,v $
  413. XX * Revision 1.1  91/06/24  11:09:20  dvadura
  414. XX * dmake release Version 3.7
  415. XX * 
  416. XX * Revision 1.1  91/05/06  15:28:20  dvadura
  417. XX * dmake Release Version 3.7
  418. XX * 
  419. X*/
  420. XX
  421. X/* define this for configurations that don't have the coreleft function
  422. XX * so that the code compiles.  To my knowledge coreleft exists only on
  423. XX * Turbo C, but it is needed here since the function is used in many debug
  424. XX * macros. */
  425. X#define coreleft() 0L
  426. XX
  427. Xextern char *getcwd ();
  428. XX
  429. X/* Define setvbuf, SysV doesn't have one */
  430. X#define setvbuf(fp, bp, type, len) setbuf( fp, NULL );
  431. X#define tzset settz
  432. XX
  433. X/* We don't care about CONST */
  434. X#define CONST
  435. X#define void int
  436. Xtypedef paddr_t off_t;
  437. XX
  438. X/* options. . . */
  439. X#define ASCARCH 0
  440. XSHAR_EOF
  441. Xchmod 0444 unix/coherent/config.h ||
  442. Xecho 'restore of unix/coherent/config.h failed'
  443. XWc_c="`wc -c < 'unix/coherent/config.h'`"
  444. Xtest 1940 -eq "$Wc_c" ||
  445. X    echo 'unix/coherent/config.h: original size 1940, current size' "$Wc_c"
  446. Xfi
  447. X# ============= unix/coherent/config.mk ==============
  448. Xif test -f 'unix/coherent/config.mk' -a X"$1" != X"-c"; then
  449. X    echo 'x - skipping unix/coherent/config.mk (File already exists)'
  450. Xelse
  451. Xecho 'x - extracting unix/coherent/config.mk (Text)'
  452. Xsed 's/^X//' << 'SHAR_EOF' > 'unix/coherent/config.mk' &&
  453. X# This is the COHERENT configuration file for DMAKE
  454. X#    It simply modifies the values of SRC, and checks to see if
  455. X#    OSENVIRONMENT is defined.  If so it includes the appropriate
  456. X#    config.mk file.
  457. X#
  458. X# It also sets the values of .SOURCE.c and .SOURCE.h to include the local
  459. X# directory.
  460. X#
  461. Xosrdir := $(OS)$(DIRSEPSTR)$(OSRELEASE)
  462. XX
  463. X# The following are required sources
  464. XOSDSRC := vfprintf.c getcwd.c
  465. X.IF $(OSDSRC)
  466. XX   SRC    += $(OSDSRC)
  467. XX   .SETDIR=$(osrdir) : $(OSDSRC)
  468. X.END
  469. XX
  470. X.SOURCE.h : $(osrdir)
  471. XX
  472. X# Local configuration modifications for CFLAGS, there's local SysV includes
  473. X# too.
  474. XCFLAGS += -I$(osrdir)
  475. XX
  476. X# See if we modify anything in the lower levels.
  477. X.IF $(OSENVIRONMENT) != $(NULL)
  478. XX   .INCLUDE .IGNORE : $(osrdir)$(DIRSEPSTR)$(OSENVIRONMENT)$(DIRSEPSTR)config.mk
  479. X.END
  480. XSHAR_EOF
  481. Xchmod 0644 unix/coherent/config.mk ||
  482. Xecho 'restore of unix/coherent/config.mk failed'
  483. XWc_c="`wc -c < 'unix/coherent/config.mk'`"
  484. Xtest 765 -eq "$Wc_c" ||
  485. X    echo 'unix/coherent/config.mk: original size 765, current size' "$Wc_c"
  486. Xfi
  487. X# ============= unix/coherent/getcwd.c ==============
  488. Xif test -f 'unix/coherent/getcwd.c' -a X"$1" != X"-c"; then
  489. X    echo 'x - skipping unix/coherent/getcwd.c (File already exists)'
  490. Xelse
  491. Xecho 'x - extracting unix/coherent/getcwd.c (Text)'
  492. Xsed 's/^X//' << 'SHAR_EOF' > 'unix/coherent/getcwd.c' &&
  493. X#if __STDC__
  494. Xchar *getcwd(char *buffer, int length)
  495. X#else
  496. Xchar *getcwd (buffer, length)
  497. Xchar *buffer;
  498. Xint length;
  499. X#endif
  500. X{
  501. XX  extern char *getwd();
  502. XX
  503. XX  char *dir;
  504. XX  dir = getwd();
  505. XX  if (dir)
  506. XX  {
  507. XX    strncpy(buffer,dir,length);
  508. XX    return buffer;
  509. XX  }
  510. XX  else
  511. XX  {
  512. XX    *buffer = 0;
  513. XX    return (char *) 0;
  514. XX  }
  515. X}
  516. XX
  517. XSHAR_EOF
  518. Xchmod 0444 unix/coherent/getcwd.c ||
  519. Xecho 'restore of unix/coherent/getcwd.c failed'
  520. XWc_c="`wc -c < 'unix/coherent/getcwd.c'`"
  521. Xtest 306 -eq "$Wc_c" ||
  522. X    echo 'unix/coherent/getcwd.c: original size 306, current size' "$Wc_c"
  523. Xfi
  524. X# ============= unix/coherent/make.sh ==============
  525. Xif test -f 'unix/coherent/make.sh' -a X"$1" != X"-c"; then
  526. X    echo 'x - skipping unix/coherent/make.sh (File already exists)'
  527. Xelse
  528. Xecho 'x - extracting unix/coherent/make.sh (Text)'
  529. Xsed 's/^X//' << 'SHAR_EOF' > 'unix/coherent/make.sh' &&
  530. Xmkdir objects
  531. Xcc -c -I. -Iunix -Iunix/coherent -O infer.c
  532. Xmv infer.o objects
  533. Xcc -c -I. -Iunix -Iunix/coherent -O make.c
  534. Xmv make.o objects
  535. Xcc -c -I. -Iunix -Iunix/coherent -O stat.c
  536. Xmv stat.o objects
  537. Xcc -c -I. -Iunix -Iunix/coherent -O expand.c
  538. Xmv expand.o objects
  539. Xcc -c -I. -Iunix -Iunix/coherent -O dmstring.c
  540. Xmv dmstring.o objects
  541. Xcc -c -I. -Iunix -Iunix/coherent -O hash.c
  542. Xmv hash.o objects
  543. Xcc -c -I. -Iunix -Iunix/coherent -O dag.c
  544. Xmv dag.o objects
  545. Xcc -c -I. -Iunix -Iunix/coherent -O dmake.c
  546. Xmv dmake.o objects
  547. Xcc -c -I. -Iunix -Iunix/coherent -O path.c
  548. Xmv path.o objects
  549. Xcc -c -I. -Iunix -Iunix/coherent -O imacs.c
  550. Xmv imacs.o objects
  551. Xcc -c -I. -Iunix -Iunix/coherent -O sysintf.c
  552. Xmv sysintf.o objects
  553. Xcc -c -I. -Iunix -Iunix/coherent -O parse.c
  554. Xmv parse.o objects
  555. Xcc -c -I. -Iunix -Iunix/coherent -O getinp.c
  556. Xmv getinp.o objects
  557. Xcc -c -I. -Iunix -Iunix/coherent -O quit.c
  558. Xmv quit.o objects
  559. Xcc -c -I. -Iunix -Iunix/coherent -O state.c
  560. Xmv state.o objects
  561. Xcc -c -I. -Iunix -Iunix/coherent -O basename.c
  562. Xmv basename.o objects
  563. Xcc -c -I. -Iunix -Iunix/coherent -O dmdump.c
  564. Xmv dmdump.o objects
  565. Xcc -c -I. -Iunix -Iunix/coherent -O macparse.c
  566. Xmv macparse.o objects
  567. Xcc -c -I. -Iunix -Iunix/coherent -O rulparse.c
  568. Xmv rulparse.o objects
  569. Xcc -c -I. -Iunix -Iunix/coherent -O percent.c
  570. Xmv percent.o objects
  571. Xcc -c -I. -Iunix -Iunix/coherent -O function.c
  572. Xmv function.o objects
  573. Xcc -c -I. -Iunix -Iunix/coherent -O unix/arlib.c
  574. Xmv arlib.o objects
  575. Xcc -c -I. -Iunix -Iunix/coherent -O unix/dirbrk.c
  576. Xmv dirbrk.o objects
  577. Xcc -c -I. -Iunix -Iunix/coherent -O unix/rmprq.c
  578. Xmv rmprq.o objects
  579. Xcc -c -I. -Iunix -Iunix/coherent -O unix/ruletab.c
  580. Xmv ruletab.o objects
  581. Xcc -c -I. -Iunix -Iunix/coherent -O unix/runargv.c
  582. Xmv runargv.o objects
  583. Xcc -c -I. -Iunix -Iunix/coherent -O unix/coherent/vfprintf.c
  584. Xmv vfprintf.o objects
  585. Xcc -c -I. -Iunix -Iunix/coherent -O unix/coherent/getcwd.c
  586. Xmv getcwd.o objects
  587. 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 
  588. Xcp unix/coherent/startup.mk startup.mk
  589. XSHAR_EOF
  590. Xchmod 0644 unix/coherent/make.sh ||
  591. Xecho 'restore of unix/coherent/make.sh failed'
  592. XWc_c="`wc -c < 'unix/coherent/make.sh'`"
  593. Xtest 2405 -eq "$Wc_c" ||
  594. X    echo 'unix/coherent/make.sh: original size 2405, current size' "$Wc_c"
  595. Xfi
  596. X# ============= unix/coherent/public.h ==============
  597. Xif test -f 'unix/coherent/public.h' -a X"$1" != X"-c"; then
  598. X    echo 'x - skipping unix/coherent/public.h (File already exists)'
  599. Xelse
  600. Xecho 'x - extracting unix/coherent/public.h (Text)'
  601. Xsed 's/^X//' << 'SHAR_EOF' > 'unix/coherent/public.h' &&
  602. X/* RCS      -- $Header$
  603. X-- WARNING  -- This file is AUTOMATICALLY GENERATED DO NOT EDIT IT
  604. X--
  605. X-- SYNOPSIS -- Local functions exported to be visible by others.
  606. X--
  607. X-- DESCRIPTION
  608. X--      This file is generated by 'genpub'.  Function declarations
  609. X--      that appear in this file are extracted by 'genpub' from
  610. X--      source files.  Any function in the source file whose definition
  611. X--      appears like:
  612. X--
  613. X--          PUBLIC return_type
  614. X--          function( arg_list );
  615. X--          type_expr1 arg1;
  616. X--          ...
  617. X--
  618. X--      has its definition extracted and a line of the form:
  619. X--
  620. X--          return_type function ANSI((type_expr1,type_expr2,...));
  621. X--
  622. X--      entered into the output file.
  623. X--
  624. X-- AUTHOR
  625. X--      Dennis Vadura, dvadura@watdragon.uwaterloo.ca
  626. X--      CS DEPT, University of Waterloo, Waterloo, Ont., Canada
  627. X--
  628. X-- COPYRIGHT
  629. X--      Copyright (c) 1990 by Dennis Vadura.  All rights reserved.
  630. X-- 
  631. X--      This program is free software; you can redistribute it and/or
  632. X--      modify it under the terms of the GNU General Public License
  633. X--      (version 1), as published by the Free Software Foundation, and
  634. X--      found in the file 'LICENSE' included with this distribution.
  635. X-- 
  636. X--      This program is distributed in the hope that it will be useful,
  637. X--      but WITHOUT ANY WARRANTY; without even the implied warrant of
  638. X--      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  639. X--      GNU General Public License for more details.
  640. X-- 
  641. X--      You should have received a copy of the GNU General Public License
  642. X--      along with this program;  if not, write to the Free Software
  643. X--      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  644. X--
  645. X-- LOG
  646. X--     $Log$
  647. X*/
  648. XX
  649. X#ifndef _DMAKE_PUBLIC_h
  650. X#define _DMAKE_PUBLIC_h
  651. XX
  652. Xvoid Infer_recipe ANSI((CELLPTR, CELLPTR));
  653. Xint Make_targets ANSI(());
  654. Xint Exec_commands ANSI((CELLPTR));
  655. Xvoid Pop_dir ANSI((int));
  656. Xvoid Append_line ANSI((char *, int, FILE *, char *, int, int));
  657. Xvoid Stat_target ANSI((CELLPTR, int));
  658. Xchar * Expand ANSI((char *));
  659. Xchar * Apply_edit ANSI((char *, char *, char *, int, int));
  660. Xvoid Map_esc ANSI((char *));
  661. Xchar* Apply_modifiers ANSI((int, char *));
  662. Xchar* Tokenize ANSI((char *, char *));
  663. Xchar * _strjoin ANSI((char *, char *, int, int));
  664. Xchar * _stradd ANSI((char *, char *, int));
  665. Xchar * _strapp ANSI((char *, char *));
  666. Xchar * _strdup ANSI((char *));
  667. Xchar * _strpbrk ANSI((char *, char *));
  668. Xchar * _strspn ANSI((char *, char *));
  669. Xchar * _strstr ANSI((char *, char *));
  670. Xchar * _substr ANSI((char *, char *));
  671. Xuint16 Hash ANSI((char *, uint32 *));
  672. XHASHPTR Get_name ANSI((char *, HASHPTR *, int));
  673. XHASHPTR Search_table ANSI((HASHPTR *, char *, uint16 *, uint32 *));
  674. XHASHPTR Def_macro ANSI((char *, char *, int));
  675. XCELLPTR Def_cell ANSI((char *));
  676. XLINKPTR Add_prerequisite ANSI((CELLPTR, CELLPTR, int, int));
  677. Xvoid Clear_prerequisites ANSI((CELLPTR));
  678. Xint Test_circle ANSI((CELLPTR, int));
  679. XSTRINGPTR Def_recipe ANSI((char *, STRINGPTR, int, int));
  680. Xt_attr Rcp_attribute ANSI((char *));
  681. Xint main ANSI((int, char **));
  682. XFILE * Openfile ANSI((char *, int, int));
  683. XFILE * Closefile ANSI(());
  684. XFILE * Search_file ANSI((char *, char **));
  685. Xchar * Filename ANSI(());
  686. Xvoid No_ram ANSI(());
  687. Xint Usage ANSI((int));
  688. Xint Version ANSI(());
  689. Xchar * Get_suffix ANSI((char *));
  690. Xchar * Build_path ANSI((char *, char *));
  691. Xvoid Make_rules ANSI(());
  692. Xvoid Create_macro_vars ANSI(());
  693. Xtime_t Do_stat ANSI((char *, char *, char **));
  694. Xint Do_touch ANSI((char *, char *, char **));
  695. Xvoid Void_lib_cache ANSI((char *, char *));
  696. Xtime_t Do_time ANSI(());
  697. Xint Do_cmnd ANSI((char *, int, int, CELLPTR, int, int, int));
  698. Xchar ** Pack_argv ANSI((int, int, char *));
  699. Xchar * Read_env_string ANSI((char *));
  700. Xint Write_env_string ANSI((char *, char *));
  701. Xvoid ReadEnvironment ANSI(());
  702. Xvoid Catch_signals ANSI((void (*)()));
  703. Xvoid Clear_signals ANSI(());
  704. Xvoid Prolog ANSI((int, char* []));
  705. Xvoid Epilog ANSI((int));
  706. Xchar * Get_current_dir ANSI(());
  707. Xint Set_dir ANSI((char*));
  708. Xchar Get_switch_char ANSI(());
  709. XFILE* Get_temp ANSI((char **, char *, int));
  710. XFILE * Start_temp ANSI((char *, CELLPTR, char **));
  711. Xvoid Open_temp_error ANSI((char *, char *));
  712. Xvoid Link_temp ANSI((CELLPTR, FILE *, char *));
  713. Xvoid Close_temp ANSI((CELLPTR, FILE *));
  714. Xvoid Unlink_temp_files ANSI((CELLPTR));
  715. Xvoid Handle_result ANSI((int, int, int, CELLPTR));
  716. Xvoid Update_time_stamp ANSI((CELLPTR));
  717. Xvoid Parse ANSI((FILE *));
  718. Xint Get_line ANSI((char *, FILE *));
  719. Xchar * Do_comment ANSI((char *, char **, int));
  720. Xchar * Get_token ANSI((TKSTRPTR, char *, int));
  721. Xvoid Quit ANSI(());
  722. Xvoid Read_state ANSI(());
  723. Xvoid Write_state ANSI(());
  724. Xint Check_state ANSI((CELLPTR, STRINGPTR *, int));
  725. Xchar* basename ANSI((char *));
  726. Xvoid Dump ANSI(());
  727. Xvoid Dump_recipe ANSI((STRINGPTR));
  728. Xint Parse_macro ANSI((char *, int));
  729. Xint Macro_op ANSI((char *));
  730. Xint Parse_rule_def ANSI((int *));
  731. Xint Rule_op ANSI((char *));
  732. Xvoid Add_recipe_to_list ANSI((char *, int, int));
  733. Xvoid Bind_rules_to_targets ANSI((int));
  734. Xint Set_group_attributes ANSI((char *));
  735. XDFALINKPTR Match_dfa ANSI((char *));
  736. Xvoid Check_circle_dfa ANSI(());
  737. Xvoid Add_nfa ANSI((char *));
  738. Xchar * Exec_function ANSI((char *));
  739. Xtime_t seek_arch ANSI((char *, char *));
  740. Xint If_root_path ANSI((char *));
  741. Xvoid Remove_prq ANSI((CELLPTR));
  742. Xint runargv ANSI((CELLPTR, int, int, int, int, char *));
  743. Xint Wait_for_child ANSI((int, int));
  744. Xvoid Clean_up_processes ANSI(());
  745. XX
  746. X#endif
  747. XSHAR_EOF
  748. Xchmod 0640 unix/coherent/public.h ||
  749. Xecho 'restore of unix/coherent/public.h failed'
  750. XWc_c="`wc -c < 'unix/coherent/public.h'`"
  751. Xtest 5318 -eq "$Wc_c" ||
  752. X    echo 'unix/coherent/public.h: original size 5318, current size' "$Wc_c"
  753. Xfi
  754. X# ============= unix/coherent/startup.mk ==============
  755. Xif test -f 'unix/coherent/startup.mk' -a X"$1" != X"-c"; then
  756. X    echo 'x - skipping unix/coherent/startup.mk (File already exists)'
  757. Xelse
  758. Xecho 'x - extracting unix/coherent/startup.mk (Text)'
  759. Xsed 's/^X//' << 'SHAR_EOF' > 'unix/coherent/startup.mk' &&
  760. X# Generic UNIX DMAKE startup file.  Customize to suit your needs.
  761. X# Should work for both SYSV, and BSD 4.3
  762. X# See the documentation for a description of internally defined macros.
  763. X#
  764. X# Disable warnings for macros redefined here that were given
  765. X# on the command line.
  766. X__.SILENT := $(.SILENT)
  767. X.SILENT   := yes
  768. XX
  769. X# Configuration parameters for DMAKE startup.mk file
  770. X# Set these to NON-NULL if you wish to turn the parameter on.
  771. X_HAVE_RCS    := yes        # yes => RCS  is installed.
  772. X_HAVE_SCCS    := yes        # yes => SCCS is installed.
  773. XX
  774. X# Applicable suffix definitions
  775. XA := .a        # Libraries
  776. XE :=        # Executables
  777. XF := .f        # Fortran
  778. XO := .o        # Objects
  779. XP := .p        # Pascal
  780. XS := .s        # Assembler sources
  781. XV := ,v        # RCS suffix
  782. XX
  783. X# Recipe execution configurations
  784. XSHELL        := /bin/sh
  785. XSHELLFLAGS    := -ce
  786. XGROUPSHELL    := $(SHELL)
  787. XGROUPFLAGS    := 
  788. XSHELLMETAS    := |();&<>?*][$$:\\#`'"
  789. XGROUPSUFFIX    :=
  790. XDIVFILE         = $(TMPFILE)
  791. XX
  792. X# Standard C-language command names and flags
  793. XX   CPP       := /lib/cpp        # C-preprocessor
  794. XX   CC      := cc        # C-compiler and flags
  795. XX   CFLAGS  +=
  796. XX
  797. XX   AS      := as        # Assembler and flags
  798. XX   ASFLAGS += 
  799. XX
  800. XX   LD       = $(CC)        # Loader and flags
  801. XX   LDFLAGS +=
  802. XX   LDLIBS   =
  803. XX
  804. X# Definition of $(MAKE) macro for recursive makes.
  805. XX   MAKE = $(MAKECMD) $(MFLAGS)
  806. XX
  807. X# Definition of Print command for this system.
  808. XX   PRINT = lpr
  809. XX
  810. X# Language and Parser generation Tools and their flags
  811. XX   YACC      := yacc        # standard yacc
  812. XX   YFLAGS +=
  813. XX   YTAB      := y.tab        # yacc output files name stem.
  814. XX
  815. XX   LEX      := lex        # standard lex
  816. XX   LFLAGS +=
  817. XX   LEXYY  := lex.yy        # lex output file
  818. XX
  819. X# Other Compilers, Tools and their flags
  820. XX   PC    := pc            # pascal compiler
  821. XX   RC    := f77            # ratfor compiler
  822. XX   FC    := f77            # fortran compiler
  823. XX
  824. XX   CO       := co        # check out for RCS
  825. XX   COFLAGS += -q
  826. XX
  827. XX   AR     := ar            # archiver
  828. XX   ARFLAGS+= ruv
  829. XX
  830. XX   RM       := /bin/rm        # remove a file command
  831. XX   RMFLAGS +=
  832. XX
  833. X# Implicit generation rules for making inferences.
  834. X# We don't provide .yr or .ye rules here.  They're obsolete.
  835. X# Rules for making *$O
  836. XX   %$O : %.c ; $(CC) $(CFLAGS) -c $<
  837. XX   %$O : %$P ; $(PC) $(PFLAGS) -c $<
  838. XX   %$O : %$S ; $(AS) $(ASFLAGS) $<
  839. XX   %$O : %.cl ; class -c $<
  840. XX   %$O : %.e %.r %.F %$F
  841. XX    $(FC) $(RFLAGS) $(EFLAGS) $(FFLAGS) -c $<
  842. XX
  843. X# Executables
  844. XX   %$E : %$O ; $(LD) $(LDFLAGS) -o $@ $< $(LDLIBES)
  845. XX
  846. X# lex and yacc rules
  847. XX   %.c : %.y ; $(YACC)  $(YFLAGS) $<; mv $(YTAB).c $@
  848. XX   %.c : %.l ; $(LEX)   $(LFLAGS) $<; mv $(LEXYY).c $@
  849. XX
  850. X# This rule tells how to make *.out from it's immediate list of prerequisites
  851. X# UNIX only.
  852. XX   %.out :; $(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS)
  853. XX
  854. X# RCS support
  855. X.IF $(_HAVE_RCS)
  856. XX   % : %$V $$(@:d)RCS/$$(@:f)$V;- $(CO) $(COFLAGS) $@
  857. XX   .NOINFER : %$V $$(@:d)RCS/$$(@:f)$V
  858. X.END
  859. XX
  860. X# SCCS support
  861. X.IF $(_HAVE_SCCS)
  862. XX   % : s.% ; get $@
  863. XX   .NOINFER : s.%
  864. X.END
  865. XX
  866. X# Recipe to make archive files.
  867. X%$A :
  868. X[
  869. XX   $(AR) $(ARFLAGS) $@ $?
  870. XX   $(RM) $(RMFLAGS) $?
  871. XX   ranlib $@
  872. X]
  873. XX
  874. X# DMAKE uses this recipe to remove intermediate targets
  875. X.REMOVE :; $(RM) -f $<
  876. XX
  877. X# AUGMAKE extensions for SYSV compatibility
  878. X@B = $(@:b)
  879. X@D = $(@:d)
  880. X@F = $(@:f)
  881. X*B = $(*:b)
  882. X*D = $(*:d)
  883. X*F = $(*:f)
  884. X<B = $(<:b)
  885. X<D = $(<:d)
  886. X<F = $(<:f)
  887. X?B = $(?:b)
  888. X?F = $(?:f)
  889. X?D = $(?:d)
  890. XX
  891. X# Turn warnings back to previous setting.
  892. X.SILENT := $(__.SILENT)
  893. XX
  894. X# Local startup file if any
  895. X.INCLUDE .IGNORE: "_startup.mk"
  896. XSHAR_EOF
  897. Xchmod 0644 unix/coherent/startup.mk ||
  898. Xecho 'restore of unix/coherent/startup.mk failed'
  899. XWc_c="`wc -c < 'unix/coherent/startup.mk'`"
  900. Xtest 3221 -eq "$Wc_c" ||
  901. X    echo 'unix/coherent/startup.mk: original size 3221, current size' "$Wc_c"
  902. Xfi
  903. X# ============= unix/coherent/stdarg.h ==============
  904. Xif test -f 'unix/coherent/stdarg.h' -a X"$1" != X"-c"; then
  905. X    echo 'x - skipping unix/coherent/stdarg.h (File already exists)'
  906. Xelse
  907. Xecho 'x - extracting unix/coherent/stdarg.h (Text)'
  908. Xsed 's/^X//' << 'SHAR_EOF' > 'unix/coherent/stdarg.h' &&
  909. X/*
  910. XX * stdarg.h
  911. XX *
  912. XX * defines ANSI style macros for accessing arguments of a function which takes
  913. XX * a variable number of arguments
  914. XX *
  915. XX */
  916. XX
  917. X#if !defined(__STDARG_H__)
  918. X#define __STDARG_H__
  919. XX
  920. X#if !defined(_VA_LIST_) && !defined(_VA_LIST)
  921. X#define _VA_LIST_
  922. X#define _VA_LIST
  923. Xtypedef char *va_list;
  924. X#endif
  925. XX
  926. X#define va_dcl int va_alist
  927. X#define va_start(ap,v)  ap = (va_list)&va_alist
  928. X#define va_arg(ap,t)    ((t*)(ap += sizeof(t)))[-1]
  929. X#define va_end(ap)      ap = NULL
  930. X#endif
  931. XSHAR_EOF
  932. Xchmod 0444 unix/coherent/stdarg.h ||
  933. Xecho 'restore of unix/coherent/stdarg.h failed'
  934. XWc_c="`wc -c < 'unix/coherent/stdarg.h'`"
  935. Xtest 469 -eq "$Wc_c" ||
  936. X    echo 'unix/coherent/stdarg.h: original size 469, current size' "$Wc_c"
  937. Xfi
  938. X# ============= unix/coherent/stdlib.h ==============
  939. Xif test -f 'unix/coherent/stdlib.h' -a X"$1" != X"-c"; then
  940. X    echo 'x - skipping unix/coherent/stdlib.h (File already exists)'
  941. Xelse
  942. Xecho 'x - extracting unix/coherent/stdlib.h (Text)'
  943. Xsed 's/^X//' << 'SHAR_EOF' > 'unix/coherent/stdlib.h' &&
  944. X#ifndef _STDLIB_INCLUDED_
  945. X#define _STDLIB_INCLUDED_
  946. XX
  947. Xextern /*GOTO*/ _exit();
  948. Xextern /*GOTO*/ exit();
  949. Xextern /*GOTO*/ abort();
  950. Xextern int system();
  951. Xextern char *getenv();
  952. Xextern char *calloc();
  953. Xextern char *malloc();
  954. Xextern char *realloc();
  955. Xextern free();
  956. Xextern int errno;
  957. XX
  958. X#ifndef EIO
  959. X#    include <errno.h>
  960. X#endif
  961. XX
  962. X#endif /* _STDLIB_INCLUDED_ */
  963. XSHAR_EOF
  964. Xchmod 0444 unix/coherent/stdlib.h ||
  965. Xecho 'restore of unix/coherent/stdlib.h failed'
  966. XWc_c="`wc -c < 'unix/coherent/stdlib.h'`"
  967. Xtest 346 -eq "$Wc_c" ||
  968. X    echo 'unix/coherent/stdlib.h: original size 346, current size' "$Wc_c"
  969. Xfi
  970. X# ============= unix/coherent/time.h ==============
  971. Xif test -f 'unix/coherent/time.h' -a X"$1" != X"-c"; then
  972. X    echo 'x - skipping unix/coherent/time.h (File already exists)'
  973. Xelse
  974. Xecho 'x - extracting unix/coherent/time.h (Text)'
  975. Xsed 's/^X//' << 'SHAR_EOF' > 'unix/coherent/time.h' &&
  976. X/*
  977. X** Berkeley get this wrong!
  978. X*/
  979. X#ifndef    TIME_h
  980. X#define    TIME_h
  981. XX
  982. Xtypedef    long    time_t;    /* this is the thing we use */
  983. XX
  984. X#endif    TIME_h
  985. XX
  986. XSHAR_EOF
  987. Xchmod 0444 unix/coherent/time.h ||
  988. Xecho 'restore of unix/coherent/time.h failed'
  989. XWc_c="`wc -c < 'unix/coherent/time.h'`"
  990. Xtest 133 -eq "$Wc_c" ||
  991. X    echo 'unix/coherent/time.h: original size 133, current size' "$Wc_c"
  992. Xfi
  993. X# ============= unix/coherent/vfprintf.c ==============
  994. Xif test -f 'unix/coherent/vfprintf.c' -a X"$1" != X"-c"; then
  995. X    echo 'x - skipping unix/coherent/vfprintf.c (File already exists)'
  996. Xelse
  997. Xecho 'x - extracting unix/coherent/vfprintf.c (Text)'
  998. Xsed 's/^X//' << 'SHAR_EOF' > 'unix/coherent/vfprintf.c' &&
  999. X/* Portable vfprintf and vprintf by Robert A. Larson <blarson@skat.usc.edu> */
  1000. XX
  1001. X/* Copyright 1989 Robert A. Larson.
  1002. XX * Distribution in any form is allowed as long as the author
  1003. XX * retains credit, changes are noted by their author and the
  1004. XX * copyright message remains intact.  This program comes as-is
  1005. XX * with no warentee of fitness for any purpouse.
  1006. XX *
  1007. XX * Thanks to Doug Gwen, Chris Torek, and others who helped clarify
  1008. XX * the ansi printf specs.
  1009. XX *
  1010. XX * Please send any bug fixes and improvments to blarson@skat.usc.edu .
  1011. XX * The use of goto is NOT a bug.
  1012. XX */
  1013. XX
  1014. X/* Feb    9, 1989        blarson        First usenet release */
  1015. XX
  1016. X/* This code implements the vfprintf function, without relying on
  1017. XX * the existance of _doprint or other system specific code.
  1018. XX *
  1019. XX * Define NOVOID if void * is not a supported type.
  1020. XX *
  1021. XX * Two compile options are available for efficency:
  1022. XX *    INTSPRINTF    should be defined if sprintf is int and returns
  1023. XX *            the number of chacters formated.
  1024. XX *    LONGINT        should be defined if sizeof(long) == sizeof(int)
  1025. XX *
  1026. XX *    They only make the code smaller and faster, they need not be
  1027. XX *    defined.
  1028. XX *
  1029. XX * UNSIGNEDSPECIAL should be defined if unsigned is treated differently
  1030. XX * than int in argument passing.  If this is definded, and LONGINT is not,
  1031. XX * the compiler must support the type unsingned long.
  1032. XX *
  1033. XX * Most quirks and bugs of the available fprintf fuction are duplicated,
  1034. XX * however * in the width and precision fields will work correctly
  1035. XX * even if fprintf does not support this.  The %n format and the return
  1036. XX * count will only work if fprintf returns the number of characters
  1037. XX * formatted.
  1038. XX *
  1039. XX * Bad format strings, or those with very long width and precision
  1040. XX * fields (including expanded * fields) will cause undesired results.
  1041. XX */
  1042. XX
  1043. X#ifdef OSK        /* os9/68k can take advantage of both */
  1044. X#define INTSPRINTF
  1045. X#define LONGINT
  1046. X#endif
  1047. X#define NOVOID 1
  1048. XX
  1049. X/* This must be a typedef not a #define! */
  1050. X#ifdef NOVOID
  1051. Xtypedef char *pointer;
  1052. X#else
  1053. Xtypedef void *pointer;
  1054. X#endif
  1055. XX
  1056. X#include <stdio.h>
  1057. XX
  1058. X#ifdef    INTSPRINTF
  1059. X#define Sprintf(string,format,arg)    (sprintf((string),(format),(arg)))
  1060. X#else
  1061. X#define Sprintf(string,format,arg)    (\
  1062. XX    sprintf((string),(format),(arg)),\
  1063. XX    strlen(string)\
  1064. X)
  1065. X#endif
  1066. XX
  1067. X#include <stdarg.h>
  1068. XX
  1069. Xtypedef int *intp;
  1070. XX
  1071. Xint vfprintf(dest, format, args)
  1072. XFILE *dest;
  1073. Xregister char *format;
  1074. Xva_list args;
  1075. X{
  1076. XX    register char c;
  1077. XX    register char *tp;
  1078. XX    register int count = 0;
  1079. XX    char tempfmt[64];
  1080. X#ifndef LONGINT
  1081. XX    int longflag;
  1082. X#endif
  1083. XX
  1084. XX    tempfmt[0] = '%';
  1085. XX    while(c = *format++) {
  1086. XX    if(c=='%') {
  1087. XX        tp = &tempfmt[1];
  1088. X#ifndef LONGINT
  1089. XX        longflag = 0;
  1090. X#endif
  1091. Xcontinue_format:
  1092. XX        switch(c = *format++) {
  1093. XX        case 's':
  1094. XX            *tp++ = c;
  1095. XX            *tp = '\0';
  1096. XX            count += fprintf(dest, tempfmt, va_arg(args, char *));
  1097. XX            break;
  1098. XX        case 'u':
  1099. XX        case 'x':
  1100. XX        case 'o':
  1101. XX        case 'X':
  1102. X#ifdef UNSIGNEDSPECIAL
  1103. XX            *tp++ = c;
  1104. XX            *tp = '\0';
  1105. X#ifndef LONGINT
  1106. XX            if(longflag)
  1107. XX            count += fprintf(dest, tempfmt, va_arg(args, unsigned long));
  1108. XX            else
  1109. X#endif
  1110. XX            count += fprintf(dest, tempfmt, va_arg(args, unsigned));
  1111. XX            break;
  1112. X#endif
  1113. XX        case 'd':
  1114. XX        case 'c':
  1115. XX        case 'i':
  1116. XX            *tp++ = c;
  1117. XX            *tp = '\0';
  1118. X#ifndef LONGINT
  1119. XX            if(longflag)
  1120. XX            count += fprintf(dest, tempfmt, va_arg(args, long));
  1121. XX            else
  1122. X#endif
  1123. XX            count += fprintf(dest, tempfmt, va_arg(args, int));
  1124. XX            break;
  1125. XX        case 'f':
  1126. XX        case 'e':
  1127. XX        case 'E':
  1128. XX        case 'g':
  1129. XX        case 'G':
  1130. XX            *tp++ = c;
  1131. XX            *tp = '\0';
  1132. XX            count += fprintf(dest, tempfmt, va_arg(args, double));
  1133. XX            break;
  1134. XX        case 'p':
  1135. XX            *tp++ = c;
  1136. XX            *tp = '\0';
  1137. XX            count += fprintf(dest, tempfmt, va_arg(args, pointer));
  1138. XX            break;
  1139. XX        case '-':
  1140. XX        case '+':
  1141. XX        case '0':
  1142. XX        case '1':
  1143. XX        case '2':
  1144. XX        case '3':
  1145. XX        case '4':
  1146. XX        case '5':
  1147. XX        case '6':
  1148. XX        case '7':
  1149. XX        case '8':
  1150. XX        case '9':
  1151. XX        case '.':
  1152. XX        case ' ':
  1153. XX        case '#':
  1154. XX        case 'h':
  1155. XX            *tp++ = c;
  1156. XX            goto continue_format;
  1157. XX        case 'l':
  1158. X#ifndef LONGINT
  1159. XX            longflag = 1;
  1160. XX            *tp++ = c;
  1161. X#endif
  1162. XX            goto continue_format;
  1163. XX        case '*':
  1164. XX            tp += Sprintf(tp, "%d", va_arg(args, int));
  1165. XX            goto continue_format;
  1166. XX        case 'n':
  1167. XX            *va_arg(args, intp) = count;
  1168. XX            break;
  1169. XX        case '%':
  1170. XX        default:
  1171. XX            putc(c, dest);
  1172. XX            count++;
  1173. XX            break;
  1174. XX        }
  1175. XX    } else {
  1176. XX        putc(c, dest);
  1177. XX        count++;
  1178. XX    }
  1179. XX    }
  1180. XX    return count;
  1181. X}
  1182. XX
  1183. Xvprintf(format, args)
  1184. Xchar *format;
  1185. Xva_list args;
  1186. X{
  1187. XX    return vfprintf(stdout, format, args);
  1188. X}
  1189. XSHAR_EOF
  1190. Xchmod 0444 unix/coherent/vfprintf.c ||
  1191. Xecho 'restore of unix/coherent/vfprintf.c failed'
  1192. XWc_c="`wc -c < 'unix/coherent/vfprintf.c'`"
  1193. Xtest 4312 -eq "$Wc_c" ||
  1194. X    echo 'unix/coherent/vfprintf.c: original size 4312, current size' "$Wc_c"
  1195. Xfi
  1196. X# ============= unix/sysvr3/pwd/config.mk ==============
  1197. Xif test ! -d 'unix/sysvr3'; then
  1198. X    echo 'x - creating directory unix/sysvr3'
  1199. X    mkdir 'unix/sysvr3'
  1200. Xfi
  1201. Xif test ! -d 'unix/sysvr3/pwd'; then
  1202. X    echo 'x - creating directory unix/sysvr3/pwd'
  1203. X    mkdir 'unix/sysvr3/pwd'
  1204. Xfi
  1205. Xif test -f 'unix/sysvr3/pwd/config.mk' -a X"$1" != X"-c"; then
  1206. X    echo 'x - skipping unix/sysvr3/pwd/config.mk (File already exists)'
  1207. Xelse
  1208. Xecho 'x - extracting unix/sysvr3/pwd/config.mk (Text)'
  1209. Xsed 's/^X//' << 'SHAR_EOF' > 'unix/sysvr3/pwd/config.mk' &&
  1210. X# This is the Sys VR3 PWD configuration file.  It configures SysvR3 unix
  1211. X# versions of dmake to use a provided version of getcwd rather than the
  1212. X# standard library version that uses popen to capture the output of pwd.
  1213. X#
  1214. XX
  1215. Xosredir := $(OS)$(DIRSEPSTR)$(OSRELEASE)$(DIRSEPSTR)$(OSENVIRONMENT)
  1216. XX
  1217. X# The following are required sources
  1218. XOSRESRC := getcwd.c
  1219. XX
  1220. X.IF $(OSRESRC)
  1221. XX   SRC    += $(OSRESRC)
  1222. XX   .SETDIR=$(osredir) : $(OSRESRC)
  1223. X.END
  1224. XX
  1225. X.SOURCE.h : $(osredir)
  1226. XX
  1227. X# Local configuration modifications for CFLAGS, there's local SysV includes
  1228. X# too.
  1229. XCFLAGS += -I$(osredir)
  1230. XSHAR_EOF
  1231. Xchmod 0640 unix/sysvr3/pwd/config.mk ||
  1232. Xecho 'restore of unix/sysvr3/pwd/config.mk failed'
  1233. XWc_c="`wc -c < 'unix/sysvr3/pwd/config.mk'`"
  1234. Xtest 559 -eq "$Wc_c" ||
  1235. X    echo 'unix/sysvr3/pwd/config.mk: original size 559, current size' "$Wc_c"
  1236. Xfi
  1237. X# ============= unix/sysvr3/pwd/getcwd.c ==============
  1238. Xif test -f 'unix/sysvr3/pwd/getcwd.c' -a X"$1" != X"-c"; then
  1239. X    echo 'x - skipping unix/sysvr3/pwd/getcwd.c (File already exists)'
  1240. Xelse
  1241. Xecho 'x - extracting unix/sysvr3/pwd/getcwd.c (Text)'
  1242. Xsed 's/^X//' << 'SHAR_EOF' > 'unix/sysvr3/pwd/getcwd.c' &&
  1243. X/*
  1244. XX    getcwd -- get pathname of current working directory
  1245. XX
  1246. XX    public-domain implementation
  1247. XX
  1248. XX    last edit:    03-Nov-1990    Gwyn@BRL.MIL
  1249. XX
  1250. XX    complies with the following standards:
  1251. XX        IEEE Std 1003.1-1988
  1252. XX        SVID Issue 3
  1253. XX        X/Open Portability Guide Issue 2 (when "XPG2" is defined)
  1254. XX        X/Open Portability Guide Issue 3
  1255. XX
  1256. XX    This implementation of getcwd() can be used to replace the UNIX
  1257. XX    System V library routine (which uses popen() to capture the output of
  1258. XX    the "pwd" command).  Once that is done, "pwd" can be reimplemented as
  1259. XX    just puts(getcwd((char*)0,0)), assuming "XPG2" is defined below.
  1260. XX
  1261. XX    This implementation depends on every directory having entries for
  1262. XX    "." and "..".  It also depends on the internals of the <dirent.h>
  1263. XX    data structures to some degree.
  1264. SHAR_EOF
  1265. true || echo 'restore of dm37p2 failed'
  1266. fi
  1267. echo 'End of  part 8'
  1268. echo 'File dm37p2 is continued in part 9'
  1269. echo 9 > _shar_seq_.tmp
  1270. exit 0
  1271.  
  1272. exit 0 # Just in case...
  1273. -- 
  1274. Kent Landfield                   INTERNET: kent@sparky.IMD.Sterling.COM
  1275. Sterling Software, IMD           UUCP:     uunet!sparky!kent
  1276. Phone:    (402) 291-8300         FAX:      (402) 291-4362
  1277. Please send comp.sources.misc-related mail to kent@uunet.uu.net.
  1278.