home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1992 March / Source_Code_CD-ROM_Walnut_Creek_March_1992.iso / usenet / altsrcs / 3 / 3026 < prev    next >
Text File  |  1991-03-08  |  22KB  |  738 lines

  1. Newsgroups: alt.sources
  2. From: brendan@cs.widener.edu (Brendan Kehoe)
  3. Subject: Building pd ksh on Suns -- patches
  4. Message-ID: <1991Mar08.192059.2279@cs.widener.edu>
  5. Date: Fri, 08 Mar 91 19:20:59 GMT
  6.  
  7.    These patches to the pd ksh posted some time ago will let you build
  8.   it successfully under SunOS 4.1 and above. (I haven't tried 4.0.3,
  9.   since I don't run it here anymore.)
  10.    They also fix the problem of ksh hanging when you do ^D at the
  11.   beginning of the line.
  12.    Just cd to the directory containing the pd ksh sources and run this
  13.   through patch -p -N.
  14.  
  15. -- cut --
  16. *** ../oksh/ReadMe    Wed Jan 30 11:36:38 1991
  17. --- ./ReadMe    Wed Jan 30 14:59:31 1991
  18. ***************
  19. *** 1,61 ****
  20.       Notes on the Standard C / POSIX P1003.1 package
  21.   
  22. ! This package contains header files and library routines
  23. ! to provide a standard C (ANSI) and POSIX enviroment for portable programs.
  24. ! This allows most OS dependcies to be removed from an application,
  25. ! making it much more readable, and isolating them in a small,
  26. ! standardized library. It has the disadvantage that it only
  27. ! works with fairly stock UNIX versions, but a different approach
  28. ! will be used for other systems.
  29.   
  30. ! This package supplements the existing libraries and header files
  31. ! of a AT&T-derived Unix system (System V and BSD in particular).
  32. ! It also provides function prototypes when the compiler supports them,
  33.   improving compile-time error checking and improving portability on
  34. ! machines where sizeof(int) == sizeof(size_t) == sizeof(void*) does not hold.
  35.   
  36. ! A different approach will be used for the DOS, Atari St, Minix,
  37. ! and possibly V7: a complete replacement standard C library will
  38. ! be provided as a separate package. This would not be practical
  39. ! with BSD or NFS systems because of the conflicts with the host
  40. ! stdio and the replacement stdio in libc's getpwent().
  41.   
  42.   Contents:
  43. ! stdc/*:        The standard C header files and library.
  44. ! posix/*:    The POSIX header files and library.
  45. ! h/*, h/sys/*:    Links to the header files in stdc/ and posix/.
  46. ! libstdc.a:    The standard C library.
  47. ! libposix.a:    The POSIX emulation library.
  48.   
  49. ! To create the header files and libraries, perform the following
  50. ! three steps in the stdc and posix directories:
  51. !     One of _BSD, _SYSV, or _V7 should be defined in the Makefile.
  52. !     Do "rm stdc/stdio.h", it gets created by make.
  53. !     Do "make link" first to set up the links from *.h to ../h.
  54. !     Do "make" to create the library.
  55. ! Compile applications with -I$STD/h, link them with -L$STD ... -lstdc -lposix.
  56.   
  57. !     Notes on the standard C package
  58. ! The files <locale.h>, <assert.h>, and <math.h> don't exist yet.
  59. ! Many standard C functions are not implemented yet.
  60. ! These include strtol, strtoul, atexit, tempfile(?), etc.
  61. ! The string routines are by Henry Spencer.
  62.   
  63. ! Known portability problems include:
  64. ! size_t or ptrdiff_t in <stddef.h> may need to be long.
  65. ! The method of creating <stdio.h> from /usr/include/stdio.h and stdio.h_std
  66. ! may not work on some versions of UNIX.
  67. ! Almost definitely not on Xenix, maybe not on merged BSD-SysV systems.
  68. ! This package contains a correct version of setvbuf() which
  69. ! depends on the contents of FILE in the host stdio.h.
  70. ! This will not work if FILE is neither stock System V or BSD.
  71. ! You can safely "#if 0" out the body of setvbuf for PD ksh,
  72. ! setvbuf is used to decrease the size of buffers to speed up forks.
  73.   
  74. !     Notes on the POSIX package
  75. ! Only headers and function required by the PD KornShell are implemented.
  76. ! I do not intend to develop this into a full POSIX emulation package.
  77. ! You should install Doug Gwyn's <dirent> package if you do not have
  78. ! <dirent.h> nor <sys/dir>. If you do have <dirent.h>, unlink h/dirent.h
  79. ! (this should be configured automatically by the makefile).
  80.   
  81. --- 1,88 ----
  82.       Notes on the Standard C / POSIX P1003.1 package
  83.   
  84. !   This package contains header files and library routines to provide a
  85. ! standard C (ANSI) and POSIX enviroment for portable programs.  This
  86. ! allows most OS dependcies to be removed from an application, making it
  87. ! much more readable, and isolating them in a small, standardized
  88. ! library. It has the disadvantage that it only works with fairly stock
  89. ! UNIX versions, but a different approach will be used for other
  90. ! systems.
  91.   
  92. !   This package supplements the existing libraries and header files
  93. ! of a AT&T-derived Unix system (System V and BSD in particular). It
  94. ! also provides function prototypes when the compiler supports them,
  95.   improving compile-time error checking and improving portability on
  96. ! machines where sizeof(int) == sizeof(size_t) == sizeof(void*) does not
  97. ! hold.
  98.   
  99. !   A different approach will be used for the DOS, Atari St, Minix,
  100. ! and possibly V7: a complete replacement standard C library will be
  101. ! provided as a separate package. This would not be practical with BSD
  102. ! or NFS systems because of the conflicts with the host stdio and the
  103. ! replacement stdio in libc's getpwent().
  104.   
  105.   Contents:
  106. !     stdc/*:        The standard C header files and library.
  107. !     posix/*:    The POSIX header files and library.
  108. !     h/*, h/sys/*:    Links to the header files in stdc/ and posix/.
  109. !     libstdc.a:    The standard C library.
  110. !     libposix.a:    The POSIX emulation library.
  111.   
  112. ! Building PD Ksh
  113. ! ---------------
  114.   
  115. !  First, create the header files and libraries:
  116.   
  117. !     - define _BSD, _SYSV, or _V7 in stdc/Makefile and posix/Makefile
  118. !     - rm stdc/stdio.h
  119. !     - cd stdc; make
  120. !     - cd ../posix; make posix
  121.   
  122. !  Now, type:
  123. !     - cd ../src; make
  124. !  The executable will be in src/ksh.
  125. !            Notes on the standard C package
  126. !   - The files <locale.h>, <assert.h>, and <math.h> don't exist yet.
  127. !   - Many standard C functions are not implemented yet, including
  128. !     strtol    strtoul    atexit tempfile        et al.
  129. !   - The string routines are by Henry Spencer.
  130. !               Known Portability Problems
  131. !   - size_t or ptrdiff_t in <stddef.h> may need to be long.
  132. !   - some versions of Unix may scream when make stdc tries to create a
  133. !     stdio.h from /usr/include/stdio.h and stdc/stdio.h_std .. if this
  134. !     is the case (e.g. on Xenix and some BSD/SysV mixes), you can do it
  135. !     by hand by simply doing: 
  136. !     cd stdc
  137. !     cp stdio.h_std stdio.h
  138. !     edit the new stdio.h and insert /usr/include/stdio.h between the lines
  139. !         /* system stdio.h goes here ... %%% */
  140. !     and
  141. !         /* ... end system stdio.h */
  142. !   - FILE must be in the host stdio.h for setvbuf() to work; also it
  143. !     has to be stock System V or BSD, or it'll fail
  144. !   - You can safely "#if 0" out the body of setvbuf for PD ksh, setvbuf
  145. !     is used to decrease the size of buffers to speed up forks.
  146. !   - If the offsetof macro makes your build fail, define BAD_OFFSET in
  147. !     the CFLAGS variable in src/Makefile, as such:
  148. !         CFLAGS= blahblahblah -DBAD_OFFSET
  149. !   - Also previous versions would crash if you did a Ctrl-D (EOF) on
  150. !     the line by itself (at least on Suns); this has been fixed (at
  151. !     least on Suns :-)).
  152. !               Notes on the POSIX package
  153. !   - Only headers and function required by the PD KornShell are
  154. !     implemented. I do not intend to develop this into a full POSIX
  155. !     emulation package.
  156. !   - You should install Doug Gwyn's <dirent> package if you do not have
  157. !     <dirent.h> nor <sys/dir>. If you do have <dirent.h>, unlink
  158. !     h/dirent.h (this should be configured automatically by the
  159. !     makefile).
  160.   
  161. Common subdirectories: ../oksh/posix and ./posix
  162. Common subdirectories: ../oksh/src and ./src
  163. Common subdirectories: ../oksh/stdc and ./stdc
  164. diff -rc ../oksh/posix/Makefile ./posix/Makefile
  165. *** ../oksh/posix/Makefile    Wed Jan 30 11:36:38 1991
  166. --- ./posix/Makefile    Wed Jan 30 14:43:48 1991
  167. ***************
  168. *** 4,14 ****
  169.   # $Header: Makefile,v 1.1 88/03/29 18:28:38 egisin Locked $
  170.   
  171.   SYSTEM=BSD
  172. ! CC = gcc -ansi -O -W 
  173.   LN = ln
  174.   PRINT = lpr -p -Plp26_3018
  175.   
  176. ! CFLAGS = -I../h -D_$(SYSTEM) 
  177.   
  178.   MISC =    Makefile 
  179.   HDRS =    wait.h times.h unistd.h fcntl.h dirent.h 
  180. --- 4,15 ----
  181.   # $Header: Makefile,v 1.1 88/03/29 18:28:38 egisin Locked $
  182.   
  183.   SYSTEM=BSD
  184. ! #CC = gcc -ansi -O -W 
  185. ! CC = cc -O
  186.   LN = ln
  187.   PRINT = lpr -p -Plp26_3018
  188.   
  189. ! CFLAGS = -I../h -D_$(SYSTEM) -I.
  190.   
  191.   MISC =    Makefile 
  192.   HDRS =    wait.h times.h unistd.h fcntl.h dirent.h 
  193. ***************
  194. *** 34,39 ****
  195. --- 35,41 ----
  196.   
  197.   $(LIB):    $(OBJS)
  198.       ar r $@ $?
  199. +     @echo Don't worry if it says fcntl.o has no symbol table ...
  200.       -ranlib $@
  201.   
  202.   #$(LIB): lib.a($OBJS)
  203. ***************
  204. *** 57,59 ****
  205. --- 59,63 ----
  206.   
  207.   times.o: times.h 
  208.   
  209. + clean:
  210. +     rm -f libposix.a *.o *~
  211. diff -rc ../oksh/posix/io.h ./posix/io.h
  212. *** ../oksh/posix/io.h    Wed Jan 30 11:36:39 1991
  213. --- ./posix/io.h    Wed Jan 30 14:26:50 1991
  214. ***************
  215. *** 14,22 ****
  216.   struct stat;            /* create global incompletely-typed structure */
  217.   
  218.   int chdir ARGS ((const char *path));
  219.   int umask ARGS ((int mode));
  220.   
  221. ! int open ARGS ((const char *path, int flags, ... /*mode*/));
  222.   int creat ARGS ((const char *path, int mode));
  223.   int pipe ARGS ((int pv[2]));
  224.   int close ARGS ((int fd));
  225. --- 14,26 ----
  226.   struct stat;            /* create global incompletely-typed structure */
  227.   
  228.   int chdir ARGS ((const char *path));
  229. + #ifndef sun
  230.   int umask ARGS ((int mode));
  231. + #endif /* sun */
  232.   
  233. ! #ifndef sun
  234. ! int open ARGS ((const char *path, int flags, ... /* mode */));
  235. ! #endif
  236.   int creat ARGS ((const char *path, int mode));
  237.   int pipe ARGS ((int pv[2]));
  238.   int close ARGS ((int fd));
  239. diff -rc ../oksh/posix/wait.h ./posix/wait.h
  240. *** ../oksh/posix/wait.h    Wed Jan 30 11:36:41 1991
  241. --- ./posix/wait.h    Wed Jan 30 14:38:53 1991
  242. ***************
  243. *** 8,15 ****
  244.   #define    ARGS(args)    ()
  245.   #endif
  246.   
  247. ! #if 1
  248. ! typedef int pid_t;        /* belong in sys/types.h */
  249.   #endif
  250.   
  251.   /* waitpid options */
  252. --- 8,15 ----
  253.   #define    ARGS(args)    ()
  254.   #endif
  255.   
  256. ! #ifndef sun
  257. ! typedef int pid_t;              /* belongs in sys/types.h */
  258.   #endif
  259.   
  260.   /* waitpid options */
  261. diff -rc ../oksh/src/Makefile ./src/Makefile
  262. *** ../oksh/src/Makefile    Wed Jan 30 11:36:24 1991
  263. --- ./src/Makefile    Wed Jan 30 15:00:05 1991
  264. ***************
  265. *** 3,13 ****
  266.   # $Header: /tmp/egisin/src/RCS/Makefile,v 3.2 88/11/06 11:34:12 egisin Exp $
  267.   
  268.   BIN = /u/egisin/bin
  269. ! STD = ../std
  270.   PRINT = lpr -p -Plp26_3018
  271.   
  272. ! # CC = cc
  273. ! CC = gcc 
  274.   
  275.   # Must define one of _V7, _SYSV, _BSD, _POSIX
  276.   # may define any of JOBS (have BSD or POSIX job control),
  277. --- 3,14 ----
  278.   # $Header: /tmp/egisin/src/RCS/Makefile,v 3.2 88/11/06 11:34:12 egisin Exp $
  279.   
  280.   BIN = /u/egisin/bin
  281. ! STD = ../stdc
  282. ! POSIXD = ../posix
  283.   PRINT = lpr -p -Plp26_3018
  284.   
  285. ! CC = cc
  286. ! #CC = gcc 
  287.   
  288.   # Must define one of _V7, _SYSV, _BSD, _POSIX
  289.   # may define any of JOBS (have BSD or POSIX job control),
  290. ***************
  291. *** 15,23 ****
  292.   
  293.   OPTIONS = -D_BSD -DJOBS -DEDIT 
  294.   
  295. ! CFWARN = -ansi -O -W -Wcomment # -Wreturn-type
  296. ! CFLAGS = $(CFWARN) -I$(STD)/h $(OPTIONS) $(JUNK) 
  297. ! LDFLAGS = -L$(STD) $(JUNK) 
  298.   LDLIBS = -lstdc -lposix            # compatability libraries
  299.   
  300.   HDRS =    sh.h table.h expand.h lex.h tree.h tty.h
  301. --- 16,26 ----
  302.   
  303.   OPTIONS = -D_BSD -DJOBS -DEDIT 
  304.   
  305. ! #CFWARN = -ansi -O -W -Wcomment # -Wreturn-type
  306. ! #CFWARN = -g -Bstatic -nostdinc -I/usr/include
  307. ! CFWARN = -O
  308. ! CFLAGS = $(CFWARN) -I$(STD) -I$(STD)/h -I$(POSIXD) $(OPTIONS) $(JUNK) 
  309. ! LDFLAGS = -L$(STD) -L$(POSIXD)
  310.   LDLIBS = -lstdc -lposix            # compatability libraries
  311.   
  312.   HDRS =    sh.h table.h expand.h lex.h tree.h tty.h
  313. ***************
  314. *** 59,61 ****
  315. --- 62,66 ----
  316.   tar:    ReadMe ksh.1 $(SRCS)
  317.       tar cf /tmp/egisin/ksh.tar ReadMe ksh.1 $(SRCS)
  318.   
  319. + clean:
  320. +     rm -f ksh *.o
  321. diff -rc ../oksh/src/alloc.c ./src/alloc.c
  322. *** ../oksh/src/alloc.c    Wed Jan 30 11:36:32 1991
  323. --- ./src/alloc.c    Wed Jan 30 14:47:22 1991
  324. ***************
  325. *** 87,93 ****
  326.   
  327.           /* wrapped around Block list, create new Block */
  328.           if (bp == ap->free) {
  329. !             bp = malloc(offsetof(Block, cell[ICELLS + cells]));
  330.               if (bp == NULL) {
  331.                   aerror(ap, "cannot allocate");
  332.                   return NULL;
  333. --- 87,97 ----
  334.   
  335.           /* wrapped around Block list, create new Block */
  336.           if (bp == ap->free) {
  337. ! #ifdef BAD_OFFSET
  338. !                 bp = (Block *) malloc((int)&((Block*)NULL)->cell[ICELLS + cells]);
  339. ! #else /* !BAD_OFFSET */
  340. !              bp = (Block *) malloc(offsetof(Block, cell[(ICELLS + cells)]));
  341. ! #endif /* BAD_OFFSET */
  342.               if (bp == NULL) {
  343.                   aerror(ap, "cannot allocate");
  344.                   return NULL;
  345. diff -rc ../oksh/src/c_sh.c ./src/c_sh.c
  346. *** ../oksh/src/c_sh.c    Wed Jan 30 11:36:36 1991
  347. --- ./src/c_sh.c    Wed Jan 30 14:26:44 1991
  348. ***************
  349. *** 311,316 ****
  350. --- 311,319 ----
  351.       register char *cp;
  352.       int old_fmonitor = flag[FMONITOR];
  353.   
  354. +     /*
  355. +      * if they only typed 'set', show them all of them
  356. +      */
  357.       if ((cp = *++wp) == NULL) {
  358.           static char * Const args [] = {"set", "-", NULL};
  359.           extern int c_typeset ARGS((char **args));
  360. ***************
  361. *** 441,446 ****
  362. --- 444,453 ----
  363.   
  364.       return rv;
  365.   }
  366. + #ifdef sun
  367. + #define CLK_TCK    100
  368. + #endif
  369.   
  370.   static char *
  371.   clocktos(t)
  372. diff -rc ../oksh/src/exec.c ./src/exec.c
  373. *** ../oksh/src/exec.c    Wed Jan 30 11:36:36 1991
  374. --- ./src/exec.c    Wed Jan 30 11:55:06 1991
  375. ***************
  376. *** 48,54 ****
  377.           runtraps();
  378.    
  379.       if (t->ioact != NULL || t->type == TPIPE) {
  380. !         e.savefd = alloc(sizeofN(short, NUFILE), ATEMP);
  381.           for (i = 0; i < NUFILE; i++)
  382.               e.savefd[i] = 0; /* not redirected */
  383.       }
  384. --- 48,54 ----
  385.           runtraps();
  386.    
  387.       if (t->ioact != NULL || t->type == TPIPE) {
  388. !         e.savefd = (short *) alloc(sizeofN(short, NUFILE), ATEMP);
  389.           for (i = 0; i < NUFILE; i++)
  390.               e.savefd[i] = 0; /* not redirected */
  391.       }
  392. ***************
  393. *** 220,226 ****
  394.           echo(vp, ap);
  395.   
  396.       /* create new variable/function block */
  397. !     l = alloc(sizeof(struct block), ATEMP);
  398.       l->next = e.loc; e.loc = l;
  399.       newblock();
  400.   
  401. --- 220,226 ----
  402.           echo(vp, ap);
  403.   
  404.       /* create new variable/function block */
  405. !     l = (struct block *) alloc(sizeof(struct block), ATEMP);
  406.       l->next = e.loc; e.loc = l;
  407.       newblock();
  408.   
  409. diff -rc ../oksh/src/expr.c ./src/expr.c
  410. *** ../oksh/src/expr.c    Wed Jan 30 11:36:37 1991
  411. --- ./src/expr.c    Wed Jan 30 11:55:45 1991
  412. ***************
  413. *** 235,241 ****
  414.   {
  415.       register struct tbl *vp;
  416.   
  417. !     vp = alloc(sizeof(struct tbl), ATEMP);
  418.       lastarea = ATEMP;
  419.       vp->flag = ISSET|INTEGER;
  420.       vp->type = 0;
  421. --- 235,241 ----
  422.   {
  423.       register struct tbl *vp;
  424.   
  425. !     vp = (struct tbl *) alloc(sizeof(struct tbl), ATEMP);
  426.       lastarea = ATEMP;
  427.       vp->flag = ISSET|INTEGER;
  428.       vp->type = 0;
  429. diff -rc ../oksh/src/io.c ./src/io.c
  430. *** ../oksh/src/io.c    Wed Jan 30 11:36:33 1991
  431. --- ./src/io.c    Wed Jan 30 14:26:41 1991
  432. ***************
  433. *** 9,15 ****
  434.   #include <stdio.h>
  435.   #include <errno.h>
  436.   #include <unistd.h>
  437. ! #include <fcntl.h>
  438.   #include <signal.h>
  439.   #include <setjmp.h>
  440.   #if __STDC__
  441. --- 9,16 ----
  442.   #include <stdio.h>
  443.   #include <errno.h>
  444.   #include <unistd.h>
  445. ! /* #include <fcntl.h> */
  446. ! #include "../posix/fcntl.h"
  447.   #include <signal.h>
  448.   #include <setjmp.h>
  449.   #if __STDC__
  450. diff -rc ../oksh/src/jobs.c ./src/jobs.c
  451. *** ../oksh/src/jobs.c    Wed Jan 30 11:36:36 1991
  452. --- ./src/jobs.c    Wed Jan 30 14:26:40 1991
  453. ***************
  454. *** 27,33 ****
  455.   #include <setjmp.h>
  456.   #include <sys/types.h>
  457.   #include <sys/times.h>
  458. ! #include <sys/wait.h>
  459.   #if JOBS
  460.   #if _BSD
  461.   #include <sys/ioctl.h>
  462. --- 27,34 ----
  463.   #include <setjmp.h>
  464.   #include <sys/types.h>
  465.   #include <sys/times.h>
  466. ! /* #include <sys/wait.h> */
  467. ! #include "wait.h"
  468.   #if JOBS
  469.   #if _BSD
  470.   #include <sys/ioctl.h>
  471. ***************
  472. *** 201,207 ****
  473.       for (j = procs; j != NULL; j = j->next)
  474.           if (j->state == JFREE)
  475.               goto Found;
  476. !     j = alloc(sizeof(Proc), APERM);
  477.       j->next = procs;
  478.       j->state = JFREE;
  479.       procs = j;
  480. --- 202,208 ----
  481.       for (j = procs; j != NULL; j = j->next)
  482.           if (j->state == JFREE)
  483.               goto Found;
  484. !     j = (Proc *) alloc(sizeof(Proc), APERM);
  485.       j->next = procs;
  486.       j->state = JFREE;
  487.       procs = j;
  488. diff -rc ../oksh/src/lex.c ./src/lex.c
  489. *** ../oksh/src/lex.c    Wed Jan 30 11:36:34 1991
  490. --- ./src/lex.c    Wed Jan 30 14:26:39 1991
  491. ***************
  492. *** 25,31 ****
  493.   static    int    getsc_ ARGS((void));
  494.   
  495.   /* optimized getsc_() */
  496. ! #define    getsc()    ((*source->str != 0) ? *source->str++ : getsc_())
  497.   #define    ungetsc() (source->str--)
  498.   
  499.   /*
  500. --- 25,36 ----
  501.   static    int    getsc_ ARGS((void));
  502.   
  503.   /* optimized getsc_() */
  504. ! /*
  505. !  * if it's == 128 (aka c&0x80 is true), then they put in ^D
  506. !  */
  507. ! #define    getsc() \
  508. !      ((*source->str == 0) ? getsc_() :\
  509. !     (*source->str & 0x80) ? '\0' : *source->str++)
  510.   #define    ungetsc() (source->str--)
  511.   
  512.   /*
  513. diff -rc ../oksh/src/main.c ./src/main.c
  514. *** ../oksh/src/main.c    Wed Jan 30 11:36:31 1991
  515. --- ./src/main.c    Wed Jan 30 14:26:38 1991
  516. ***************
  517. *** 11,17 ****
  518.   #include <stdio.h>
  519.   #include <string.h>
  520.   #include <unistd.h>
  521. ! #include <fcntl.h>
  522.   #include <signal.h>
  523.   #include <errno.h>
  524.   #include <setjmp.h>
  525. --- 11,18 ----
  526.   #include <stdio.h>
  527.   #include <string.h>
  528.   #include <unistd.h>
  529. ! /* #include <fcntl.h> */
  530. ! #include "../posix/fcntl.h"
  531.   #include <signal.h>
  532.   #include <errno.h>
  533.   #include <setjmp.h>
  534. Only in ./src: memmove.c
  535. diff -rc ../oksh/src/misc.c ./src/misc.c
  536. *** ../oksh/src/misc.c    Wed Jan 30 11:36:32 1991
  537. --- ./src/misc.c    Mon Dec 17 10:06:07 1990
  538. ***************
  539. *** 201,207 ****
  540.       Void **vp;
  541.       register Void **dvp, **svp;
  542.   
  543. !     vp = alloc(sizeofN(Void*, n*2), ATEMP);
  544.       for (svp = xp->beg, dvp = vp; svp < xp->cur; )
  545.           *dvp++ = *svp++;
  546.       afree((Void*) xp->beg, ATEMP);
  547. --- 201,207 ----
  548.       Void **vp;
  549.       register Void **dvp, **svp;
  550.   
  551. !     vp = (Void **) alloc(sizeofN(Void*, n*2), ATEMP);
  552.       for (svp = xp->beg, dvp = vp; svp < xp->cur; )
  553.           *dvp++ = *svp++;
  554.       afree((Void*) xp->beg, ATEMP);
  555. diff -rc ../oksh/src/syn.c ./src/syn.c
  556. *** ../oksh/src/syn.c    Wed Jan 30 11:36:33 1991
  557. --- ./src/syn.c    Wed Jan 30 14:26:37 1991
  558. ***************
  559. *** 81,86 ****
  560. --- 81,87 ----
  561.       register int c;
  562.   
  563.       t = pipeline(0);
  564.       if (t != NULL) {
  565.           while ((c = token(0)) == LOGAND || c == LOGOR) {
  566.               if ((p = pipeline(CONTIN)) == NULL)
  567. diff -rc ../oksh/src/table.c ./src/table.c
  568. *** ../oksh/src/table.c    Wed Jan 30 11:36:45 1991
  569. --- ./src/table.c    Wed Jan 30 14:26:35 1991
  570. ***************
  571. *** 56,62 ****
  572.       register struct tbl **ntblp, **otblp = tp->tbls;
  573.       int osize = tp->size;
  574.   
  575. !     ntblp = alloc(sizeofN(struct tbl *, nsize), tp->areap);
  576.       for (i = 0; i < nsize; i++)
  577.           ntblp[i] = NULL;
  578.       tp->size = nsize;
  579. --- 56,62 ----
  580.       register struct tbl **ntblp, **otblp = tp->tbls;
  581.       int osize = tp->size;
  582.   
  583. !     ntblp = (struct tbl **) alloc(sizeofN(struct tbl *, nsize), tp->areap);
  584.       for (i = 0; i < nsize; i++)
  585.           ntblp[i] = NULL;
  586.       tp->size = nsize;
  587. ***************
  588. *** 130,136 ****
  589.       /* create new tbl entry */
  590.       for (cp = n; *cp != '\0'; cp++)
  591.           ;
  592. !     p = (struct tbl *) alloc(offsetof(struct tbl, name[(cp-n)+1]), tp->areap);
  593.       p->flag = 0;
  594.       p->type = 0;
  595.       for (cp = p->name; *n != '\0';)
  596. --- 130,141 ----
  597.       /* create new tbl entry */
  598.       for (cp = n; *cp != '\0'; cp++)
  599.           ;
  600. ! #ifdef BAD_OFFSET
  601. !     p = (struct tbl *) alloc(((size_t)&((struct tbl *)NULL)->name[(cp-n)+1]), tp->areap);
  602. ! #else /* !BAD_OFFSET */
  603. !      p = (struct tbl *) alloc(offsetof(struct tbl, name[((cp-n)+1)]), tp->areap);
  604. ! #endif /* BAD_OFFSET */
  605.       p->flag = 0;
  606.       p->type = 0;
  607.       for (cp = p->name; *n != '\0';)
  608. diff -rc ../oksh/src/tree.c ./src/tree.c
  609. *** ../oksh/src/tree.c    Wed Jan 30 11:36:35 1991
  610. --- ./src/tree.c    Fri Dec 14 16:21:57 1990
  611. ***************
  612. *** 350,356 ****
  613.       Area *ap;
  614.   {
  615.       size_t len = wdscan(wp, EOS) - wp;
  616. !     return memcpy(alloc(len, ap), wp, len);
  617.   }
  618.   
  619.   /* return the position of prefix c in wp plus 1 */
  620. --- 350,356 ----
  621.       Area *ap;
  622.   {
  623.       size_t len = wdscan(wp, EOS) - wp;
  624. !     return((char *)memcpy(alloc(len, ap), wp, len));
  625.   }
  626.   
  627.   /* return the position of prefix c in wp plus 1 */
  628. diff -rc ../oksh/stdc/Makefile ./stdc/Makefile
  629. *** ../oksh/stdc/Makefile    Wed Jan 30 11:36:42 1991
  630. --- ./stdc/Makefile    Wed Jan 30 14:26:34 1991
  631. ***************
  632. *** 4,10 ****
  633.   # $Header: Makefile,v 1.1 88/03/29 18:28:38 egisin Locked $
  634.   
  635.   SYSTEM=BSD
  636. ! CC = gcc -ansi -O -W 
  637.   LN = ln
  638.   PRINT = lpr -p -Plp26_3018
  639.   
  640. --- 4,11 ----
  641.   # $Header: Makefile,v 1.1 88/03/29 18:28:38 egisin Locked $
  642.   
  643.   SYSTEM=BSD
  644. ! #CC = gcc -ansi -O -W 
  645. ! CC = cc -O
  646.   LN = ln
  647.   PRINT = lpr -p -Plp26_3018
  648.   
  649. ***************
  650. *** 75,78 ****
  651. --- 76,82 ----
  652.   vprintf.o: stdarg.h stdio.h
  653.   
  654.   strstr.o: string.h 
  655. + clean:
  656. +     rm -f libstdc.a *.o
  657.   
  658. diff -rc ../oksh/stdc/setvbuf.c ./stdc/setvbuf.c
  659. *** ../oksh/stdc/setvbuf.c    Wed Jan 30 11:36:49 1991
  660. --- ./stdc/setvbuf.c    Fri Dec 14 16:25:05 1990
  661. ***************
  662. *** 46,52 ****
  663.           return -1;
  664.       }
  665.       f->_flag |= type;
  666. !     f->_base = f->_ptr = buf;
  667.       f->_cnt = 0;
  668.   #if _BSD
  669.       f->_bufsiz = size;
  670. --- 46,52 ----
  671.           return -1;
  672.       }
  673.       f->_flag |= type;
  674. !     f->_base = f->_ptr = (unsigned char *) buf;
  675.       f->_cnt = 0;
  676.   #if _BSD
  677.       f->_bufsiz = size;
  678. diff -rc ../oksh/stdc/sprintf.c ./stdc/sprintf.c
  679. *** ../oksh/stdc/sprintf.c    Wed Jan 30 11:36:48 1991
  680. --- ./stdc/sprintf.c    Fri Dec 14 16:26:11 1990
  681. ***************
  682. *** 51,57 ****
  683.       static FILE siob;
  684.   
  685.       siob._flag = _IOWRT;
  686. !     siob._base = siob._ptr = s;
  687.       siob._cnt = BUFSIZ;
  688.       siob._file = -1;
  689.   
  690. --- 51,57 ----
  691.       static FILE siob;
  692.   
  693.       siob._flag = _IOWRT;
  694. !     siob._base = siob._ptr = (unsigned char *) s;
  695.       siob._cnt = BUFSIZ;
  696.       siob._file = -1;
  697.   
  698. diff -rc ../oksh/stdc/stddef.h ./stdc/stddef.h
  699. *** ../oksh/stdc/stddef.h    Wed Jan 30 11:36:42 1991
  700. --- ./stdc/stddef.h    Wed Jan 30 14:26:33 1991
  701. ***************
  702. *** 25,33 ****
  703. --- 25,37 ----
  704.   #endif
  705.   
  706.   typedef unsigned size_t;        /* may need long */
  707. + #ifndef sun
  708.   typedef int ptrdiff_t;
  709. + #endif
  710.   
  711. + #ifndef BAD_OFFSET
  712.   #define    offsetof(type,id) ((size_t)&((type*)NULL)->id)
  713. + #endif
  714.   
  715.   extern    int errno;        /* really belongs in <errno.h> */
  716.   
  717.  
  718. -- cut --
  719. --
  720.      Brendan Kehoe - Widener Sun Network Manager - brendan@cs.widener.edu
  721.   Widener University in Chester, PA                A Bloody Sun-Dec War Zone
  722. -- 
  723.      Brendan Kehoe - Widener Sun Network Manager - brendan@cs.widener.edu
  724.   Widener University in Chester, PA                A Bloody Sun-Dec War Zone
  725.