home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume26 / maint / patch01 < prev    next >
Text File  |  1993-05-01  |  69KB  |  2,096 lines

  1. Newsgroups: comp.sources.unix
  2. From: peirce@gw.wmich.edu (Leonard J. Peirce)
  3. Subject: v26i201: maint - full-screen file and directory maintenance tool, Patch01
  4. Sender: unix-sources-moderator@efficacy.home.vix.com
  5. Approved: WhoAmI@efficacy.home.vix.com
  6.  
  7. Submitted-By: peirce@gw.wmich.edu (Leonard J. Peirce)
  8. Posting-Number: Volume 26, Issue 201
  9. Archive-Name: maint/patch01
  10.  
  11. Message-Id: <9210071829.AA06683@gumby.cc.wmich.edu>
  12. From: peirce@gumby.cc.wmich.edu (Leonard J. Peirce)
  13. Date: Wed, 7 Oct 1992 14:29:30 -0400
  14. To: comp-sources-unix@uunet.uu.net
  15. Subject: comp.sources.unix -- maint 1.0 patch #1
  16.  
  17. System: maint version 1.0
  18. Patch #: 1
  19. Priority: HIGH
  20. Subject: Bug fixes and support for new UNIX platforms
  21. From: peirce@gumby.cc.wmich.edu
  22.  
  23. Description:
  24.     Lots of stuff in this first patch (see README and CHANGES for
  25.     more info).
  26.  
  27.     Sorry it took so long to get this out.  Sometimes real work
  28.     gets in the way.  ;-}
  29.  
  30. Fix:
  31.     Change to the directory where you have the 1.0 source and say
  32.  
  33.        patch -p0 <thisarticle
  34.  
  35. Index: patchlevel.h
  36.  
  37. *** ../D.maint.1.0/CHANGES    Wed Oct  7 13:53:49 1992
  38. --- CHANGES    Wed Oct  7 13:41:51 1992
  39. ***************
  40. *** 0 ****
  41. --- 1,17 ----
  42. + 1.0
  43. + ---
  44. + Initial version.  we haven't found any bugs yet! ;-}
  45. + 1.0 PL0
  46. + -------
  47. + - Support for lots of new UNIX platforms (see README)
  48. + - -F actually works
  49. + - screen refresh after a returning from a subprocess works
  50. + - ^W works
  51. + - lots of little bug fixes to numerous to mention
  52. *** ../D.maint.1.0/Makefile.dist    Wed Oct  7 13:52:47 1992
  53. --- Makefile.dist    Wed Oct  7 13:09:01 1992
  54. ***************
  55. *** 38,42 ****
  56.   #CC = /usr/5bin/cc
  57.   #DEBUGOPT = -O4
  58. ! #CFLAGS = $(DEBUGOPT) -c -DHELPFILE=\"${HELPDIR}/maint.help\"
  59.   #LIBS = -lcurses -ltermcap
  60.   #
  61. --- 38,42 ----
  62.   #CC = /usr/5bin/cc
  63.   #DEBUGOPT = -O4
  64. ! #CFLAGS = $(DEBUGOPT) -c -DHELPFILE=\"${HELPDIR}/${HELPFILE}\"
  65.   #LIBS = -lcurses -ltermcap
  66.   #
  67. ***************
  68. *** 45,52 ****
  69.   #CC = gcc
  70.   #DEBUGOPT = -O
  71. ! #CFLAGS = -I/usr/5include $(DEBUGOPT) -c -DHELPFILE=\"${HELPDIR}/maint.help\"
  72.   #LIBS = /usr/5lib/libcurses.a /usr/5lib/libtermcap.a
  73.   
  74.   # ULTRIX:
  75.   # ULTRIX needs -lcursesX; realize that maint will only build for ULTRIX 3.0+;
  76. --- 45,51 ----
  77.   #CC = gcc
  78.   #DEBUGOPT = -O
  79. ! #CFLAGS = -I/usr/5include $(DEBUGOPT) -c -DHELPFILE=\"${HELPDIR}/${HELPFILE}\"
  80.   #LIBS = /usr/5lib/libcurses.a /usr/5lib/libtermcap.a
  81.   
  82.   # ULTRIX:
  83.   # ULTRIX needs -lcursesX; realize that maint will only build for ULTRIX 3.0+;
  84. ***************
  85. *** 55,61 ****
  86.   CC = cc
  87.   DEBUGOPT = -O
  88. ! CFLAGS = $(DEBUGOPT) -c -DHELPFILE=\"${HELPDIR}/maint.help\"
  89.   LIBS = -lcursesX -ltermcap
  90.   
  91.   # System V:
  92.   # Haven't done much testing in this environment.  It worked fine the last
  93. --- 54,66 ----
  94.   CC = cc
  95.   DEBUGOPT = -O
  96. ! CFLAGS = -Olimit 810 $(DEBUGOPT) -c -DHELPFILE=\"${HELPDIR}/${HELPFILE}\"
  97.   LIBS = -lcursesX -ltermcap
  98.   
  99. + # IBM RS/6000 AIX 3.0
  100. + #CC = cc
  101. + #DEBUGOPT = -O
  102. + #CFLAGS = -DAIX $(DEBUGOPT) -c -DHELPFILE=\"${HELPDIR}/${HELPFILE}\"
  103. + #LIBS = -lcurses -ltermcap
  104.   # System V:
  105.   # Haven't done much testing in this environment.  It worked fine the last
  106. ***************
  107. *** 63,69 ****
  108.   #CC = cc
  109.   #DEBUGOPT = -O
  110. ! #CFLAGS = -DMAXPATHLEN=1024 -DSYSV $(DEBUGOPT) -c -DHELPFILE=\"${HELPDIR}/maint.help\"
  111.   #LIBS = -lcurses -ltermcap
  112.   
  113.   # Set these if you want to use the Makefile to install maint for you
  114.   #
  115. --- 68,111 ----
  116.   #CC = cc
  117.   #DEBUGOPT = -O
  118. ! #CFLAGS = -DMAXPATHLEN=1024 -DSYSV $(DEBUGOPT) -c -DHELPFILE=\"${HELPDIR}/${HELPFILE}\"
  119.   #LIBS = -lcurses -ltermcap
  120.   
  121. + # IRIX:
  122. + # Tested on 4.0.1
  123. + #CC = cc
  124. + #DEBUGOPT = -O
  125. + #CFLAGS = $(DEBUGOPT) -c -DHELPFILE=\"${HELPDIR}/${HELPFILE}\" -DSYSV  -D"st_blocks=st_size" -cckr
  126. + #LIB = -lcurses -ltermcap
  127. + # Pyramid:
  128. + #CC = att cc
  129. + #DEBUGOPT = -O
  130. + #CFLAGS = -DSYSV $(DEBUGOPT) -c -DHELPFILE=\"${HELPDIR}/${HELPFILE}\"
  131. + #LIBS = -lcurses -ltermcap
  132. + # Interactive (ISC) SVR3 release 2.2 with gcc 2.1 on a 386
  133. + #CC = gcc
  134. + #DEBUGOPT = -O
  135. + #CFLAGS = -traditional -Disc -DMAXPATHLEN=1024 -DSYSV ${DEBUGOPT} -c -DHELPFILE=\"${HELPDIR}/${HELPFILE}\"
  136. + #LIBS = -lcurses -ltermcap
  137. + # HP/UX
  138. + # I *think* this will work.  I received patches from people running various
  139. + # versions of HP/UX on various pieces of hardware.
  140. + #
  141. + #CC = cc
  142. + #DEBUGOPT = -O
  143. + #CFLAGS = -DMAXPATHLEN=1024 $(DEBUGOPT) -c -DHELPFILE=\"${HELPDIR}/${HELPFILE}\"
  144. + #LIBS = -lcurses -ltermcap
  145. + # SCO Unix
  146. + # SCO Unix 3.2v4 and ODT 2.0 build with a few warnings in screen.c and
  147. + # xecute.c but appears to work correctly.  SCO Unix 3.2 and ODT 1.1 will
  148. + # build cleanly and run correctly.
  149. + #CC = cc
  150. + #DEBUGOPT = -O
  151. + #CFLAGS = -DMAXPATHLEN=1024 -DSCO $(DEBUGOPT) -c -DHELPFILE=\"${HELPDIR}/${HELPFILE}\"
  152. + #LIBS = -lcurses -ltermcap
  153.   # Set these if you want to use the Makefile to install maint for you
  154.   #
  155. ***************
  156. *** 74,77 ****
  157. --- 116,120 ----
  158.   # HELPDIR - where the on-line help file will live
  159.   # HELPMODE - protection mode for help file
  160. + # HELPFILE - name of extended on-line help file (not the man page)
  161.   # OWNER - of executable, the man page, and the help file
  162.   # GROUP - ditto
  163. ***************
  164. *** 83,86 ****
  165. --- 126,130 ----
  166.   HELPDIR = /usr/local/lib
  167.   HELPMODE = 644
  168. + HELPFILE = maint.help
  169.   OWNER = root
  170.   GROUP = daemon
  171. ***************
  172. *** 121,123 ****
  173.           install -c -m ${BINMODE} -o ${OWNER} -g ${GROUP} maint ${BINDIR}
  174.           install -c -m ${MANMODE} -o ${OWNER} -g ${GROUP} maint.1 ${MANDIR}
  175. !         install -c -m ${HELPMODE} -o ${OWNER} -g ${GROUP} maint.hlp ${HELPDIR}
  176. --- 165,167 ----
  177.           install -c -m ${BINMODE} -o ${OWNER} -g ${GROUP} maint ${BINDIR}
  178.           install -c -m ${MANMODE} -o ${OWNER} -g ${GROUP} maint.1 ${MANDIR}
  179. !         install -c -m ${HELPMODE} -o ${OWNER} -g ${GROUP} ${HELPFILE} ${HELPDIR}
  180. *** ../D.maint.1.0/README    Wed Oct  7 13:52:47 1992
  181. --- README    Wed Oct  7 13:34:58 1992
  182. ***************
  183. *** 47,55 ****
  184.       o System V Release 3
  185.   
  186. !    I would like to say that maint will work on HP/UX, AIX, etc., but I
  187. ! can't because I don't have access to them.  If you make it work on a system
  188. ! not listed above, let me know what you had to do and I'll see what I can do
  189. ! about including your fixes in the next release.
  190.   
  191.      I'm also pretty anxious to get it ported to Xenix.  If anyone out there
  192.   wants to take the time to port it and send me the diffs, I'll be more than
  193. --- 47,66 ----
  194.       o System V Release 3
  195.   
  196. !     o SCO UNIX 3.2.2
  197.   
  198. +     o HP-UX
  199. +     o IRIX
  200. +     o Apollo Domain
  201. +     o Pyramid
  202. +     o AIX 3.0
  203. +    If you make maint work on a system not listed above, let me know what you
  204. + had to do and I'll see what I can do about including your fixes in the next
  205. + release.
  206.      I'm also pretty anxious to get it ported to Xenix.  If anyone out there
  207.   wants to take the time to port it and send me the diffs, I'll be more than
  208. ***************
  209. *** 80,83 ****
  210. --- 91,100 ----
  211.         running SunOS 3.X; this turns on a few typedefs that maint needs.
  212.   
  213. +       If you aren't running nroff there is a preformatted version of the
  214. +       man page in maint.man.uu.  It needs to be uudecoded and then copied
  215. +       out to the appropriate manual page directory.  You can change the
  216. +       install line for the manual page in the Makefile if you like or you
  217. +       could just copy it by hand.
  218.     4.  Type "make" to build maint.
  219.   
  220. ***************
  221. *** 106,109 ****
  222. --- 123,132 ----
  223.   code improvements.
  224.   
  225. + To the maint test group, for their invaluable and much appreciated efforts
  226. + and time in testing maint on a number of different platforms:  William Silvert,
  227. + Karl Vogel, Valter Cavecchia, Stefan Posthuma, Christian Posse, Gordon
  228. + Berkley, Kiron D. Bondale, and Minh Tran.  (Sorry if I missed someone in
  229. + there).
  230.   CONCLUSION
  231.      I put a lot of work into maint and I would appreciate any comments/
  232. ***************
  233. *** 126,130 ****
  234.   If you have a suggestion feel free to send me e-mail.
  235.   
  236. ! While I'm sure maint doesn't do everything that everyone could ever want,
  237.   I still feel that you will find it useful.  At any rate, I use it quite a
  238.   bit, even if no one else does. :-)
  239. --- 149,153 ----
  240.   If you have a suggestion feel free to send me e-mail.
  241.   
  242. !    While I'm sure maint doesn't do everything that everyone could ever want,
  243.   I still feel that you will find it useful.  At any rate, I use it quite a
  244.   bit, even if no one else does. :-)
  245. ***************
  246. *** 133,136 ****
  247.   Leonard J. Peirce               Internet:  peirce@mickey.acs.wmich.edu
  248.   Western Michigan University                peirce@gw.wmich.edu
  249. ! Academic Computing Services
  250.   Kalamazoo, MI  49008            Voice:     (616) 387-5469
  251. --- 156,159 ----
  252.   Leonard J. Peirce               Internet:  peirce@mickey.acs.wmich.edu
  253.   Western Michigan University                peirce@gw.wmich.edu
  254. ! University Computing Services
  255.   Kalamazoo, MI  49008            Voice:     (616) 387-5469
  256. *** ../D.maint.1.0/args.c    Wed Oct  7 13:52:48 1992
  257. --- args.c    Wed Oct  7 13:39:53 1992
  258. ***************
  259. *** 10,14 ****
  260.      Version=01    Level=00    01/24/92    Leonard J. Peirce
  261.   
  262. !    Purpose:    Routine(s) for parsing run-time arguments.
  263.   
  264.      Arguments:    See individual routine(s).
  265. --- 10,14 ----
  266.      Version=01    Level=00    01/24/92    Leonard J. Peirce
  267.   
  268. !    Purpose:    Miscellaneous updates.
  269.   
  270.      Arguments:    See individual routine(s).
  271. ***************
  272. *** 41,47 ****
  273.   /******************************************************************************/
  274.   
  275.   #include <stdio.h>
  276.   #include <string.h>
  277. - #include "maint.h"
  278.   
  279.   /******************************************************************************/
  280. --- 41,47 ----
  281.   /******************************************************************************/
  282.   
  283. + #include "maint.h"
  284.   #include <stdio.h>
  285.   #include <string.h>
  286.   
  287.   /******************************************************************************/
  288. *** ../D.maint.1.0/edit.c    Wed Oct  7 13:52:49 1992
  289. --- edit.c    Wed Oct  7 13:39:58 1992
  290. ***************
  291. *** 42,51 ****
  292.   /******************************************************************************/
  293.   
  294.   #include <stdio.h>
  295.   #include <string.h>
  296. ! #if !defined(SYSV) || defined(sun)
  297.   #include <sys/wait.h>
  298.   #endif
  299. - #include "maint.h"
  300.   
  301.   /******************************************************************************/
  302. --- 42,51 ----
  303.   /******************************************************************************/
  304.   
  305. + #include "maint.h"
  306.   #include <stdio.h>
  307.   #include <string.h>
  308. ! #if (!defined(SYSV) && !defined(SCO)) || defined(sun)
  309.   #include <sys/wait.h>
  310.   #endif
  311.   
  312.   /******************************************************************************/
  313. ***************
  314. *** 117,121 ****
  315.        int      child,        /* pid of child process              */
  316.             i;            /* loop and return value          */
  317. ! #if !defined(SYSV) || defined(sun)
  318.   union     wait      status;        /* exit status for child process      */
  319.   #else
  320. --- 117,121 ----
  321.        int      child,        /* pid of child process              */
  322.             i;            /* loop and return value          */
  323. ! #if (!defined(SYSV) || defined(sun)) && !defined(SCO) && !defined(AIX)
  324.   union     wait      status;        /* exit status for child process      */
  325.   #else
  326. ***************
  327. *** 138,141 ****
  328. --- 138,143 ----
  329.         tptr++;
  330.   
  331. +    endwin();
  332.      if((child = vfork()) == 0)
  333.      {
  334. ***************
  335. *** 142,146 ****
  336.         /* we're in the child */
  337.   
  338. -       endwin();
  339.         execlp(editor,tptr,filename,NULL);
  340.         return(FAILURE);            /* execlp failed if we get here          */
  341. --- 144,147 ----
  342. ***************
  343. *** 156,159 ****
  344. --- 157,161 ----
  345.         return(FAILURE);
  346.   
  347. +    doupdate();
  348.      return(SUCCESS);
  349.   
  350. *** ../D.maint.1.0/help.c    Wed Oct  7 13:52:49 1992
  351. --- help.c    Wed Oct  7 13:43:15 1992
  352. ***************
  353. *** 41,44 ****
  354. --- 41,45 ----
  355.   /******************************************************************************/
  356.   
  357. + #include "maint.h"
  358.   #ifdef ultrix
  359.   #include <cursesX.h>
  360. ***************
  361. *** 46,50 ****
  362.   #include <curses.h>
  363.   #endif
  364. - #include "maint.h"
  365.   
  366.   /******************************************************************************/
  367. --- 47,50 ----
  368. ***************
  369. *** 148,151 ****
  370. --- 148,152 ----
  371.   
  372.         case(CARRIAGE_RETURN):
  373. +       case(KEY_ENTER):
  374.   
  375.        info_mess("Down and Left -- Move down one row, left of screen");
  376. ***************
  377. *** 273,288 ****
  378.   
  379.        info_mess("^Goto -- Goto specific page in directory");
  380. -      break;
  381. -       case('W'):
  382. -       case('w'):
  383. -      info_mess("Who -- Display name of author");
  384. -      break;
  385. -       case('V'):
  386. -       case('v'):
  387. -      info_mess("Version -- Display current version");
  388.        break;
  389.   
  390. --- 274,277 ----
  391. *** ../D.maint.1.0/info.c    Wed Oct  7 13:52:55 1992
  392. --- info.c    Wed Oct  7 13:40:05 1992
  393. ***************
  394. *** 43,46 ****
  395. --- 43,47 ----
  396.   /******************************************************************************/
  397.   
  398. + #include "maint.h"
  399.   #if !defined(SYSV) || defined(sun)
  400.   #include <sys/types.h>
  401. ***************
  402. *** 55,61 ****
  403.   #include <errno.h>
  404.   #include <time.h>
  405. - #include "maint.h"
  406.   #include <sys/stat.h>
  407.   
  408.   /******************************************************************************/
  409.   /*                                                                            */
  410. --- 56,65 ----
  411.   #include <errno.h>
  412.   #include <time.h>
  413.   #include <sys/stat.h>
  414.   
  415. + #if defined(sgi) || defined(SYSV) || defined(sun) || defined(isc)
  416. + #include <sys/sysmacros.h>        /* get major/minor macros */
  417. + #endif
  418.   /******************************************************************************/
  419.   /*                                                                            */
  420. ***************
  421. *** 243,248 ****
  422.         case(S_IFCHR):
  423.        put_buf(window,"This file represents a character device.",&row,max_row,0,A_NORMAL,FALSE,' ',FALSE) ;
  424. !          sprintf(buf,"  The major device number is %d, minor number %d.",statbuf.st_size,
  425. !        statbuf.st_blocks);
  426.        put_buf(window,buf,&row,max_row,0,A_NORMAL,FALSE,' ',FALSE) ;
  427.        break;
  428. --- 247,255 ----
  429.         case(S_IFCHR):
  430.        put_buf(window,"This file represents a character device.",&row,max_row,0,A_NORMAL,FALSE,' ',FALSE) ;
  431. ! #if defined(major) || defined(sgi) || defined(isc)
  432. !      sprintf(buf,"  The major device number is %d, minor number %d.",major(statbuf.st_rdev), minor(statbuf.st_rdev));
  433. ! #else
  434. !          sprintf(buf,"  The major device number is %d, minor number %d.",statbuf.st_size,statbuf.st_blocks);
  435. ! #endif
  436.        put_buf(window,buf,&row,max_row,0,A_NORMAL,FALSE,' ',FALSE) ;
  437.        break;
  438. ***************
  439. *** 249,254 ****
  440.         case(S_IFBLK):
  441.        put_buf(window,"This file represents a block device.",&row,max_row,0,A_NORMAL,FALSE,' ',FALSE) ;
  442. !          sprintf(buf,"  The major device number is %d, minor number %d.",statbuf.st_size,
  443. !        statbuf.st_blocks);
  444.        put_buf(window,buf,&row,max_row,0,A_NORMAL,FALSE,' ',FALSE) ;
  445.        break;
  446. --- 256,264 ----
  447.         case(S_IFBLK):
  448.        put_buf(window,"This file represents a block device.",&row,max_row,0,A_NORMAL,FALSE,' ',FALSE) ;
  449. ! #if defined(major) || defined(sgi) || defined(isc)
  450. !      sprintf(buf,"  The major device number is %d, minor number %d.",major(statbuf.st_rdev), minor(statbuf.st_rdev));
  451. ! #else
  452. !          sprintf(buf,"  The major device number is %d, minor number %d.",statbuf.st_size,statbuf.st_blocks);
  453. ! #endif
  454.        put_buf(window,buf,&row,max_row,0,A_NORMAL,FALSE,' ',FALSE) ;
  455.        break;
  456. ***************
  457. *** 261,264 ****
  458. --- 271,279 ----
  459.         case(S_IFLNK):
  460.        put_buf(window,"This file is a symbolic link.",&row,max_row,0,A_NORMAL,FALSE,' ',FALSE) ;
  461. +      break;
  462. + #endif
  463. + #if defined(S_IFSOCK)
  464. +       case(S_IFSOCK):
  465. +      put_buf(window,"This file is a socket.",&row,max_row,0,A_NORMAL,FALSE,' ',FALSE);
  466.        break;
  467.   #endif
  468. *** ../D.maint.1.0/locate.c    Wed Oct  7 13:52:50 1992
  469. --- locate.c    Wed Oct  7 13:40:10 1992
  470. ***************
  471. *** 42,45 ****
  472. --- 42,46 ----
  473.   /******************************************************************************/
  474.   
  475. + #include "maint.h"
  476.   #ifdef ultrix
  477.   #include <cursesX.h>
  478. ***************
  479. *** 48,52 ****
  480.   #endif
  481.   #include <ctype.h>
  482. - #include "maint.h"
  483.   
  484.   /******************************************************************************/
  485. --- 49,52 ----
  486. *** ../D.maint.1.0/main.c    Wed Oct  7 13:53:12 1992
  487. --- main.c    Wed Oct  7 13:40:15 1992
  488. ***************
  489. *** 142,145 ****
  490. --- 142,146 ----
  491.   /******************************************************************************/
  492.   
  493. + #include "maint.h"            /* our very own header file          */
  494.   #ifdef ultrix
  495.   #include <cursesX.h>
  496. ***************
  497. *** 147,152 ****
  498. --- 148,156 ----
  499.   #else
  500.   #include <curses.h>
  501. + #ifndef apollo
  502.   #include <sys/file.h>
  503.   #endif
  504. + #endif
  505. + #include <sys/types.h>
  506.   #include <sys/param.h>
  507.   #include <sys/stat.h>
  508. ***************
  509. *** 238,242 ****
  510.             give_help();
  511.   
  512. ! #if defined(SYSV) && !defined(sun)
  513.   
  514.   extern     char      *getcwd();
  515. --- 242,246 ----
  516.             give_help();
  517.   
  518. ! #if (defined(SYSV) || defined(hpux)) && !defined(sun)
  519.   
  520.   extern     char      *getcwd();
  521. ***************
  522. *** 262,266 ****
  523.        u_short  node_row_max,        /* max. # of rows in nodes array      */
  524.             node_col_max,        /* max. # of columns in nodes array   */
  525. !           cont_flag;        /* set if continuing after suspend    */
  526.   
  527.        ARG_DEF  args;            /* run-time argument flags          */
  528. --- 266,271 ----
  529.        u_short  node_row_max,        /* max. # of rows in nodes array      */
  530.             node_col_max,        /* max. # of columns in nodes array   */
  531. !           cont_flag,        /* set if continuing after suspend    */
  532. !           was_stopped;        /* TRUE if coming back from a ^Z      */
  533.   
  534.        ARG_DEF  args;            /* run-time argument flags          */
  535. ***************
  536. *** 480,484 ****
  537.      dir_name = (char *) malloc(MAXPATHLEN+3);
  538.   
  539. ! #if defined(SYSV) && !defined(sun)
  540.      getcwd(dir_name,MAXPATHLEN+2);
  541.   #else
  542. --- 485,489 ----
  543.      dir_name = (char *) malloc(MAXPATHLEN+3);
  544.   
  545. ! #if (defined(SYSV) || defined(hpux)) && !defined(sun)
  546.      getcwd(dir_name,MAXPATHLEN+2);
  547.   #else
  548. ***************
  549. *** 652,655 ****
  550. --- 657,677 ----
  551.         term_code = wgetch(main_win);
  552.   
  553. +       if(was_stopped)
  554. +       {
  555. +      term_code = 0;            /* coming back after being stopped    */
  556. +      was_stopped = 0;        /* make sure it's clear              */
  557. +      nonl();
  558. +      cbreak();
  559. +      noecho();
  560. +      cursor_flag++;
  561. +      clearok(main_win,TRUE);
  562. +      touchwin(spec_win);
  563. +      touchwin(main_win);
  564. +      touchwin(stat_win);
  565. +      wnoutrefresh(spec_win);
  566. +      wnoutrefresh(main_win);
  567. +      wnoutrefresh(stat_win);
  568. +       }
  569.         if(mess_flag)            /* was a message on the screen?          */
  570.         {
  571. ***************
  572. *** 751,755 ****
  573.   
  574.        case(CARRIAGE_RETURN):        /**************************************/
  575. !                     /*          carriage return          */
  576.                       /**************************************/
  577.   
  578. --- 773,777 ----
  579.   
  580.        case(CARRIAGE_RETURN):        /**************************************/
  581. !      case(KEY_ENTER):        /*          carriage return          */
  582.                       /**************************************/
  583.   
  584. ***************
  585. *** 1003,1006 ****
  586. --- 1025,1029 ----
  587.   
  588.                status = file_select(entptr->filename);
  589. +              clearok(main_win,TRUE);
  590.                touchwin(main_win);
  591.                touchwin(spec_win);
  592. ***************
  593. *** 1577,1580 ****
  594. --- 1600,1604 ----
  595.   
  596.             status = edit(entptr->filename);
  597. +           clearok(main_win,TRUE);
  598.             touchwin(main_win);
  599.             touchwin(spec_win);
  600. ***************
  601. *** 1636,1639 ****
  602. --- 1660,1665 ----
  603.           }
  604.   
  605. +         clearok(main_win,TRUE);
  606. +         clearok(stat_win,TRUE);
  607.           touchwin(main_win);        /* to force it to be refreshed          */
  608.           wnoutrefresh(main_win);
  609. ***************
  610. *** 2045,2048 ****
  611. --- 2071,2075 ----
  612.   
  613.           put_options(stat_win);
  614. +         clearok(main_win,TRUE);
  615.           touchwin(main_win);
  616.           touchwin(spec_win);
  617. ***************
  618. *** 2057,2060 ****
  619. --- 2084,2088 ----
  620.                       /**************************************/
  621.   
  622. +         clearok(main_win,TRUE);
  623.           touchwin(spec_win);
  624.           touchwin(main_win);
  625. ***************
  626. *** 2244,2247 ****
  627. --- 2272,2276 ----
  628.              /* refresh the stat window because we overwrote it */
  629.   
  630. +            clearok(stat_win,TRUE);
  631.              touchwin(stat_win);
  632.              wrefresh(stat_win);
  633. ***************
  634. *** 2327,2331 ****
  635.              put_pagnum(spec_win,curr_screen,num_screen);
  636.   
  637. !            set_nodes(nodes,node_row_max,&scr_file,num_screen,new_screen,
  638.                num_file,slot_width,num_col);
  639.   
  640. --- 2356,2360 ----
  641.              put_pagnum(spec_win,curr_screen,num_screen);
  642.   
  643. !            set_nodes(nodes,node_row_max,&scr_file,num_screen,curr_screen,
  644.                num_file,slot_width,num_col);
  645.   
  646. *** ../D.maint.1.0/maint.h.dist    Wed Oct  7 13:52:56 1992
  647. --- maint.h.dist    Wed Sep 23 10:29:14 1992
  648. ***************
  649. *** 58,63 ****
  650. --- 58,69 ----
  651.   /* the following stuff you probably won't want to touch */
  652.   
  653. + #if !defined(TRUE)
  654.   #define TRUE (1)
  655. + #endif
  656. + #if !defined(FALSE)
  657.   #define FALSE (0)
  658. + #endif
  659.   #define NULLPTR (char *) 0
  660.   
  661. ***************
  662. *** 222,227 ****
  663.   #define xmess(message,prefix_len) write_mess(message,A_REVERSE,prefix_len)
  664.   
  665. ! #if defined(SYSV) && !defined(sun)
  666.   
  667.   /* stuff that needs to be defined for System V */
  668.   
  669. --- 228,242 ----
  670.   #define xmess(message,prefix_len) write_mess(message,A_REVERSE,prefix_len)
  671.   
  672. ! /* HPUX - in screen.c, DEV_BSHIFT remains undefined if dirent.h is included
  673. !  * before sys/param.h (which it is, since this header included dirent.h
  674. !  * and it is included in screen.c before sys/param.h
  675. !  */
  676.   
  677. + #if defined(hpux) && !defined(DEV_BSHIFT)
  678. + #define DEV_BSHIFT 10
  679. + #endif
  680. + #if !defined(sun) && (defined(SYSV) || defined(SCO) || defined(AIX))
  681.   /* stuff that needs to be defined for System V */
  682.   
  683. ***************
  684. *** 228,232 ****
  685. --- 243,250 ----
  686.   #define vfork fork            /* no vfork()                  */
  687.   #define dbtob(db) ((unsigned)(db) << BSHIFT)
  688. + #if !defined(hpux)
  689.   #define R_OK 04                /* for access()                  */
  690. + #endif
  691.   
  692.   #endif
  693. ***************
  694. *** 238,242 ****
  695.   /******************************************************************************/
  696.   
  697. ! #if defined(SYSV) && !defined(sun)
  698.   
  699.   typedef unsigned long int u_long;    /* I like underscores....          */
  700. --- 256,260 ----
  701.   /******************************************************************************/
  702.   
  703. ! #if defined(SYSV) && !defined(sun) && !defined(sgi) && !defined(hpux)
  704.   
  705.   typedef unsigned long int u_long;    /* I like underscores....          */
  706. ***************
  707. *** 244,249 ****
  708. --- 262,274 ----
  709.   typedef unsigned short int u_short;
  710.   typedef unsigned char u_char;
  711. + #if !defined(pyr) && (defined(apollo) && !defined(_TYPES_)) && !defined(isc)
  712.   typedef int gid_t,uid_t;
  713. + #endif
  714.   
  715. + #endif
  716. + #if defined(hpux)
  717. + #define SIGWINCH SIGWINDOW
  718.   #endif
  719.   
  720. *** ../D.maint.1.0/maint.help    Wed Oct  7 13:52:51 1992
  721. --- maint.help    Thu Sep 10 10:49:49 1992
  722. ***************
  723. *** 19,24 ****
  724.   Sometimes there is more than one command to do the same thing.  Multiple
  725.   commands are separated by commas.  Upper and lower case are the same.
  726. ! Maint has a number of commands selecting the current file from those
  727.   on the screen.  You may simply move around the screen by giving the
  728.   following motion commands.
  729. --- 19,24 ----
  730.   Sometimes there is more than one command to do the same thing.  Multiple
  731.   commands are separated by commas.  Upper and lower case are the same.
  732. ! Maint has a number of commands for selecting the current file from those
  733.   on the screen.  You may simply move around the screen by giving the
  734.   following motion commands.
  735. ***************
  736. *** 40,44 ****
  737.       -,_    - go to next page of files (if you have more files
  738.             than can be printed in a single screenful)
  739.   Maint offers you a number of ways of moving from directory to directory:
  740.   
  741. --- 40,44 ----
  742.       -,_    - go to next page of files (if you have more files
  743.             than can be printed in a single screenful)
  744.   Maint offers you a number of ways of moving from directory to directory:
  745.   
  746. ***************
  747. *** 47,51 ****
  748.       s - SELECT current file to become the new directory.
  749.           If the file is not a directory, it is viewed instead.
  750.   The maint commands for changing individual files are:
  751.   
  752. --- 47,51 ----
  753.       s - SELECT current file to become the new directory.
  754.           If the file is not a directory, it is viewed instead.
  755.   The maint commands for changing individual files are:
  756.   
  757. ***************
  758. *** 56,60 ****
  759.           same directory only.
  760.       d - mark the current file for DELETE.
  761.   Maint allow you to change various characteristics of a file:
  762.   
  763. --- 56,60 ----
  764.           same directory only.
  765.       d - mark the current file for DELETE.
  766.   Maint allow you to change various characteristics of a file:
  767.   
  768. ***************
  769. *** 67,71 ****
  770.           bits (eg, 755) or by mimicing the permission string
  771.           (eg `rw-r--r--', etc.)
  772.   Commands which mark a file are not executed immediately.  The marks
  773.   be marked
  774. --- 67,71 ----
  775.           bits (eg, 755) or by mimicing the permission string
  776.           (eg `rw-r--r--', etc.)
  777.   Commands which mark a file are not executed immediately.  The marks
  778.   be marked
  779. ***************
  780. *** 76,80 ****
  781.       control-r - REBUILD the current directory.  This
  782.           cancels all pending marks.
  783.   Maint will let you get various information and views of a file:
  784.   
  785. --- 76,80 ----
  786.       control-r - REBUILD the current directory.  This
  787.           cancels all pending marks.
  788.   Maint will let you get various information and views of a file:
  789.   
  790. ***************
  791. *** 88,92 ****
  792.           PAGER environment, or the system default (less).  If
  793.           the file is a directory, it is BRANCHED to (see 'b')
  794.   Maint will let you assign descriptive text to a file or directory.
  795.   The 't' command functions as follows:
  796. --- 88,92 ----
  797.           PAGER environment, or the system default (less).  If
  798.           the file is a directory, it is BRANCHED to (see 'b')
  799.   Maint will let you assign descriptive text to a file or directory.
  800.   The 't' command functions as follows:
  801. ***************
  802. *** 100,104 ****
  803.   characters of description for any file in the directory.  Select the
  804.   file with the motion commands, then type 't'.
  805.   Misc maint commands:
  806.   
  807. --- 100,104 ----
  808.   characters of description for any file in the directory.  Select the
  809.   file with the motion commands, then type 't'.
  810.   Misc maint commands:
  811.   
  812. *** ../D.maint.1.0/maint.man.uu    Wed Oct  7 13:53:52 1992
  813. --- maint.man.uu    Wed Oct  7 13:21:27 1992
  814. ***************
  815. *** 0 ****
  816. --- 1,300 ----
  817. + begin 644 maint.man
  818. + M"@H*(" @,2!*86X@,3DY,B @(" @(" @(" @(" @(" @(" @(" @(" @(" @
  819. + M(" @(" @(" @(" @(" @(" @(" @(" @(" @34%)3E0H,2D*"@H*(" @3D%-
  820. + M10H@(" @(&UA:6YT("T@1G5L;"US8W)E96X@9FEL92]D:7)E8W1O<GD@;6%I
  821. + M;G1E;F%N8V4*"B @(%-93D]04TE3"B @(" @;6%I;G0@6RUA8V1F9V]P<W1=
  822. + M(%LM4R!;7PAS7PAO7PAR7PAT+5\(9E\(:5\(95\(;%\(9%U="@H@("!$15-#
  823. + M4DE05$E/3@H@(" @(%\(;5\(85\(:5\(;E\(="!I<R!A(&9I;&4O9&ER96-T
  824. + M;W)Y(&UA:6YT96YA;F-E('5T:6QI='D@=&AA=" @8V]M8FEN97,@('1H92 @
  825. + M9G5N8RT*(" @("!T:6]N86QI='D@;V8@;6%N>2!W96QL+6MN;W=N(%5N:7@@
  826. + M=71I;&ET:65S+"!A9&1S('-O;64@;F5W(&-A<&%B:6QI=&EE<RP*(" @("!A
  827. + M;F0@<&%C:V%G97,@=&AE;2!I;G1O(&$@9G5L;"US8W)E96X@:6YT97)F86-E
  828. + M('1H870@9VEV97,@>6]U('1H92 @8V%P82T*(" @("!B:6QI='D@;V8@=V]R
  829. + M:VEN9R!W:71H(&5N=&ER92!D:7)E8W1O<FEE<R!A="!O;F4@=&EM92!I;G-T
  830. + M96%D(&]F('=O<FMI;F<*(" @("!W:71H(&$@9F5W(&9I;&5S(&%N9"!H879I
  831. + M;F<@=&\@<G5N(%\(;%\(<R@Q*2!T;R!S964@=&AE(&-U<G)E;G0@<W1A=&4@
  832. + M;V8@=&AE"B @(" @9&ER96-T;W)Y+@H*(" @("!$:7)E8W1O<FEE<R!A<F4@
  833. + M<')E<V5N=&5D(&%S(&$@<V5R:65S(&]F(&]N92!O<B!M;W)E('-C<F5E;G,L
  834. + M(&UA:VEN9R @:70*(" @("!P;W-S:6)L92 @=&\@(&%S<V]C:6%T92 @:6YD
  835. + M:79I9'5A;" @8V]M;6%N9',@('=I=&@@96%C:"!F:6QE+V1I<F5C=&]R>2X*
  836. + M(" @("!4:&5S92!C;VUM86YD<R!A<F4@;F]T(&%C='5A;&QY('!E<F9O<FUE
  837. + M9"!U;G1I;"!T:&4@9&ER96-T;W)Y("!I<R @(F5X92T*(" @("!C=71E9"(@
  838. + M(&%N9"!T:&5N(&%L;"!O9B!T:&4@8V]M;6%N9',@:6X@=&AE(&1I<F5C=&]R
  839. + M>2!W:6QL(&)E('!E<F9O<FUE9"X*(" @("!4:&ES(&%L;&]W<R!P;&5N='D@
  840. + M;V8@=&EM92!T;R!C:&%N9V4@;W(@8V%N8V5L(&-O;6UA;F1S('=I=&@@(&EN
  841. + M9&EV:61U86P*(" @("!F:6QE<R!B969O<F4@82!P;W-S:6)L92!C871A<W1R
  842. + M;W!H92X*"B @(" @3W1H97(@8V%P86)I;&ET:65S+"!S=6-H(&%S(&)R;W=S
  843. + M:6YG(&%N9"!E9&ET:6YG(&9I;&5S+"!C:&%N9VEN9R @9&ER96,M"B @(" @
  844. + M=&]R:65S+" @86YD("!A<W-O8VEA=&EN9R @(G1E>'0@9&5S8W)I<'1O<G,B
  845. + M('=I=&@@9FEL97,@86YD(&1I<F5C=&]R:65S"B @(" @;6%K92!I="!P;W-S
  846. + M:6)L92!M86YA9V4@;75L=&EP;&4@9FEL97,O9&ER96-T;W)I97,@<75I8VML
  847. + M>2P@96%S:6QY+" @86YD"B @(" @969F:6-I96YT;'DN"@H@("!/4%1)3TY3
  848. + M"@H@(" @("UA(" @26YC;'5D92!A;&P@9FEL97,L(&EN8VQU9&EN9R!T:&]S
  849. + M92!B96=I;FYI;F<@=VET:"!A('!E<FEO9" H+BDN"@H@(" @("UC(" @07-K
  850. + M(&9O<B!C;VYF:7)M871I;VX@8F5F;W)E(&5896-U=&EN9R!C;VUM86YD<R!I
  851. + M;B!A(&1I<F5C=&]R>2X*"B @(" @+60@("!);F-L=61E(&1A=&4@9FEE;&0@
  852. + M9F]R(&9I;&5S+@H*(" @(" M9B @($EN8VQU9&4@9G5L;"!I;F9O<FUA=&EO
  853. + M;B!F;W(@9FEL97,N("!);7!L:65S("UO9&=S<"X*"B @(" @+6<@("!);F-L
  854. + M=61E(&=R;W5P(&YA;64@9F]R(&9I;&5S+@H*(" @(" M;R @($EN8VQU9&4@
  855. + M;W=N97(@9FEE;&0@9F]R(&9I;&5S+@H*(" @(" M<" @($EN8VQU9&4@<')O
  856. + M=&5C=&EO;B H;6]D92D@9FEE;&0@9F]R(&9I;&5S+@H*(" @(" M<R @($EN
  857. + M8VQU9&4@<VEZ92 H:6X@8GET97,I(&9I96QD(&9O<B!F:6QE<RX*"B @(" @
  858. + M+70@("!3=&%R="!U<"!I;B!T97AT(&UO9&4N("!)9B!M86EN="YT9&8@(&1O
  859. + M97,@(&YO=" @97AI<W0@(&EN("!C=7)R96YT"B @(" @(" @("!D:7)E8W1O
  860. + M<GDL('1H:7,@9FQA9R!I<R!I9VYO<F5D+@H*(" @(" M02 @($%U=&\M861V
  861. + M86YC92!T:&4@8W5R<V]R(&]N($1E;&5T92!O<B!5;FUA<FL@8V]M;6%N9',N
  862. + M"@H@(" @("U&(" @36%R:W,@9&ER96-T;W)I97,@=VET:"!T<F%I;&EN9R!S
  863. + M;&%S:" H+RDL('-O8VME=',@=VET:"!A("!T<F%I;&EN9PH@(" @(" @(" @
  864. + M97%U86P@('-I9VX@("@]*2P@('-Y;6)O;&EC("!L:6YK<R!W:71H(&$@=')A
  865. + M:6QI;F<@870@<VEG;B H0"DL(&%N9 H@(" @(" @(" @97AE8W5T86)L92!F
  866. + M:6QE<R!W:71H(&$@=')A:6QI;F<@87-T97)I<VL@*"HI+@H*"@H@(" @(" @
  867. + M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
  868. + M(" @(" @(" @(" @(" @(" @(" @(" @,0H*"@H*"@H@("!-04E.5"@Q*2 @
  869. + M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
  870. + M(" @(" @(" @,2!*86X@,3DY,@H*"B @(" @+5-?"'-?"&]?"')?"'0M7PAF
  871. + M7PAI7PAE7PAL7PAD"B @(" @(" @4V]R="!F:6QE<R!B>2!S;W)T+69I96QD
  872. + M.R!L96=A;" @=F%L=64@(&%R93H@('-I>F4L("!D871E+" @9FEL96YA;64N
  873. + M"B @(" @(" @1&5F875L="!I<R!F:6QE;F%M92X*"B @($1)4U!,05D*(" @
  874. + M("!4:&4@<V-R965N(&ES(&1I=FED960@:6YT;R!T:')E92 @<F5G:6]N<RX@
  875. + M("!4:&4@(&9I<G-T("!R96=I;VX@(&ES("!T:&4*(" @("!D:7)E8W1O<GD@
  876. + M('-P96-I9FEC871I;VX@=VEN9&]W+"!A;&]N9R!T:&4@=&]P(&]F('1H92!S
  877. + M8W)E96XN("!4:&ES('=I;BT*(" @("!D;W<@:7,@='=O(&QI;F5S(&%N9"!C
  878. + M;VYT86EN<SH*"B @(" @;R @("!4:&4@8W5R<F5N="!D:7)E8W1O<GD@<W!E
  879. + M8VEF:6-A=&EO;BX@($EF('1H92!C=7)R96YT(&1I<F5C=&]R>2!I<R!A"B @
  880. + M(" @(" @("!D97-C96YD86YT("!O9B!Y;W5R(&AO;64@9&ER96-T;W)Y+"!T
  881. + M:&4@:&]M92!D:7)E8W1O<GD@<&]R=&EO;B!W:6QL"B @(" @(" @("!N;W0@
  882. + M8F4@<W!E8VEF:65D(&EN(&]R9&5R('1O('-A=F4@<W!A8V4N("!)9B!T:&4@
  883. + M8W5R<F5N=" @9&ER96-T;W)Y"B @(" @(" @("!I<R @>6]U<B @:&]M92 @
  884. + M9&ER96-T;W)Y+"!T:&4@9G5L;"!D:7)E8W1O<GD@<W!E8VEF:6-A=&EO;B!W
  885. + M:6QL(&)E"B @(" @(" @("!U<V5D+@H*(" @("!O(" @(%1H92!C=7)R96YT
  886. + M('!A9V4@86YD('1H92!T;W1A;"!N=6UB97(@;V8@<&%G97,@:6X@=&AE(&1I
  887. + M<F5C=&]R>2X*"B @(" @;R @("!4:&4@=&5X="!D97-C<FEP=&]R(&9O<B!T
  888. + M:&4@9&ER96-T;W)Y("AI9B!Y;W4@87)E(&EN(%1E>'0@;6]D92DN"@H@(" @
  889. + M(%1H92!M:61D;&4@<V5C=&EO;B!I<R!T:&4@;6%I;B @<V-R965N+" @86YD
  890. + M("!W:6QL("!C;VYT86EN("!I;F9O<FUA=&EO;@H@(" @(&%B;W5T("!T:&4@
  891. + M:6YD:79I9'5A;"!F:6QE<R!A;F0@9&ER96-T;W)I97,N("!%86-H(&9I;&4O
  892. + M9&ER96-T;W)Y(&]N('1H90H@(" @('-C<F5E;B!O8V-U<&EE<R!A(")S;&]T
  893. + M(BX@($5A8V@@9FEL92!S;&]T("!C86X@(&AA=F4@(&1I9F9E<F5N=" @8VAA
  894. + M<F%C+0H@(" @('1E<FES=&EC<RP@9&5P96YD:6YG(&]N(&9I;&5N86UE(&QE
  895. + M;F=T:"!A;F0@8V]M;6%N9',N"@H@(" @(&\@(" @268@9F]R(&%N>2!R96%S
  896. + M;VX@=&AE(&9U;&P@9FEL96YA;64@;V8@82!F:6QE('=O;B=T(&9I="!I;B @
  897. + M82 @9FEL90H@(" @(" @(" @<VQO="P@:70@=VEL;"!B92!F;&%G9V5D('=I
  898. + M=&@@86X@87-T97)I<VLN"@H@(" @(&\@(" @268@=&AE(&9I;&4@:&%S("!A
  899. + M;GD@(&-O;6UA;F1S("!A<W-O8VEA=&5D("!W:71H("!I="P@(&ET("!W:6QL
  900. + M("!B90H@(" @(" @(" @9&ES<&QA>65D("!I;B @8F]L9" @*&]R('!O<W-I
  901. + M8FQY(')E=F5R<V4L(&EF('EO=7(@=&5R;6EN86P@9&]E<VXG= H@(" @(" @
  902. + M(" @<W5P<&]R="!B;VQD:6YG*2X@($EF('1H92!F:6QE(&AA<R @8F5E;B @
  903. + M;6%R:V5D("!F;W(@(&1E;&5T:6]N+" @80H@(" @(" @(" @<W1R:6YG('-I
  904. + M9VYI9GEI;F<@<W5C:"!W:6QL(&%L<V\@87!P96%R+@H*(" @("!4:&4@8F]T
  905. + M=&]M('-E8W1I;VX@:7,@('1H92 @;W!T:6]N("!L:6YE("!T:&%T("!W:6QL
  906. + M("!D:7-P;&%Y("!T:&4@(&UO<W0*(" @("!C;VUM;VYL>2UU<V5D("!C;VUM
  907. + M86YD<R!W:71H('1H92!C:&%R86-T97(@=7-E9"!T;R!I;G9O:V4@=&AE;2!D
  908. + M:7-P;&%Y960*(" @("!I;B!B;VQD("AO<B!R979E<G-E*2X@(%1H92!N=6UB
  909. + M97(@;V8@(&9I;&5S("!A;F0@('1H92 @=&]T86P@(&YU;6)E<B @;V8*(" @
  910. + M("!B;&]C:W,@:6X@=&AE(&1I<F5C=&]R>2!A<F4@86QS;R!D:7-P;&%Y960N
  911. + M"@H@("!&14%455)%4PH@(" @($UO=FEN9R!!<F]U;F0N"@H@(" @(%1H97)E
  912. + M(&%R92!A(&YU;6)E<B!O9B!D:69F97)E;G0@=V%Y<R @=&\@(&UO=F4@(&%R
  913. + M;W5N9" @=&AE("!S8W)E96X@(&%N9 H@(" @(&-H86YG92!T:&4@8W5R<F5N
  914. + M="!S8W)E96XN("!4:&4@9F]L;&]W:6YG('1A8FQE(&1E<V-R:6)E<R!T:&4@
  915. + M:V5Y<W1R;VME<PH@(" @('1H870@8V%N(&)E('5S960[(&)E(&%W87)E('1H
  916. + M870@;F]T(&%L;"!K97ES(&UA>2 @8F4@(&1E9FEN960@(&]N("!E=F5R>0H@
  917. + M(" @('1E<FUI;F%L+B @268@=&AE<F4@:7,@82!K97D@=&AA="!L;V]K<R!L
  918. + M:6ME(&ET(&UI9VAT('=O<FLL('1R>2!I="X@.BTI"@H@(" @(')I9VAT("AM
  919. + M;W9E(')I9VAT(&]N92!C;VQU;6XI"B @(" @(" @("!L+"!2:6=H="!!<G)O
  920. + M=RP@4W!A8V4L(%1A8BP@1W)E871E<B!4:&%N(#X*"B @(" @;&5F=" H;6]V
  921. + M92!L969T(&]N92!C;VQU;6XI"B @(" @(" @("!H+"!,969T($%R<F]W+"!,
  922. + M97-S(%1H86X@/ H*(" @("!U<" H;6]V92!U<"!O;F4@<F]W*0H@(" @(" @
  923. + M(" @:RP@57 @07)R;W<L($-A<F5T(%X*"@H*(" @,@H*"@H*"@H@(" Q($IA
  924. + M;B Q.3DR(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
  925. + M(" @(" @(" @(" @(" @("!-04E.5"@Q*0H*"B @(" @9&]W;B H;6]V92!D
  926. + M;W=N(&]N92!R;W<I"B @(" @(" @("!J+"!$;W=N($%R<F]W"@H@(" @('!L
  927. + M=7,@<&%G92 H9V\@=&\@;F5X="!S8W)E96X@:6X@9&ER96-T;W)Y*0H@(" @
  928. + M(" @(" @*RP@/2P@3F5X="!38W)E96XL(&-O;G1R;VPM1@H*(" @("!M:6YU
  929. + M<R!P86=E("AG;R!T;R!P<F5V:6]U<R!S8W)E96X@:6X@9&ER96-T;W)Y*0H@
  930. + M(" @(" @(" @+2P@7RP@4')E=FEO=7,@4V-R965N+"!C;VYT<F]L+4(*"B @
  931. + M(" @9V\@=&\@<&%G92 H9V\@=&\@82!S<&5C:69I8R!S8W)E96X@:6X@9&ER
  932. + M96-T;W)Y*0H@(" @(" @(" @8V]N=')O;"U'.R!P<F]M<'0@=VEL;"!A<'!E
  933. + M87(@9F]R('-P96-I9FEC('!A9V4@;G5M8F5R+@H*(" @("!&:6QE($-O;6UA
  934. + M;F1S+@H*(" @("!%86-H(&9I;&4O9&ER96-T;W)Y(&-A;B!O;F4@;W(@;6]R
  935. + M92!I;F1I=FED=6%L(&-O;6UA;F1S(&%S<V]C:6%T960@('=I=&@*(" @("!I
  936. + M="X@("!4:&5S92 @8V]M;6%N9',@=VEL;"!N;W0@8F4@<&5R9F]R;65D('5N
  937. + M=&EL('EO=2!A8W1U86QL>2 B97AE8W5T92(*(" @("!T:&5M('=I=&@@=&AE
  938. + M(%AE8W5T92!C;VUM86YD(" H<V5E("!B96QO=RDN(" @5&\@(&%D9" @82 @
  939. + M8V]M;6%N9" @=&\@(&$*(" @("!F:6QE+V1I<F5C=&]R>2P@<&]S:71I;VX@
  940. + M=&AE(&-U<G-O<B!N97AT('1O(&ET(&%N9"!P<F5S<R!T:&4@87!P<F]P<FEA
  941. + M=&4*(" @("!K97DN("!9;W4@=VEL;"!B92!P<F]M<'1E9"!F;W(@86YY(&YE
  942. + M8V5S<V%R>2!I;F9O<FUA=&EO;BX*"B @(" @5&\@<V5E('=H870@8V]M;6%N
  943. + M9',@87)E("!A<W-O8VEA=&5D("!W:71H("!A("!F:6QE+V1I<F5C=&]R>2P@
  944. + M('5S92 @=&AE"B @(" @26YF;W)M871I;VX@8V]M;6%N9"X*"B @(" @5&AE
  945. + M(&EN9&EV:61U86P@8V]M;6%N9',@86YD(&%P<')O<')I871E(&ME>7-T<F]K
  946. + M97,@87)E.@H*(" @("!#;W!Y(&9I;&4@*$,@;W(@8RD*(" @(" @(" @($-O
  947. + M<'D@9FEL92!T;R!A;F]T:&5R(&9I;&4N("!);G9A;&ED(&9O<B!D:7)E8W1O
  948. + M<FEE<RX*"B @(" @1&5L971E(&9I;&4@*$0L(&0L(%)E;6]V92D*(" @(" @
  949. + M(" @($1E;&5T92!F:6QE+V1I<F5C=&]R>2X*"B @(" @4F5N86UE(&9I;&4@
  950. + M*%(@;W(@<BD*(" @(" @(" @(%)E;F%M92!T:&4@9FEL92!T;R!A(&YE=R!F
  951. + M:6QE;F%M92X*"B @(" @0VAA;F=E(&=R;W5P("A'(&]R(&<I"B @(" @(" @
  952. + M("!#:&%N9V4@9W)O=7 @;V8@9FEL92]D:7)E8W1O<GDN("!5<W5A;&QY(&]N
  953. + M;'D@=V]R:W,@(&9O<B @<W5P97)U<V5R"B @(" @(" @("!O;B!N;VXM4WES
  954. + M=&5M(%8@;6%C:&EN97,N"@H@(" @($-H86YG92!O=VYE<B H;RD*(" @(" @
  955. + M(" @($-H86YG92!O=VYE<B!O9B!F:6QE+V1I<F5C=&]R>2X@(%5S=6%L;'D@
  956. + M;VYL>2!W;W)K<R @9F]R("!S=7!E<G5S97(*(" @(" @(" @(&]N(&YO;BU3
  957. + M>7-T96T@5B!M86-H:6YE<RX*"B @(" @0VAA;F=E('!R;W1E8W1I;VX@*% @
  958. + M;W(@<"D*(" @(" @(" @($-H86YG92!T:&4@<')O=&5C=&EO;B H;6]D92D@
  959. + M;V8@82!F:6QE+V1I<F5C=&]R>2X@(%1H92!M;V1E(&-A;B @8F4*(" @(" @
  960. + M(" @('-P96-I9FEE9" @:6X@(&]N92 @;V8@='=O(&9O<FUS.B @,2D@=&AE
  961. + M('=A>2!I="!A<'!E87)S(&]N('-C<F5E;BP*(" @(" @(" @(&DN92X@<G<M
  962. + M<BTM<BTM+"!O<B R*2!O8W1A;"!F;W)M870L(&DN92X@-S4U+@H*(" @("!2
  963. + M97!E870@<')E=FEO=7,@9FEL92!C;VUM86YD("@N*0H@(" @(" @(" @4F5P
  964. + M96%T('1H92!L87-T(&9I;&4@8V]M;6%N9"!S<&5C:69I960@:6X@=&AE(&-U
  965. + M<G)E;G0@9&ER96-T;W)Y+@H*(" @("!497AT(&1E<V-R:7!T;W(@*%0@;W(@
  966. + M="D*(" @(" @(" @($%D9"]C:&%N9V4@82!T97AT(&1E<V-R:7!T;W(@9F]R
  967. + M(&$@9FEL92]D:7)E8W1O<GDN("!3964@(&)E;&]W("!F;W(*(" @(" @(" @
  968. + M(&UO<F4@:6YF;W)M871I;VX@86)O=70@=&5X="!D97-C<FEP=&]R<RX*"@H*
  969. + M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
  970. + M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(#,*"@H*"@H*(" @34%)
  971. + M3E0H,2D@(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
  972. + M(" @(" @(" @(" @(" @(#$@2F%N(#$Y.3(*"@H@(" @($]T:&5R($-O;6UA
  973. + M;F1S+@H*(" @("!/=&AE<B!C;VUM86YD<R!A;F0@;F]N+65896-U=&%B;&4@
  974. + M9FEL92!C;VUM86YD<R!A=F%I;&%B;&4@:6X@7PAM7PAA7PAI7PAN7PAT(&%R
  975. + M93H*"B @(" @17-C87!E('1O('-H96QL("@A*0H@(" @(" @(" @4W1A<G1S
  976. + M('5P(&$@<W5B<VAE;&PN("!%>&ET:6YG('1H92!S=6)S:&5L;"!W:6QL(&-A
  977. + M=7-E(&$@<F5T=7)N("!T;PH@(" @(" @(" @7PAM7PAA7PAI7PAN7PAT+@H*
  978. + M(" @("!396%R8V@@9F]R(&$@9FEL92 H+RD*(" @(" @(" @(%-E87)C:"!F
  979. + M;W(@82!F:6QE;F%M92!I;B!T:&4@8W5R<F5N="!D:7)E8W1O<GDN("!!('!R
  980. + M969I>"!S96%R8V@@:7,*(" @(" @(" @(&1O;F4@<V\@;VYL>2!E;F]U9V@@
  981. + M;V8@=&AE(&9I;&5N86UE('1O(&ED96YT:69Y(&ET(&ES(&YE8V5S<V%R>2X*
  982. + M"B @(" @4F5B=6EL9"!D:7)E8W1O<GD@*&-O;G1R;VPM4BD*(" @(" @(" @
  983. + M(%)E8G5I;&0@=&AE(&-U<G)E;G0@9&ER96-T;W)Y+"!D:7-C87)D:6YG(&%L
  984. + M;"!F:6QE(&-O;6UA;F1S(&9O<B!T:&4*(" @(" @(" @(&1I<F5C=&]R>2X@
  985. + M("!4:&ES("!I<R @<V]M971I;65S("!N96-E<W-A<GD@:6X@=F5R>2!V;VQA
  986. + M=&EL92!D:7)E8RT*(" @(" @(" @('1O<FEE<R!W:&5R92!T:&4@:6YF;W)M
  987. + M871I;VX@:6X@7PAM7PAA7PAI7PAN7PAT(&UI9VAT(&YO="!B92!I;B!S>6YC
  988. + M('=I=&@@=&AE"B @(" @(" @("!C=7)R96YT('-T871E(&]F('1H92!D:7)E
  989. + M8W1O<GDN"@H@(" @($5D:70@9FEL92 H12!O<B!E*0H@(" @(" @(" @161I
  990. + M="!T:&4@8W5R<F5N="!F:6QE+B @5&AE($5$251/4B @96YV:7)O;FUE;G0@
  991. + M('9A<FEA8FQE("!W:6QL("!B90H@(" @(" @(" @=7-E9"!F;W(@=&AE(&5D
  992. + M:71O<B!I9B!I="!I<R!D969I;F5D+B @5&AE(&1E9F%U;'0@:7,@=FDN"@H@
  993. + M(" @($9I;FES:"!D:7)E8W1O<GD@*$8@;W(@9BD*(" @(" @(" @($5X:70@
  994. + M=&AE(&-U<G)E;G0@9&ER96-T;W)Y(&%N9"!R971U<FX@=&\@<')E=FEO=7,@
  995. + M9&ER96-T;W)Y(&EF("!O;F4*(" @(" @(" @(&5X:7-T<RX@("!)9B!T:&4@
  996. + M8W5R<F5N="!D:7)E8W1O<GD@:7,@=&AE('1O<"UL979E;"!D:7)E8W1O<GDL
  997. + M('1H:7,*(" @(" @(" @(&ME>2!I<R!I;G9A;&ED+B @268@86YY(&-O;6UA
  998. + M;F1S(&5X:7-T(&EN("!T:&4@(&-U<G)E;G0@(&1I<F5C=&]R>2P*(" @(" @
  999. + M(" @(%\(;5\(85\(:5\(;E\(="!W:6QL(&%S:R!F;W(@8V]N9FER;6%T:6]N
  1000. + M(&)E9F]R92!L96%V:6YG('1H92!D:7)E8W1O<GDN"@H@(" @(%%U:70@*%$@
  1001. + M;W(@<2D*(" @(" @(" @($5X:70@7PAM7PAA7PAI7PAN7PAT(&EM;65D:6%T
  1002. + M96QY+B @268@9FEL92!C;VUM86YD<R!E>&ES="!I;B @7PAA7PAN7PAY("!D
  1003. + M:7)E8W1O<GDL"B @(" @(" @("!?"&U?"&%?"&E?"&Y?"'0@=VEL;"!A<VL@
  1004. + M9F]R(&-O;F9I<FUA=&EO;B!B969O<F4@<75I='1I;F<N"@H@(" @($EN9F]R
  1005. + M;6%T:6]N("A)(&]R(&DI"B @(" @(" @("!':79E(&9U;&P@(&EN9F]R;6%T
  1006. + M:6]N("!O;B @9FEL92]D:7)E8W1O<GD@(&EN8VQU9&EN9R @<VEZ92P@(&UO
  1007. + M9&4L"B @(" @(" @("!A8V-E<W,@(&1A=&4L("!M;V1I9FEC871I;VX@9&%T
  1008. + M92P@8W)E871I;VX@9&%T92P@;W=N97(L(&=R;W5P+"!T97AT"B @(" @(" @
  1009. + M("!D97-C<FEP=&]R("AI9B!A;GDI+"!A;F0@86YY(&9I;&4@8V]M;6%N9',N
  1010. + M"@H@(" @(%5N;6%R:R!F:6QE("A5(&]R('4I"B @(" @(" @("!#86YC96P@
  1011. + M86QL(&UA<FMS(&9O<B!T:&4@9FEL92]D:7)E8W1O<GDN"@H@(" @(%-E;&5C
  1012. + M="!F:6QE+V1I<F5C=&]R>2 H4RP@<RP@4V5L96-T*0H@(" @(" @(" @268@
  1013. + M4V5L96-T:6YG(&$@9FEL92P@:6YV;VME('1H92!A('!A9V5R(&]N(&ET('1O
  1014. + M(&%L;&]W('1H92!F:6QE("!T;PH@(" @(" @(" @8F4@(&)R;W=S960N("!4
  1015. + M:&4@4$%'15(@96YV:7)O;FUE;G0@=F%R:6%B;&4@:7,@8VAE8VME9"!F:7)S
  1016. + M="X@("!)9@H@(" @(" @(" @4$%'15(@:7,@;F]T('-E="P@=&AE(&1E9F%U
  1017. + M;'0@<&%G97(@9F]R('1H92!S>7-T96T@:7,@=7-E9"X@("!%>&ET+0H@(" @
  1018. + M(" @(" @:6YG('1H92!P86=E<B!W:6QL(&-A=7-E(&$@<F5T=7)N('1O(%\(
  1019. + M;5\(85\(:5\(;E\(="X*"B @(" @(" @("!)9B!396QE8W1I;F<@82!D:7)E
  1020. + M8W1O<GDL(&-H86YG92 @=&\@('1H870@(&1I<F5C=&]R>2P@('-A=FEN9R @
  1021. + M=&AE"B @(" @(" @("!S=&%T92!O9B!T:&4@8W5R<F5N="!D:7)E8W1O<GDN
  1022. + M"@H@(" @(%)E<&%I;G0*(" @(" @(" @(%)E9G)E<V@@=&AE(&-U<G)E;G0@
  1023. + M<V-R965N+@H*(" @("!/<'1I;VYS"B @(" @(" @("!#:&%N9V4@=&AE(&-U
  1024. + M<G)E;G0@8V]N9FEG=7)A=&EO;B!F;W(@;6%I;G0N("!4:&4@0V]N9FEG=7)A
  1025. + M=&EO;B!-96YU"@H*(" @- H*"@H*"@H@(" Q($IA;B Q.3DR(" @(" @(" @
  1026. + M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
  1027. + M("!-04E.5"@Q*0H*"B @(" @(" @("!W:6QL(&)E(&1I<W!L87EE9"P@<VAO
  1028. + M=VEN9R!T:&4@8W5R<F5N="!C;VYF:6=U<F%T:6]N('9A;'5E<RX@(%5S92!J
  1029. + M"B @(" @(" @("!A;F0@:R!T;R!S96QE8W0@82!P87)A;65T97(@*&]R('5S
  1030. + M92!T:&4@(')U;BUT:6UE("!A<F=U;65N=" @;&5T=&5R"B @(" @(" @(" H
  1031. + M9F]R("!E>&%M<&QE+" @9R @9F]R("!'<F]U<"DI(&%N9"!P<F5S<R!T:&4@
  1032. + M<W!A8V4@8F%R('1O('1U<FX@=&AE"B @(" @(" @("!P87)A;65T97(@;VXO
  1033. + M;V9F+B @16YT97(@8V]N=')O;"U$('1O(')E='5R;B!T;R!T:&4@(&UA:6X@
  1034. + M(&1I<W!L87DN"B @(" @(" @("!4:&4@9&ES<&QA>2!W:6QL(&)E('5P9&%T
  1035. + M960@=&\@<F5F;&5C="!T:&4@;F5W(&-O;F9I9W5R871I;VXN"@H@(" @(%1E
  1036. + M>'0@1&5S8W)I<'1O<G,N"@H@(" @(%\(;5\(85\(:5\(;E\(="!H87,@=&AE
  1037. + M(&%B:6QI='D@=&\@;6%I;G1A:6X@97AT96YD960@=&5X='5A;"!D97-C<FEP
  1038. + M=&]R<R!F;W(@9FEL97,*(" @("!W:71H:6X@(&$@(&=I=F5N("!D:7)E8W1O
  1039. + M<GDN(" @5VAA=" @=&5X="!D97-C<FEP=&]R<R!D;R!I<R!A;&QO=R!Y;W4@
  1040. + M=&\*(" @("!A<W-O8VEA=&4@=7 @=&\@82 T,"UC:&%R86-T97(@9&5S8W)I
  1041. + M<'1I;VX@=VET:"!A;GD@9FEL92!I;B!A(&1I<F5C=&]R>2P*(" @("!A;&]N
  1042. + M9R @=VET:" @:&%V:6YG("!U<" @=&\@(&$@-S M8VAA<F%C=&5R(&1E<V-R
  1043. + M:7!T:6]N(&]F('1H92!D:7)E8W1O<GD*(" @("!I='-E;&8N("!4:&ES(&ES
  1044. + M('!A<G1I8W5L87)L>2!U<V5F=6P@=VAE;B!M86EN=&%I;FEN9R!D:7)E8W1O
  1045. + M<FEE<R!W:71H(&$*(" @("!L87)G92!N=6UB97(@;V8@9FEL97,N("!4;R!U
  1046. + M<V4@=&AE(&5X=&5N9&5D(&9I;&4@9&5S8W)I<'1O<B!F86-I;&ET>2P@9&\*
  1047. + M(" @("!T:&4@9F]L;&]W:6YG.@H*(" @(" Q+B @(%)U;B!?"&U?"&%?"&E?
  1048. + M"&Y?"'0N"@H@(" @(#(N(" @5'EP92!A(%0@*%1E>'0I(&-O;6UA;F0N"@H@
  1049. + M(" @(#,N(" @7PAM7PAA7PAI7PAN7PAT('=I;&P@87-K"B @(" @(" @("!4
  1050. + M97AT(&1E<V-R:7!T;W(@9FEL92!M86EN="YT9&8@9&]E<R!N;W0@97AI<W0N
  1051. + M("!#<F5A=&4@:70@6WE=/PH*(" @(" T+B @(%)E<W!O;F0@=VET:"!S;VUE
  1052. + M=&AI;F<@;W1H97(@=&AA;B @3B @;W(@(&X@(&9O<B @=&AE("!F:6QE("!T
  1053. + M;R @8F4*(" @(" @(" @(&-R96%T960N"@H@(" @(#4N(" @7PAM7PAA7PAI
  1054. + M7PAN7PAT('=I;&P@=&AE;B!A<VL*(" @(" @(" @(%1E>'0@9&5S8W)I<'1O
  1055. + M<B!F;W(@9&ER96-T;W)Y.@H*(" @(" V+B @($5N=&5R(&$@=&5X="!D97-C
  1056. + M<FEP=&]R("AU<"!T;R W,"!C:&%R86-T97)S*2 @9F]R("!T:&4@($1)4D5#
  1057. + M5$]262X*(" @(" @(" @(%1H:7,@=VEL;"!S97)V92!A<R!A(&1E<V-R:7!T
  1058. + M;W(@;V8@=&AE(&=R;W5P(&]F(&9I;&5S(&EN('1H92!$25)%0RT*(" @(" @
  1059. + M(" @(%1/4ED@86YD('=I;&P@87!P96%R(&%T('1H92!T;W @;V8@=&AE('-C
  1060. + M<F5E;BX*"B @(" @-RX@("!?"&U?"&%?"&E?"&Y?"'0@=VEL;"!T:&5N(&%S
  1061. + M:PH@(" @(" @(" @0V]M;6%N9',@=VEL;"!B92!W:7!E9"!O=70N("!E6&5C
  1062. + M=71E('1H96T_(%MY70H*(" @(" X+B @($5N=&5R('-O;65T:&EN9R!O=&AE
  1063. + M<B!T:&%N($X@;W(@;B!T;R!H879E(&%L;"!O9B!T:&4@(&-U<G)E;G0@(&9I
  1064. + M;&4*(" @(" @(" @(&-O;6UA;F1S(&5896-U=&5D('=H96X@=&AE('1E>'0@
  1065. + M9&5S8W)I<'1O<B!F:6QE(&UA:6YT+G1D9BX*"B @(" @.2X@("!?"&U?"&%?
  1066. + M"&E?"&Y?"'0@=VEL;" @<F5B=6EL9" @=&AE("!D:7)E8W1O<GD@(&EN9F]R
  1067. + M;6%T:6]N("!A;F0@(')E8G5I;&0@('1H90H@(" @(" @(" @<V-R965N+" @
  1068. + M:6YC;'5D:6YG("!T:&4@=&5X="!D97-C<FEP=&]R<R!F;W(@=&AE(&1I<F5C
  1069. + M=&]R>2!A;F0@=&5X= H@(" @(" @(" @9&5S8W)I<'1O<B!F:6QE(&ET<V5L
  1070. + M9BP@<')O=FED960@=&AE>2!W:6QL(&9I="!O;B!T:&4@<V-R965N+B @179E
  1071. + M;@H@(" @(" @(" @:68@('1H97D@8V%N)W0@9FET(&]N('1H92!S8W)E96XL
  1072. + M('1H97D@87)E('-T:6QL(&%V86EL86)L92!F;W(@96%C: H@(" @(" @(" @
  1073. + M9FEL92!V:6$@=&AE($D@*$EN9F\I(&-O;6UA;F0N"@H@(" @(%1H92!T97AT
  1074. + M(&1E<V-R:7!T;W(@9FEL92!H87,@;F]W(&)E96X@8W)E871E9"X@(%1O(&%D
  1075. + M9"!O<B!M;V1I9GD@82 @=&5X= H@(" @(&1E<V-R:7!T;W(@(&9O<B @82!F
  1076. + M:6QE+"!M;W9E('1O(&$@=&AE(&9I;&4@86YD('1Y<&4@82!4("A497AT*2!C
  1077. + M;VUM86YD+@H@(" @(%EO=2!W:6QL(&)E('!R;VUP=&5D(&9O<B!T:&4@=&5X
  1078. + M="!D97-C<FEP=&]R(&9O<B!T:&4@9FEL92X@($ET("!W:6QL("!B90H@(" @
  1079. + M('5P9&%T960@=VAE;B!Y;W4@6&5C=71E('1H92!C;VUM86YD<R!F;W(@=&AE
  1080. + M(&1I<F5C=&]R>2X*"B @(" @3VX@<W5B<V5Q=65N="!U<V5S(&]F(%\(;5\(
  1081. + M85\(:5\(;E\(="P@=&5X="!M;V1E(&UA>2!B92 @96YT97)E9" @8GD@(&]N
  1082. + M92 @;V8@('1W;PH@(" @(&UE=&AO9',Z"@H@(" @(#$N(" @57-E('1H92 M
  1083. + M="!O;B!T:&4@8V]M;6%N9"!L:6YE+B @5&AI<R!W:6QL(&-A=7-E(%\(;5\(
  1084. + M85\(:5\(;E\(="!T;R!U<V4@('1E>'0*"@H@(" @(" @(" @(" @(" @(" @
  1085. + M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
  1086. + M(" @(" @(" @(" @-0H*"@H*"@H@("!-04E.5"@Q*2 @(" @(" @(" @(" @
  1087. + M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @,2!*
  1088. + M86X@,3DY,@H*"B @(" @(" @("!M;V1E(&EF('1H92!F:6QE(&UA:6YT+G1D
  1089. + M9B!E>&ES=',N"@H@(" @(#(N(" @57-E('1H92!4("A497AT*2!C;VUM86YD
  1090. + M+B @06=A:6XL(&EF(&UA:6YT+G1D9B!E>&ES=',L("!?"&U?"&%?"&E?"&Y?
  1091. + M"'0@('=I;&P*(" @(" @(" @(&5N=&5R('1E>'0@;6]D92X*"B @(" @16ET
  1092. + M:&5R('=A>2P@;VYC92!I;B!T97AT(&UO9&4L('1H92!4("A497AT*2!C;VUM
  1093. + M86YD(&UA>2!B92!U<V5D("!T;R @861D"B @(" @;W(@8VAA;F=E('1H92!T
  1094. + M97AT(&1E<V-R:7!T;W(@9F]R(&$@9FEL92X*"B @($5.5DE23TY-14Y4"B @
  1095. + M(" @141)5$]2(" @=7-E9"!F;W(@161I="!C;VUM86YD"B @(" @4$%'15(@
  1096. + M(" @<&%G97(@=&\@=7-E(&9O<B!396QE8W0@8V]M;6%N9"!O;B!A(&9I;&4*
  1097. + M(" @("!32$5,3" @("!S:&5L;"!T;R!I;G9O:V4@9F]R('-H96QL(&5S8V%P
  1098. + M97,*"B @(%)%4U1224-424].4PH@(" @($-O=6QD(&5X<&5R:65N8V4@=6YP
  1099. + M<F5D:6-T86)L92!R97-U;'1S(&]N('1E<FUI;F%L<R!W:71H('1H870@(&%R
  1100. + M92 @;&5S<PH@(" @('1H86X@,C0@6" X,"X*"B @(" @5&AE<F4@:7,@;F\@
  1101. + M;&EM:71A=&EO;B!O;B!T:&4@;G5M8F5R(&]F(&9I;&5S(&EN(&$@9&ER96-T
  1102. + M;W)Y('1H870@(%\(;5\(85\(:5\(;E\(= H@(" @(&-A;B @:&%N9&QE(&]T
  1103. + M:&5R('1H86X@=&AE(&%M;W5N="!O9B!M96UO<GD@=&AA="!I="!C86X@<F5Q
  1104. + M=65S="!F<F]M('1H90H@(" @(&]P97)A=&EN9R!S>7-T96TN"@H@(" @($%S
  1105. + M(&]F('1H:7,@=W)I=&EN9RP@=&AE(&9U;F-T:6]N(&%N9"!A<G)O=R!K97ES
  1106. + M("!W;VXG=" @=V]R:R @;VX@(%5L=')I> H@(" @(#,N,"X@.BTH"@H@("!3
  1107. + M144@04Q33PH@(" @(%\(8U\(:%\(;5\(;U\(9"@Q*2P@7PAC7PAH7PAG7PAR
  1108. + M7PAP*#$I+"!?"&-?"&A?"&]?"'=?"&XH,2DL("!?"&-?"'-?"&@H,2DL("!?
  1109. + M"&U?"&]?"')?"&4H,2DL("!?"&Q?"',H,2DL("!?"&U?"'8H,2DL("!?"')?
  1110. + M"&TH,2DL"B @(" @7PAS7PAH*#$I+@H*(" @05542$]2"B @(" @3&5O;F%R
  1111. + M9"!*+B!096ER8V4@0"!797-T97)N($UI8VAI9V%N(%5N:79E<G-I='D@06-A
  1112. + M9&5M:6,@0V]M<'5T:6YG("!397(M"B @(" @=FEC97,@*'!E:7)C94!G=RYW
  1113. + M;6EC:"YE9'4I+@H*"@H*"@H*"@H*"@H*"@H*"@H*"@H*"@H*(" @-@H*"ALY
  1114. + "&SEC
  1115. +  
  1116. + end
  1117. *** ../D.maint.1.0/mark.c    Wed Oct  7 13:53:00 1992
  1118. --- mark.c    Wed Oct  7 13:40:18 1992
  1119. ***************
  1120. *** 45,48 ****
  1121. --- 45,49 ----
  1122.   /******************************************************************************/
  1123.   
  1124. + #include "maint.h"
  1125.   #include <ctype.h>
  1126.   #include <math.h>
  1127. ***************
  1128. *** 56,60 ****
  1129.   #include <grp.h>
  1130.   #include <pwd.h>
  1131. - #include "maint.h"
  1132.   
  1133.   /******************************************************************************/
  1134. --- 57,60 ----
  1135. ***************
  1136. *** 230,234 ****
  1137.                       /*******   FORMAL  PARAMETERS   *******/
  1138.        WINDOW      *window;        /* where to read/write              */
  1139. ! register ENT_DEF  *ent;            /* entry for file to be deleted          */
  1140.        u_short  command;        /* either RENAME or COPY          */
  1141.        char      *prev_str;        /* string to use from mark_repeat()   */
  1142. --- 230,234 ----
  1143.                       /*******   FORMAL  PARAMETERS   *******/
  1144.        WINDOW      *window;        /* where to read/write              */
  1145. ! register ENT_DEF  *ent;            /* entry for file to be copy/renamed  */
  1146.        u_short  command;        /* either RENAME or COPY          */
  1147.        char      *prev_str;        /* string to use from mark_repeat()   */
  1148. ***************
  1149. *** 267,272 ****
  1150.         strcpy(buf,prev_str);        /* use string from mark_repeat()      */
  1151.   
  1152. !    length = strlen(buf);
  1153.   
  1154.      /* ok, we have a filename; now determine if we need to allocate a command
  1155.       * structure for this file or if one already exists from a previous command
  1156. --- 267,276 ----
  1157.         strcpy(buf,prev_str);        /* use string from mark_repeat()      */
  1158.   
  1159. !    /* the new name could be a directory, and then we will need room for
  1160. !     * the original file name, a slash, and a NUL
  1161. !     */
  1162.   
  1163. +    length = strlen(buf) + strlen(ent->filename) + 2;
  1164.      /* ok, we have a filename; now determine if we need to allocate a command
  1165.       * structure for this file or if one already exists from a previous command
  1166. ***************
  1167. *** 305,313 ****
  1168.           free(tptr->copy_name);
  1169.   
  1170. !      /* now allocate some new memory to hold the longer filename
  1171. !       * AND the nul character
  1172. !       */
  1173.   
  1174. !      tptr->copy_name = (char *) malloc((u_int) (length + 1));
  1175.   
  1176.        if(tptr->copy_name == NULL)
  1177. --- 309,315 ----
  1178.           free(tptr->copy_name);
  1179.   
  1180. !      /* now allocate some new memory to hold the longer filename */
  1181.   
  1182. !      tptr->copy_name = (char *) malloc((u_int) length);
  1183.   
  1184.        if(tptr->copy_name == NULL)
  1185. ***************
  1186. *** 333,341 ****
  1187.           free(tptr->ren_name);
  1188.   
  1189. !      /* now allocate some new memory to hold the longer filename
  1190. !       * AND the nul character
  1191. !       */
  1192.   
  1193. !      tptr->ren_name = (char *) malloc((u_int) (length + 1));
  1194.   
  1195.        if(tptr->ren_name == NULL)
  1196. --- 335,341 ----
  1197.           free(tptr->ren_name);
  1198.   
  1199. !      /* now allocate some new memory to hold the longer filename */
  1200.   
  1201. !      tptr->ren_name = (char *) malloc((u_int) length);
  1202.   
  1203.        if(tptr->ren_name == NULL)
  1204. *** ../D.maint.1.0/mem.c    Wed Oct  7 13:52:52 1992
  1205. --- mem.c    Wed Oct  7 13:40:21 1992
  1206. ***************
  1207. *** 42,45 ****
  1208. --- 42,46 ----
  1209.   /******************************************************************************/
  1210.   
  1211. + #include "maint.h"
  1212.   #include <malloc.h>
  1213.   #if defined(SYSV) || !defined(sun)
  1214. ***************
  1215. *** 46,50 ****
  1216.   #include <stdio.h>
  1217.   #endif
  1218. - #include "maint.h"
  1219.   
  1220.   /******************************************************************************/
  1221. --- 47,50 ----
  1222. *** ../D.maint.1.0/misc.c    Wed Oct  7 13:53:07 1992
  1223. --- misc.c    Wed Oct  7 13:40:25 1992
  1224. ***************
  1225. *** 51,54 ****
  1226. --- 51,55 ----
  1227.   /******************************************************************************/
  1228.   
  1229. + #include "maint.h"
  1230.   #ifdef ultrix
  1231.   #include <cursesX.h>
  1232. ***************
  1233. *** 66,70 ****
  1234.   #include <ctype.h>
  1235.   #include <varargs.h>
  1236. - #include "maint.h"
  1237.   #include <sys/stat.h>
  1238.   
  1239. --- 67,70 ----
  1240. ***************
  1241. *** 128,132 ****
  1242.             make_ent(),
  1243.   
  1244. ! #if defined(SYSV) && !defined(sun)
  1245.             rename(),
  1246.   #endif
  1247. --- 128,132 ----
  1248.             make_ent(),
  1249.   
  1250. ! #if defined(SYSV) && !defined(sun) && !defined(SCO)
  1251.             rename(),
  1252.   #endif
  1253. ***************
  1254. *** 774,778 ****
  1255.   {    /*** get_dir ***/
  1256.                       /********   LOCAL  VARIABLES   ********/
  1257. ! #if !defined(SYSV)
  1258.   register struct      direct *dir_ent;    /* pointer to directory file entry    */
  1259.   #else
  1260. --- 774,778 ----
  1261.   {    /*** get_dir ***/
  1262.                       /********   LOCAL  VARIABLES   ********/
  1263. ! #if !defined(SYSV) && !defined(hpux) && !defined(AIX)
  1264.   register struct      direct *dir_ent;    /* pointer to directory file entry    */
  1265.   #else
  1266. ***************
  1267. *** 866,870 ****
  1268.   register DIR      *dptr;        /* pointer to directory file entry    */
  1269.   register short      count;        /* number of files in directory          */
  1270. ! #if !defined(SYSV)
  1271.   register struct      direct *dir_ent;    /* pointer to directory file entry    */
  1272.   #else
  1273. --- 866,870 ----
  1274.   register DIR      *dptr;        /* pointer to directory file entry    */
  1275.   register short      count;        /* number of files in directory          */
  1276. ! #if !defined(SYSV) && !defined(hpux) && !defined(AIX)
  1277.   register struct      direct *dir_ent;    /* pointer to directory file entry    */
  1278.   #else
  1279. ***************
  1280. *** 1035,1039 ****
  1281.        *str = 'b';            /* block special file              */
  1282.        break;
  1283. ! #if !defined(SYSV) || defined(sun)
  1284.         case(S_IFLNK):
  1285.        *str = 'l';            /* symbolic link              */
  1286. --- 1035,1039 ----
  1287.        *str = 'b';            /* block special file              */
  1288.        break;
  1289. ! #if defined(S_IFLNK)
  1290.         case(S_IFLNK):
  1291.        *str = 'l';            /* symbolic link              */
  1292. ***************
  1293. *** 1040,1043 ****
  1294. --- 1040,1047 ----
  1295.        break;
  1296.   #endif
  1297. + #if defined(S_IFSOCK)
  1298. +       case(S_IFSOCK):
  1299. +      *str = 's';            /* symbolick link              */     break;
  1300. + #endif
  1301.         default:
  1302.        *str = '-';
  1303. ***************
  1304. *** 1473,1477 ****
  1305.      switch(mode & S_IFMT)
  1306.      {
  1307. ! #if !defined(SYSV) || defined(sun)
  1308.         case(S_IFLNK):
  1309.        return(LINK);
  1310. --- 1477,1481 ----
  1311.      switch(mode & S_IFMT)
  1312.      {
  1313. ! #if defined(S_IFLNK)
  1314.         case(S_IFLNK):
  1315.        return(LINK);
  1316. ***************
  1317. *** 1485,1489 ****
  1318.         case(S_IFBLK):
  1319.        return(BLOCK);
  1320. ! #if !defined(SYSV) || defined(sun)
  1321.         case(S_IFSOCK):
  1322.        return(SOCKET);
  1323. --- 1489,1493 ----
  1324.         case(S_IFBLK):
  1325.        return(BLOCK);
  1326. ! #if defined(S_IFSOCK)
  1327.         case(S_IFSOCK):
  1328.        return(SOCKET);
  1329. ***************
  1330. *** 1637,1644 ****
  1331.        prot |= S_IFIFO;
  1332.        break;
  1333. ! #if !defined(SYSV) || defined(sun)
  1334.         case(SOCKET):
  1335.        prot |= S_IFSOCK;
  1336.        break;
  1337.         case(LINK):
  1338.        prot |= S_IFLNK;
  1339. --- 1641,1650 ----
  1340.        prot |= S_IFIFO;
  1341.        break;
  1342. ! #if defined(S_IFSOCK)
  1343.         case(SOCKET):
  1344.        prot |= S_IFSOCK;
  1345.        break;
  1346. + #endif
  1347. + #if defined(S_IFLNK)
  1348.         case(LINK):
  1349.        prot |= S_IFLNK;
  1350. ***************
  1351. *** 1685,1689 ****
  1352.        int      child,        /* pid of child process              */
  1353.             i;            /* loop and return value          */
  1354. ! #if !defined(SYSV) || defined(sun)
  1355.   union     wait      status;
  1356.   #else
  1357. --- 1691,1695 ----
  1358.        int      child,        /* pid of child process              */
  1359.             i;            /* loop and return value          */
  1360. ! #if (!defined(SYSV) || defined(sun)) && !defined(SCO) && !defined(AIX)
  1361.   union     wait      status;
  1362.   #else
  1363. ***************
  1364. *** 1704,1707 ****
  1365. --- 1710,1714 ----
  1366.         tptr++;
  1367.   
  1368. +    endwin();                /* make sure tty is reset          */
  1369.      if((child = vfork()) == 0)
  1370.      {
  1371. ***************
  1372. *** 1708,1712 ****
  1373.         /* we're in the child */
  1374.   
  1375. -       endwin();                /* make sure tty is reset          */
  1376.         execlp(shell,tptr,NULL);        /* no return from this              */
  1377.         return(FAILURE);            /* failure if we get here          */
  1378. --- 1715,1718 ----
  1379. ***************
  1380. *** 1722,1725 ****
  1381. --- 1728,1732 ----
  1382.         return(FAILURE);            /* can't fork                  */
  1383.   
  1384. +    doupdate();
  1385.      return(SUCCESS);
  1386.   
  1387. ***************
  1388. *** 1864,1868 ****
  1389.      while(num_file-- > 0)
  1390.      {
  1391. !       strcpy(dirptr->scr_name,get_name(dirptr->filename,&dirptr->name_len));
  1392.         dirptr++;
  1393.      }
  1394. --- 1871,1876 ----
  1395.      while(num_file-- > 0)
  1396.      {
  1397. !       strcpy(dirptr->scr_name,get_name(dirptr->filename,&dirptr->name_len,
  1398. !          dirptr->prot,dirptr->type));
  1399.         dirptr++;
  1400.      }
  1401. ***************
  1402. *** 2123,2129 ****
  1403.         case(S_IFBLK):
  1404.        return(BLOCK);
  1405. ! #if !defined(SYSV) || defined(sun)
  1406.         case(S_IFLNK):
  1407.        return(LINK);
  1408.         case(S_IFSOCK):
  1409.        return(SOCKET);
  1410. --- 2131,2139 ----
  1411.         case(S_IFBLK):
  1412.        return(BLOCK);
  1413. ! #if defined(S_IFLNK)
  1414.         case(S_IFLNK):
  1415.        return(LINK);
  1416. + #endif
  1417. + #if defined(S_IFSOCK)
  1418.         case(S_IFSOCK):
  1419.        return(SOCKET);
  1420. ***************
  1421. *** 2412,2416 ****
  1422.   *******************************************************************************/
  1423.   
  1424. ! #if defined(SYSV) && !defined(sun)
  1425.   
  1426.   int rename(source,dest)
  1427. --- 2422,2426 ----
  1428.   *******************************************************************************/
  1429.   
  1430. ! #if defined(SYSV) && !defined(sun) && !defined(SCO)
  1431.   
  1432.   int rename(source,dest)
  1433. *** ../D.maint.1.0/options.c    Wed Oct  7 13:52:56 1992
  1434. --- options.c    Wed Oct  7 13:40:29 1992
  1435. ***************
  1436. *** 41,44 ****
  1437. --- 41,45 ----
  1438.   /******************************************************************************/
  1439.   
  1440. + #include "maint.h"
  1441.   #ifdef ultrix
  1442.   #include <cursesX.h>
  1443. ***************
  1444. *** 46,50 ****
  1445.   #include <curses.h>
  1446.   #endif
  1447. - #include "maint.h"
  1448.   
  1449.   /******************************************************************************/
  1450. --- 47,50 ----
  1451. ***************
  1452. *** 265,269 ****
  1453.           break;
  1454.   
  1455. !      case('f'):
  1456.           term_code = ' ';
  1457.           curr_row = FILEMARKS_OPT;
  1458. --- 265,269 ----
  1459.           break;
  1460.   
  1461. !      case('F'):
  1462.           term_code = ' ';
  1463.           curr_row = FILEMARKS_OPT;
  1464. ***************
  1465. *** 284,287 ****
  1466. --- 284,288 ----
  1467.        case('J'):
  1468.        case(CARRIAGE_RETURN):
  1469. +      case(KEY_ENTER):
  1470.        case(KEY_DOWN):
  1471.        case(LINEFEED):
  1472. *** ../D.maint.1.0/patchlevel.h    Wed Oct  7 13:53:39 1992
  1473. --- patchlevel.h    Wed Oct  7 13:43:41 1992
  1474. ***************
  1475. *** 0 ****
  1476. --- 1 ----
  1477. + #define PATCHLEVEL 1
  1478. *** ../D.maint.1.0/pool.c    Wed Oct  7 13:52:57 1992
  1479. --- pool.c    Wed Oct  7 13:40:32 1992
  1480. ***************
  1481. *** 42,48 ****
  1482.   /******************************************************************************/
  1483.   
  1484.   #include <stdio.h>
  1485.   #include <malloc.h>
  1486. - #include "maint.h"
  1487.   #include <string.h>
  1488.   
  1489. --- 42,48 ----
  1490.   /******************************************************************************/
  1491.   
  1492. + #include "maint.h"
  1493.   #include <stdio.h>
  1494.   #include <malloc.h>
  1495.   #include <string.h>
  1496.   
  1497. *** ../D.maint.1.0/screen.c    Wed Oct  7 13:53:04 1992
  1498. --- screen.c    Wed Oct  7 13:40:35 1992
  1499. ***************
  1500. *** 21,26 ****
  1501.               initialize, prompt_getstr, put_buf, put_options,
  1502.               put_pagnum, put_slot, put_spec, put_stat,
  1503. !             resize_screen, screen_reset, tag_file, write_mess,
  1504. !             xmess
  1505.   
  1506.       Called:        file_search, get_scr_num, make_slot, set_nodes
  1507. --- 21,26 ----
  1508.               initialize, prompt_getstr, put_buf, put_options,
  1509.               put_pagnum, put_slot, put_spec, put_stat,
  1510. !             resize_screen, screen_reset, stop_start, tag_file,
  1511. !             write_mess, xmess
  1512.   
  1513.       Called:        file_search, get_scr_num, make_slot, set_nodes
  1514. ***************
  1515. *** 45,48 ****
  1516. --- 45,49 ----
  1517.   /******************************************************************************/
  1518.   
  1519. + #include "maint.h"            /* our very own header file          */
  1520.   #ifdef ultrix
  1521.   #include <cursesX.h>
  1522. ***************
  1523. *** 59,63 ****
  1524.   #endif
  1525.   #include <memory.h>
  1526. - #include "maint.h"            /* our very own header file          */
  1527.   
  1528.   /******************************************************************************/
  1529. --- 60,63 ----
  1530. ***************
  1531. *** 88,91 ****
  1532. --- 88,93 ----
  1533.             file_search();
  1534.       
  1535. + extern     u_short  was_stopped;
  1536.   extern     short      get_scr_num();
  1537.   
  1538. ***************
  1539. *** 109,113 ****
  1540.             erase_tag(),
  1541.             clean_up(),
  1542. !           resize_screen();
  1543.   
  1544.   /******************************************************************************/
  1545. --- 111,116 ----
  1546.             erase_tag(),
  1547.             clean_up(),
  1548. !           resize_screen(),
  1549. !           stop_start();
  1550.   
  1551.   /******************************************************************************/
  1552. ***************
  1553. *** 171,175 ****
  1554.      signal(SIGALRM,clean_up);        /* catch interrupt and clean up          */
  1555.      signal(SIGTERM,clean_up);        /* catch interrupt and clean up          */
  1556. ! /* signal(SIGCONT,resize_screen);    /* resize and repaint screen          */
  1557.      signal(SIGWINCH,resize_screen);    /* resize and repaint screen          */
  1558.   
  1559. --- 174,179 ----
  1560.      signal(SIGALRM,clean_up);        /* catch interrupt and clean up          */
  1561.      signal(SIGTERM,clean_up);        /* catch interrupt and clean up          */
  1562. !    signal(SIGTSTP,stop_start);        /* so we can do an endwin()          */
  1563. !    signal(SIGCONT,stop_start);
  1564.      signal(SIGWINCH,resize_screen);    /* resize and repaint screen          */
  1565.   
  1566. ***************
  1567. *** 251,254 ****
  1568. --- 255,313 ----
  1569.   ********************************************************************************
  1570.   
  1571. +   Function:    user_stop
  1572. +   Purpose:    Called when a user enters ^Z.  We catch this so we can do
  1573. +         an endwin() so that the screen will repaint when the
  1574. +         users resumes execution.
  1575. +   Global variables:
  1576. +     Name            Examine/Modify/Use/Read/Write
  1577. +     ----            -----------------------------
  1578. +     was_stopped              X
  1579. +   Return Codes:
  1580. +     Code            Reason
  1581. +     ----            ------
  1582. +     none
  1583. + ********************************************************************************
  1584. + *******************************************************************************/
  1585. + void stop_start(sig)
  1586. +                     /*******   FORMAL  PARAMETERS   *******/
  1587. +      int      sig;            /* why we were called              */
  1588. + {    /*** stop_start ***/
  1589. +    if(sig == SIGCONT)
  1590. +    {
  1591. +       (void) signal(SIGTSTP,stop_start);
  1592. +       (void) signal(SIGCONT,stop_start);
  1593. + #if !defined(sun) && !defined(AIX)
  1594. +       printf("\nPress any key to return to maint> ");
  1595. +       fflush(stdout);
  1596. + #endif
  1597. +       keypad(main_win,TRUE);
  1598. +       was_stopped = 1;
  1599. +       resetty();
  1600. +    }
  1601. +    else
  1602. +    {
  1603. +       savetty();
  1604. +       echo();
  1605. +       nocbreak();
  1606. +       endwin();
  1607. +       (void) signal(SIGTSTP,SIG_DFL);
  1608. +       (void) signal(SIGCONT,stop_start);
  1609. +       (void) kill(getpid(),sig);
  1610. +    }
  1611. + }    /*** stop_start **/
  1612. + /*******************************************************************************
  1613. + ********************************************************************************
  1614.     Function:    resize_screen
  1615.   
  1616. ***************
  1617. *** 259,263 ****
  1618.       Name            Examine/Modify/Use/Read/Write
  1619.       ----            -----------------------------
  1620. !     global_row
  1621.   
  1622.     Return Codes:
  1623. --- 318,324 ----
  1624.       Name            Examine/Modify/Use/Read/Write
  1625.       ----            -----------------------------
  1626. !     spec_win                X
  1627. !     main_win                X
  1628. !     stat_win                X
  1629.   
  1630.     Return Codes:
  1631. ***************
  1632. *** 274,277 ****
  1633. --- 335,347 ----
  1634.   {    /*** resize_screen ***/
  1635.   
  1636. +    nonl();
  1637. +    cbreak();
  1638. +    noecho();
  1639. +    touchwin(spec_win);
  1640. +    touchwin(main_win);
  1641. +    touchwin(stat_win);
  1642. +    wnoutrefresh(spec_win);
  1643. +    wnoutrefresh(main_win);
  1644. +    wnoutrefresh(stat_win);
  1645.      return;
  1646.   
  1647. ***************
  1648. *** 318,327 ****
  1649.   #if !defined(SYSV) || defined(sun)
  1650.   
  1651. !    sprintf(buf2," %d files   %d blocks                Press ? for help",
  1652.              num_file,kbytes(dbtob(num_block)));
  1653.   #else
  1654.   
  1655. !    sprintf(buf2," %d files   %d blocks                Press ? for help",
  1656. !            num_file,kbytes(num_block));
  1657.   
  1658.   #endif
  1659. --- 388,397 ----
  1660.   #if !defined(SYSV) || defined(sun)
  1661.   
  1662. !    sprintf(buf2," %d files   %d Kbytes                Press ? for help",
  1663.              num_file,kbytes(dbtob(num_block)));
  1664.   #else
  1665.   
  1666. !    sprintf(buf2," %d files   %d Kbytes                Press ? for help",
  1667. !            num_file,num_block);
  1668.   
  1669.   #endif
  1670. ***************
  1671. *** 1298,1301 ****
  1672. --- 1368,1372 ----
  1673.         {
  1674.        case(CARRIAGE_RETURN):
  1675. +      case(KEY_ENTER):
  1676.        case(LINEFEED):
  1677.   
  1678. *** ../D.maint.1.0/select.c    Wed Oct  7 13:52:53 1992
  1679. --- select.c    Wed Oct  7 13:40:38 1992
  1680. ***************
  1681. *** 22,26 ****
  1682.             Defined:    file_select
  1683.   
  1684. !           Called:    none
  1685.   
  1686.      Files accessed:    filename    file to be browsed
  1687. --- 22,26 ----
  1688.             Defined:    file_select
  1689.   
  1690. !           Called:    stop_start
  1691.   
  1692.      Files accessed:    filename    file to be browsed
  1693. ***************
  1694. *** 57,60 ****
  1695. --- 57,62 ----
  1696.   #endif
  1697.   #include <sys/stat.h>
  1698. + #include <ctype.h>
  1699. + #include <signal.h>
  1700.   
  1701.   /******************************************************************************/
  1702. ***************
  1703. *** 64,67 ****
  1704. --- 66,71 ----
  1705.   /******************************************************************************/
  1706.   
  1707. + #define MAX_ARGS 20
  1708.   /******************************************************************************/
  1709.   /*                                                                            */
  1710. ***************
  1711. *** 85,88 ****
  1712. --- 89,98 ----
  1713.        int      file_select();
  1714.   
  1715. + extern     WINDOW      *spec_win,
  1716. +           *main_win,
  1717. +           *stat_win;
  1718. + extern     void      stop_start();
  1719.   /******************************************************************************/
  1720.   /*                                                                            */
  1721. ***************
  1722. *** 124,130 ****
  1723.        char      *pager,        /* pager for looking at a file          */
  1724.             *tptr;        /* pointer to last level of command   */
  1725.        int      child,        /* pid of child process              */
  1726.             i;            /* loop and return value          */
  1727. ! #if !defined(SYSV) || defined(sun)
  1728.   union     wait      status;        /* exit status for child process      */
  1729.   #else
  1730. --- 134,142 ----
  1731.        char      *pager,        /* pager for looking at a file          */
  1732.             *tptr;        /* pointer to last level of command   */
  1733. + static     char      *args[MAX_ARGS];    /* pager arguments              */
  1734.        int      child,        /* pid of child process              */
  1735. +           retval,        /* return value holder              */
  1736.             i;            /* loop and return value          */
  1737. ! #if (!defined(SYSV) || defined(sun)) && !defined(SCO) && !defined(AIX)
  1738.   union     wait      status;        /* exit status for child process      */
  1739.   #else
  1740. ***************
  1741. *** 131,135 ****
  1742. --- 143,150 ----
  1743.        int      status;
  1744.   #endif
  1745. +      short      use_execvp,        /* TRUE if PAGER is not fully-qual.   */
  1746. +           num_args;        /* number of PAGER arguments          */
  1747.   
  1748.      /* see if the user has a PAGER */
  1749.   
  1750. ***************
  1751. *** 139,149 ****
  1752.         pager = DEFAULT_PAGER;        /* user doesn't have a PAGER          */
  1753.   
  1754. !    tptr = strrchr(pager,'/');        /* get last level to pass to execlp   */
  1755.   
  1756.      if(tptr == NULL)
  1757. !       tptr = pager;
  1758.      else
  1759. !       tptr++;
  1760.   
  1761.      if((child = vfork()) == 0)
  1762.      {
  1763. --- 154,225 ----
  1764.         pager = DEFAULT_PAGER;        /* user doesn't have a PAGER          */
  1765.   
  1766. !    tptr = strrchr(pager,'/');        /* see if it's a full path name          */
  1767.   
  1768.      if(tptr == NULL)
  1769. !    {
  1770. !       tptr = pager;            /* nope, find it from the PATH          */
  1771. !       use_execvp = TRUE;
  1772. !    }
  1773.      else
  1774. !    {
  1775. !       use_execvp = FALSE;
  1776. !    }
  1777.   
  1778. +    args[0] = pager;
  1779. +    num_args = 1;
  1780. +    while(*tptr != '\0' && !isspace(*tptr))
  1781. +       ++tptr;
  1782. +    if(*tptr != '\0')
  1783. +    {
  1784. +       /* might be some arguments; save them and put pointers to them in
  1785. +        * the args array
  1786. +        */
  1787. +       *tptr = '\0';
  1788. +       ++tptr;
  1789. +       while(*tptr != '\0')
  1790. +       {
  1791. +      while(*tptr != '\0' && isspace(*tptr))
  1792. +         ++tptr;            /* skip white spaces              */
  1793. +      if(*tptr != '\0')
  1794. +      {
  1795. +         /* found one */
  1796. +         args[num_args++] = tptr++;
  1797. +         while(*tptr != '\0' && !isspace(*tptr))
  1798. +            ++tptr;
  1799. +         if(*tptr != '\0')
  1800. +         {
  1801. +            *tptr = '\0';        /* make the option a string          */
  1802. +            ++tptr;
  1803. +         }
  1804. +      }
  1805. +       }
  1806. +       args[num_args++] = filename;
  1807. +       args[num_args] = (char *) NULL;
  1808. +    }
  1809. +    else
  1810. +    {
  1811. +       args[1] = filename;
  1812. +       args[2] = (char *) NULL;
  1813. +    }
  1814. +    /* let's be nice... */
  1815. +    (void) signal(SIGTSTP,SIG_DFL);
  1816. +    (void) signal(SIGCONT,SIG_DFL);
  1817. +    echo();
  1818. +    nocbreak();
  1819. +    endwin();
  1820. +    retval = SUCCESS;
  1821.      if((child = vfork()) == 0)
  1822.      {
  1823. ***************
  1824. *** 150,156 ****
  1825.         /* we're in the child */
  1826.   
  1827. !       endwin();
  1828. !       execlp(pager,tptr,filename,NULL);
  1829. !       return(FAILURE);            /* execlp failed if we get here          */
  1830.      }
  1831.      else if(child > 0)
  1832. --- 226,235 ----
  1833.         /* we're in the child */
  1834.   
  1835. !       if(use_execvp == TRUE)
  1836. !      execvp(pager,args);
  1837. !       else
  1838. !      execv(pager,args);
  1839. !       retval = FAILURE;            /* execlp failed if we get here          */
  1840.      }
  1841.      else if(child > 0)
  1842. ***************
  1843. *** 162,168 ****
  1844.      }
  1845.      else
  1846. !       return(FAILURE);
  1847.   
  1848. !    return(SUCCESS);
  1849.   
  1850.   }    /*** file_select ***/
  1851. --- 241,267 ----
  1852.      }
  1853.      else
  1854. !       retval = FAILURE;
  1855.   
  1856. !    nonl();
  1857. !    cbreak();
  1858. !    noecho();
  1859. !    if(retval == SUCCESS)
  1860. !    {
  1861. !       printf("\nPress any key to return to maint> ");
  1862. !       fflush(stdout);
  1863. !       i = wgetch(main_win);
  1864. !    }
  1865. !    touchwin(spec_win);
  1866. !    touchwin(main_win);
  1867. !    touchwin(stat_win);
  1868. !    wnoutrefresh(spec_win);
  1869. !    wnoutrefresh(main_win);
  1870. !    wnoutrefresh(stat_win);
  1871. !    (void) signal(SIGTSTP,stop_start);
  1872. !    (void) signal(SIGCONT,stop_start);
  1873. !    return(retval);
  1874.   
  1875.   }    /*** file_select ***/
  1876. *** ../D.maint.1.0/slot.c    Wed Oct  7 13:52:58 1992
  1877. --- slot.c    Wed Oct  7 13:40:41 1992
  1878. ***************
  1879. *** 43,46 ****
  1880. --- 43,47 ----
  1881.   /******************************************************************************/
  1882.   
  1883. + #include "maint.h"
  1884.   #ifdef ultrix
  1885.   #include <cursesX.h>
  1886. ***************
  1887. *** 53,57 ****
  1888.   #include <pwd.h>
  1889.   #include <grp.h>
  1890. - #include "maint.h"
  1891.   
  1892.   /******************************************************************************/
  1893. --- 54,57 ----
  1894. ***************
  1895. *** 79,83 ****
  1896.             *set_date();
  1897.   
  1898. ! #if defined(SYSV) || defined(sun)
  1899.   extern     void      setpwent(),
  1900.             setgrent();
  1901. --- 79,83 ----
  1902.             *set_date();
  1903.   
  1904. ! #if defined(SYSV) || defined(sun) || defined(hpux)
  1905.   extern     void      setpwent(),
  1906.             setgrent();
  1907. *** ../D.maint.1.0/sort.c    Wed Oct  7 13:52:54 1992
  1908. --- sort.c    Wed Oct  7 13:40:44 1992
  1909. ***************
  1910. *** 41,46 ****
  1911.   /******************************************************************************/
  1912.   
  1913. - #include <string.h>
  1914.   #include "maint.h"
  1915.   
  1916.   /******************************************************************************/
  1917. --- 41,46 ----
  1918.   /******************************************************************************/
  1919.   
  1920.   #include "maint.h"
  1921. + #include <string.h>
  1922.   
  1923.   /******************************************************************************/
  1924. *** ../D.maint.1.0/text.c    Wed Oct  7 13:53:01 1992
  1925. --- text.c    Wed Oct  7 13:40:47 1992
  1926. ***************
  1927. *** 43,46 ****
  1928. --- 43,47 ----
  1929.   /******************************************************************************/
  1930.   
  1931. + #include "maint.h"
  1932.   #include <stdio.h>
  1933.   #ifdef ultrix
  1934. ***************
  1935. *** 50,54 ****
  1936.   #endif
  1937.   #include <string.h>
  1938. - #include "maint.h"
  1939.   
  1940.   /******************************************************************************/
  1941. --- 51,54 ----
  1942. *** ../D.maint.1.0/xecute.c    Wed Oct  7 13:53:02 1992
  1943. --- xecute.c    Wed Oct  7 13:40:50 1992
  1944. ***************
  1945. *** 42,45 ****
  1946. --- 42,46 ----
  1947.   /******************************************************************************/
  1948.   
  1949. + #include "maint.h"
  1950.   #include <fcntl.h>
  1951.   #include <errno.h>
  1952. ***************
  1953. *** 51,55 ****
  1954.   #include <curses.h>
  1955.   #endif
  1956. - #include "maint.h"
  1957.   #include <sys/stat.h>
  1958.   
  1959. --- 52,55 ----
  1960. ***************
  1961. *** 81,85 ****
  1962.             read(),
  1963.             write(),
  1964. -           open(),
  1965.             close(),
  1966.             errno;
  1967. --- 81,84 ----
  1968. ***************
  1969. *** 239,243 ****
  1970.        }
  1971.   
  1972. !      if(comm_ptr->comm_text != NULL && text_write == SUCCESS)
  1973.        {
  1974.           /* yes, write a text descriptor */
  1975. --- 238,242 ----
  1976.        }
  1977.   
  1978. !      if(comm_ptr->comm_text != '\0' && text_write == SUCCESS)
  1979.        {
  1980.           /* yes, write a text descriptor */
  1981. ***************
  1982. *** 743,746 ****
  1983. --- 742,746 ----
  1984.              retptr = " Too many symbolic links in filename";
  1985.              break;
  1986. + #ifdef EDQUOT
  1987.           case(EDQUOT):
  1988.              retptr = " Disk quota exhausted";
  1989. ***************
  1990. *** 747,750 ****
  1991. --- 747,751 ----
  1992.              break;
  1993.   #endif
  1994. + #endif
  1995.           case(ENOSPC):
  1996.              retptr = " File system is full";
  1997. ***************
  1998. *** 770,776 ****
  1999. --- 771,779 ----
  2000.              retptr = " Too many symbolic links in filename";
  2001.              break;
  2002. + #ifdef EDQUOT
  2003.           case(EDQUOT):
  2004.              retptr = " Disk quota exhausted";
  2005.              break;
  2006. + #endif
  2007.   #endif
  2008.           case(ENOENT):
  2009.