home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / compsrcs / misc / volume40 / pdksh / patch09b < prev    next >
Encoding:
Text File  |  1993-10-12  |  45.2 KB  |  1,856 lines

  1. Newsgroups: comp.sources.misc
  2. From: sjg@zen.void.oz.au (Simon J. Gerraty)
  3. Subject: v40i007:  pdksh -  Public Domain Korn Shell, v4, Patch09b/2
  4. Message-ID: <1993Oct11.034548.23439@sparky.sterling.com>
  5. X-Md4-Signature: bf18c9bcaaf4e2e8d7018e8a0bdb8d51
  6. Sender: kent@sparky.sterling.com (Kent Landfield)
  7. Organization: Sterling Software
  8. Date: Mon, 11 Oct 1993 03:45:48 GMT
  9. Approved: kent@sparky.sterling.com
  10.  
  11. Submitted-by: sjg@zen.void.oz.au (Simon J. Gerraty)
  12. Posting-number: Volume 40, Issue 7
  13. Archive-name: pdksh/patch09b
  14. Environment: UNIX
  15. Patch-To: pdksh: Volume 25, Issue 47-55
  16.  
  17. This is patch09 to pd-ksh version 4.  It is in two parts, so
  18. be sure to apply both before attempting to re-build.
  19.  
  20. start of patch 29-Sep-1993b
  21. (suggested archive name: pch29Sep93b.Z)
  22. It should be applied by changing directory to the root
  23. of the source tree and using the command:
  24.     patch -p0 < patch09a
  25.     patch -p0 < patch09b
  26.  
  27. The following is a complete list of patches to date.
  28.  
  29. # PD ksh Version 4
  30. Prereq: 09-Nov-91
  31. Prereq: 10-Nov-91
  32. Prereq: 25-Nov-91
  33. Prereq: 25-Apr-92
  34. Prereq: 26-Apr-92
  35. Prereq: 27-Apr-92
  36. Prereq: 12-May-92
  37. Prereq: 02-Aug-92
  38. Prereq: 12-Aug-92
  39. Prereq: 05-Dec-92
  40. Prereq: 29-Sep-1993
  41. *** PATCHDATES.old    Wed Sep 29 08:42:18 1993
  42. --- PATCHDATES    Wed Sep 29 08:59:56 1993
  43. ***************
  44. *** 10,12 ****
  45. --- 10,13 ----
  46.   12-Aug-92
  47.   05-Dec-92
  48.   29-Sep-1993
  49. + 29-Sep-1993b
  50. *** sh/proto.h.old    Sat Dec  5 23:42:03 1992
  51. --- sh/proto.h    Thu May  6 07:16:44 1993
  52. ***************
  53. *** 1,7 ****
  54.   /*
  55.    * prototypes for PD-KSH
  56.    * originally generated using "cproto.c 3.5 92/04/11 19:28:01 cthuang "
  57. !  * $Id: proto.h,v 1.2 1992/08/10 12:03:05 sjg Exp $
  58.    */
  59.   #ifndef ARGS
  60.   #if defined(__STDC__) || defined(__cplusplus)
  61. --- 1,7 ----
  62.   /*
  63.    * prototypes for PD-KSH
  64.    * originally generated using "cproto.c 3.5 92/04/11 19:28:01 cthuang "
  65. !  * $Id: proto.h,v 1.3 93/05/05 21:16:58 sjg Exp $
  66.    */
  67.   #ifndef ARGS
  68.   #if defined(__STDC__) || defined(__cplusplus)
  69. *** sh/sh.h.old    Thu Aug 13 00:15:34 1992
  70. --- sh/sh.h    Thu May  6 07:16:46 1993
  71. ***************
  72. *** 2,8 ****
  73.    * Public Domain Bourne/Korn shell
  74.    */
  75.   
  76. ! /* $Id: sh.h,v 1.5 1992/08/12 14:15:48 sjg Exp $ */
  77.   
  78.   #include "config.h"
  79.   
  80. --- 2,8 ----
  81.    * Public Domain Bourne/Korn shell
  82.    */
  83.   
  84. ! /* $Id: sh.h,v 1.6 93/05/05 21:17:00 sjg Exp $ */
  85.   
  86.   #include "config.h"
  87.   
  88. *** sh/sigact.h.old    Mon Aug  3 22:51:06 1992
  89. --- sh/sigact.h    Thu May  6 07:16:50 1993
  90. ***************
  91. *** 2,62 ****
  92.    *      sigact.h - sigaction et al
  93.    *
  94.    * SYNOPSIS:
  95. !  *      #include <signal.h>
  96. !  *      #ifndef  SA_NOCLDSTOP
  97. !  *      # include "sigact.h"
  98. !  *      #endif
  99.    *
  100.    * DESCRIPTION:
  101. !  *      This header is the interface to a fake sigaction(2) implementation.  
  102. !  *      Do NOT include this header unless your system does not 
  103. !  *      have a real sigaction(2) implementation.
  104.    */
  105.   /*
  106. !  * $Log: sigact.h,v $
  107. !  * Revision 1.2  1992/04/24  15:04:11  sjg
  108. !  * now compiles with cc
  109. !  *
  110. !  * Revision 1.1  1992/04/24  12:01:38  sjg
  111. !  * Initial revision
  112. !  *
  113.    */
  114.   #ifndef _SIGACT_H
  115.   #define _SIGACT_H
  116.   
  117. ! #ifndef ARGS
  118. ! # if defined(__STDC__)
  119. ! #   define ARGS(p) p
  120. ! # else
  121. ! #   define ARGS(p) ()
  122. ! # endif
  123.   #endif
  124. ! #ifndef __STDC__
  125. ! # define volatile            /* can change without warning */
  126.   # define const                /* read only */
  127.   #endif
  128.   
  129.   #ifndef SIGKILL
  130.   # include <signal.h>
  131.   #endif
  132.   #ifndef SA_NOCLDSTOP
  133.   /* sa_flags */
  134. ! #define    SA_NOCLDSTOP    0x0001        /* don't send SIGCHLD on child stop */
  135. ! #define SA_RESTART    0x0002        /* re-start I/O */
  136.   
  137.   /* sigprocmask flags */
  138. ! #define    SIG_BLOCK    0x0001
  139. ! #define    SIG_UNBLOCK    0x0002
  140. ! #define    SIG_SETMASK    0x0004
  141.   
  142. ! #ifndef __sys_stdtypes_h
  143. ! typedef int sigset_t;
  144.   #endif
  145.   struct sigaction
  146.   {
  147. !   void        (*sa_handler)();
  148.     sigset_t    sa_mask;
  149.     int        sa_flags;
  150.   };
  151. --- 2,90 ----
  152.    *      sigact.h - sigaction et al
  153.    *
  154.    * SYNOPSIS:
  155. !  *      #include "sigact.h"
  156.    *
  157.    * DESCRIPTION:
  158. !  *      This header is the interface to a fake sigaction(2) 
  159. !  *      implementation. It provides a POSIX compliant interface 
  160. !  *      to whatever signal handling mechanisms are available.
  161. !  *      It also provides a Signal() function that is implemented 
  162. !  *      in terms of sigaction().
  163. !  *      If not using signal(2) as part of the underlying 
  164. !  *      implementation (USE_SIGNAL or USE_SIGMASK), and 
  165. !  *      NO_SIGNAL is not defined, it also provides a signal() 
  166. !  *      function that calls Signal(). 
  167. !  *      
  168. !  * SEE ALSO:
  169. !  *      sigact.c
  170.    */
  171.   /*
  172. !  * RCSid:
  173. !  *      $Id: sigact.h,v 1.5 93/05/05 21:17:04 sjg Exp $
  174.    */
  175.   #ifndef _SIGACT_H
  176.   #define _SIGACT_H
  177.   
  178. ! /*
  179. !  * most modern systems use void for signal handlers but
  180. !  * not all.
  181. !  */
  182. ! #ifndef SIG_HDLR
  183. ! # define SIG_HDLR void
  184.   #endif
  185. ! #undef ARGS
  186. ! #if defined(__STDC__) || defined(__cplusplus)
  187. ! # define ARGS(p) p
  188. ! #else
  189. ! # define ARGS(p) ()
  190. ! # define volatile            /* don't optimize please */
  191.   # define const                /* read only */
  192.   #endif
  193.   
  194. + SIG_HDLR (*Signal    ARGS((int sig, SIG_HDLR (*disp)(int)))) ARGS((int)); 
  195. + /*
  196. +  * if you want to install this header as signal.h,
  197. +  * modify this to pick up the original signal.h
  198. +  */
  199.   #ifndef SIGKILL
  200.   # include <signal.h>
  201.   #endif
  202. +   
  203. + #ifndef SIG_ERR
  204. + # define SIG_ERR  (SIG_HDLR (*)())-1
  205. + #endif
  206. + #ifndef BADSIG
  207. + # define BADSIG  SIG_ERR
  208. + #endif
  209. +     
  210.   #ifndef SA_NOCLDSTOP
  211. + /* we assume we need the fake sigaction */
  212.   /* sa_flags */
  213. ! #define    SA_NOCLDSTOP    1        /* don't send SIGCHLD on child stop */
  214. ! #define SA_RESTART    2        /* re-start I/O */
  215.   
  216.   /* sigprocmask flags */
  217. ! #define    SIG_BLOCK    1
  218. ! #define    SIG_UNBLOCK    2
  219. ! #define    SIG_SETMASK    4
  220.   
  221. ! /*
  222. !  * this is a bit untidy
  223. !  */
  224. ! #if !defined(__sys_stdtypes_h)
  225. ! typedef unsigned int sigset_t;
  226.   #endif
  227. !   
  228. ! /*
  229. !  * POSIX sa_handler should return void, but since we are
  230. !  * implementing in terms of something else, it may
  231. !  * be appropriate to use the normal SIG_HDLR return type
  232. !  */
  233.   struct sigaction
  234.   {
  235. !   SIG_HDLR    (*sa_handler)();
  236.     sigset_t    sa_mask;
  237.     int        sa_flags;
  238.   };
  239. ***************
  240. *** 69,79 ****
  241.   int    sigfillset    ARGS(( sigset_t *mask ));
  242.   int    sigismember    ARGS(( sigset_t *mask, int sig ));
  243.   int    sigpending    ARGS(( sigset_t *set ));
  244. ! int    sigprocmask    ARGS(( int how, sigset_t *set, sigset_t *oldset ));
  245.   int    sigsuspend    ARGS(( sigset_t *mask ));
  246.   #ifndef sigmask
  247. ! #define sigmask(m)    (1<<((m)-1))    /* convert SIGnum to mask */
  248.   #endif
  249.   #if !defined(NSIG) && defined(_NSIG)
  250.   # define NSIG _NSIG
  251. --- 97,107 ----
  252.   int    sigfillset    ARGS(( sigset_t *mask ));
  253.   int    sigismember    ARGS(( sigset_t *mask, int sig ));
  254.   int    sigpending    ARGS(( sigset_t *set ));
  255. ! int    sigprocmask    ARGS(( int how, sigset_t *set, sigset_t *oset ));
  256.   int    sigsuspend    ARGS(( sigset_t *mask ));
  257. !     
  258.   #ifndef sigmask
  259. ! # define sigmask(s)    (1<<((s)-1))    /* convert SIGnum to mask */
  260.   #endif
  261.   #if !defined(NSIG) && defined(_NSIG)
  262.   # define NSIG _NSIG
  263. ***************
  264. *** 80,88 ****
  265.   #endif
  266.   #endif /* ! SA_NOCLDSTOP */
  267.   #endif /* _SIGACT_H */
  268. - /*
  269. -  * Local Variables:
  270. -  * version-control:t
  271. -  * comment-column:40
  272. -  * End:
  273. -  */
  274. --- 108,110 ----
  275. *** sh/sigact.c.old    Sun May  3 18:28:56 1992
  276. --- sh/sigact.c    Sun May  9 01:59:52 1993
  277. ***************
  278. *** 2,11 ****
  279.    *      sigact.c - fake sigaction(2)
  280.    *
  281.    * SYNOPSIS:
  282. !  *      #include <signal.h>
  283. !  *      #ifndef  SA_NOCLDSTOP
  284. !  *      # include "sigact.h"
  285. !  *      #endif
  286.    * 
  287.    *      int sigaction(int sig, struct sigaction *act, 
  288.    *                      struct sigaction *oact);
  289. --- 2,8 ----
  290.    *      sigact.c - fake sigaction(2)
  291.    *
  292.    * SYNOPSIS:
  293. !  *      #include "sigact.h"
  294.    * 
  295.    *      int sigaction(int sig, struct sigaction *act, 
  296.    *                      struct sigaction *oact);
  297. ***************
  298. *** 15,52 ****
  299.    *      int sigfillset(sigset_t *mask);
  300.    *      int sigismember(sigset_t *mask, int sig);
  301.    *      int sigpending(sigset_t *set);
  302. !  *      int sigprocmask(int how, sigset_t *set, sigset_t *oldset);
  303.    *      int sigsuspend(sigset_t *mask);
  304.    *
  305.    * DESCRIPTION:
  306.    *      This is a fake sigaction implementation.  It uses 
  307. !  *      sigset(2) if available, otherwise it just uses 
  308. !  *      signal(2).  If it thinks sigaction(2) really exists it 
  309. !  *      compiles to almost nothing.
  310. !  *      
  311. !  *      The need for all this is the problems caused by mixing 
  312. !  *      signal handling routines in the one process.  This 
  313. !  *      module allows for a consistent POSIX compliant interface 
  314. !  *      to whatever is available.
  315. !  *
  316.    * RETURN VALUE:
  317.    *      0==success, -1==failure
  318.    *
  319. -  * FILES:
  320. -  *      None.
  321. -  *
  322. -  * SEE ALSO:
  323. -  *      
  324. -  *
  325.    * BUGS:
  326.    *      Since we fake most of this, don't expect fancy usage to 
  327.    *      work.
  328. !  *      
  329. !  * COPYRIGHT:
  330.    *      @(#)Copyright (c) 1992 Simon J. Gerraty
  331.    *
  332.    *      This is free software.  It comes with NO WARRANTY.
  333. !  *      Permission to use, modify and distribute this source code 
  334.    *      is granted subject to the following conditions.
  335.    *      1/ that that the above copyright notice and this notice 
  336.    *      are preserved in all copies and that due credit be given 
  337. --- 12,113 ----
  338.    *      int sigfillset(sigset_t *mask);
  339.    *      int sigismember(sigset_t *mask, int sig);
  340.    *      int sigpending(sigset_t *set);
  341. !  *      int sigprocmask(int how, sigset_t *set, sigset_t *oset);
  342.    *      int sigsuspend(sigset_t *mask);
  343. +  *      
  344. +  *      SIG_HDLR (*Signal(int sig, SIG_HDLR (*disp)(int)))(int);
  345.    *
  346.    * DESCRIPTION:
  347.    *      This is a fake sigaction implementation.  It uses 
  348. !  *      sigsetmask(2) et al or sigset(2) and friends if 
  349. !  *      available, otherwise it just uses signal(2).  If it 
  350. !  *      thinks sigaction(2) really exists it compiles to "almost" 
  351. !  *      nothing. 
  352. !  *      
  353. !  *      In any case it provides a Signal() function that is 
  354. !  *      implemented in terms of sigaction().
  355. !  *      If not using signal(2) as part of the underlying 
  356. !  *      implementation (USE_SIGNAL or USE_SIGMASK), and 
  357. !  *      NO_SIGNAL is not defined, it also provides a signal() 
  358. !  *      function that calls Signal(). 
  359. !  *
  360. !  *      The need for all this mucking about is the problems 
  361. !  *      caused by mixing various signal handling mechanisms in 
  362. !  *      the one process.  This module allows for a consistent 
  363. !  *      POSIX compliant interface to whatever is actually 
  364. !  *      available. 
  365. !  *      
  366. !  *      sigaction() allows the caller to examine and/or set the 
  367. !  *      action to be associated with a given signal. "act" and 
  368. !  *      "oact" are pointers to 'sigaction structs':
  369. !  *.nf
  370. !  * 
  371. !  *      struct sigaction 
  372. !  *      {
  373. !  *             SIG_HDLR  (*sa_handler)();
  374. !  *             sigset_t  sa_mask;
  375. !  *             int       sa_flags;
  376. !  *      };
  377. !  *.fi
  378. !  * 
  379. !  *      SIG_HDLR is normally 'void' in the POSIX implementation 
  380. !  *      and for most current systems.  On some older UNIX 
  381. !  *      systems, signal handlers do not return 'void', so  
  382. !  *      this implementation keeps 'sa_handler' inline with the 
  383. !  *      hosts normal signal handling conventions.
  384. !  *      'sa_mask' controls which signals will be blocked while 
  385. !  *      the selected signal handler is active.  It is not used 
  386. !  *      in this implementation.
  387. !  *      'sa_flags' controls various semantics such as whether 
  388. !  *      system calls should be automagically restarted 
  389. !  *      (SA_RESTART) etc.  It is not used in this 
  390. !  *      implementation. 
  391. !  *      Either "act" or "oact" may be NULL in which case the 
  392. !  *      appropriate operation is skipped.
  393. !  *      
  394. !  *      sigaddset() adds "sig" to the sigset_t pointed to by "mask".
  395. !  *      
  396. !  *      sigdelset() removes "sig" from the sigset_t pointed to 
  397. !  *      by "mask". 
  398. !  *      
  399. !  *      sigemptyset() makes the sigset_t pointed to by "mask" empty.
  400. !  *      
  401. !  *      sigfillset() makes the sigset_t pointed to by "mask" 
  402. !  *      full ie. match all signals.
  403. !  *      
  404. !  *      sigismember() returns true if "sig" is found in "*mask".
  405. !  *      
  406. !  *      sigpending() is supposed to return "set" loaded with the 
  407. !  *      set of signals that are blocked and pending for the 
  408. !  *      calling process.  It does nothing in this impementation.
  409. !  *      
  410. !  *      sigprocmask() is used to examine and/or change the 
  411. !  *      signal mask for the calling process.  Either "set" or 
  412. !  *      "oset" may be NULL in which case the appropriate 
  413. !  *      operation is skipped.  "how" may be one of SIG_BLOCK, 
  414. !  *      SIG_UNBLOCK or SIG_SETMASK.  If this package is built 
  415. !  *      with USE_SIGNAL, then this routine achieves nothing.
  416. !  *      
  417. !  *      sigsuspend() sets the signal mask to "*mask" and waits 
  418. !  *      for a signal to be delivered after which the previous 
  419. !  *      mask is restored.
  420. !  *      
  421. !  *      
  422.    * RETURN VALUE:
  423.    *      0==success, -1==failure
  424.    *
  425.    * BUGS:
  426.    *      Since we fake most of this, don't expect fancy usage to 
  427.    *      work.
  428. !  *
  429. !  * AUTHOR:
  430. !  *      Simon J. Gerraty <sjg@zen.void.oz.au>
  431. !  */     
  432. ! /* COPYRIGHT:
  433.    *      @(#)Copyright (c) 1992 Simon J. Gerraty
  434.    *
  435.    *      This is free software.  It comes with NO WARRANTY.
  436. !  *      Permission to use, modify and distribute this source code
  437.    *      is granted subject to the following conditions.
  438.    *      1/ that that the above copyright notice and this notice 
  439.    *      are preserved in all copies and that due credit be given 
  440. ***************
  441. *** 60,93 ****
  442.    *
  443.    */
  444.   #ifndef lint
  445. ! static char  *RCSid = "$Id: sigact.c,v 1.5 1992/05/03 08:29:10 sjg Exp $";
  446.   #endif
  447. - /*
  448. -  * $Log: sigact.c,v $
  449. -  * Revision 1.5  1992/05/03  08:29:10  sjg
  450. -  * Update for Patch05
  451. -  *
  452. -  * Revision 1.4  1992/04/29  06:29:13  sjg
  453. -  * avoid use of #pragma
  454. -  *
  455. -  * Revision 1.3  1992/04/26  11:24:43  sjg
  456. -  * USE_SIGSET corrected in sigsuspend().
  457. -  *
  458. -  * Revision 1.2  1992/04/24  15:04:11  sjg
  459. -  * now compiles with cc
  460. -  *
  461. -  * Revision 1.1  1992/04/24  12:03:58  sjg
  462. -  * Initial revision
  463. -  *
  464. -  */
  465.   
  466.   #include <signal.h>
  467.   
  468.   /*
  469.    * some systems have a faulty sigaction() implementation!
  470.    * Allow us to bypass it.
  471.    */
  472. ! #if !defined(SA_NOCLDSTOP) || defined(USE_SIGNAL) || defined(USE_SIGSET) || defined(USE_SIGMASK)
  473.   
  474.   /*
  475.    * if we haven't been told,
  476. --- 121,147 ----
  477.    *
  478.    */
  479.   #ifndef lint
  480. ! static char  *RCSid = "$Id: sigact.c,v 1.10 93/05/08 16:00:06 sjg Exp $";
  481.   #endif
  482.   
  483.   #include <signal.h>
  484.   
  485. + #ifndef __P
  486. + # if defined(__STDC__) || defined(__cplusplus)
  487. + #   define    __P(p)    p
  488. + # else
  489. + #   define    __P(p)    p
  490. + # endif
  491. + #endif
  492.   /*
  493.    * some systems have a faulty sigaction() implementation!
  494.    * Allow us to bypass it.
  495. +  * Or they may have installed sigact.h as signal.h which is why 
  496. +  * we have SA_NOCLDSTOP defined.
  497.    */
  498. ! #if !defined(SA_NOCLDSTOP) || defined(_SIGACT_H) || defined(USE_SIGNAL) || defined(USE_SIGSET) || defined(USE_SIGMASK)
  499.   
  500.   /*
  501.    * if we haven't been told,
  502. ***************
  503. *** 113,126 ****
  504.   
  505.   #include "sigact.h"
  506.   
  507.   
  508.   int
  509.   sigaction(sig, act, oact)
  510.     int sig;
  511.     struct sigaction *act, *oact;
  512.   {
  513. !   void (*oldh)();
  514.   
  515.     if (act)
  516.     {
  517. --- 167,184 ----
  518.   
  519.   #include "sigact.h"
  520.   
  521. ! /*
  522. !  * in case signal() has been mapped to our Signal().
  523. !  */
  524. ! #undef signal
  525.   
  526. +  
  527.   int
  528.   sigaction(sig, act, oact)
  529.     int sig;
  530.     struct sigaction *act, *oact;
  531.   {
  532. !   SIG_HDLR (*oldh)();
  533.   
  534.     if (act)
  535.     {
  536. ***************
  537. *** 139,145 ****
  538.   #else
  539.         oldh = signal(sig, SIG_IGN);
  540.   #endif
  541. !       if (oldh != SIG_IGN)
  542.         {
  543.   #ifdef USE_SIGSET
  544.       (void) sigset(sig, oldh);
  545. --- 197,203 ----
  546.   #else
  547.         oldh = signal(sig, SIG_IGN);
  548.   #endif
  549. !       if (oldh != SIG_IGN && oldh !=  SIG_ERR)
  550.         {
  551.   #ifdef USE_SIGSET
  552.       (void) sigset(sig, oldh);
  553. ***************
  554. *** 156,161 ****
  555. --- 214,220 ----
  556.     return 0;                /* hey we're faking it */
  557.   }
  558.   
  559.   int
  560.   sigaddset(mask, sig)
  561.     sigset_t *mask;
  562. ***************
  563. *** 207,234 ****
  564.   sigpending(set)
  565.     sigset_t *set;
  566.   {
  567. !   return 0;
  568.   }
  569.   
  570.   
  571.   int
  572. ! sigprocmask(how, set, oldset)
  573.     int how;
  574. !   sigset_t *set, *oldset;
  575.   {
  576.   #ifdef USE_SIGSET
  577.     register int i;
  578.   #endif
  579. !   sigset_t sm;
  580.   
  581.   #ifdef USE_SIGMASK
  582. !   sm = sigblock(0);
  583.   #else
  584. !   sm = 0;
  585.   #endif
  586.     
  587. !   if (oldset)
  588. !     *oldset = sm;    /* dangerous ? */
  589.     if (set)
  590.     {
  591.       switch (how)
  592. --- 266,303 ----
  593.   sigpending(set)
  594.     sigset_t *set;
  595.   {
  596. !   return 0;                /* faking it! */
  597.   }
  598.   
  599.   
  600.   int
  601. ! sigprocmask(how, set, oset)
  602.     int how;
  603. !   sigset_t *set, *oset;
  604.   {
  605.   #ifdef USE_SIGSET
  606.     register int i;
  607.   #endif
  608. !   static sigset_t sm;
  609. !   static int once = 0;
  610.   
  611. +   if (!once)
  612. +   {
  613. +     /*
  614. +      * initally we clear sm,
  615. +      * there after, it represents the last
  616. +      * thing we did.
  617. +      */
  618. +     once++;
  619.   #ifdef USE_SIGMASK
  620. !     sm = sigblock(0);
  621.   #else
  622. !     sm = 0;
  623.   #endif
  624. +   }
  625.     
  626. !   if (oset)
  627. !     *oset = sm;
  628.     if (set)
  629.     {
  630.       switch (how)
  631. ***************
  632. *** 271,295 ****
  633.   sigsuspend(mask)
  634.     sigset_t *mask;
  635.   {
  636. ! #ifdef USE_SIGSET
  637. !   int sig = SIGCHLD;            /* our default */
  638. !   
  639.     /*
  640. !    * add as many tests as you think sensible, but
  641. !    * SIGALRM, and SIGCHLD are probably the most
  642. !    * common.
  643.      */
  644. !   if (*mask & sigmask(SIGALRM))
  645. !     sig = SIGALRM;
  646. !   else
  647. !     if (*mask & sigmask(SIGPIPE))
  648. !       sig = SIGPIPE;
  649. !   sigpause(sig);
  650. ! #else
  651. ! # ifdef USE_SIGMASK
  652. !   sigpause(mask);
  653. ! # else
  654. !   pause();
  655.   # endif
  656.   #endif
  657.     return 0;
  658. --- 340,379 ----
  659.   sigsuspend(mask)
  660.     sigset_t *mask;
  661.   {
  662. ! #ifdef USE_SIGMASK
  663. !   sigpause(mask);
  664. ! #else
  665. !   register int i;
  666. ! # ifdef USE_SIGSET
  667. !   for (i = 1; i < NSIG; i++)
  668. !   {
  669. !     if (*mask & sigmask(i))
  670. !     {
  671. !       /* not the same sigpause() as above! */
  672. !       sigpause(i);            
  673. !       break;
  674. !     }
  675. !   }
  676. ! # else /* signal(2) only */
  677. !   SIG_HDLR (*oldh)();
  678.     /*
  679. !    * make sure that signals in mask will not
  680. !    * be ignored.
  681.      */
  682. !   for (i = 1; i < NSIG; i++)
  683. !   {
  684. !     if (*mask & sigmask(i))
  685. !     {
  686. !       if ((oldh = signal(i, SIG_DFL)) !=  SIG_ERR &&
  687. !       oldh != SIG_IGN &&
  688. !       oldh != SIG_DFL)
  689. !     (void) signal(i, oldh);        /* restore handler */
  690. !     }
  691. !   }
  692. !   pause();                /* wait for a signal */
  693.   # endif
  694.   #endif
  695.     return 0;
  696. ***************
  697. *** 297,302 ****
  698. --- 381,423 ----
  699.   
  700.   #endif /* ! SA_NOCLDSTOP */
  701.   
  702. + #if !defined(SIG_HDLR)
  703. + # define SIG_HDLR void
  704. + #endif
  705. + #if !defined(SIG_ERR)
  706. + # define SIG_ERR    (SIG_HDLR (*)())-1
  707. + #endif
  708. + /*
  709. +  * an implementation of signal() using sigaction().
  710. +  */
  711. + SIG_HDLR (*Signal(sig, handler)) __P((int))
  712. +   int sig;
  713. +   SIG_HDLR (*handler) __P((int));
  714. + {
  715. +   struct sigaction act, oact;
  716. +   act.sa_handler = handler;
  717. +   sigemptyset(&act.sa_mask);
  718. +   act.sa_flags = 0;
  719. +   if (sigaction(sig, &act, &oact) < 0)
  720. +     return (SIG_ERR);
  721. +   return (oact.sa_handler);
  722. + }
  723. + #if !defined(USE_SIGNAL) && !defined(USE_SIGMASK) && !defined(NO_SIGNAL)
  724. + /*
  725. +  * ensure we avoid signal mayhem
  726. +  */
  727. + SIG_HDLR (*signal(sig, handler)) __P((int))
  728. +   int sig;
  729. +   SIG_HDLR (*handler) __P((int));
  730. + {
  731. +   return (Signal(sig, handler));
  732. + }
  733. + #endif
  734.   
  735.   /* This lot (for GNU-Emacs) goes at the end of the file. */
  736.   /* 
  737. *** sh/syn.c.old    Mon Aug 10 22:02:56 1992
  738. --- sh/syn.c    Thu May  6 07:16:52 1993
  739. ***************
  740. *** 3,9 ****
  741.    */
  742.   
  743.   #ifndef lint
  744. ! static char *RCSid = "$Id: syn.c,v 1.3 1992/08/10 12:03:10 sjg Exp $";
  745.   #endif
  746.   
  747.   #include "stdh.h"
  748. --- 3,9 ----
  749.    */
  750.   
  751.   #ifndef lint
  752. ! static char *RCSid = "$Id: syn.c,v 1.4 93/05/05 21:17:06 sjg Exp $";
  753.   #endif
  754.   
  755.   #include "stdh.h"
  756. *** sh/table.c.old    Sat Apr 25 18:33:14 1992
  757. --- sh/table.c    Thu May  6 07:16:54 1993
  758. ***************
  759. *** 1,5 ****
  760.   #ifndef lint
  761. ! static char *RCSid = "$Id: table.c,v 1.2 1992/04/25 08:33:28 sjg Exp $";
  762.   #endif
  763.   
  764.   /*
  765. --- 1,5 ----
  766.   #ifndef lint
  767. ! static char *RCSid = "$Id: table.c,v 1.3 93/05/05 21:17:08 sjg Exp $";
  768.   #endif
  769.   
  770.   /*
  771. *** sh/table.h.old    Thu Aug 13 00:15:36 1992
  772. --- sh/table.h    Thu May  6 07:16:56 1993
  773. ***************
  774. *** 1,4 ****
  775. ! /* $Id: table.h,v 1.4 1992/08/12 14:15:50 sjg Exp $ */
  776.   
  777.   /*
  778.    * generic hashed associative table for commands and variables.
  779. --- 1,4 ----
  780. ! /* $Id: table.h,v 1.5 93/05/05 21:17:10 sjg Exp $ */
  781.   
  782.   /*
  783.    * generic hashed associative table for commands and variables.
  784. *** sh/trap.c.old    Mon Aug 10 22:03:01 1992
  785. --- sh/trap.c    Thu May  6 07:16:58 1993
  786. ***************
  787. *** 3,9 ****
  788.    */
  789.   
  790.   #ifndef lint
  791. ! static char *RCSid = "$Id: trap.c,v 1.3 1992/08/10 12:03:15 sjg Exp $";
  792.   #endif
  793.   
  794.   #include "stdh.h"
  795. --- 3,9 ----
  796.    */
  797.   
  798.   #ifndef lint
  799. ! static char *RCSid = "$Id: trap.c,v 1.4 93/05/05 21:17:12 sjg Exp $";
  800.   #endif
  801.   
  802.   #include "stdh.h"
  803. *** sh/tree.c.old    Sat Apr 25 18:33:14 1992
  804. --- sh/tree.c    Thu May  6 07:17:00 1993
  805. ***************
  806. *** 3,9 ****
  807.    */
  808.   
  809.   #ifndef lint
  810. ! static char *RCSid = "$Id: tree.c,v 1.2 1992/04/25 08:33:28 sjg Exp $";
  811.   #endif
  812.   
  813.   #include "stdh.h"
  814. --- 3,9 ----
  815.    */
  816.   
  817.   #ifndef lint
  818. ! static char *RCSid = "$Id: tree.c,v 1.3 93/05/05 21:17:14 sjg Exp $";
  819.   #endif
  820.   
  821.   #include "stdh.h"
  822. *** sh/tree.h.old    Mon Aug 10 22:03:04 1992
  823. --- sh/tree.h    Thu May  6 07:17:02 1993
  824. ***************
  825. *** 2,8 ****
  826.    * command trees for compile/execute
  827.    */
  828.   
  829. ! /* $Id: tree.h,v 1.3 1992/08/10 12:03:18 sjg Exp $ */
  830.   
  831.   #define    NOBLOCK    ((struct op *)NULL)
  832.   #define    NOWORD    ((char *)NULL)
  833. --- 2,8 ----
  834.    * command trees for compile/execute
  835.    */
  836.   
  837. ! /* $Id: tree.h,v 1.4 93/05/05 21:17:16 sjg Exp $ */
  838.   
  839.   #define    NOBLOCK    ((struct op *)NULL)
  840.   #define    NOWORD    ((char *)NULL)
  841. *** sh/tty.h.old    Mon Aug 10 22:03:09 1992
  842. --- sh/tty.h    Sun May  9 01:59:54 1993
  843. ***************
  844. *** 6,37 ****
  845.       last edit:    30-Jul-1987    D A Gwyn
  846.   */
  847.   
  848. - #if _BSD_SYSV            /* BRL UNIX System V emulation */
  849. - #include <termio.h>    /* includes <sys/_ioctl.h> */
  850. - #ifndef NTTYDISC
  851. - #define    TIOCGETD    _IOR( 't', 0, int )
  852. - #define    TIOCSETD    _IOW( 't', 1, int )
  853. - #define    NTTYDISC    2
  854. - #endif
  855. - #ifndef TIOCSTI
  856. - #define    TIOCSTI        _IOW( 't', 114, char )
  857. - #endif
  858. - #ifndef TIOCSPGRP
  859. - #define    TIOCSPGRP    _IOW( 't', 118, int )
  860. - #endif
  861. - #else    /* !_BSD_SYSV */
  862. - #if _BSD
  863. - #ifdef _MINIX
  864. - #include <sgtty.h>
  865. - #define TIOCSETN    TIOCSETP
  866. - #else
  867. - #include <sys/ioctl.h>
  868. - #endif
  869. - #else
  870.   #ifdef    _POSIX_TERM
  871. ! #include <termios.h>
  872.   #else
  873. ! #include <termio.h>
  874. ! #endif
  875. ! #endif
  876. ! #endif    /* _BSD_SYSV */
  877. --- 6,37 ----
  878.       last edit:    30-Jul-1987    D A Gwyn
  879.   */
  880.   
  881.   #ifdef    _POSIX_TERM
  882. ! # include <termios.h>
  883.   #else
  884. ! # if _BSD_SYSV            /* BRL UNIX System V emulation */
  885. ! #   include <termio.h>    /* includes <sys/_ioctl.h> */
  886. ! #   ifndef NTTYDISC
  887. ! #     define    TIOCGETD    _IOR( 't', 0, int )
  888. ! #     define    TIOCSETD    _IOW( 't', 1, int )
  889. ! #     define    NTTYDISC    2
  890. ! #   endif
  891. ! #   ifndef TIOCSTI
  892. ! #     define    TIOCSTI        _IOW( 't', 114, char )
  893. ! #   endif
  894. ! #   ifndef TIOCSPGRP
  895. ! #     define    TIOCSPGRP    _IOW( 't', 118, int )
  896. ! #   endif
  897. ! # else    /* !_BSD_SYSV */
  898. ! #   if _BSD
  899. ! #     ifdef _MINIX
  900. ! #       include <sgtty.h>
  901. ! #       define TIOCSETN    TIOCSETP
  902. ! #     else
  903. ! #       include <sys/ioctl.h>
  904. ! #     endif
  905. ! #   else
  906. ! #     include <termio.h>
  907. ! #   endif
  908. ! # endif    /* _BSD_SYSV */
  909. ! #endif /* _POSIX_TERM */
  910. *** sh/do_ulimit.c.old    Mon Aug 10 22:02:09 1992
  911. --- sh/do_ulimit.c    Thu May  6 07:16:07 1993
  912. ***************
  913. *** 13,19 ****
  914.   */
  915.   
  916.   #ifndef lint
  917. ! static char *RCSid = "$Id: do_ulimit.c,v 1.3 1992/08/10 12:02:23 sjg Exp $";
  918.   #endif
  919.   
  920.   #ifdef _BSDI
  921. --- 13,19 ----
  922.   */
  923.   
  924.   #ifndef lint
  925. ! static char *RCSid = "$Id: do_ulimit.c,v 1.4 93/05/05 21:16:21 sjg Exp $";
  926.   #endif
  927.   
  928.   #ifdef _BSDI
  929. *** sh/var.c.old    Mon Aug 10 22:03:11 1992
  930. --- sh/var.c    Thu May  6 07:17:03 1993
  931. ***************
  932. *** 1,5 ****
  933.   #ifndef lint
  934. ! static char *RCSid = "$Id: var.c,v 1.3 1992/08/10 12:03:25 sjg Exp $";
  935.   #endif
  936.   
  937.   #include "stdh.h"
  938. --- 1,5 ----
  939.   #ifndef lint
  940. ! static char *RCSid = "$Id: var.c,v 1.4 93/05/05 21:17:17 sjg Exp $";
  941.   #endif
  942.   
  943.   #include "stdh.h"
  944. *** sh/version.c.old    Sun Dec  6 00:15:41 1992
  945. --- sh/version.c    Thu May  6 07:17:05 1993
  946. ***************
  947. *** 3,9 ****
  948.    */
  949.   
  950.   #ifndef lint
  951. ! static char *RCSid = "$Id: version.c,v 1.7 1992/12/05 13:15:55 sjg Exp $";
  952.   #endif
  953.   
  954.   #include "stdh.h"
  955. --- 3,9 ----
  956.    */
  957.   
  958.   #ifndef lint
  959. ! static char *RCSid = "$Id: version.c,v 1.8 93/05/05 21:17:19 sjg Exp $";
  960.   #endif
  961.   
  962.   #include "stdh.h"
  963. *** sh/vi.c.old    Mon Aug 10 22:03:17 1992
  964. --- sh/vi.c    Tue Jun  1 22:10:57 1993
  965. ***************
  966. *** 9,15 ****
  967.   #ifdef VI
  968.   
  969.   #ifndef lint
  970. ! static char *RCSid = "$Id: vi.c,v 1.3 1992/08/10 12:03:31 sjg Exp $";
  971.   #endif
  972.   
  973.   #include "stdh.h"
  974. --- 9,15 ----
  975.   #ifdef VI
  976.   
  977.   #ifndef lint
  978. ! static char *RCSid = "$Id: vi.c,v 1.4 93/05/05 21:17:22 sjg Exp $";
  979.   #endif
  980.   
  981.   #include "stdh.h"
  982. *** std/Makefile.old    Sat Apr 25 18:18:12 1992
  983. --- std/Makefile    Thu May  6 07:17:21 1993
  984. ***************
  985. *** 1,7 ****
  986.   #
  987.   # Makefile for the compatibility libraries
  988.   #
  989. ! # $Id: Makefile,v 1.2 1992/04/25 08:18:26 sjg Exp $
  990.   #
  991.   
  992.   SHELL = /bin/sh
  993. --- 1,7 ----
  994.   #
  995.   # Makefile for the compatibility libraries
  996.   #
  997. ! # $Id: Makefile,v 1.3 93/05/05 21:17:35 sjg Exp $
  998.   #
  999.   
  1000.   SHELL = /bin/sh
  1001. *** std/posix/Makefile.old    Sat Apr 25 18:22:00 1992
  1002. --- std/posix/Makefile    Thu May  6 07:17:24 1993
  1003. ***************
  1004. *** 1,5 ****
  1005.   # POSIX P1003.1 compatability
  1006. ! # $Id: Makefile,v 1.2 1992/04/25 08:22:14 sjg Exp $
  1007.   
  1008.   SHELL = /bin/sh
  1009.   MAKE  = make
  1010. --- 1,5 ----
  1011.   # POSIX P1003.1 compatability
  1012. ! # $Id: Makefile,v 1.3 93/05/05 21:17:38 sjg Exp $
  1013.   
  1014.   SHELL = /bin/sh
  1015.   MAKE  = make
  1016. *** std/posix/dirent.C.old    Sat Apr 25 18:22:00 1992
  1017. --- std/posix/dirent.C    Thu May  6 07:17:26 1993
  1018. ***************
  1019. *** 3,9 ****
  1020.    * completly untested. not designed to be efficient.
  1021.    * missing telldir and seekdir.
  1022.    */
  1023. ! /* $Id: dirent.C,v 1.2 1992/04/25 08:22:14 sjg Exp $ */
  1024.   
  1025.   #include <sys/types.h>
  1026.   #include <dirent.h>
  1027. --- 3,9 ----
  1028.    * completly untested. not designed to be efficient.
  1029.    * missing telldir and seekdir.
  1030.    */
  1031. ! /* $Id: dirent.C,v 1.3 93/05/05 21:17:40 sjg Exp $ */
  1032.   
  1033.   #include <sys/types.h>
  1034.   #include <dirent.h>
  1035. *** std/posix/dirent.H.old    Sat Apr 25 18:22:00 1992
  1036. --- std/posix/dirent.H    Thu May  6 07:17:28 1993
  1037. ***************
  1038. *** 6,12 ****
  1039.   
  1040.       prerequisite:    <sys/types.h>
  1041.   */
  1042. ! /* $Id: dirent.H,v 1.2 1992/04/25 08:22:14 sjg Exp $ */
  1043.   
  1044.   #define    MAXNAMLEN    16        /* maximum filename length */
  1045.   
  1046. --- 6,12 ----
  1047.   
  1048.       prerequisite:    <sys/types.h>
  1049.   */
  1050. ! /* $Id: dirent.H,v 1.3 93/05/05 21:17:42 sjg Exp $ */
  1051.   
  1052.   #define    MAXNAMLEN    16        /* maximum filename length */
  1053.   
  1054. *** std/posix/dup2.c.old    Sat Apr 25 18:22:00 1992
  1055. --- std/posix/dup2.c    Thu May  6 07:17:29 1993
  1056. ***************
  1057. *** 1,7 ****
  1058.   /*
  1059.    * Cheap imitation of BSD dup2()
  1060.    */
  1061. ! /* $Id: dup2.c,v 1.2 1992/04/25 08:22:14 sjg Exp $ */
  1062.   
  1063.   #include <fcntl.h>
  1064.   
  1065. --- 1,7 ----
  1066.   /*
  1067.    * Cheap imitation of BSD dup2()
  1068.    */
  1069. ! /* $Id: dup2.c,v 1.3 93/05/05 21:17:43 sjg Exp $ */
  1070.   
  1071.   #include <fcntl.h>
  1072.   
  1073. *** std/posix/fcntl.c.old    Sat Apr 25 18:22:00 1992
  1074. --- std/posix/fcntl.c    Thu May  6 07:17:31 1993
  1075. ***************
  1076. *** 1,5 ****
  1077.   /* fcntl emulation */
  1078. ! /* $Id: fcntl.c,v 1.2 1992/04/25 08:22:14 sjg Exp $ */
  1079.   
  1080.   #include <errno.h>
  1081.   #include <sys/types.h>
  1082. --- 1,5 ----
  1083.   /* fcntl emulation */
  1084. ! /* $Id: fcntl.c,v 1.3 93/05/05 21:17:45 sjg Exp $ */
  1085.   
  1086.   #include <errno.h>
  1087.   #include <sys/types.h>
  1088. *** std/posix/fcntl.h.old    Sat Apr 25 18:22:00 1992
  1089. --- std/posix/fcntl.h    Thu May  6 07:17:33 1993
  1090. ***************
  1091. *** 1,7 ****
  1092.   /* P1003.1 fcntl/open definitions */
  1093.   /* Based on a version by Terrence W. Holm */
  1094.   /*  for fcntl(2)  */
  1095. ! /* $Id: fcntl.h,v 1.2 1992/04/25 08:22:14 sjg Exp $ */
  1096.   
  1097.   #define    F_DUPFD        0
  1098.   #define    F_GETFD        1
  1099. --- 1,7 ----
  1100.   /* P1003.1 fcntl/open definitions */
  1101.   /* Based on a version by Terrence W. Holm */
  1102.   /*  for fcntl(2)  */
  1103. ! /* $Id: fcntl.h,v 1.3 93/05/05 21:17:47 sjg Exp $ */
  1104.   
  1105.   #define    F_DUPFD        0
  1106.   #define    F_GETFD        1
  1107. *** std/posix/io.h.old    Sat Apr 25 18:22:00 1992
  1108. --- std/posix/io.h    Thu May  6 07:17:34 1993
  1109. ***************
  1110. *** 1,5 ****
  1111.   /* POSIX IO functions */
  1112. ! /* $Id: io.h,v 1.2 1992/04/25 08:22:14 sjg Exp $ */
  1113.   
  1114.   /*
  1115.    * the incomplete type "struct stat"
  1116. --- 1,5 ----
  1117.   /* POSIX IO functions */
  1118. ! /* $Id: io.h,v 1.3 93/05/05 21:17:48 sjg Exp $ */
  1119.   
  1120.   /*
  1121.    * the incomplete type "struct stat"
  1122. *** std/posix/time.h.old    Sat Apr 25 18:22:00 1992
  1123. --- std/posix/time.h    Thu May  6 07:17:36 1993
  1124. ***************
  1125. *** 2,8 ****
  1126.    * Replacement for BSD <sys/time.h>
  1127.    * because Ultrix screws it up.
  1128.    */
  1129. ! /* $Id: time.h,v 1.2 1992/04/25 08:22:14 sjg Exp $ */
  1130.   
  1131.   struct timeval {
  1132.       long tv_sec;        /* time_t */
  1133. --- 2,8 ----
  1134.    * Replacement for BSD <sys/time.h>
  1135.    * because Ultrix screws it up.
  1136.    */
  1137. ! /* $Id: time.h,v 1.3 93/05/05 21:17:50 sjg Exp $ */
  1138.   
  1139.   struct timeval {
  1140.       long tv_sec;        /* time_t */
  1141. *** std/posix/times.c.old    Sat Apr 25 18:22:00 1992
  1142. --- std/posix/times.c    Thu May  6 07:17:38 1993
  1143. ***************
  1144. *** 1,5 ****
  1145.   /* P1003.1 times emulation */
  1146. ! /* $Id: times.c,v 1.2 1992/04/25 08:22:14 sjg Exp $ */
  1147.   
  1148.   #include <sys/times.h>
  1149.   
  1150. --- 1,5 ----
  1151.   /* P1003.1 times emulation */
  1152. ! /* $Id: times.c,v 1.3 93/05/05 21:17:52 sjg Exp $ */
  1153.   
  1154.   #include <sys/times.h>
  1155.   
  1156. *** std/posix/times.h.old    Sat Apr 25 18:22:00 1992
  1157. --- std/posix/times.h    Thu May  6 07:17:39 1993
  1158. ***************
  1159. *** 1,7 ****
  1160.   /*
  1161.    * sys/times.h: POSIX times()
  1162.    */
  1163. ! /* $Id: times.h,v 1.2 1992/04/25 08:22:14 sjg Exp $ */
  1164.   
  1165.   #if ! _TIMES_H
  1166.   #define    _TIMES_H 1
  1167. --- 1,7 ----
  1168.   /*
  1169.    * sys/times.h: POSIX times()
  1170.    */
  1171. ! /* $Id: times.h,v 1.3 93/05/05 21:17:53 sjg Exp $ */
  1172.   
  1173.   #if ! _TIMES_H
  1174.   #define    _TIMES_H 1
  1175. *** std/posix/unistd.c.old    Sat Apr 25 18:22:00 1992
  1176. --- std/posix/unistd.c    Thu May  6 07:17:41 1993
  1177. ***************
  1178. *** 1,7 ****
  1179.   /* misc. POSIX emulation */
  1180.   
  1181.   #ifndef lint
  1182. ! static char *RCSid = "$Id: unistd.c,v 1.2 1992/04/25 08:22:14 sjg Exp $";
  1183.   #endif
  1184.   
  1185.   #include <string.h>
  1186. --- 1,7 ----
  1187.   /* misc. POSIX emulation */
  1188.   
  1189.   #ifndef lint
  1190. ! static char *RCSid = "$Id: unistd.c,v 1.3 93/05/05 21:17:55 sjg Exp $";
  1191.   #endif
  1192.   
  1193.   #include <string.h>
  1194. *** std/posix/unistd.h.old    Sat Apr 25 18:22:00 1992
  1195. --- std/posix/unistd.h    Thu May  6 07:17:44 1993
  1196. ***************
  1197. *** 1,6 ****
  1198.   /* unistd.h: misc. P1003.1 definitions */
  1199.   /* Based on a version by Terrence W. Holm */
  1200. ! /* $Id: unistd.h,v 1.2 1992/04/25 08:22:14 sjg Exp $ */
  1201.   
  1202.   #if ! _UNISTD_H
  1203.   #define    _UNISTD_H 1
  1204. --- 1,6 ----
  1205.   /* unistd.h: misc. P1003.1 definitions */
  1206.   /* Based on a version by Terrence W. Holm */
  1207. ! /* $Id: unistd.h,v 1.3 93/05/05 21:17:58 sjg Exp $ */
  1208.   
  1209.   #if ! _UNISTD_H
  1210.   #define    _UNISTD_H 1
  1211. *** std/posix/wait.h.old    Sat Apr 25 18:22:00 1992
  1212. --- std/posix/wait.h    Thu May  6 07:17:46 1993
  1213. ***************
  1214. *** 1,7 ****
  1215.   /*
  1216.    * POSIX <sys/wait.h>
  1217.    */
  1218. ! /* $Id: wait.h,v 1.2 1992/04/25 08:22:14 sjg Exp $ */
  1219.   #if __STDC__
  1220.   #define    ARGS(args)    args
  1221.   #else
  1222. --- 1,7 ----
  1223.   /*
  1224.    * POSIX <sys/wait.h>
  1225.    */
  1226. ! /* $Id: wait.h,v 1.3 93/05/05 21:18:00 sjg Exp $ */
  1227.   #if __STDC__
  1228.   #define    ARGS(args)    args
  1229.   #else
  1230. *** std/stdc/Makefile.old    Sun May  3 18:29:54 1992
  1231. --- std/stdc/Makefile    Thu May  6 07:17:52 1993
  1232. ***************
  1233. *** 1,5 ****
  1234.   # Standard C (ANSI) compatabilaty
  1235. ! # $Id: Makefile,v 1.3 1992/05/03 08:30:08 sjg Exp $
  1236.   
  1237.   # edit this makefile such that only the functions that
  1238.   # your systems doesn't have are provided.
  1239. --- 1,5 ----
  1240.   # Standard C (ANSI) compatabilaty
  1241. ! # $Id: Makefile,v 1.4 93/05/05 21:18:06 sjg Exp $
  1242.   
  1243.   # edit this makefile such that only the functions that
  1244.   # your systems doesn't have are provided.
  1245. *** std/stdc/fprintf.c.old    Tue May 12 19:30:44 1992
  1246. --- std/stdc/fprintf.c    Thu May  6 07:17:53 1993
  1247. ***************
  1248. *** 2,8 ****
  1249.    * printf and fprintf
  1250.    */
  1251.   
  1252. ! /* $Id: fprintf.c,v 1.3 1992/05/12 09:30:58 sjg Exp $ */
  1253.   
  1254.   #ifdef __STDC__
  1255.   #include <stdarg.h>
  1256. --- 2,8 ----
  1257.    * printf and fprintf
  1258.    */
  1259.   
  1260. ! /* $Id: fprintf.c,v 1.4 93/05/05 21:18:07 sjg Exp $ */
  1261.   
  1262.   #ifdef __STDC__
  1263.   #include <stdarg.h>
  1264. *** std/stdc/memchr.c.old    Sat Apr 25 18:19:12 1992
  1265. --- std/stdc/memchr.c    Thu May  6 07:17:55 1993
  1266. ***************
  1267. *** 1,4 ****
  1268. ! /* $Id: memchr.c,v 1.2 1992/04/25 08:19:26 sjg Exp $ */
  1269.   
  1270.   #include <string.h>
  1271.   
  1272. --- 1,4 ----
  1273. ! /* $Id: memchr.c,v 1.3 93/05/05 21:18:09 sjg Exp $ */
  1274.   
  1275.   #include <string.h>
  1276.   
  1277. *** std/stdc/memcmp.c.old    Sat Apr 25 18:19:12 1992
  1278. --- std/stdc/memcmp.c    Thu May  6 07:17:57 1993
  1279. ***************
  1280. *** 1,4 ****
  1281. ! /* $Id: memcmp.c,v 1.2 1992/04/25 08:19:26 sjg Exp $ */
  1282.   
  1283.   #include <string.h>
  1284.   
  1285. --- 1,4 ----
  1286. ! /* $Id: memcmp.c,v 1.3 93/05/05 21:18:11 sjg Exp $ */
  1287.   
  1288.   #include <string.h>
  1289.   
  1290. *** std/stdc/memcpy.c.old    Sat Apr 25 18:19:12 1992
  1291. --- std/stdc/memcpy.c    Thu May  6 07:17:59 1993
  1292. ***************
  1293. *** 1,4 ****
  1294. ! /* $Id: memcpy.c,v 1.2 1992/04/25 08:19:26 sjg Exp $ */
  1295.   
  1296.   #include <string.h>
  1297.   
  1298. --- 1,4 ----
  1299. ! /* $Id: memcpy.c,v 1.3 93/05/05 21:18:13 sjg Exp $ */
  1300.   
  1301.   #include <string.h>
  1302.   
  1303. *** std/stdc/memmove.c.old    Sat Apr 25 18:19:12 1992
  1304. --- std/stdc/memmove.c    Thu May  6 07:18:00 1993
  1305. ***************
  1306. *** 1,4 ****
  1307. ! /* $Id: memmove.c,v 1.2 1992/04/25 08:19:26 sjg Exp $ */
  1308.   
  1309.   #include "stdh.h"
  1310.   
  1311. --- 1,4 ----
  1312. ! /* $Id: memmove.c,v 1.3 93/05/05 21:18:14 sjg Exp $ */
  1313.   
  1314.   #include "stdh.h"
  1315.   
  1316. *** std/stdc/memset.c.old    Sat Apr 25 18:19:12 1992
  1317. --- std/stdc/memset.c    Thu May  6 07:18:02 1993
  1318. ***************
  1319. *** 1,4 ****
  1320. ! /* $Id: memset.c,v 1.2 1992/04/25 08:19:26 sjg Exp $ */
  1321.   
  1322.   #include <string.h>
  1323.   
  1324. --- 1,4 ----
  1325. ! /* $Id: memset.c,v 1.3 93/05/05 21:18:16 sjg Exp $ */
  1326.   
  1327.   #include <string.h>
  1328.   
  1329. *** std/stdc/setvbuf.c.old    Sat Apr 25 18:19:12 1992
  1330. --- std/stdc/setvbuf.c    Thu May  6 07:18:04 1993
  1331. ***************
  1332. *** 6,12 ****
  1333.    * in the shell is to avoid 4/8K buffers on BSD like systems.
  1334.    */
  1335.   
  1336. ! /* $Id: setvbuf.c,v 1.2 1992/04/25 08:19:26 sjg Exp $ */
  1337.   
  1338.   #include <stdlib.h>
  1339.   #include <stdio.h>
  1340. --- 6,12 ----
  1341.    * in the shell is to avoid 4/8K buffers on BSD like systems.
  1342.    */
  1343.   
  1344. ! /* $Id: setvbuf.c,v 1.3 93/05/05 21:18:18 sjg Exp $ */
  1345.   
  1346.   #include <stdlib.h>
  1347.   #include <stdio.h>
  1348. *** std/stdc/sprintf.c.old    Tue May 12 19:30:47 1992
  1349. --- std/stdc/sprintf.c    Thu May  6 07:18:06 1993
  1350. ***************
  1351. *** 2,8 ****
  1352.    * sprintf and vsprintf
  1353.    */
  1354.   
  1355. ! /* $Id: sprintf.c,v 1.3 1992/05/12 09:31:01 sjg Exp $ */
  1356.   
  1357.   #ifdef __STDC__
  1358.   #include <stdarg.h>
  1359. --- 2,8 ----
  1360.    * sprintf and vsprintf
  1361.    */
  1362.   
  1363. ! /* $Id: sprintf.c,v 1.4 93/05/05 21:18:20 sjg Exp $ */
  1364.   
  1365.   #ifdef __STDC__
  1366.   #include <stdarg.h>
  1367. *** std/stdc/stdarg.h.old    Sat Apr 25 18:19:12 1992
  1368. --- std/stdc/stdarg.h    Thu May  6 07:18:07 1993
  1369. ***************
  1370. *** 1,4 ****
  1371. ! /* $Id: stdarg.h,v 1.2 1992/04/25 08:19:26 sjg Exp $ */
  1372.   /* DON'T USE THIS IF YOUR COMPILER HAS ITS OWN!!! */
  1373.   
  1374.   #ifndef _STDARG_H
  1375. --- 1,4 ----
  1376. ! /* $Id: stdarg.h,v 1.3 93/05/05 21:18:21 sjg Exp $ */
  1377.   /* DON'T USE THIS IF YOUR COMPILER HAS ITS OWN!!! */
  1378.   
  1379.   #ifndef _STDARG_H
  1380. *** std/stdc/stddef.h.old    Sat Apr 25 18:19:12 1992
  1381. --- std/stdc/stddef.h    Thu May  6 07:18:09 1993
  1382. ***************
  1383. *** 1,6 ****
  1384.   /* ANSI common definitions */
  1385.   
  1386. ! /* $Id: stddef.h,v 1.2 1992/04/25 08:19:26 sjg Exp $ */
  1387.   
  1388.   #ifndef NULL
  1389.   #if __STDC__
  1390. --- 1,6 ----
  1391.   /* ANSI common definitions */
  1392.   
  1393. ! /* $Id: stddef.h,v 1.3 93/05/05 21:18:23 sjg Exp $ */
  1394.   
  1395.   #ifndef NULL
  1396.   #if __STDC__
  1397. *** std/stdc/stdio.c.old    Sat Apr 25 18:19:12 1992
  1398. --- std/stdc/stdio.c    Thu May  6 07:18:11 1993
  1399. ***************
  1400. *** 2,8 ****
  1401.    * Emulation of misc. ANSI C stdio functions
  1402.    */
  1403.   
  1404. ! /* $Id: stdio.c,v 1.2 1992/04/25 08:19:26 sjg Exp $ */
  1405.   
  1406.   #include <stdio.h>
  1407.   
  1408. --- 2,8 ----
  1409.    * Emulation of misc. ANSI C stdio functions
  1410.    */
  1411.   
  1412. ! /* $Id: stdio.c,v 1.3 93/05/05 21:18:25 sjg Exp $ */
  1413.   
  1414.   #include <stdio.h>
  1415.   
  1416. *** std/stdc/stdio.h_std.old    Sat May  2 23:29:04 1992
  1417. --- std/stdc/stdio.h_std    Thu May  6 07:18:14 1993
  1418. ***************
  1419. *** 5,11 ****
  1420.    * todo: needs L_* constants.
  1421.    */
  1422.   
  1423. ! /* $Id: stdio.h_std,v 1.1 1992/05/02 13:29:18 sjg Exp $ */
  1424.   
  1425.   #if ! _STDIO_H
  1426.   #define    _STDIO_H 1
  1427. --- 5,11 ----
  1428.    * todo: needs L_* constants.
  1429.    */
  1430.   
  1431. ! /* $Id: stdio.h_std,v 1.2 93/05/05 21:18:28 sjg Exp $ */
  1432.   
  1433.   #if ! _STDIO_H
  1434.   #define    _STDIO_H 1
  1435. *** std/stdc/stdlib.h.old    Sat Apr 25 18:19:12 1992
  1436. --- std/stdc/stdlib.h    Thu May  6 07:18:15 1993
  1437. ***************
  1438. *** 1,6 ****
  1439.   /* ANSI utility functions */
  1440.   
  1441. ! /* $Id: stdlib.h,v 1.2 1992/04/25 08:19:26 sjg Exp $ */
  1442.   
  1443.   #if ! _STDLIB_H
  1444.   #define    _STDLIB_H 1
  1445. --- 1,6 ----
  1446.   /* ANSI utility functions */
  1447.   
  1448. ! /* $Id: stdlib.h,v 1.3 93/05/05 21:18:29 sjg Exp $ */
  1449.   
  1450.   #if ! _STDLIB_H
  1451.   #define    _STDLIB_H 1
  1452. *** std/stdc/strcat.c.old    Sat Apr 25 18:19:12 1992
  1453. --- std/stdc/strcat.c    Thu May  6 07:18:17 1993
  1454. ***************
  1455. *** 1,5 ****
  1456.   #include <string.h>
  1457. ! /* $Id: strcat.c,v 1.2 1992/04/25 08:19:26 sjg Exp $ */
  1458.   
  1459.   /*
  1460.    * strcat - append string src to dst
  1461. --- 1,5 ----
  1462.   #include <string.h>
  1463. ! /* $Id: strcat.c,v 1.3 93/05/05 21:18:31 sjg Exp $ */
  1464.   
  1465.   /*
  1466.    * strcat - append string src to dst
  1467. *** std/stdc/strchr.c.old    Sat Apr 25 18:19:12 1992
  1468. --- std/stdc/strchr.c    Thu May  6 07:18:19 1993
  1469. ***************
  1470. *** 1,5 ****
  1471.   #include <string.h>
  1472. ! /* $Id: strchr.c,v 1.2 1992/04/25 08:19:26 sjg Exp $ */
  1473.   
  1474.   /*
  1475.    * strchr - find first occurrence of a character in a string
  1476. --- 1,5 ----
  1477.   #include <string.h>
  1478. ! /* $Id: strchr.c,v 1.3 93/05/05 21:18:33 sjg Exp $ */
  1479.   
  1480.   /*
  1481.    * strchr - find first occurrence of a character in a string
  1482. *** std/stdc/strcmp.c.old    Sat Apr 25 18:19:12 1992
  1483. --- std/stdc/strcmp.c    Thu May  6 07:18:21 1993
  1484. ***************
  1485. *** 1,5 ****
  1486.   #include <string.h>
  1487. ! /* $Id: strcmp.c,v 1.2 1992/04/25 08:19:26 sjg Exp $ */
  1488.   
  1489.   /* Modified by Eric Gisin */
  1490.   
  1491. --- 1,5 ----
  1492.   #include <string.h>
  1493. ! /* $Id: strcmp.c,v 1.3 93/05/05 21:18:35 sjg Exp $ */
  1494.   
  1495.   /* Modified by Eric Gisin */
  1496.   
  1497. *** std/stdc/strcpy.c.old    Sat Apr 25 18:19:12 1992
  1498. --- std/stdc/strcpy.c    Thu May  6 07:18:22 1993
  1499. ***************
  1500. *** 1,5 ****
  1501.   #include <string.h>
  1502. ! /* $Id: strcpy.c,v 1.2 1992/04/25 08:19:26 sjg Exp $ */
  1503.   
  1504.   /*
  1505.    * strcpy - copy string src to dst
  1506. --- 1,5 ----
  1507.   #include <string.h>
  1508. ! /* $Id: strcpy.c,v 1.3 93/05/05 21:18:36 sjg Exp $ */
  1509.   
  1510.   /*
  1511.    * strcpy - copy string src to dst
  1512. *** std/stdc/strcspn.c.old    Sat Apr 25 18:19:12 1992
  1513. --- std/stdc/strcspn.c    Thu May  6 07:18:24 1993
  1514. ***************
  1515. *** 1,5 ****
  1516.   #include <string.h>
  1517. ! /* $Id: strcspn.c,v 1.2 1992/04/25 08:19:26 sjg Exp $ */
  1518.   
  1519.   /*
  1520.    * strcspn - find length of initial segment of s consisting entirely
  1521. --- 1,5 ----
  1522.   #include <string.h>
  1523. ! /* $Id: strcspn.c,v 1.3 93/05/05 21:18:38 sjg Exp $ */
  1524.   
  1525.   /*
  1526.    * strcspn - find length of initial segment of s consisting entirely
  1527. *** std/stdc/strerror.c.old    Sat Apr 25 18:19:12 1992
  1528. --- std/stdc/strerror.c    Thu May  6 07:18:26 1993
  1529. ***************
  1530. *** 1,5 ****
  1531.   #include <string.h>
  1532. ! /* $Id: strerror.c,v 1.2 1992/04/25 08:19:26 sjg Exp $ */
  1533.   
  1534.   /*
  1535.    * strerror - map error number to descriptive string
  1536. --- 1,5 ----
  1537.   #include <string.h>
  1538. ! /* $Id: strerror.c,v 1.3 93/05/05 21:18:40 sjg Exp $ */
  1539.   
  1540.   /*
  1541.    * strerror - map error number to descriptive string
  1542. *** std/stdc/string.h.old    Sat Apr 25 18:19:12 1992
  1543. --- std/stdc/string.h    Thu May  6 07:18:28 1993
  1544. ***************
  1545. *** 1,5 ****
  1546.   /* ANSI string handling (missing wide char stuff) */
  1547. ! /* $Id: string.h,v 1.2 1992/04/25 08:19:26 sjg Exp $ */
  1548.   
  1549.   #if ! _STRING_H
  1550.   #define _STRING_H 1
  1551. --- 1,5 ----
  1552.   /* ANSI string handling (missing wide char stuff) */
  1553. ! /* $Id: string.h,v 1.3 93/05/05 21:18:42 sjg Exp $ */
  1554.   
  1555.   #if ! _STRING_H
  1556.   #define _STRING_H 1
  1557. *** std/stdc/strlen.c.old    Sat Apr 25 18:19:12 1992
  1558. --- std/stdc/strlen.c    Thu May  6 07:18:29 1993
  1559. ***************
  1560. *** 1,5 ****
  1561.   #include <string.h>
  1562. ! /* $Id: strlen.c,v 1.2 1992/04/25 08:19:26 sjg Exp $ */
  1563.   
  1564.   /*
  1565.    * strlen - length of string (not including NUL)
  1566. --- 1,5 ----
  1567.   #include <string.h>
  1568. ! /* $Id: strlen.c,v 1.3 93/05/05 21:18:43 sjg Exp $ */
  1569.   
  1570.   /*
  1571.    * strlen - length of string (not including NUL)
  1572. *** std/stdc/strncat.c.old    Sat Apr 25 18:19:12 1992
  1573. --- std/stdc/strncat.c    Thu May  6 07:18:31 1993
  1574. ***************
  1575. *** 1,5 ****
  1576.   #include <string.h>
  1577. ! /* $Id: strncat.c,v 1.2 1992/04/25 08:19:26 sjg Exp $ */
  1578.   
  1579.   /*
  1580.    * strncat - append at most n characters of string src to dst
  1581. --- 1,5 ----
  1582.   #include <string.h>
  1583. ! /* $Id: strncat.c,v 1.3 93/05/05 21:18:45 sjg Exp $ */
  1584.   
  1585.   /*
  1586.    * strncat - append at most n characters of string src to dst
  1587. *** std/stdc/strncmp.c.old    Sat Apr 25 18:19:12 1992
  1588. --- std/stdc/strncmp.c    Thu May  6 07:18:33 1993
  1589. ***************
  1590. *** 1,5 ****
  1591.   #include <string.h>
  1592. ! /* $Id: strncmp.c,v 1.2 1992/04/25 08:19:26 sjg Exp $ */
  1593.   
  1594.   /*
  1595.    * strncmp - compare at most n characters of string s1 to s2
  1596. --- 1,5 ----
  1597.   #include <string.h>
  1598. ! /* $Id: strncmp.c,v 1.3 93/05/05 21:18:47 sjg Exp $ */
  1599.   
  1600.   /*
  1601.    * strncmp - compare at most n characters of string s1 to s2
  1602. *** std/stdc/strncpy.c.old    Sat Apr 25 18:19:12 1992
  1603. --- std/stdc/strncpy.c    Thu May  6 07:18:35 1993
  1604. ***************
  1605. *** 1,5 ****
  1606.   #include <string.h>
  1607. ! /* $Id: strncpy.c,v 1.2 1992/04/25 08:19:26 sjg Exp $ */
  1608.   
  1609.   /*
  1610.    * strncpy - copy at most n characters of string src to dst
  1611. --- 1,5 ----
  1612.   #include <string.h>
  1613. ! /* $Id: strncpy.c,v 1.3 93/05/05 21:18:49 sjg Exp $ */
  1614.   
  1615.   /*
  1616.    * strncpy - copy at most n characters of string src to dst
  1617. *** std/stdc/strpbrk.c.old    Sat Apr 25 18:19:12 1992
  1618. --- std/stdc/strpbrk.c    Thu May  6 07:18:36 1993
  1619. ***************
  1620. *** 1,5 ****
  1621.   #include <string.h>
  1622. ! /* $Id: strpbrk.c,v 1.2 1992/04/25 08:19:26 sjg Exp $ */
  1623.   
  1624.   /*
  1625.    * strpbrk - find first occurrence of any char from breakat in s
  1626. --- 1,5 ----
  1627.   #include <string.h>
  1628. ! /* $Id: strpbrk.c,v 1.3 93/05/05 21:18:50 sjg Exp $ */
  1629.   
  1630.   /*
  1631.    * strpbrk - find first occurrence of any char from breakat in s
  1632. *** std/stdc/strrchr.c.old    Sat Apr 25 18:19:12 1992
  1633. --- std/stdc/strrchr.c    Thu May  6 07:18:38 1993
  1634. ***************
  1635. *** 1,5 ****
  1636.   #include <string.h>
  1637. ! /* $Id: strrchr.c,v 1.2 1992/04/25 08:19:26 sjg Exp $ */
  1638.   
  1639.   /*
  1640.    * strrchr - find last occurrence of a character in a string
  1641. --- 1,5 ----
  1642.   #include <string.h>
  1643. ! /* $Id: strrchr.c,v 1.3 93/05/05 21:18:52 sjg Exp $ */
  1644.   
  1645.   /*
  1646.    * strrchr - find last occurrence of a character in a string
  1647. *** std/stdc/strspn.c.old    Sat Apr 25 18:19:12 1992
  1648. --- std/stdc/strspn.c    Thu May  6 07:18:40 1993
  1649. ***************
  1650. *** 1,5 ****
  1651.   #include <string.h>
  1652. ! /* $Id: strspn.c,v 1.2 1992/04/25 08:19:26 sjg Exp $ */
  1653.   
  1654.   /*
  1655.    * strspn - find length of initial segment of s consisting entirely
  1656. --- 1,5 ----
  1657.   #include <string.h>
  1658. ! /* $Id: strspn.c,v 1.3 93/05/05 21:18:54 sjg Exp $ */
  1659.   
  1660.   /*
  1661.    * strspn - find length of initial segment of s consisting entirely
  1662. *** std/stdc/strstr.c.old    Sat Apr 25 10:58:36 1992
  1663. --- std/stdc/strstr.c    Thu May  6 07:18:42 1993
  1664. ***************
  1665. *** 1,5 ****
  1666.   #ifndef lint
  1667. ! static char *RCSid = "$Id: strstr.c,v 1.2 1992/04/25 00:58:50 sjg Exp $";
  1668.   #endif
  1669.   
  1670.   #include "stdh.h"
  1671. --- 1,5 ----
  1672.   #ifndef lint
  1673. ! static char *RCSid = "$Id: strstr.c,v 1.3 93/05/05 21:18:56 sjg Exp $";
  1674.   #endif
  1675.   
  1676.   #include "stdh.h"
  1677. *** std/stdc/strtok.c.old    Sat Apr 25 18:19:12 1992
  1678. --- std/stdc/strtok.c    Thu May  6 07:18:44 1993
  1679. ***************
  1680. *** 1,5 ****
  1681.   #include <string.h>
  1682. ! /* $Id: strtok.c,v 1.2 1992/04/25 08:19:26 sjg Exp $ */
  1683.   
  1684.   /*
  1685.    * Get next token from string s (NULL on 2nd, 3rd, etc. calls),
  1686. --- 1,5 ----
  1687.   #include <string.h>
  1688. ! /* $Id: strtok.c,v 1.3 93/05/05 21:18:58 sjg Exp $ */
  1689.   
  1690.   /*
  1691.    * Get next token from string s (NULL on 2nd, 3rd, etc. calls),
  1692. *** std/stdc/time.h.old    Sat Apr 25 18:19:12 1992
  1693. --- std/stdc/time.h    Thu May  6 07:18:46 1993
  1694. ***************
  1695. *** 1,5 ****
  1696.   /* time, time/date conversion */
  1697. ! /* $Id: time.h,v 1.2 1992/04/25 08:19:26 sjg Exp $ */
  1698.   
  1699.   #if ! _TIME_H
  1700.   #define    _TIME_H 1
  1701. --- 1,5 ----
  1702.   /* time, time/date conversion */
  1703. ! /* $Id: time.h,v 1.3 93/05/05 21:19:00 sjg Exp $ */
  1704.   
  1705.   #if ! _TIME_H
  1706.   #define    _TIME_H 1
  1707. *** std/stdc/types.h.old    Sat Apr 25 18:19:12 1992
  1708. --- std/stdc/types.h    Thu May  6 07:18:47 1993
  1709. ***************
  1710. *** 1,5 ****
  1711.   /* work around multiple typedefs in stddef.h and sys/types.h */
  1712. ! /* $Id: types.h,v 1.2 1992/04/25 08:19:26 sjg Exp $ */
  1713.   
  1714.   #include <stddef.h>        /* defines size_t and ptrdiff_t */
  1715.   #include <time.h>        /* defines time_t and clock_t */
  1716. --- 1,5 ----
  1717.   /* work around multiple typedefs in stddef.h and sys/types.h */
  1718. ! /* $Id: types.h,v 1.3 93/05/05 21:19:01 sjg Exp $ */
  1719.   
  1720.   #include <stddef.h>        /* defines size_t and ptrdiff_t */
  1721.   #include <time.h>        /* defines time_t and clock_t */
  1722. *** std/stdc/vprintf.c.old    Tue May 12 19:30:49 1992
  1723. --- std/stdc/vprintf.c    Thu May  6 07:18:49 1993
  1724. ***************
  1725. *** 1,5 ****
  1726.   #ifndef lint
  1727. ! static char *RCSid = "$Id: vprintf.c,v 1.3 1992/05/12 09:31:03 sjg Exp $";
  1728.   #endif
  1729.   #ifdef __STDC__
  1730.   #include <stdarg.h>
  1731. --- 1,5 ----
  1732.   #ifndef lint
  1733. ! static char *RCSid = "$Id: vprintf.c,v 1.4 93/05/05 21:19:03 sjg Exp $";
  1734.   #endif
  1735.   #ifdef __STDC__
  1736.   #include <stdarg.h>
  1737. *** sh/version.c.old    Wed Sep 29 13:20:16 1993
  1738. --- sh/version.c    Wed Sep 29 23:17:37 1993
  1739. ***************
  1740. *** 3,9 ****
  1741.    */
  1742.   
  1743.   #ifndef lint
  1744. ! static char *RCSid = "$Id: version.c,v 1.8 93/05/05 21:17:19 sjg Exp $";
  1745.   #endif
  1746.   
  1747.   #include "stdh.h"
  1748. --- 3,9 ----
  1749.    */
  1750.   
  1751.   #ifndef lint
  1752. ! static char *RCSid = "$Id: version.c,v 1.9 93/09/29 13:17:51 sjg Exp $";
  1753.   #endif
  1754.   
  1755.   #include "stdh.h"
  1756. ***************
  1757. *** 12,17 ****
  1758.   #include "patchlevel.h"
  1759.   
  1760.   char ksh_version [] =
  1761. !     "KSH_VERSION=@(#)PD KSH v4.8 92/12/05";
  1762.   
  1763.   
  1764. --- 12,17 ----
  1765.   #include "patchlevel.h"
  1766.   
  1767.   char ksh_version [] =
  1768. !     "KSH_VERSION=@(#)PD KSH v4.9 93/09/29";
  1769.  
  1770.  
  1771. *** sh/edit.c.old    Thu Sep 30 00:15:35 1993
  1772. --- sh/edit.c        Thu Sep 30 10:14:51 1993
  1773. ***************
  1774. *** 7,13 ****
  1775.   #if defined(EMACS) || defined(VI)
  1776.   
  1777.   #ifndef lint
  1778. ! static char *RCSid = "$Id: edit.c,v 1.8 93/06/01 23:40:30 sjg Exp $";
  1779.   #endif
  1780.   
  1781.   #include "stdh.h"
  1782. --- 7,13 ----
  1783.   #if defined(EMACS) || defined(VI)
  1784.   
  1785.   #ifndef lint
  1786. ! static char *RCSid = "$Id: edit.c,v 1.9 93/09/30 00:15:05 sjg Exp $";
  1787.   #endif
  1788.   
  1789.   #include "stdh.h"
  1790. ***************
  1791. *** 424,433 ****
  1792.   
  1793.     while (*cp)
  1794.     {
  1795. !     if ( *cp++ != '!' )
  1796.         count++;
  1797. !     else
  1798. !       if ( *cp == '!' )
  1799.         {
  1800.       cp++;
  1801.       count++;
  1802. --- 424,437 ----
  1803.   
  1804.     while (*cp)
  1805.     {
  1806. !     if (*cp == '\n') 
  1807. !     {
  1808. !       count = 0;
  1809. !       *cp++;
  1810. !     }
  1811. !     else if ( *cp++ != '!' )
  1812.         count++;
  1813. !     else if ( *cp == '!' )
  1814.       {
  1815.         cp++;
  1816.         count++;
  1817. ***************
  1818. *** 438,446 ****
  1819.   
  1820.       do
  1821.       {
  1822. !       count ++;
  1823. !     }
  1824. !     while( ( i /= 10 ) > 0 );
  1825.         }
  1826.     }
  1827.     return count;
  1828. --- 442,449 ----
  1829.   
  1830.         do
  1831.         {
  1832. !     count++;
  1833. !       } while( ( i /= 10 ) > 0 );
  1834.       }
  1835.     }
  1836.     return count;
  1837.  
  1838. exit 0 # Just in case...
  1839.