home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume7 / elm_update / part1 / Edit1
Text File  |  1986-11-30  |  53KB  |  2,544 lines

  1. : Use /bin/sh
  2.  
  3. # This is the automatically generated output of the AUTODIFF program after
  4. # being run on the two directories;
  5. #
  6. #    Old Directory: Elm-Posted
  7. #    New Directory: Elm
  8.  
  9. # Any problems with execution of this script should be reported to the 
  10. #     author of the program, Dave Taylor, at "hplabs!taylor".  Thanks
  11.  
  12. # first off, let's make sure we're running in SH
  13.  
  14. export PATH || (sh $0; exit $$)
  15.  
  16. # next, let's ensure the user has "ed"...
  17.  
  18. if [ ! -f /bin/ed ]
  19. then
  20.   echo I can\'t find /bin/ed\!
  21.   exit 1
  22. fi
  23.  
  24. # finally, let's get this show on the road!!
  25.  
  26. #-------------------------------------
  27. # File 'doc/newmail.1' diffs...
  28.  
  29. cat << 'EOF' > doc/newmail.D
  30. 36a
  31. If the message is a \fIpriority\fR message (that is, it has a field
  32. in the header "Priority:"), then the line will be "PRIORITY mail"
  33. instead of "New mail".
  34. .P
  35. .
  36. w
  37. EOF
  38.  
  39. chars=`cat doc/newmail.1 | wc -c`
  40.  
  41. if [ $chars -ne 1214 ]
  42. then
  43.   echo Your file doc/newmail.1 has been changed\!
  44.   echo diffs saved as \"doc/newmail.D\"
  45. else
  46.   echo applying diffs to file doc/newmail.1...
  47.   /bin/cat doc/newmail.D | /bin/ed - doc/newmail.1
  48. fi
  49.  
  50. #-------------------------------------
  51. # File 'doc/readmsg.1' diffs...
  52.  
  53. cat << 'EOF' > doc/readmsg.D
  54. 137a
  55. .SH BUGS
  56. The '*' metacharacter doesn't always work as expected!
  57. .br
  58. Perhaps the pattern matching should be case insensitive?
  59. .
  60. 50c
  61. the last message in the mailfile.  Similarly, '*' is understood to
  62. represent every message in the file (that is, 1-$)
  63. .
  64. w
  65. EOF
  66.  
  67. chars=`cat doc/readmsg.1 | wc -c`
  68.  
  69. if [ $chars -ne 3454 ]
  70. then
  71.   echo Your file doc/readmsg.1 has been changed\!
  72.   echo diffs saved as \"doc/readmsg.D\"
  73. else
  74.   echo applying diffs to file doc/readmsg.1...
  75.   /bin/cat doc/readmsg.D | /bin/ed - doc/readmsg.1
  76. fi
  77.  
  78. #-------------------------------------
  79. # File 'doc/Config.guide' diffs...
  80.  
  81. cat << 'EOF' > doc/Config.gui.D
  82. 349c
  83. -------------------------------------------------------------------------------------
  84. .
  85. 140c
  86.                                            (can't be within this boundary)    */
  87. .
  88. 120c
  89. -------------------------------------------------------------------------------------
  90. .
  91. 84c
  92. systems, including HP-UX (and the \fISPECTRUM\fR series!) or simulations thereof.
  93. .
  94. 68a
  95. It's \fIhighly\fR recommended that installation be done by using the
  96. \fBConfigure.sh\fR script supplied with the system.  Please see the
  97. file \fIInstructions\fR for further information.
  98. .sp 2
  99. .P
  100. .
  101. w
  102. EOF
  103.  
  104. chars=`cat doc/Config.guide | wc -c`
  105.  
  106. if [ $chars -ne 20499 ]
  107. then
  108.   echo Your file doc/Config.guide has been changed\!
  109.   echo diffs saved as \"doc/Config.gui.D\"
  110. else
  111.   echo applying diffs to file doc/Config.guide...
  112.   /bin/cat doc/Config.gui.D | /bin/ed - doc/Config.guide
  113. fi
  114.  
  115. #-------------------------------------
  116. # File 'doc/wnewmail.1' diffs...
  117.  
  118. cat << 'EOF' > doc/wnewmail.D
  119. 37a
  120. If the message is a \fIpriority\fR message (that is, the
  121. header contains a line "Priority:"), then the line output
  122. will be "PRIORITY mail from ..." rather than just "Mail from".
  123. .P
  124. .
  125. w
  126. EOF
  127.  
  128. chars=`cat doc/wnewmail.1 | wc -c`
  129.  
  130. if [ $chars -ne 1318 ]
  131. then
  132.   echo Your file doc/wnewmail.1 has been changed\!
  133.   echo diffs saved as \"doc/wnewmail.D\"
  134. else
  135.   echo applying diffs to file doc/wnewmail.1...
  136.   /bin/cat doc/wnewmail.D | /bin/ed - doc/wnewmail.1
  137. fi
  138.  
  139. #-------------------------------------
  140. # File 'doc/Ref.guide' diffs...
  141.  
  142. cat << 'EOF' > doc/Ref.gui.D
  143. 290,291c
  144. There is also a built in pager, considerably faster than calling
  145. a remote one, called 'builtin'.  This is the default if none is
  146. specified.
  147. .
  148. w
  149. EOF
  150.  
  151. chars=`cat doc/Ref.guide | wc -c`
  152.  
  153. if [ $chars -ne 39623 ]
  154. then
  155.   echo Your file doc/Ref.guide has been changed\!
  156.   echo diffs saved as \"doc/Ref.gui.D\"
  157. else
  158.   echo applying diffs to file doc/Ref.guide...
  159.   /bin/cat doc/Ref.gui.D | /bin/ed - doc/Ref.guide
  160. fi
  161.  
  162. #-------------------------------------
  163. # File 'doc/Users.guide' diffs...
  164.  
  165. cat << 'EOF' > doc/Users.gui.D
  166. 857c
  167. namely Guy Hillyer, Bruce Townsend and special guest appearances
  168. (almost \fIall\fR the BSD fixes for Elm 1.1) by Eric Negaard.
  169. .
  170. 841c
  171. John Dilley (who got the SPECTRUM version checked out, too!) and Carl Dierschow.
  172. .
  173. 541c
  174. .mk a
  175. .
  176. 517c
  177. .mk a
  178. .
  179. 425c
  180. .mk a
  181. .
  182. 393c
  183. .mk a
  184. .
  185. 166,167c
  186. .mk a
  187. .mk a
  188. .
  189. w
  190. EOF
  191.  
  192. chars=`cat doc/Users.guide | wc -c`
  193.  
  194. if [ $chars -ne 25463 ]
  195. then
  196.   echo Your file doc/Users.guide has been changed\!
  197.   echo diffs saved as \"doc/Users.gui.D\"
  198. else
  199.   echo applying diffs to file doc/Users.guide...
  200.   /bin/cat doc/Users.gui.D | /bin/ed - doc/Users.guide
  201. fi
  202.  
  203. #-------------------------------------
  204. # File 'doc/elm.1' diffs...
  205.  
  206. cat << 'EOF' > doc/elm.1.D
  207. 65a
  208. .TP
  209. .
  210. 63a
  211. .TP
  212. .
  213. 21c
  214. .B \-s 
  215. .
  216. 8c
  217. .B \-achkKmrwz
  218. .
  219. w
  220. EOF
  221.  
  222. chars=`cat doc/elm.1 | wc -c`
  223.  
  224. if [ $chars -ne 2788 ]
  225. then
  226.   echo Your file doc/elm.1 has been changed\!
  227.   echo diffs saved as \"doc/elm.1.D\"
  228. else
  229.   echo applying diffs to file doc/elm.1...
  230.   /bin/cat doc/elm.1.D | /bin/ed - doc/elm.1
  231. fi
  232.  
  233. #---------------------------------
  234. # File Elm/doc/messages.1 is new!
  235.  
  236. echo File Elm/doc/messages.1 is new - extracting...
  237. if [ -f doc/messages.1 ]
  238. then
  239.   echo File \'doc/messages.1\' is new, but you already have something called that\!
  240.   echo I\'m going to move your file to \'doc/messages.1.old\'...
  241.   /bin/mv -f doc/messages.1 doc/messages.1.old
  242. else
  243.   echo Extracting new file \'doc/messages.1\'
  244. fi
  245.  
  246. cat > doc/messages.1 << 'END_OF_FILE'
  247. .TH MESSAGES 1L
  248. .ad b
  249. .SH NAME
  250. messages - quick count of messages in mailbox or folder
  251. .SH SYNOPSIS
  252. .B messages
  253. .br
  254. .B messages
  255. folder-name
  256. .SH HP-UX COMPATIBILITY
  257. .TP 10
  258. Level:
  259. HP-UX/STANDARD
  260. .TP
  261. Origin:
  262. Hewlett-Packard
  263. .SH DESCRIPTION
  264. .I Messages
  265. counts the occurances of "^From\ " in either the current incoming 
  266. mailbox or the specified folder.
  267. .P
  268. This is, in fact, a simple little shell script!!
  269. .SH AUTHOR
  270. Dave Taylor, Hewlett-Packard Laboratories
  271. .SH SEE\ ALSO
  272. from(1L), elm(1L)
  273. .SH BUGS
  274. Don't be foolish...
  275. END_OF_FILE
  276.  
  277. chars=`cat doc/messages.1 | wc -c`
  278.  
  279. if [ $chars -ne 515 ]
  280. then
  281.   echo File damaged in transit...should be 515 bytes, is $chars instead
  282.   echo  I suggest you check it closely...
  283. fi
  284.  
  285. #---------------------------------
  286. # File Elm/doc/trim-headers.1 is new!
  287.  
  288. echo File Elm/doc/trim-headers.1 is new - extracting...
  289. if [ -f doc/trim-headers.1 ]
  290. then
  291.   echo File \'doc/trim-headers.1\' is new, but you already have something called that\!
  292.   echo I\'m going to move your file to \'doc/trim-headers.1.old\'...
  293.   /bin/mv -f doc/trim-headers.1 doc/trim-headers.1.old
  294. else
  295.   echo Extracting new file \'doc/trim-headers.1\'
  296. fi
  297.  
  298. cat > doc/trim-headers.1 << 'END_OF_FILE'
  299. .TH TRIM-HEADERS 1L
  300. .ad b
  301. .SH NAME
  302. trim-headers - help keep mailbox files clean of trash headers
  303. .SH SYNOPSIS
  304. cat \fIfilename\fR |
  305. .B trim-headers
  306. > \fIfilename2\fR
  307. .br
  308. .B trim-headers
  309. filename-list
  310. .SH HP-UX COMPATIBILITY
  311. .TP 10
  312. Level:
  313. HP-UX/STANDARD
  314. .TP
  315. Origin:
  316. Hewlett-Packard Laboratories
  317. .SH DESCRIPTION
  318. .I Trim-headers
  319. is a simple awk script that removes all headers from the specified
  320. folder, either standard input or one of a list of filenames, according
  321. to how it's invoked.  The program knows about the following headers;
  322. .sp
  323. .nf
  324.     From 
  325.     From:
  326.     Subject:
  327.     To:
  328.     Cc:
  329.     Date:
  330.  
  331. .fi
  332. All other headers are considered extraneous and are removed.
  333. .SH AUTHOR
  334. Dave Taylor, Hewlett-Packard Laboratories
  335. .SH SEE\ ALSO
  336. awk(1), printmail(1L), readmsg(1L)
  337. .SH BUGS
  338. The current incancation of the \fIawk\fR script doesn't understand
  339. the idea of multiple line header fields, so a message that has, say,
  340. a three line To: list will only have the first line saved...
  341. END_OF_FILE
  342.  
  343. chars=`cat doc/trim-headers.1 | wc -c`
  344.  
  345. if [ $chars -ne 955 ]
  346. then
  347.   echo File damaged in transit...should be 955 bytes, is $chars instead
  348.   echo  I suggest you check it closely...
  349. fi
  350.  
  351. #-------------------------------------
  352. # File 'src/alias.c' diffs...
  353.  
  354. cat << 'EOF' > src/alias.c.D
  355. 288a
  356.               if (mini_menu) show_alias_menu();
  357. .
  358. 244c
  359.               PutLine1(LINES-1,0,"Aliased address: %-60.60s", 
  360. .
  361. 240c
  362.                       PutLine1(LINES-1,0,"Group alias:%-60.60s", address);
  363. .
  364. 225a
  365.         case LINE_FEED:
  366. .
  367. w
  368. EOF
  369.  
  370. chars=`cat src/alias.c | wc -c`
  371.  
  372. if [ $chars -ne 7725 ]
  373. then
  374.   echo Your file src/alias.c has been changed\!
  375.   echo diffs saved as \"src/alias.c.D\"
  376. else
  377.   echo applying diffs to file src/alias.c...
  378.   /bin/cat src/alias.c.D | /bin/ed - src/alias.c
  379. fi
  380.  
  381. #-------------------------------------
  382. # File 'src/curses.c' diffs...
  383.  
  384. cat << 'EOF' > src/curses.c.D
  385. 422c
  386.     printf(_clearbold);
  387. .
  388. 409c
  389.     printf("%s", _setbold);        /* don't ask, okay? */
  390. .
  391. 174c
  392.     if (strlen(termcap_label) < 2)
  393.       return(NULL);
  394.  
  395.     if (termcap_label[0] == 's' && termcap_label[1] == 'o')
  396.       sprintf(escape_sequence, _setinverse);
  397.     else if (termcap_label[0] == 's' && termcap_label[1] == 'e')
  398.       sprintf(escape_sequence, _clearinverse);
  399.     else if ((myptr = tgetstr(termcap_label, &ptr)) == NULL)
  400.       return( (char *) NULL );
  401.     else
  402.       sprintf(escape_sequence, myptr);
  403.  
  404. .
  405. 170c
  406.     char *myptr, *tgetstr();             /* Get termcap capability */
  407. .
  408. 152,155d
  409. 114a
  410. #ifdef BSD
  411.     initscr();    /* initalize curses too! */
  412. #endif
  413.  
  414. .
  415. 44a
  416. #ifdef SHORTNAMES
  417. # define CleartoEOS    ClrtoEOS
  418. # define _clearinverse    _clrinv
  419. # define _cleartoeoln    _clrtoeoln
  420. # define _cleartoeos    _clr2eos
  421. # define _transmit_off    xmit_off
  422. # define _transmit_on    xmit_on
  423. #endif
  424.  
  425. .
  426. 28c
  427. #  ifndef BSD4.1
  428. #    include <sgtty.h>
  429. #  endif
  430. .
  431. w
  432. EOF
  433.  
  434. chars=`cat src/curses.c | wc -c`
  435.  
  436. if [ $chars -ne 15951 ]
  437. then
  438.   echo Your file src/curses.c has been changed\!
  439.   echo diffs saved as \"src/curses.c.D\"
  440. else
  441.   echo applying diffs to file src/curses.c...
  442.   /bin/cat src/curses.c.D | /bin/ed - src/curses.c
  443. fi
  444.  
  445. #-------------------------------------
  446. # File 'src/date.c' diffs...
  447.  
  448. cat << 'EOF' > src/date.c.D
  449. 372a
  450.  
  451. #ifdef SITE_HIDING
  452.  
  453. char *get_ctime_date()
  454. {
  455.     /** returns a ctime() format date, but a few minutes in the 
  456.         past...(more cunningness to implement hidden sites) **/
  457.  
  458.     static char buffer[SLEN];    /* static character buffer       */
  459.     struct tm *the_time,        /* Time structure, see CTIME(3C) */
  460.           *localtime();
  461.     long       junk;        /* time in seconds....         */
  462. #ifdef BSD
  463.     struct  timeval  time_val;        
  464.     struct  timezone time_zone;
  465. #endif
  466.  
  467. #ifdef BSD
  468.     gettimeofday(&time_val, &time_zone);
  469.     junk = time_val.tv_sec;
  470. #else
  471.     junk = (long) time((long *) 0);    /* this must be here for it to work! */
  472. #endif
  473.     the_time = localtime(&junk);
  474.  
  475.     sprintf(buffer, "%s %s %d %02d:%02d:%02d %d",
  476.       arpa_dayname[the_time->tm_wday],
  477.       arpa_monname[the_time->tm_mon],
  478.       the_time->tm_mday % 32,
  479.       min(the_time->tm_hour % 24, (rand() % 24)),
  480.       min(abs(the_time->tm_min  % 61 - (rand() % 60)), (rand() % 60)),
  481.       min(abs(the_time->tm_sec  % 61 - (rand() % 60)), (rand() % 60)),
  482.       the_time->tm_year % 100 + 1900);
  483.     
  484.     return( (char *) buffer);
  485. }
  486.  
  487. #endif
  488. .
  489. 339c
  490.     return( minute1 - minute2 );        /* ignore seconds... */
  491. .
  492. 335a
  493.     /* did we get the time?  If not, try again */
  494.  
  495.     if (minute1 < 0)
  496.       sscanf(rec1->time, "%2d%2d", &hour1, &minute1);
  497.  
  498.     if (minute2 < 0)
  499.       sscanf(rec2->time, "%2d%2d", &hour2, &minute2);
  500.  
  501.     /** deal with am/pm, if present... **/
  502.  
  503.     if (strlen(rec1->time) > 3)
  504.       if (rec1->time[strlen(rec1->time)-2] == 'p')
  505.         hour1 += 12;
  506.  
  507.     if (strlen(rec2->time) > 3)
  508.       if (rec2->time[strlen(rec2->time)-2] == 'p')
  509.         hour2 += 12;
  510.  
  511. .
  512. 332a
  513.     minute1 = minute2 = -1;
  514.  
  515. .
  516. 282c
  517.       sprintf(timestring, "12:%2.2d (midnight)", minute);
  518. .
  519. 192c
  520.     junk = (long) time((long *) 0);    /* this must be here for it to work! */
  521. .
  522. 146a
  523. # endif
  524. .
  525. 145a
  526. # ifdef BSD4.1
  527.       timezone(time_zone.timezone, the_time->tm_isdst));
  528. # else
  529. .
  530. 134a
  531.  
  532. .
  533. 133c
  534.     junk = (long) time((long *) 0);    /* this must be here for it to work! */
  535. .
  536. 131a
  537. # endif
  538.  
  539. .
  540. 129d
  541. 127d
  542. 124a
  543. # ifdef BSD4.1
  544.     struct timeb    loc_time;
  545.  
  546.     junk = (long) time(long *) 0);
  547.     ftime(&loc_time);
  548. # else
  549. .
  550. 123a
  551.  
  552. .
  553. 68c
  554.     junk = (long) time((long *) 0);    /* this must be here for it to work! */
  555. .
  556. 18a
  557. #undef tolower
  558. .
  559. 10c
  560. #  ifndef BSD4.1
  561. #    include <sys/time.h>
  562. #  else
  563. #    include <time.h>
  564. #    include <sys/types.h>
  565. #    include <sys/timeb.h>
  566. #  endif
  567. .
  568. 8a
  569.  
  570. .
  571. w
  572. EOF
  573.  
  574. chars=`cat src/date.c | wc -c`
  575.  
  576. if [ $chars -ne 9538 ]
  577. then
  578.   echo Your file src/date.c has been changed\!
  579.   echo diffs saved as \"src/date.c.D\"
  580. else
  581.   echo applying diffs to file src/date.c...
  582.   /bin/cat src/date.c.D | /bin/ed - src/date.c
  583. fi
  584.  
  585. #-------------------------------------
  586. # File 'src/delete.c' diffs...
  587.  
  588. cat << 'EOF' > src/delete.c.D
  589. 80c
  590.       if (msg == current && !arrow_cursor) {
  591.         StartBold();
  592.         PutLine2((msg % headers_per_page) + 4, 3, "%c%c",
  593.            ison(header_table[msg].status, DELETED)? 'D' : ' ',
  594.            ison(header_table[msg].status, TAGGED )? '+' : ' ');
  595.         EndBold();
  596.       }
  597.       else
  598.         PutLine2((msg % headers_per_page) + 4, 3, "%c%c",
  599. .
  600. 67c
  601.       if (msg == current && !arrow_cursor) {
  602.         StartBold();
  603.         Writechar( ison(header_table[msg].status, TAGGED)? '+' : ' ');
  604.         EndBold();
  605.       }
  606.       else
  607.         Writechar( ison(header_table[msg].status, TAGGED)? '+' : ' ');
  608. .
  609. 44c
  610.       if (msg == current && !arrow_cursor) {
  611.         StartBold();
  612.         Writechar( ison(header_table[msg].status, DELETED)? 'D' : ' ');
  613.         EndBold();
  614.       }
  615.       else
  616.         Writechar( ison(header_table[msg].status, DELETED)? 'D' : ' ');
  617. .
  618. w
  619. EOF
  620.  
  621. chars=`cat src/delete.c | wc -c`
  622.  
  623. if [ $chars -ne 1863 ]
  624. then
  625.   echo Your file src/delete.c has been changed\!
  626.   echo diffs saved as \"src/delete.c.D\"
  627. else
  628.   echo applying diffs to file src/delete.c...
  629.   /bin/cat src/delete.c.D | /bin/ed - src/delete.c
  630. fi
  631.  
  632. #-------------------------------------
  633. # File 'src/aliasdb.c' diffs...
  634.  
  635. cat << 'EOF' > src/aliasdb.D
  636. 169c
  637.     } while (absolute(last) - absolute(first) > FIND_DELTA);
  638. .
  639. 135a
  640.        strcat(expanded, comment);        /* add comment */
  641. .
  642. 132a
  643.         }
  644. .
  645. 131c
  646.         else {                 /* We just can't get there! */
  647.           strcpy(expanded, old_name);    /* restore! */
  648. .
  649. 124a
  650.            strcat(expanded, comment);    /* patch in comment */
  651. .
  652. 104a
  653.     dprint3(5,"\nBroke address into '%s' @ '%s' '%s'\n\n",
  654.         name, sitename, comment);
  655.  
  656. .
  657. 94c
  658.     while (cryptic[i] != '\0' && cryptic[i] != '(' && 
  659.                ! whitespace(cryptic[i]))
  660. .
  661. 81c
  662.            cryptic[i] != '\0' && cryptic[i] != '(')
  663. .
  664. 79a
  665.     /** first, rip out the comment, if any **/
  666.  
  667.     if ((i = chloc(cryptic, '(')) > -1) {
  668.       comment[j++] = ' ';            /* leading space */
  669.       for ( ;cryptic[i] != ')'; i++)
  670.           comment[j++] = cryptic[i];
  671.       comment[j++] = ')';
  672.       comment[j] = '\0';
  673.       /* and remove this from cryptic string too... */
  674.       if (cryptic[(j = chloc(cryptic,'('))-1] == ' ')
  675.         cryptic[j-1] = '\0';
  676.       else
  677.         cryptic[j] = '\0';
  678.     }
  679.     else
  680.       comment[0] = '\0';
  681.  
  682.     i = j = 0;    /* reset */
  683.  
  684. .
  685. 72c
  686.                temp[VERY_LONG_STRING], old_name[VERY_LONG_STRING],
  687.            comment[LONG_STRING];
  688. .
  689. 62c
  690.         0 = found, -1 return means unknown site code 
  691.     
  692.         Modified to strip out parenthetical comments...
  693.     **/
  694. .
  695. 40,41c
  696.           if (mail_only)
  697.             printf("Warning: couldn't expand %s...\n\r", name);
  698.           else {
  699.             error1("Warning: couldn't expand %s...", name);
  700.             sleep(1);
  701.           }
  702. .
  703. 13a
  704. #define  absolute(x)        ((x) > 0 ? x : -(x))
  705.  
  706. .
  707. w
  708. EOF
  709.  
  710. chars=`cat src/aliasdb.c | wc -c`
  711.  
  712. if [ $chars -ne 5484 ]
  713. then
  714.   echo Your file src/aliasdb.c has been changed\!
  715.   echo diffs saved as \"src/aliasdb.D\"
  716. else
  717.   echo applying diffs to file src/aliasdb.c...
  718.   /bin/cat src/aliasdb.D | /bin/ed - src/aliasdb.c
  719. fi
  720.  
  721. #-------------------------------------
  722. # File 'src/file.c' diffs...
  723.  
  724. cat << 'EOF' > src/file.c.D
  725. 158c
  726.     ptr = filename;
  727.     while (*ptr == ' ') ptr++;    /* leading spaces GONE! */
  728.     strcpy(filename, ptr);
  729.  
  730.     /** New stuff - make sure no illegal char as last **/
  731. .
  732. 155c
  733.     char buffer[SLEN], varname[SLEN], env_value[SLEN], *ptr;
  734. .
  735. 79a
  736. #endif
  737. .
  738. 78a
  739. #ifdef BSD4.1
  740.     if ((errno = ((can_open(filename, "a") & ~0x0200) >>8))) {
  741. #else
  742. .
  743. w
  744. EOF
  745.  
  746. chars=`cat src/file.c | wc -c`
  747.  
  748. if [ $chars -ne 5704 ]
  749. then
  750.   echo Your file src/file.c has been changed\!
  751.   echo diffs saved as \"src/file.c.D\"
  752. else
  753.   echo applying diffs to file src/file.c...
  754.   /bin/cat src/file.c.D | /bin/ed - src/file.c
  755. fi
  756.  
  757. #-------------------------------------
  758. # File 'src/read_rc.c' diffs...
  759.  
  760. cat << 'EOF' > src/read_rc.D
  761. 367c
  762.           pmalloc(strlen(default_list[weedcount]) + 1)) == NULL) {
  763. .
  764. 342c
  765.                    pmalloc(sizeof *alternative_addresses);
  766. .
  767. 334c
  768.                    pmalloc(sizeof *alternative_addresses);
  769. .
  770. 305c
  771.         if ((weedlist[weedcount] = pmalloc(strlen(header) + 1)) == NULL) {
  772. .
  773. 63c
  774. char *shift_lower(), *strtok(), *getenv(), *pmalloc();
  775. .
  776. w
  777. EOF
  778.  
  779. chars=`cat src/read_rc.c | wc -c`
  780.  
  781. if [ $chars -ne 12722 ]
  782. then
  783.   echo Your file src/read_rc.c has been changed\!
  784.   echo diffs saved as \"src/read_rc.D\"
  785. else
  786.   echo applying diffs to file src/read_rc.c...
  787.   /bin/cat src/read_rc.D | /bin/ed - src/read_rc.c
  788. fi
  789.  
  790. #-------------------------------------
  791. # File 'src/hdrconfg.c' diffs...
  792.  
  793. cat << 'EOF' > src/hdrconfg.D
  794. 95c
  795.         case 'I' : if (strlen(in_reply_to) > 0) {
  796. .
  797. 84c
  798.         case 'R' : if (optionally_enter(reply_to, 7, 10, FALSE) == -1)
  799. .
  800. 67c
  801.         case RETURN:
  802.         case LINE_FEED:
  803. .
  804. w
  805. EOF
  806.  
  807. chars=`cat src/hdrconfg.c | wc -c`
  808.  
  809. if [ $chars -ne 4054 ]
  810. then
  811.   echo Your file src/hdrconfg.c has been changed\!
  812.   echo diffs saved as \"src/hdrconfg.D\"
  813. else
  814.   echo applying diffs to file src/hdrconfg.c...
  815.   /bin/cat src/hdrconfg.D | /bin/ed - src/hdrconfg.c
  816. fi
  817.  
  818. #-------------------------------------
  819. # File 'src/help.c' diffs...
  820.  
  821. cat << 'EOF' > src/help.c.D
  822. 9a
  823.  
  824. #ifdef BSD
  825. # undef tolower
  826. #endif
  827.  
  828. .
  829. w
  830. EOF
  831.  
  832. chars=`cat src/help.c | wc -c`
  833.  
  834. if [ $chars -ne 5576 ]
  835. then
  836.   echo Your file src/help.c has been changed\!
  837.   echo diffs saved as \"src/help.c.D\"
  838. else
  839.   echo applying diffs to file src/help.c...
  840.   /bin/cat src/help.c.D | /bin/ed - src/help.c
  841. fi
  842.  
  843. #-------------------------------------
  844. # File 'src/initialize.c' diffs...
  845.  
  846. cat << 'EOF' > src/initialize.D
  847. 199a
  848.  
  849.     /** allocate the first KLICK headers... **/
  850.  
  851.     if ((header_table = (struct header_rec *) malloc(KLICK * sizeof (struct
  852.          header_rec))) == NULL) {
  853.        fprintf(stderr,"\n\r\n\rCouldn't allocate initial headers!\n\r\n");
  854.        leave();
  855.     }
  856.     max_headers = KLICK;        /* we have those preallocated */
  857.  
  858.     /** now cruise along... **/
  859. .
  860. 181a
  861.     dprint0(1,"past the return_ stuff\n");
  862.  
  863. .
  864. 174a
  865.         else if (strlen(cp) != 2)
  866.           cursor_control = FALSE;
  867. .
  868. 173c
  869.         if ((cp = return_value_of("kd")) == NULL)
  870. .
  871. 169,171c
  872.       cursor_control = FALSE;
  873.  
  874.       if ((cp = return_value_of("ku")) != NULL)
  875.        if (strlen(cp) != 2) {
  876.         dprint0(1,"ku != NULL\n");
  877. .
  878. 148a
  879.     ScreenSize(&LINES, &COLUMNS);
  880.  
  881. .
  882. 113,114c
  883.             full_username[j++] = pass->pw_gecos[i];
  884.       full_username[j] = '\0'; 
  885. .
  886. 110c
  887.             j = strlen(full_username);
  888. .
  889. 108c
  890.             full_username[j] = '\0';
  891. .
  892. 105c
  893.       /* fix for this section from Don Joslyn of Nova University */
  894.       for (i=0,j=0; pass->pw_gecos[i] != '\0' && pass->pw_gecos[i] != ',';
  895. .
  896. 74a
  897. #endif
  898. .
  899. 72a
  900. #ifndef BSD    /* if BSD we've already done this! */
  901. .
  902. 46c
  903.     register int i, j;
  904. .
  905. 34c
  906. char *error_name(), *error_description(), *malloc();
  907. .
  908. 31d
  909. 27a
  910. #undef toupper
  911. .
  912. w
  913. EOF
  914.  
  915. chars=`cat src/initialize.c | wc -c`
  916.  
  917. if [ $chars -ne 7108 ]
  918. then
  919.   echo Your file src/initialize.c has been changed\!
  920.   echo diffs saved as \"src/initialize.D\"
  921. else
  922.   echo applying diffs to file src/initialize.c...
  923.   /bin/cat src/initialize.D | /bin/ed - src/initialize.c
  924. fi
  925.  
  926. #-------------------------------------
  927. # File 'src/showmsg.c' diffs...
  928.  
  929. cat << 'EOF' > src/showmsg.D
  930. 275,276c
  931.       if (errno != 0)
  932.         dprint1(1,"\terror %s hit!\n", error_name(errno));
  933.     }
  934. }
  935.  
  936. int
  937. secure_display(lines, msgnumber)
  938. int lines, msgnumber;
  939. {
  940.     /** This is the cheap way to implement secure pipes - spawn a
  941.         child process running under the old userid, then open the
  942.         pager and feed the message to it.  When the subprocess ends
  943.         (the routine returns) simply return.  Simple and effective.
  944.         (too bad it's this much of a hassle to implement secure
  945.         pipes, though - I can imagine it being a constant problem!)
  946.     **/
  947.  
  948.     int stat = 0, pid, w;
  949. #ifdef BSD
  950.     union wait status;
  951. #else
  952.     int status;
  953. #endif
  954.     register int (*istat)(), (*qstat)();
  955.     
  956. #ifdef NO_VM        /* machine without virtual memory! */
  957.     if ((pid = fork()) == 0) {
  958. #else
  959.     if ((pid = vfork()) == 0) {
  960. #endif
  961.  
  962.       setgid(groupid);    /* and group id            */
  963.       setuid(userid);    /* back to the normal user! */
  964.  
  965.       _exit(display(lines, msgnumber));
  966.     }
  967.  
  968.     istat = signal(SIGINT, SIG_IGN);
  969.     qstat = signal(SIGQUIT, SIG_IGN);
  970.  
  971.     while ((w = wait(&status)) != pid && w != -1)
  972.         ;
  973.  
  974.     signal(SIGINT, istat);
  975.     signal(SIGQUIT, qstat);
  976.  
  977. #ifdef BSD
  978.     return(status.w_retcode);
  979. #else
  980.     return(status);
  981. #endif
  982. .
  983. 272,273c
  984.     if (builtin) {
  985.       strcat(buffer, "\n\r");
  986.       pipe_abort = display_line(buffer);
  987.     }
  988.     else {
  989.       errno = 0;
  990.       fprintf(output_pipe, "%s\n", buffer);
  991. .
  992. 270c
  993.     /** Hands the given line to the output pipe.  'builtin' is true if
  994.         we're using the builtin pager.  **/ 
  995. .
  996. 268a
  997. int  builtin;
  998. .
  999. 267c
  1000. show_line(buffer, builtin)
  1001. .
  1002. 259c
  1003.       if (! builtin)
  1004.         PutLine0(LINES+1,0,"\rPress <return> to return to Elm: ");
  1005.       else
  1006.         Write_to_screen("\n\r\n\rPress <return> to return to Elm: ");
  1007. .
  1008. 257c
  1009.     if (! builtin) pclose(output_pipe);
  1010.  
  1011. .
  1012. 251c
  1013.             show_line(buffer, builtin);
  1014. .
  1015. 248c
  1016.               show_line(buffer, builtin);
  1017. .
  1018. 243c
  1019.             show_line(buffer, builtin); 
  1020. .
  1021. 238c
  1022.               show_line(buffer, builtin);
  1023. .
  1024. 235c
  1025.               show_line(buffer, builtin);
  1026. .
  1027. 221c
  1028.         show_line(buffer, builtin);
  1029. .
  1030. 194c
  1031.         if (!builtin)
  1032.               PutLine0(LINES+1,0,"\rPress <return> to return to Elm: ");
  1033.             else
  1034.           Write_to_screen("\n\r\n\rPress <return> to return to Elm: ");
  1035. .
  1036. 192c
  1037.           if (!builtin) 
  1038.             pclose(output_pipe);
  1039. .
  1040. 188c
  1041.             if (!builtin) pclose(output_pipe);    /* close pipe NOW! */
  1042.         show_mailfile_stats();
  1043. .
  1044. 173,176d
  1045. 154a
  1046.         if (builtin)
  1047.           display_line(buffer);
  1048.         else
  1049.           fprintf(output_pipe, "%s", buffer);
  1050.       }
  1051. .
  1052. 152,153c
  1053.           strlen(header_table[current-1].to) > 0) {
  1054.         sprintf(buffer, "\n\r(message addressed to %s)\n\r", 
  1055. .
  1056. 149a
  1057.       if (builtin)
  1058.         display_line(buffer);
  1059.       else
  1060.         fprintf(output_pipe, "%s", buffer);
  1061.  
  1062. .
  1063. 140,148c
  1064.            mail_sent? "to" : "from", from_buffer,
  1065.            (strlen(from_buffer) > 24? "\n\r": 
  1066.              (strlen(from_buffer) > 16 ? "" : "\t")),
  1067.            notesfile? "Posted" : "Mailed",
  1068.                 full_month(header_table[msgnum-1].month), 
  1069.            header_table[msgnum-1].day, 
  1070.                atoi(header_table[msgnum-1].year) + 1900,
  1071.                header_table[msgnum-1].time,
  1072.            filter? "": "\n\r\n\r");
  1073. .
  1074. 137,138c
  1075.       tail_of(header_table[msgnum-1].from, from_buffer, FALSE);
  1076.  
  1077.       sprintf(buffer, "\r%s #%d %s %s%s\t %s %s %s, %d at %s%s\n\r",
  1078. .
  1079. 131d
  1080. 124,129c
  1081.     builtin = (strcmp(pager, "builtin") == 0 || 
  1082.            strcmp(pager,"internal") == 0);
  1083.  
  1084.     if (builtin) 
  1085.       start_builtin(lines);
  1086.     else {
  1087.       if ((output_pipe = popen(pager,"w")) == NULL) {
  1088.         error2("Can't create pipe to %s [%s]", pager, 
  1089.             error_name(errno));
  1090.         dprint2(1,"\n*** Can't create pipe to %s - error %s ***\n\n",
  1091.                pager, error_name(errno));
  1092.         return(0);
  1093.       }
  1094.       dprint1(4,"Opened a write-only pipe to routine %s \n", pager);
  1095. .
  1096. 121a
  1097.     ClearScreen();
  1098.  
  1099.     if (cursor_control) transmit_functions(OFF);
  1100.  
  1101. .
  1102. 117c
  1103.     int mail_sent,                /* misc use   */
  1104.         builtin = FALSE;            /* our pager? */
  1105. .
  1106. 111c
  1107.     char from_buffer[LONG_STRING], buffer[VERY_LONG_STRING], *full_month();
  1108. .
  1109. 99c
  1110. FILE   *output_pipe, *popen();
  1111. .
  1112. 88c
  1113.     if (strcmp(pager,"builtin") == 0 || strcmp(pager,"internal") == 0)
  1114.       display(lines, msgnumber);
  1115.     else
  1116.       secure_display(lines, msgnumber);
  1117. .
  1118. 84a
  1119.     if (feof(mailfile))
  1120.       dprint0(1,"\n*** seek put us at END OF FILE!!! ***\n");
  1121.  
  1122. .
  1123. 17c
  1124. # include <sys/wait.h>
  1125. # undef tolower
  1126. .
  1127. 14a
  1128. #include <signal.h>
  1129. .
  1130. 11d
  1131. 8a
  1132.    Modified 7/86 to have secure pipes.. *sigh*
  1133. .
  1134. w
  1135. EOF
  1136.  
  1137. chars=`cat src/showmsg.c | wc -c`
  1138.  
  1139. if [ $chars -ne 7704 ]
  1140. then
  1141.   echo Your file src/showmsg.c has been changed\!
  1142.   echo diffs saved as \"src/showmsg.D\"
  1143. else
  1144.   echo applying diffs to file src/showmsg.c...
  1145.   /bin/cat src/showmsg.D | /bin/ed - src/showmsg.c
  1146. fi
  1147.  
  1148. #-------------------------------------
  1149. # File 'src/newmbox.c' diffs...
  1150.  
  1151. cat << 'EOF' > src/newmbox.D
  1152. 352,353c
  1153.     header_table[count > 0? count-1:count].lines = line + 1;
  1154.     
  1155. .
  1156. 266a
  1157.     
  1158.         /** try to allocate new headers, if needed... **/
  1159.  
  1160.         if (count >= max_headers) {
  1161.           max_headers += KLICK;
  1162.           dprint2(1,
  1163.           "\n\nAbout to allocate headers, count = %d, max_headers=%d\n",
  1164.           count, max_headers);
  1165.           if ((temp_struct = (struct header_rec *) realloc(header_table,
  1166.             max_headers * sizeof(struct header_rec))) == NULL) {
  1167.             error1(
  1168.       "\n\r\n\rCouldn't allocate enough memory!  Failed on message #%d\n\r\n\r",
  1169.             count);
  1170.             leave();
  1171.            }
  1172.            header_table = temp_struct;
  1173.            dprint1(1,"\tallocated %d more headers!\n\n", KLICK);
  1174.          }
  1175.          else 
  1176.            dprint1(1,"\ndidn't need to allocate headers: count=%d\n\n",
  1177.             count);
  1178.           
  1179. .
  1180. 241c
  1181.          line = 0;
  1182. .
  1183. 239c
  1184.          line = header_table[message_count - 1].lines;
  1185. .
  1186. 185a
  1187.         if (access(temp_filename, ACCESS_EXISTS) != -1) {
  1188.           /* Hey!  What the hell is this?  The temp file already exists? */
  1189.           /* Looks like a potential clash of processes on the same file! */
  1190.           unlock();                     /* so remove lock file! */
  1191.           error("What's this?  The temp mailbox already exists??");
  1192.           sleep(2);
  1193.           error("Ahhhh.....I give up");
  1194.           silently_exit();    /* leave without tampering with it! */
  1195.         }
  1196. .
  1197. 151a
  1198.     struct header_rec *temp_struct;
  1199. .
  1200. 120c
  1201.     if (mailfile != NULL)
  1202.       (void) fclose(mailfile);  /* close it first, to avoid too many open */
  1203. .
  1204. 114a
  1205.     if (switching_from_default) {    /* we need to remove the tmp file */
  1206.         sprintf(buff, "%s%s", temp_mbox, username);
  1207.         if (unlink(buff) != 0) {
  1208.           error1(
  1209.         "Sorry, but I can't seem to unlink your temp mail file [%s]\n\r",
  1210.         error_name(errno));
  1211.               silently_exit();
  1212.         }
  1213.     }
  1214.  
  1215. .
  1216. 108c
  1217.         PutLine1(LINES-3,COLUMNS-40,"Mailbox: %s", buff);
  1218. .
  1219. 106c
  1220.         PutLine0(LINES-3,COLUMNS-40,"Resynchronizing file");
  1221. .
  1222. 104a
  1223.       if (first_word(buff, mailhome)) {    /* a mail file! */
  1224.         mbox_specified = 0;       /* fake program to think that */
  1225.         stat = 1;                  /*     we're the default file */
  1226.         switching_to_default++;      /*        remember this act!  */
  1227.       }
  1228.  
  1229. .
  1230. 89,93d
  1231. 50a
  1232.       if (stat == 1 && strlen(infile) == 0) {    
  1233.  
  1234.         /* Subtlety - check to see if there's another instantiation
  1235.            of Elm (e.g. if the /tmp file is in use).  If so, DIE! */
  1236.  
  1237.         sprintf(infile, "%s%s", temp_mbox, username);
  1238.         if (access(infile, ACCESS_EXISTS) != -1) {
  1239.           error(
  1240.         "Hey!  An instantiation of Elm is already reading this mail!\n\r");
  1241.               exit(1);
  1242.             }
  1243.             sprintf(infile, "%s%s", mailhome, username);
  1244.       }
  1245. .
  1246. 49a
  1247.     if (mbox_specified == 0 && stat == 0)
  1248.       switching_from_default++;
  1249.  
  1250. .
  1251. 47c
  1252.     int  switching_to_default = 0, switching_from_default = 0;
  1253. .
  1254. 25c
  1255. char *error_name(), *error_description(), *realloc();
  1256. .
  1257. 18c
  1258. #  ifndef BSD4.1
  1259. #    include <sys/time.h>
  1260. #  else
  1261. #    include <time.h>
  1262. #  endif
  1263. .
  1264. w
  1265. EOF
  1266.  
  1267. chars=`cat src/newmbox.c | wc -c`
  1268.  
  1269. if [ $chars -ne 11389 ]
  1270. then
  1271.   echo Your file src/newmbox.c has been changed\!
  1272.   echo diffs saved as \"src/newmbox.D\"
  1273. else
  1274.   echo applying diffs to file src/newmbox.c...
  1275.   /bin/cat src/newmbox.D | /bin/ed - src/newmbox.c
  1276. fi
  1277.  
  1278. #-------------------------------------
  1279. # File 'src/file_utils.c' diffs...
  1280.  
  1281. cat << 'EOF' > src/file_utils.D
  1282. 124c
  1283.     return(stat);
  1284. .
  1285. 119c
  1286. #ifdef BSD
  1287.     stat = status.w_retcode;
  1288. #else
  1289.     stat = status;
  1290. #endif
  1291. .
  1292. 108,109c
  1293.       if ((fd = fopen(file, mode)) == NULL)
  1294.         _exit(errno);
  1295.       else {
  1296.         fclose(fd);        /* don't just LEAVE it! */
  1297.         _exit(0);
  1298.       }
  1299. .
  1300. 106a
  1301.       setuid(userid);        /** back to normal userid **/
  1302. .
  1303. 105d
  1304. 97c
  1305.     FILE *fd;
  1306.     int stat = 0, pid, w;
  1307. #ifdef BSD
  1308.     union wait status;
  1309. #else
  1310.     int status;
  1311. #endif
  1312. .
  1313. 93c
  1314.     /** returns 0 iff user can open the file.  This is not
  1315. .
  1316. 85c
  1317.     return(stat);
  1318. .
  1319. 80,81c
  1320. #ifdef BSD
  1321.     stat = status.w_retcode;
  1322. #else
  1323.     stat = status;
  1324. #endif
  1325.  
  1326. .
  1327. 69,70c
  1328.  
  1329.       if (access(file, mode) == 0) 
  1330.         _exit(0);
  1331.       else 
  1332.         _exit(errno != 0? errno : 1);    /* never return zero! */
  1333. .
  1334. 67a
  1335.       setuid(userid);        /** back to normal userid **/
  1336.  
  1337. .
  1338. 66d
  1339. 58c
  1340.     int stat = 0, pid, w;
  1341. #ifdef BSD
  1342.     union wait status;
  1343. #else
  1344.     int status;
  1345. #endif
  1346. .
  1347. 56c
  1348.     /** returns ZERO iff user can access file or "errno" otherwise **/
  1349. .
  1350. 19a
  1351. #ifdef BSD
  1352. # include <sys/wait.h>
  1353. #endif
  1354.  
  1355. .
  1356. 16a
  1357.  
  1358. .
  1359. 15c
  1360. # undef tolower
  1361. .
  1362. w
  1363. EOF
  1364.  
  1365. chars=`cat src/file_utils.c | wc -c`
  1366.  
  1367. if [ $chars -ne 4640 ]
  1368. then
  1369.   echo Your file src/file_utils.c has been changed\!
  1370.   echo diffs saved as \"src/file_utils.D\"
  1371. else
  1372.   echo applying diffs to file src/file_utils.c...
  1373.   /bin/cat src/file_utils.D | /bin/ed - src/file_utils.c
  1374. fi
  1375.  
  1376. #-------------------------------------
  1377. # File 'src/reply.c' diffs...
  1378.  
  1379. cat << 'EOF' > src/reply.c.D
  1380. 362a
  1381. }
  1382.  
  1383. int
  1384. break_down_tolist(buf, index, address, comment)
  1385. char *buf, *address, *comment;
  1386. int  *index;
  1387. {
  1388.     /** This routine steps through "buf" and extracts a single address
  1389.         entry.  This entry can be of any of the following forms;
  1390.  
  1391.         address (name)
  1392.         name <address>
  1393.         address
  1394.     
  1395.         Once it's extracted a single entry, it will then return it as
  1396.         two tokens, with 'name' (e.g. comment) surrounded by parens.
  1397.         Returns ZERO if done with the string...
  1398.     **/
  1399.  
  1400.     char buffer[LONG_STRING];
  1401.     register int i, loc = 0;
  1402.  
  1403.     if (*index > strlen(buf)) return(FALSE);
  1404.  
  1405.     while (whitespace(buf[*index])) (*index)++;
  1406.  
  1407.     if (*index > strlen(buf)) return(FALSE);
  1408.  
  1409.     /** Now we're pointing at the first character of the token! **/
  1410.  
  1411.     while (buf[*index] != ',' && buf[*index] != '\0')
  1412.       buffer[loc++] = buf[(*index)++];
  1413.  
  1414.     (*index)++;
  1415.  
  1416.     while (whitespace(buffer[loc])) loc--;    /* remove trailing whitespace */
  1417.  
  1418.     buffer[loc] = '\0';
  1419.  
  1420.     if (strlen(buffer) == 0) return(FALSE);
  1421.  
  1422.     dprint1(5, "\n* got \"%s\"\n", buffer);
  1423.  
  1424.     if (buffer[loc-1] == ')') {    /*   address (name)  format */
  1425.       for (loc = 0;buffer[loc] != '(' && loc < strlen(buffer); loc++)
  1426.         /* get to the opening comment character... */ ;
  1427.  
  1428.       loc--;    /* back up to just before the paren */
  1429.       while (whitespace(buffer[loc])) loc--;    /* back up */
  1430.  
  1431.       /** get the address field... **/
  1432.  
  1433.       for (i=0; i <= loc; i++)
  1434.         address[i] = buffer[i];
  1435.       address[i] = '\0';
  1436.  
  1437.       /** now get the comment field, en toto! **/
  1438.  
  1439.       loc = 0;
  1440.  
  1441.       for (i = chloc(buffer, '('); i < strlen(buffer); i++)
  1442.         comment[loc++] = buffer[i];
  1443.       comment[loc] = '\0';
  1444.     }
  1445.     else if (buffer[loc-1] == '>') {    /*   name <address>  format */
  1446.       dprint0(7, "\tcomment <address>\n");
  1447.       for (loc = 0;buffer[loc] != '<' && loc < strlen(buffer); loc++)
  1448.         /* get to the opening comment character... */ ;
  1449.       while (whitespace(buffer[loc])) loc--;    /* back up */
  1450.  
  1451.       /** get the comment field... **/
  1452.  
  1453.       comment[0] = '(';
  1454.       for (i=1; i < loc; i++)
  1455.         comment[i] = buffer[i-1];
  1456.       comment[i++] = ')';
  1457.       comment[i] = '\0';
  1458.  
  1459.       /** now get the address field, en toto! **/
  1460.  
  1461.       loc = 0;
  1462.  
  1463.       for (i = chloc(buffer,'<') + 1; i < strlen(buffer) - 1; i++)
  1464.         address[loc++] = buffer[i];
  1465.     
  1466.       address[loc] = '\0';
  1467.     }
  1468.     else {
  1469.       strcpy(address, buffer);
  1470.       comment[0] = '\0';
  1471.     }
  1472.  
  1473.     dprint2(5,"-- returning '%s' '%s'\n", address, comment);
  1474.  
  1475.     return(TRUE);
  1476. .
  1477. 178a
  1478.  
  1479.       if (in_message) dprint1(1,"> %s", buf);
  1480. .
  1481. 175d
  1482. 170c
  1483.       while (break_down_tolist(buf, &index, address, comment)) {
  1484.  
  1485. .
  1486. 168c
  1487.       /** we have a buffer with a list of addresses, each of either the
  1488.           form "address (name)" or "name <address>".  Our mission, should
  1489.           we decide not to be too lazy, is to break it into the two parts.
  1490.       **/
  1491.           
  1492.       if (!whitespace(buf[0]))
  1493.         index = chloc(buf, ':')+1;        /* skip header field */
  1494.       else
  1495.         index = 0;                /* skip whitespace   */
  1496. .
  1497. 135,137c
  1498.     char ret_address[LONG_SLEN], buf[LONG_SLEN], new_address[LONG_SLEN],
  1499.      address[LONG_SLEN], comment[LONG_SLEN];
  1500.     char *bufptr;
  1501.     int  in_message = 1, first_pass = 0, index;
  1502. .
  1503. w
  1504. EOF
  1505.  
  1506. chars=`cat src/reply.c | wc -c`
  1507.  
  1508. if [ $chars -ne 10560 ]
  1509. then
  1510.   echo Your file src/reply.c has been changed\!
  1511.   echo diffs saved as \"src/reply.c.D\"
  1512. else
  1513.   echo applying diffs to file src/reply.c...
  1514.   /bin/cat src/reply.c.D | /bin/ed - src/reply.c
  1515. fi
  1516.  
  1517. #-------------------------------------
  1518. # File 'src/screen.c' diffs...
  1519.  
  1520. cat << 'EOF' > src/screen.c.D
  1521. 245c
  1522.         (highlight && has_highlighting && !arrow_cursor) ?
  1523.               end_highlight : "");
  1524. .
  1525. 230,231c
  1526.         highlight? ((has_highlighting && !arrow_cursor) ?
  1527.                    start_highlight : "->") : "  ",
  1528.         (highlight && has_highlighting && !arrow_cursor)? "  " : "",
  1529. .
  1530. w
  1531. EOF
  1532.  
  1533. chars=`cat src/screen.c | wc -c`
  1534.  
  1535. if [ $chars -ne 7956 ]
  1536. then
  1537.   echo Your file src/screen.c has been changed\!
  1538.   echo diffs saved as \"src/screen.c.D\"
  1539. else
  1540.   echo applying diffs to file src/screen.c...
  1541.   /bin/cat src/screen.c.D | /bin/ed - src/screen.c
  1542. fi
  1543.  
  1544. #-------------------------------------
  1545. # File 'src/strings.c' diffs...
  1546.  
  1547. cat << 'EOF' > src/strings.D
  1548. 167c
  1549.         current_length += strlen(word);
  1550. .
  1551. 165c
  1552.           current_length += 2;
  1553.         }
  1554.         for (i=(word[0] == ' '? 1:0); i<strlen(word); i++)
  1555. .
  1556. 162,163c
  1557.  
  1558.       else {    /* just add this address to the list.. */
  1559.  
  1560.         if (index > 0) {
  1561.           ret_buffer[index++] = ',';    /* comma added! */
  1562. .
  1563. 158c
  1564.         
  1565.         /* now add this pup! */
  1566.  
  1567.         for (i=(word[0] == ' '? 1:0); i<strlen(word); i++)
  1568. .
  1569. 152a
  1570.           ret_buffer[index++] = ',';    /* close 'er up, doctor! */
  1571. .
  1572. 150c
  1573.     while ((word = get_token(bufptr,",", depth)) != NULL) {
  1574.  
  1575.         /* first, decide what sort of separator we need, if any... */
  1576.  
  1577. .
  1578. 131,136c
  1579.     /** Return buffer with \n\t sequences added at each point where it 
  1580.         would be more than 80 chars long.  It only allows the breaks at 
  1581.         legal points (ie commas followed by white spaces).  init-len is 
  1582.         the characters already on the first line...  Changed so that if 
  1583.             this is called while mailing without the overhead of "elm", it'll 
  1584.             include "\r\n\t" instead.
  1585.         Changed to use ',' as a separator and to REPLACE it after it's
  1586.         found in the output stream...
  1587. .
  1588. w
  1589. EOF
  1590.  
  1591. chars=`cat src/strings.c | wc -c`
  1592.  
  1593. if [ $chars -ne 10842 ]
  1594. then
  1595.   echo Your file src/strings.c has been changed\!
  1596.   echo diffs saved as \"src/strings.D\"
  1597. else
  1598.   echo applying diffs to file src/strings.c...
  1599.   /bin/cat src/strings.D | /bin/ed - src/strings.c
  1600. fi
  1601.  
  1602. #-------------------------------------
  1603. # File 'src/utils.c' diffs...
  1604.  
  1605. cat << 'EOF' > src/utils.c.D
  1606. 68a
  1607.     (void) unlink(buffer);
  1608.  
  1609.     if (! mail_only) {
  1610.       MoveCursor(LINES,0);
  1611.       Writechar('\n');
  1612.     }
  1613.  
  1614.     exit(0);
  1615. }
  1616.  
  1617. silently_exit()
  1618. {
  1619.     /** This is the same as 'leave', but it doesn't remove any non-pid
  1620.         files.  It's used when we notice that we're trying to create a
  1621.         temp mail file and one already exists!!
  1622.     **/
  1623.     char buffer[SLEN];
  1624.  
  1625.     dprint0(2,"\nLeaving mailer quietly (silently_exit)\n");
  1626.  
  1627.     Raw(OFF);
  1628.     if (cursor_control)  transmit_functions(OFF);
  1629.     if (hp_terminal)     softkeys_off();
  1630.  
  1631.     sprintf(buffer,"%s%d",temp_file, getpid());  /* editor buffer */
  1632.     (void) unlink(buffer);
  1633.  
  1634.     sprintf(buffer,"%s%d",temp_file, getpid()+1);  /* editor buffer */
  1635. .
  1636. 18a
  1637. extern int errno;
  1638. char *error_name();
  1639.  
  1640. show_mailfile_stats()
  1641. {
  1642.     /** when we're about to die, let's try to dump lots of good stuff
  1643.         to the debug file... **/
  1644.  
  1645.     struct stat buffer;
  1646.  
  1647.     if (debug == 0) return;        /* Damn!  Can't do it! */
  1648.  
  1649.     if (fstat(fileno(mailfile), &buffer) == 0) {
  1650.       dprint1(1,"\nDump of stats for mailfile %s;\n", infile);
  1651.  
  1652.       dprint3(1, "\tinode: %d, mode: %o, uid: %d, ",
  1653.             buffer.st_ino, buffer.st_mode, buffer.st_uid);
  1654.       dprint2(1,"gid: %d, size: %d\n\n", buffer.st_gid, buffer.st_size);
  1655.  
  1656.       dprint1(1,"\toffset into file = %l\n", ftell(mailfile));
  1657.     }
  1658.     else
  1659.       dprint2(1,"\nfstat on mailfile '%s' failed with error %s!!\n\n",
  1660.             infile, error_name(errno));
  1661. }
  1662.     
  1663. .
  1664. 11a
  1665. #include <errno.h>
  1666. .
  1667. w
  1668. EOF
  1669.  
  1670. chars=`cat src/utils.c | wc -c`
  1671.  
  1672. if [ $chars -ne 3786 ]
  1673. then
  1674.   echo Your file src/utils.c has been changed\!
  1675.   echo diffs saved as \"src/utils.c.D\"
  1676. else
  1677.   echo applying diffs to file src/utils.c...
  1678.   /bin/cat src/utils.c.D | /bin/ed - src/utils.c
  1679. fi
  1680.  
  1681. #-------------------------------------
  1682. # File 'src/syscall.c' diffs...
  1683.  
  1684. cat << 'EOF' > src/syscall.D
  1685. 91c
  1686.     return(stat);
  1687. .
  1688. 86c
  1689. #ifdef BSD
  1690.     if (status.w_retcode != 0) stat = status.w_retcode;
  1691. #else
  1692.     if (w == -1) stat = status;
  1693. #endif
  1694. .
  1695. 76c
  1696.         execl("/bin/sh", "sh", "-c", string, (char *) 0);
  1697. .
  1698. 73c
  1699.         execl(shell, argv_zero(shell), "-c", string, (char *) 0);
  1700. .
  1701. 70a
  1702.       setuid(userid);    /* back to the normal user! */
  1703. .
  1704. 69d
  1705. 58c
  1706.     int stat = 0, pid, w;
  1707. #ifdef BSD
  1708.     union wait status;
  1709. #else
  1710.     int status;
  1711. #endif
  1712. .
  1713. 12a
  1714. #ifdef BSD
  1715. #  include <sys/wait.h>
  1716. #endif
  1717.  
  1718. .
  1719. w
  1720. EOF
  1721.  
  1722. chars=`cat src/syscall.c | wc -c`
  1723.  
  1724. if [ $chars -ne 4692 ]
  1725. then
  1726.   echo Your file src/syscall.c has been changed\!
  1727.   echo diffs saved as \"src/syscall.D\"
  1728. else
  1729.   echo applying diffs to file src/syscall.c...
  1730.   /bin/cat src/syscall.D | /bin/ed - src/syscall.c
  1731. fi
  1732.  
  1733. #-------------------------------------
  1734. # File 'src/aliaslib.c' diffs...
  1735.  
  1736. cat << 'EOF' > src/aliaslib.D
  1737. 159c
  1738.     /* Read from file fd.  End read upon reading either 
  1739. .
  1740. w
  1741. EOF
  1742.  
  1743. chars=`cat src/aliaslib.c | wc -c`
  1744.  
  1745. if [ $chars -ne 4476 ]
  1746. then
  1747.   echo Your file src/aliaslib.c has been changed\!
  1748.   echo diffs saved as \"src/aliaslib.D\"
  1749. else
  1750.   echo applying diffs to file src/aliaslib.c...
  1751.   /bin/cat src/aliaslib.D | /bin/ed - src/aliaslib.c
  1752. fi
  1753.  
  1754. #-------------------------------------
  1755. # File 'src/domains.c' diffs...
  1756.  
  1757. cat << 'EOF' > src/domains.D
  1758. 16a
  1759. #ifdef BSD
  1760. # undef toupper
  1761. # undef tolower
  1762. #endif
  1763.  
  1764. .
  1765. w
  1766. EOF
  1767.  
  1768. chars=`cat src/domains.c | wc -c`
  1769.  
  1770. if [ $chars -ne 7635 ]
  1771. then
  1772.   echo Your file src/domains.c has been changed\!
  1773.   echo diffs saved as \"src/domains.D\"
  1774. else
  1775.   echo applying diffs to file src/domains.c...
  1776.   /bin/cat src/domains.D | /bin/ed - src/domains.c
  1777. fi
  1778.  
  1779. #-------------------------------------
  1780. # File 'src/fileio.c' diffs...
  1781.  
  1782. cat << 'EOF' > src/fileio.c.D
  1783. 64a
  1784.  
  1785. #ifdef SITE_HIDING
  1786.  
  1787. int
  1788. is_a_hidden_user(username)
  1789. char *username;
  1790. {
  1791.     /** Returns true iff the username is present in the list of
  1792.        'hidden users' on the system.
  1793.     **/
  1794.     
  1795.     FILE *hidden_users;
  1796.     char  buffer[SLEN];
  1797.  
  1798.     if ((hidden_users = fopen (HIDDEN_SITE_USERS,"r")) == NULL) {
  1799.       dprint2(1,"Couldn't open hidden site file %s [%s]\n",
  1800.           HIDDEN_SITE_USERS, error_name(errno));
  1801.       return(FALSE);
  1802.     }
  1803.  
  1804.     while (fscanf(hidden_users, "%s", buffer) != EOF)
  1805.       if (strcmp(buffer, username) == 0) {
  1806.         dprint1(3,"** Found user '%s' in hidden site file!\n",
  1807.             username);
  1808.         fclose(hidden_users);
  1809.         return(TRUE);
  1810.       }
  1811.  
  1812.     fclose(hidden_users);
  1813.     dprint1(3,"** Couldn't find user '%s' in hidden site file!\n",
  1814.         username);
  1815.  
  1816.     return(FALSE);
  1817. }
  1818.  
  1819. #endif
  1820. .
  1821. 59a
  1822.         ok = 0;    /* STOP NOW! */
  1823. .
  1824. 14a
  1825. extern int errno;
  1826.  
  1827. char *error_name();
  1828.  
  1829. .
  1830. 9a
  1831. #include <errno.h>
  1832. .
  1833. w
  1834. EOF
  1835.  
  1836. chars=`cat src/fileio.c | wc -c`
  1837.  
  1838. if [ $chars -ne 1967 ]
  1839. then
  1840.   echo Your file src/fileio.c has been changed\!
  1841.   echo diffs saved as \"src/fileio.c.D\"
  1842. else
  1843.   echo applying diffs to file src/fileio.c...
  1844.   /bin/cat src/fileio.c.D | /bin/ed - src/fileio.c
  1845. fi
  1846.  
  1847. #-------------------------------------
  1848. # File 'src/return_addr.c' diffs...
  1849.  
  1850. cat << 'EOF' > src/return_addr.D
  1851. 282a
  1852.     else {
  1853.        /* if we have a space character, or we DON'T have '!' or '@' chars */
  1854.  
  1855.        if (chloc(header_table[current-1].from, ' ') >= 0 ||
  1856.        (chloc(header_table[current-1].from, '!') < 0 &&
  1857.         chloc(header_table[current-1].from, '@') < 0))
  1858.  
  1859.      sprintf(name2, " (%s)", header_table[current-1].from);
  1860.      strcat(buffer, name2);
  1861.     }
  1862.  
  1863. .
  1864. 229a
  1865.     /* now initialize all the char buffers [thanks Keith!] */
  1866.  
  1867.     buf[0] = name1[0] = name2[0] = lastname[0] = '\0';
  1868.     hold_return[0] = alt_name2[0] = '\0';
  1869.  
  1870. .
  1871. w
  1872. EOF
  1873.  
  1874. chars=`cat src/return_addr.c | wc -c`
  1875.  
  1876. if [ $chars -ne 9321 ]
  1877. then
  1878.   echo Your file src/return_addr.c has been changed\!
  1879.   echo diffs saved as \"src/return_addr.D\"
  1880. else
  1881.   echo applying diffs to file src/return_addr.c...
  1882.   /bin/cat src/return_addr.D | /bin/ed - src/return_addr.c
  1883. fi
  1884.  
  1885. #-------------------------------------
  1886. # File 'src/addr_utils.c' diffs...
  1887.  
  1888. cat << 'EOF' > src/addr_utils.D
  1889. 219c
  1890.  
  1891.           if (mail_only) 
  1892.             printf(buffer);
  1893.           else
  1894. .
  1895. w
  1896. EOF
  1897.  
  1898. chars=`cat src/addr_utils.c | wc -c`
  1899.  
  1900. if [ $chars -ne 15408 ]
  1901. then
  1902.   echo Your file src/addr_utils.c has been changed\!
  1903.   echo diffs saved as \"src/addr_utils.D\"
  1904. else
  1905.   echo applying diffs to file src/addr_utils.c...
  1906.   /bin/cat src/addr_utils.D | /bin/ed - src/addr_utils.c
  1907. fi
  1908.  
  1909. #-------------------------------------
  1910. # File 'src/input_utils.c' diffs...
  1911.  
  1912. cat << 'EOF' > src/input_utils.D
  1913. 85c
  1914.     if (! append_current && ! mail_only)
  1915. .
  1916. 83c
  1917.     if (!mail_only)
  1918.       PutLine1(x,y, "%s", string);    
  1919.     else
  1920.       printf("%s", string);    
  1921.  
  1922. .
  1923. w
  1924. EOF
  1925.  
  1926. chars=`cat src/input_utils.c | wc -c`
  1927.  
  1928. if [ $chars -ne 7235 ]
  1929. then
  1930.   echo Your file src/input_utils.c has been changed\!
  1931.   echo diffs saved as \"src/input_utils.D\"
  1932. else
  1933.   echo applying diffs to file src/input_utils.c...
  1934.   /bin/cat src/input_utils.D | /bin/ed - src/input_utils.c
  1935. fi
  1936.  
  1937. #-------------------------------------
  1938. # File 'src/mailtime.c' diffs...
  1939.  
  1940. cat << 'EOF' > src/mailtime.D
  1941. 117a
  1942.     /** That's what I like about programming for BSD & USG - the easy
  1943.         portability between 'em.  Especially the section 2 calls!! **/
  1944.  
  1945. .
  1946. 116c
  1947.     if (utime(filename, NULL) == -1)    /* note no "S"  */
  1948. .
  1949. 114c
  1950.     if (utimes(filename, &tval) == -1)    /* note the "S" */
  1951. # endif
  1952. .
  1953. 110a
  1954. # ifdef BSD4.1
  1955.     tval = (time_t) time((long *) 0);
  1956.     if (utime(filename, &tval) == -1)
  1957. # else
  1958. .
  1959. 105a
  1960. # endif
  1961. .
  1962. 103a
  1963. # ifdef BSD4.1
  1964.     struct timeb  loc_time;
  1965.     time_t tval;
  1966. # else
  1967. .
  1968. 73a
  1969. #ifdef BSD
  1970.     extern struct tm *localtime();
  1971. #endif
  1972. .
  1973. 14c
  1974. #  ifndef BSD4.1
  1975. #    include <sys/time.h>
  1976. #  else
  1977. #    include <time.h>
  1978. #    include <sys/timeb.h>
  1979. #  endif
  1980. .
  1981. w
  1982. EOF
  1983.  
  1984. chars=`cat src/mailtime.c | wc -c`
  1985.  
  1986. if [ $chars -ne 4271 ]
  1987. then
  1988.   echo Your file src/mailtime.c has been changed\!
  1989.   echo diffs saved as \"src/mailtime.D\"
  1990. else
  1991.   echo applying diffs to file src/mailtime.c...
  1992.   /bin/cat src/mailtime.D | /bin/ed - src/mailtime.c
  1993. fi
  1994.  
  1995. #-------------------------------------
  1996. # File 'src/opt_utils.c' diffs...
  1997.  
  1998. cat << 'EOF' > src/opt_utils.D
  1999. 38a
  2000.  
  2001. #endif
  2002.  
  2003. #ifdef UTS
  2004. .
  2005. 20c
  2006. #ifdef NEED_GETHOSTNAME
  2007. .
  2008. 17,18c
  2009. # include <sys/tubio.h>
  2010. # define  TTYIN        0        /* standard input */
  2011. #endif
  2012. .
  2013. 13c
  2014. # include <pwd.h>
  2015. #else
  2016. # include <sys/utsname.h>
  2017. .
  2018. w
  2019. EOF
  2020.  
  2021. chars=`cat src/opt_utils.c | wc -c`
  2022.  
  2023. if [ $chars -ne 4997 ]
  2024. then
  2025.   echo Your file src/opt_utils.c has been changed\!
  2026.   echo diffs saved as \"src/opt_utils.D\"
  2027. else
  2028.   echo applying diffs to file src/opt_utils.c...
  2029.   /bin/cat src/opt_utils.D | /bin/ed - src/opt_utils.c
  2030. fi
  2031.  
  2032. #-------------------------------------
  2033. # File 'src/mailmsg2.c' diffs...
  2034.  
  2035. cat << 'EOF' > src/mailmsg2.D
  2036. 405,406c
  2037.     fprintf(filedesc,"From: %s <%s!%s>\n", full_username,
  2038.         hostname, username);
  2039. .
  2040. 401,402c
  2041.     fprintf(filedesc,"From: %s <%s@%s>\n", full_username,
  2042.         username, hostname);
  2043. .
  2044. 398,399c
  2045.     fprintf(filedesc,"From: %s <%s@%s%s>\n", full_username, 
  2046.         username, hostname, DOMAIN);
  2047. .
  2048. 395a
  2049. # ifdef SITE_HIDING
  2050.     if (is_a_hidden_user(username))
  2051.       fprintf(filedesc,"From: %s <%s!%s!%s>\n", full_username,
  2052.           hostname, HIDDEN_SITE_NAME, username);
  2053.     else
  2054. # endif
  2055. .
  2056. 390a
  2057. #ifdef SITE_HIDING
  2058.     if (is_a_hidden_user(username)) {
  2059.       /** this is the interesting part of this trick... **/
  2060.       sprintf(buffer, "From %s!%s %s\n",  HIDDEN_SITE_NAME,
  2061.           username, get_ctime_date());
  2062.       fprintf(filedesc, "%s", buffer);
  2063.       dprint1(1,"\nadded: %s", buffer);
  2064.       /** so is this perverted or what? **/
  2065.     }
  2066. #endif
  2067.  
  2068. .
  2069. 313c
  2070.           printf("No\n\r\n\r");
  2071.           /** try to save it as a dead letter file **/
  2072.           
  2073.           sprintf(fname, "%s/%s", home, dead_letter);
  2074.  
  2075.           if ((deadfd = fopen(fname,"a")) == NULL) {
  2076.         dprint2(1,
  2077.             "\nAttempt to append to deadletter file '%s' failed: %s\n",
  2078.             fname, error_name(errno));
  2079.             printf("Message not saved, Sorry.\n\r\n\r");
  2080.         return('f');
  2081.           }
  2082.           else if ((messagefd = fopen(filename, "r")) == NULL) {
  2083.         dprint2(1,"\nAttempt to read reply file '%s' failed: %s\n",
  2084.             filename, error_name(errno));
  2085.             printf("Message not saved, Sorry.\n\r\n\r");
  2086.         return('f');
  2087.           }
  2088.     
  2089.           /* if we get here we're okay for everything, right? */
  2090.  
  2091.           while (fgets(buffer, LONG_SLEN, messagefd) != NULL)
  2092.         fputs(buffer, deadfd);
  2093.  
  2094.           fclose(messagefd);
  2095.           fclose(deadfd);
  2096.  
  2097.           printf("Message saved in file \"$HOME/%s\"\n\n", dead_letter);
  2098.  
  2099. .
  2100. 303c
  2101.     FILE *deadfd, *messagefd;
  2102.     char ch, buffer[LONG_SLEN], fname[SLEN];
  2103. .
  2104. 301c
  2105.         TRUE if everything is okay, FALSE if cancelled.  Modified
  2106.         compliments of Steve Wolf to add the'dead.letter' feature **/
  2107. .
  2108. 298c
  2109. verify_transmission(filename)
  2110. char *filename;
  2111. .
  2112. 199c
  2113.                   mailer, strip_parens(strip_commas(expanded_to)), 
  2114. .
  2115. 195c
  2116.                   sendmail, smflags, strip_parens(strip_commas(expanded_to)), 
  2117. .
  2118. 193c
  2119.       if (access(sendmail, EXECUTE_ACCESS) == 0 
  2120. #ifdef SITE_HIDING
  2121.           && ! is_a_hidden_user(username))
  2122. #else
  2123.          )
  2124. #endif
  2125. .
  2126. 178c
  2127.                   mailx, subject, strip_parens(strip_commas(expanded_to)), 
  2128. .
  2129. 155c
  2130.     if (auto_cc && !batch) 
  2131. .
  2132. 139,140c
  2133.       error1("Could not open reply file (%s)", error_name(errno));
  2134.       return(1);
  2135. .
  2136. 136c
  2137.       dprint2(1,
  2138. .
  2139. 133a
  2140.  
  2141.       if ((reply = fopen(filename,"r")) == NULL) {
  2142.           dprint2(1,
  2143.         "Attempt to open file %s for reading failed with error %s (mail)\n",
  2144.                 filename, error_name(errno));
  2145.           error1("Could not open reply file (%s)", error_name(errno));
  2146.           return(1);
  2147.       }
  2148. .
  2149. 129c
  2150.         if ((ch = verify_transmission(filename)) == 'f') {    /* cancelled! */
  2151. .
  2152. 124a
  2153.            default : /* do nothing */ ;
  2154. .
  2155. 121c
  2156. ******************************************************************************/
  2157. .
  2158. 112c
  2159. /*****************************************************************************
  2160.           case 'e' : if (edit_message) edit_the_message(filename);
  2161.                    /** now let's try reading it again... 
  2162.  
  2163.                (void) fclose(reply);    /* make sure it's closed
  2164. .
  2165. 110c
  2166.           case 'e' : edit_the_message(filename);    break;
  2167. .
  2168. 108d
  2169. 103c
  2170.     ch = edit_message? 'e' : ' ';    /* drop through if needed... */
  2171. .
  2172. 78c
  2173.         fprintf(reply, "%s\n", very_long_buffer);
  2174. .
  2175. 75d
  2176. 71d
  2177. 40c
  2178.     char ch;
  2179. .
  2180. 14c
  2181. char *format_long(), *strip_commas(), *tail_of_string(); 
  2182. #ifdef SITE_HIDING 
  2183.  char *get_ctime_date();
  2184. #endif
  2185. .
  2186. w
  2187. EOF
  2188.  
  2189. chars=`cat src/mailmsg2.c | wc -c`
  2190.  
  2191. if [ $chars -ne 14200 ]
  2192. then
  2193.   echo Your file src/mailmsg2.c has been changed\!
  2194.   echo diffs saved as \"src/mailmsg2.D\"
  2195. else
  2196.   echo applying diffs to file src/mailmsg2.c...
  2197.   /bin/cat src/mailmsg2.D | /bin/ed - src/mailmsg2.c
  2198. fi
  2199.  
  2200. #-------------------------------------
  2201. # File 'src/savecopy.c' diffs...
  2202.  
  2203. cat << 'EOF' > src/savecopy.D
  2204. 100c
  2205.     thetime = (long) time((long *) 0);      /* dumb dumb dumb routine */
  2206. .
  2207. 52c
  2208.         if (can_access(savename, READ_ACCESS) != 0)
  2209. .
  2210. 10a
  2211. # endif
  2212. .
  2213. 9a
  2214. # ifdef BSD4.1
  2215. #  include <time.h>
  2216. # else
  2217. .
  2218. w
  2219. EOF
  2220.  
  2221. chars=`cat src/savecopy.c | wc -c`
  2222.  
  2223. if [ $chars -ne 4059 ]
  2224. then
  2225.   echo Your file src/savecopy.c has been changed\!
  2226.   echo diffs saved as \"src/savecopy.D\"
  2227. else
  2228.   echo applying diffs to file src/savecopy.c...
  2229.   /bin/cat src/savecopy.D | /bin/ed - src/savecopy.c
  2230. fi
  2231.  
  2232. #-------------------------------------
  2233. # File 'src/mailmsg1.c' diffs...
  2234.  
  2235. cat << 'EOF' > src/mailmsg1.D
  2236. 245c
  2237.       printf("To: %s\n\r", format_long(address, 3));
  2238. .
  2239. w
  2240. EOF
  2241.  
  2242. chars=`cat src/mailmsg1.c | wc -c`
  2243.  
  2244. if [ $chars -ne 6587 ]
  2245. then
  2246.   echo Your file src/mailmsg1.c has been changed\!
  2247.   echo diffs saved as \"src/mailmsg1.D\"
  2248. else
  2249.   echo applying diffs to file src/mailmsg1.c...
  2250.   /bin/cat src/mailmsg1.D | /bin/ed - src/mailmsg1.c
  2251. fi
  2252.  
  2253. #-------------------------------------
  2254. # File 'src/connect_to.c' diffs...
  2255.  
  2256. cat << 'EOF' > src/connect_to.D
  2257. 128c
  2258.         system_record = (struct lsys_rec *) pmalloc(sizeof *talk_to_sys);
  2259. .
  2260. 115c
  2261.         previous_record = (struct lsys_rec *) pmalloc(sizeof *talk_to_sys);
  2262. .
  2263. 61c
  2264.         system_record = (struct lsys_rec *) pmalloc(sizeof *talk_to_sys);
  2265. .
  2266. 48c
  2267.         previous_record = (struct lsys_rec *) pmalloc(sizeof *talk_to_sys);
  2268. .
  2269. 13a
  2270. char *pmalloc();
  2271.  
  2272. .
  2273. w
  2274. EOF
  2275.  
  2276. chars=`cat src/connect_to.c | wc -c`
  2277.  
  2278. if [ $chars -ne 3887 ]
  2279. then
  2280.   echo Your file src/connect_to.c has been changed\!
  2281.   echo diffs saved as \"src/connect_to.D\"
  2282. else
  2283.   echo applying diffs to file src/connect_to.c...
  2284.   /bin/cat src/connect_to.D | /bin/ed - src/connect_to.c
  2285. fi
  2286.  
  2287. #-------------------------------------
  2288. # File 'src/errno.c' diffs...
  2289.  
  2290. cat << 'EOF' > src/errno.c.D
  2291. 74,75d
  2292. 60,61d
  2293. w
  2294. EOF
  2295.  
  2296. chars=`cat src/errno.c | wc -c`
  2297.  
  2298. if [ $chars -ne 2612 ]
  2299. then
  2300.   echo Your file src/errno.c has been changed\!
  2301.   echo diffs saved as \"src/errno.c.D\"
  2302. else
  2303.   echo applying diffs to file src/errno.c...
  2304.   /bin/cat src/errno.c.D | /bin/ed - src/errno.c
  2305. fi
  2306.  
  2307. #-------------------------------------
  2308. # File 'src/options.c' diffs...
  2309.  
  2310. cat << 'EOF' > src/options.D
  2311. 52c
  2312.   "This is the program invoked to display individual messages (try 'builtin')");
  2313. .
  2314. w
  2315. EOF
  2316.  
  2317. chars=`cat src/options.c | wc -c`
  2318.  
  2319. if [ $chars -ne 7702 ]
  2320. then
  2321.   echo Your file src/options.c has been changed\!
  2322.   echo diffs saved as \"src/options.D\"
  2323. else
  2324.   echo applying diffs to file src/options.c...
  2325.   /bin/cat src/options.D | /bin/ed - src/options.c
  2326. fi
  2327.  
  2328. #-------------------------------------
  2329. # File 'src/elm.c' diffs...
  2330.  
  2331. cat << 'EOF' > src/elm.c.D
  2332. 105c
  2333.                if (move_when_paged && header_page >= 0)
  2334. .
  2335. 100c
  2336.                    header_page <=(message_count / headers_per_page))
  2337. .
  2338. 34c
  2339.            format_long(to_whom, 3));
  2340. .
  2341. 31a
  2342. #ifdef BSD4.1
  2343.        initscr();
  2344. #endif
  2345.  
  2346. .
  2347. 27a
  2348. #ifdef BSD
  2349.     InitScreen();
  2350. #endif
  2351.  
  2352. .
  2353. 10a
  2354. #ifdef BSD
  2355. # undef toupper
  2356. # undef tolower
  2357. #endif
  2358.  
  2359. .
  2360. w
  2361. EOF
  2362.  
  2363. chars=`cat src/elm.c | wc -c`
  2364.  
  2365. if [ $chars -ne 15852 ]
  2366. then
  2367.   echo Your file src/elm.c has been changed\!
  2368.   echo diffs saved as \"src/elm.c.D\"
  2369. else
  2370.   echo applying diffs to file src/elm.c...
  2371.   /bin/cat src/elm.c.D | /bin/ed - src/elm.c
  2372. fi
  2373.  
  2374. #---------------------------------
  2375. # File Elm/src/builtin.c is new!
  2376.  
  2377. echo File Elm/src/builtin.c is new - extracting...
  2378. if [ -f src/builtin.c ]
  2379. then
  2380.   echo File \'src/builtin.c\' is new, but you already have something called that\!
  2381.   echo I\'m going to move your file to \'src/builtin.c.old\'...
  2382.   /bin/mv -f src/builtin.c src/builtin.c.old
  2383. else
  2384.   echo Extracting new file \'src/builtin.c\'
  2385. fi
  2386.  
  2387. cat > src/builtin.c << 'END_OF_FILE'
  2388. /**            builtin.c        **/
  2389.  
  2390. /** This is the built-in pager for displaying messages while in the Elm
  2391.     program.  It's a bare-bones pager with precious few options. The idea
  2392.     is that those systems that are sufficiently slow that using an external
  2393.     pager such as 'more' is too slow, then they can use this!
  2394.  
  2395.     (C) Copyright 1986, Dave Taylor
  2396. **/
  2397.  
  2398. #include "headers.h"
  2399. #include <ctype.h>
  2400.  
  2401. #define  BEEP        007        /* ASCII Bell character */
  2402.  
  2403. #ifdef BSD
  2404. #  undef tolower
  2405. #endif
  2406.  
  2407. int    lines_put_on_screen = 0,    /* number of lines displayed per screen */
  2408.     lines_displayed = 0,        /* Total number of lines displayed      */
  2409.     total_lines_to_display;        /* total number of lines in message     */
  2410.  
  2411. start_builtin(lines_in_message)
  2412. int lines_in_message;
  2413. {
  2414.     /** clears that screen and resets it's internal counters... **/
  2415.  
  2416.     dprint1(8,"displaying %d lines from message using internal pager\n",
  2417.         lines_in_message);
  2418.  
  2419.     lines_displayed = 0;
  2420.     lines_put_on_screen = 0;
  2421.  
  2422.     total_lines_to_display = lines_in_message;
  2423. }
  2424.  
  2425. int
  2426. display_line(line)
  2427. char *line;
  2428. {
  2429.     /** Display the given line on the screen, taking into account such
  2430.         dumbness as wraparound and such.  If displaying this would put
  2431.         us at the end of the screen, put out the "MORE" prompt and wait
  2432.         for some input.   Return non-zero if the user terminates the
  2433.         paging (e.g. 'q') or zero if we should continue...
  2434.     **/
  2435.     
  2436.     register int lines_needed, okay_char, ch;
  2437.  
  2438.     lines_needed = (int) (printable_chars(line) / COLUMNS);    /* wraparound */
  2439.  
  2440.     for (ch = 0; ch < strlen(line); ch++)
  2441.       if (line[ch] == '\n') lines_needed++;
  2442.  
  2443.     dprint1(6,"* display-line \"%s\"\n", line);
  2444.     dprint2(7,"**  at line %d of the screen (%d available)\n",
  2445.          lines_put_on_screen, LINES-1);
  2446.  
  2447.     if (lines_needed + lines_put_on_screen > LINES-1) {
  2448.       dprint2(9,"** need CR: lines on screen = %d, need %d\n", lines_needed,
  2449.           lines_put_on_screen);
  2450.       StartBold();
  2451.       Write_to_screen(" More (%d%%)", 1, 
  2452.         (int) (100.0 * (
  2453.            (float) lines_displayed / (float) total_lines_to_display)));
  2454.       EndBold();
  2455.       okay_char = FALSE;
  2456.       do {
  2457.          Raw(ON);
  2458.          ch =  tolower(ReadCh());
  2459.          Raw(OFF);
  2460.          switch (ch) {
  2461.            case '\n' : 
  2462.            case '\r' : /* <return> pressed... */
  2463.                lines_put_on_screen -= lines_needed;
  2464.                okay_char = TRUE;
  2465.                break;
  2466.            case ' '  : /* <space> pressed... */
  2467.                lines_put_on_screen = 0;
  2468.                okay_char = TRUE;
  2469.                break;
  2470.            case 'q'  :
  2471.            case 'Q'  : return(TRUE);    /* get OUTTA here! */
  2472.            default   : putchar(BEEP);    
  2473.                fflush(stdout);
  2474.                break;
  2475.          }
  2476.       } while (! okay_char);
  2477.  
  2478.       CursorLeft(11);        /* back up to the beginning of line */
  2479.       CleartoEOLN();
  2480.     }
  2481.  
  2482.     Write_to_screen("%s", 1, line);
  2483.  
  2484.     lines_displayed     += 1;           /* tossed on screen */
  2485.     lines_put_on_screen += lines_needed;       /* read from file   */
  2486.  
  2487.     return (FALSE);
  2488. }
  2489. END_OF_FILE
  2490.  
  2491. chars=`cat src/builtin.c | wc -c`
  2492.  
  2493. if [ $chars -ne 2825 ]
  2494. then
  2495.   echo File damaged in transit...should be 2825 bytes, is $chars instead
  2496.   echo  I suggest you check it closely...
  2497. fi
  2498.  
  2499. #-------------------------------------
  2500. # File 'src/getopt.c' diffs...
  2501.  
  2502. cat << 'EOF' > src/getopt.c.D
  2503. 83c
  2504.     if (word == NULL)
  2505.       return(ERROR);        /* Sun compatibility */
  2506.  
  2507.     if (word == NULL || strlen(word) == 0) 
  2508. .
  2509. 71,75d
  2510. 66c
  2511.     if (_argnum >= argc) {
  2512. .
  2513. 61,64d
  2514. 57c
  2515.     if (_indx > strlen(argv[_argnum]) == NULL && _indx > 1) {
  2516. .
  2517. 52c
  2518.     if (_argnum >= argc) {    /* quick check first - no arguments! */
  2519. .
  2520. 18a
  2521.  
  2522. .
  2523. 7a
  2524. #include "defs.h"
  2525.  
  2526. .
  2527. w
  2528. EOF
  2529.  
  2530. chars=`cat src/getopt.c | wc -c`
  2531.  
  2532. if [ $chars -ne 2253 ]
  2533. then
  2534.   echo Your file src/getopt.c has been changed\!
  2535.   echo diffs saved as \"src/getopt.c.D\"
  2536. else
  2537.   echo applying diffs to file src/getopt.c...
  2538.   /bin/cat src/getopt.c.D | /bin/ed - src/getopt.c
  2539. fi
  2540.  
  2541. echo end of autodiff, part 1
  2542. exit 0
  2543.  
  2544.