home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume7 / 2.11news / patch03 < prev    next >
Text File  |  1987-02-05  |  17KB  |  682 lines

  1. Path: mirror!adelie!necntc!husc6!seismo!rick
  2. From: rick@seismo.CSS.GOV (Rick Adams)
  3. Newsgroups: news.software.b
  4. Subject: 2.11 news src patch #3
  5. Message-ID: <43045@beno.seismo.CSS.GOV>
  6. Date: 30 Dec 86 00:03:28 GMT
  7. Sender: rick@seismo.CSS.GOV
  8. Organization: Center for Seismic Studies, Arlington, VA
  9. Lines: 666
  10.  
  11. THIS ARTICLE ALSO HAS THE TYPO-FIX THAT WAS IN THE ORIGINAL POSTING...
  12.         --r$
  13. Description:
  14.     patch#2's change to vnews to keep the save filename can be confusing.
  15.     restore the old behavior and add control-e to retrieve the old filename.
  16.     patch#2 broke the SPOOLBATCH code. This is fixed.
  17.     Yet another HIDDENNET problem is fixed.
  18.     NOTIFY didn't tell you if the newsgroup to be created was moderated
  19.     or not.
  20.     unbatch should use the existing string RNEWS for the rnews program 
  21.     instead of building it itself.
  22.     The vnews helpfile has a tab instead of multiple blanks.
  23.  
  24. Fix:
  25.     cd to the src directory and apply the following patch.
  26.  
  27. Index: visual.c
  28. Prereq: 1.34
  29. *** .d/visual.c    Wed Dec 17 18:23:37 1986
  30. --- visual.c    Mon Dec 29 15:54:08 1986
  31. ***************
  32. *** 4,10 ****
  33.    */
  34.   
  35.   #ifdef SCCSID
  36. ! static char    *SccsId = "@(#)visual.c    1.34    12/16/86";
  37.   #endif /* SCCSID */
  38.   
  39.   #include "rparams.h"
  40. --- 4,10 ----
  41.    */
  42.   
  43.   #ifdef SCCSID
  44. ! static char    *SccsId = "@(#)visual.c    1.35    12/23/86";
  45.   #endif /* SCCSID */
  46.   
  47.   #include "rparams.h"
  48. ***************
  49. *** 52,57 ****
  50. --- 52,58 ----
  51.   #endif
  52.   
  53.   #define PIPECHAR '|'    /* indicate save command should pipe to program */
  54. + #define    CAGAIN    ('e'&0x1F)    /* Save-to-same-place indicator */
  55.   #define META    0200    /* meta character bit (as in emacs) */
  56.   /* print (display) flags */
  57.   #define HDRONLY    0001    /* print header only */
  58. ***************
  59. *** 514,537 ****
  60.           int wflags;
  61.   
  62.       case '|':
  63. -         if (savebuf[0] != '|') {
  64. -             savebuf[0] = '|';
  65. -             savebuf[1] = '\0';
  66. -         }
  67. -         c = 's';
  68.       case 's':
  69.       case 'w':
  70.           /* We loop back to here each time user types ^U to prompt */
  71.           do {
  72. !             if (savebuf[0] == 0) {
  73. !                 /* No saved default.  Ask. */
  74. !                 msg("file: ");
  75. !                 curflag = CURP2;
  76. !                 while ((wflags = vgetc()) == ' ');
  77. !                 if (wflags == cintr) {
  78. !                     secpr[0] = '\0';
  79. !                     break;
  80. !                 }
  81.                   savebuf[0] = wflags;
  82.                   savebuf[1] = 0;
  83.               }
  84. --- 515,533 ----
  85.           int wflags;
  86.   
  87.       case '|':
  88.       case 's':
  89.       case 'w':
  90.           /* We loop back to here each time user types ^U to prompt */
  91.           do {
  92. !             /* No saved default.  Ask. */
  93. !             msg( (c=='|')? "|": "file: ");
  94. !             curflag = CURP2;
  95. !             while ((wflags = vgetc()) == ' ');
  96. !             if (wflags == cintr) {
  97. !                 secpr[0] = '\0';
  98. !                 break;
  99. !             }
  100. !             if (wflags != CAGAIN) {
  101.                   savebuf[0] = wflags;
  102.                   savebuf[1] = 0;
  103.               }
  104. ***************
  105. *** 540,545 ****
  106. --- 536,542 ----
  107.           } while (wflags == 2);
  108.           if (wflags) break;    /* Interrupted out */
  109.           wflags = 0;
  110. +         if (c == '|') c = 's';
  111.           if (c == 's')
  112.               wflags |= SVHEAD;
  113.           if (count != 1)
  114. ***************
  115. *** 787,794 ****
  116.       case '<':
  117.           /* could improve this */
  118.           linebuf[0] = '<'; linebuf[1] = 0;
  119. !         if (prget("", linebuf))
  120.               break;
  121.   searchid:    secpr[0] = '\0';
  122.           if (index(linebuf, '@') == NULL && index(linebuf, '>') == NULL) {
  123.               ptr1 = linebuf;
  124. --- 784,793 ----
  125.       case '<':
  126.           /* could improve this */
  127.           linebuf[0] = '<'; linebuf[1] = 0;
  128. !         if (prget("", linebuf)) {
  129. !             secpr[0] = 0;
  130.               break;
  131. +         }
  132.   searchid:    secpr[0] = '\0';
  133.           if (index(linebuf, '@') == NULL && index(linebuf, '>') == NULL) {
  134.               ptr1 = linebuf;
  135. ***************
  136. *** 2502,2507 ****
  137. --- 2501,2507 ----
  138.       char    temp[20];
  139.       char    *fname;
  140.       char    prog[BUFLEN + 24];
  141. +     int    err;
  142.   
  143.       saveoff = ftell(fp);
  144.       (void) fseek(fp, artbody, 0);
  145. ***************
  146. *** 2559,2574 ****
  147.           tprint(fp, ufp, FALSE);
  148.       }
  149.   
  150.       fclose(ufp);
  151.       if (isprogram) {
  152. !         (void) sprintf(prog, "(%s)<%s", to + 1, fname);
  153. !         shcmd(prog, CWAIT);
  154. !         prflags |= NOPRT;
  155.       } else {
  156. !         if ((flags & OVWRITE) == 0)
  157. !             msg("file: %s %s", to, isnew ? "created" : "appended");
  158. !         else
  159. !             msg("file: %s written", to);
  160.       }
  161.   
  162.   out:
  163. --- 2559,2589 ----
  164.           tprint(fp, ufp, FALSE);
  165.       }
  166.   
  167. +     err = ferror(ufp);
  168.       fclose(ufp);
  169.       if (isprogram) {
  170. !         if (err)
  171. !             msg("error in writing temp file, maybe disk full?");
  172. !         else {
  173. !             (void) sprintf(prog, "(%s)<%s", to + 1, fname);
  174. !             shcmd(prog, CWAIT);
  175. !             prflags |= NOPRT;
  176. !         }
  177.       } else {
  178. !         msg("%sfile: %s %s",
  179. !             err? "ERROR WHILE WRITING ": "",
  180. !             to,
  181. !             (flags&OVWRITE)? "written":
  182. !                 isnew ? "created" : "appended");
  183. !     }
  184. !     /* If we got an error, screen may be messed.  E.g. 4.2BSD
  185. !      * writes "disk full" messages to the user's tty.
  186. !      */
  187. !     if (err) {
  188. !         clearok(curscr, 1);
  189. !         updscr();
  190.       }
  191.   
  192.   out:
  193.  
  194. Index: inews.c
  195. Prereq: 2.71
  196. *** .d/inews.c    Wed Dec 17 18:23:19 1986
  197. --- inews.c    Mon Dec 29 18:17:41 1986
  198. ***************
  199. *** 17,23 ****
  200.    */
  201.   
  202.   #ifdef SCCSID
  203. ! static char    *SccsId = "@(#)inews.c    2.71    12/16/86";
  204.   #endif /* SCCSID */
  205.   
  206.   #include "iparams.h"
  207. --- 17,23 ----
  208.    */
  209.   
  210.   #ifdef SCCSID
  211. ! static char    *SccsId = "@(#)inews.c    2.73    12/29/86";
  212.   #endif /* SCCSID */
  213.   
  214.   #include "iparams.h"
  215. ***************
  216. *** 47,53 ****
  217.   #define    CREATENG 0020    /* Create a new newsgroup */
  218.   
  219.   char    forgedname[NAMELEN];    /* A user specified -f option. */
  220. ! int spool_news = FALSE;
  221.   extern char histline[];
  222.   /* Fake sys line in case they forget their own system */
  223.   struct srec dummy_srec = { "MEMEME", "", "all", "", "" };
  224. --- 47,53 ----
  225.   #define    CREATENG 0020    /* Create a new newsgroup */
  226.   
  227.   char    forgedname[NAMELEN];    /* A user specified -f option. */
  228. ! int spool_news = 0;
  229.   extern char histline[];
  230.   /* Fake sys line in case they forget their own system */
  231.   struct srec dummy_srec = { "MEMEME", "", "all", "", "" };
  232. ***************
  233. *** 123,128 ****
  234. --- 123,129 ----
  235.       mode = UNKNOWN;
  236.       infp = stdin;
  237.       pathinit();
  238. +     savmask = umask(N_UMASK);    /* set up mask */
  239.       ptr = rindex(*argv, '/');
  240.       if (!ptr)
  241.           ptr = *argv - 1;
  242. ***************
  243. *** 138,144 ****
  244.       if (LINK(ACTIVE,bfr) < 0 && errno == EEXIST)
  245.   #endif /* V7 */
  246.   #endif    /* !BSD4_2 */
  247. !         spool_news = TRUE;
  248.       else {
  249.   #ifdef SPOOLNEWS
  250.           if (argc > 1 && !strcmp(*(argv+1), "-S")) {
  251. --- 139,145 ----
  252.       if (LINK(ACTIVE,bfr) < 0 && errno == EEXIST)
  253.   #endif /* V7 */
  254.   #endif    /* !BSD4_2 */
  255. !         spool_news = 2;
  256.       else {
  257.   #ifdef SPOOLNEWS
  258.           if (argc > 1 && !strcmp(*(argv+1), "-S")) {
  259. ***************
  260. *** 145,159 ****
  261.               argc--;
  262.               argv++;
  263.           } else
  264. !             spool_news = TRUE;
  265.   
  266.   #endif /* SPOOLNEWS */
  267. - #if !defined(BSD4_2) && !defined(LOCKF)
  268. -     (void) UNLINK(bfr);
  269. - #endif    /* !BSD4_2 && !LOCKF */
  270.       }
  271.       if (argc > 1 && !strcmp(*(argv+1), "-U")) {
  272. !         if (spool_news)    /* can't unspool while things are locked */
  273.               xxit(0);
  274.           dounspool();
  275.           /* NOT REACHED */
  276. --- 146,166 ----
  277.               argc--;
  278.               argv++;
  279.           } else
  280. !             spool_news = 1;
  281.   
  282.   #endif /* SPOOLNEWS */
  283.       }
  284. + #ifdef BSD4_2
  285. +     flock(fileno(actfp), LOCK_UN);
  286. + #else    /* !BSD4_2 */
  287. + #ifdef    LOCKF
  288. +     lockf(fileno(actfp), F_ULOCK, 0);
  289. + #else    /* !LOCKF */
  290. +     UNLINK(bfr);
  291. + #endif /* V7 */
  292. + #endif    /* !BSD4_2 */
  293.       if (argc > 1 && !strcmp(*(argv+1), "-U")) {
  294. !         if (spool_news > 1) /* can't unspool while things are locked */
  295.               xxit(0);
  296.           dounspool();
  297.           /* NOT REACHED */
  298. ***************
  299. *** 216,222 ****
  300.           (void) signal(SIGHUP, onsig);
  301.           (void) signal(SIGINT, onsig);
  302.       }
  303. -     savmask = umask(N_UMASK);    /* set up mask */
  304.       uid = getuid();
  305.       gid = getgid();
  306.       duid = geteuid();
  307. --- 223,228 ----
  308. ***************
  309. *** 327,333 ****
  310.        */
  311.   
  312.       if (*filename) {
  313. -         (void) fclose(stdin);
  314.           infp = freopen(filename, "r", stdin);
  315.           if (infp == NULL)
  316.               xerror("freopen(%s): %s", filename, errmsg(errno));
  317. --- 333,338 ----
  318. ***************
  319. *** 511,519 ****
  320.           SPOOL,
  321.           tp->tm_year, tp->tm_mon+1, tp->tm_mday,
  322.           tp->tm_hour, tp->tm_min, getpid());
  323. !     sp = xfopen(buf, "w");
  324.       if (batchcmd != NULL)
  325.           fprintf(sp, "%s\n", batchcmd);
  326.       if (dolhwrite)
  327.           lhwrite(&header, sp);
  328.       while ((c = getc(infp)) != EOF)
  329. --- 516,538 ----
  330.           SPOOL,
  331.           tp->tm_year, tp->tm_mon+1, tp->tm_mday,
  332.           tp->tm_hour, tp->tm_min, getpid());
  333. !     sp = fopen(buf, "w");
  334. !     if (sp == NULL) {
  335. !         char dbuf[BUFLEN];
  336. ! #ifdef VMS
  337. !         sprintf(dbuf, "%s/+rnews", SPOOL);
  338. ! #else /* !VMS */
  339. !         sprintf(dbuf, "%s/.rnews", SPOOL);
  340. ! #endif /* !VMS */
  341. !         if (mkdir(dbuf, 0777&~N_UMASK) < 0)
  342. !             xerror("Cannot mkdir %s: %s", dbuf, errmsg(errno));
  343. !         sp = xfopen(buf, "w");
  344. !     }
  345.       if (batchcmd != NULL)
  346.           fprintf(sp, "%s\n", batchcmd);
  347. +     else
  348. +         if (not_here[0] != '\0')
  349. +             fprintf(sp, "#! inews -x %s -p\n", not_here);
  350.       if (dolhwrite)
  351.           lhwrite(&header, sp);
  352.       while ((c = getc(infp)) != EOF)
  353. ***************
  354. *** 798,804 ****
  355.   
  356.       if (spool_news && mode != PROC) {
  357.           fprintf(stderr,"Your article has been spooled for later processing.\n");
  358. !         dospool((char *)NULL, TRUE);
  359.           /* NOT REACHED */
  360.       }
  361.   
  362. --- 817,823 ----
  363.   
  364.       if (spool_news && mode != PROC) {
  365.           fprintf(stderr,"Your article has been spooled for later processing.\n");
  366. !         dospool("#! inews -S -h", TRUE);
  367.           /* NOT REACHED */
  368.       }
  369.   
  370. ***************
  371. *** 877,883 ****
  372.               if ((pid=fork()) < 0)
  373.                   xerror("Can't fork");
  374.               else if (pid > 0)
  375. !                 exit(0);
  376.           }
  377.   #ifdef SIGTTOU
  378.           signal(SIGTTOU, SIG_IGN);
  379. --- 896,902 ----
  380.               if ((pid=fork()) < 0)
  381.                   xerror("Can't fork");
  382.               else if (pid > 0)
  383. !                 _exit(0);
  384.           }
  385.   #ifdef SIGTTOU
  386.           signal(SIGTTOU, SIG_IGN);
  387. ***************
  388. *** 885,891 ****
  389.           savehist(histline);
  390.           broadcast(mode==PROC);
  391.       }
  392. !     xxit(mode == PROC ? 0 : exitcode);
  393.   }
  394.   
  395.   input()
  396. --- 904,910 ----
  397.           savehist(histline);
  398.           broadcast(mode==PROC);
  399.       }
  400. !     xxit((mode == PROC && filename[0] == '\0') ? 0 : exitcode);
  401.   }
  402.   
  403.   input()
  404. ***************
  405. *** 1104,1109 ****
  406. --- 1123,1129 ----
  407.       register DIR    *dirp;
  408.       register struct direct *dir;
  409.       register int foundsome;
  410. +     int pid, status, ret;
  411.   #ifdef VMS
  412.       sprintf(bfr, "%s/+rnews", SPOOL);
  413.   #else /* !VMS */
  414. ***************
  415. *** 1122,1133 ****
  416.           while ((dir=readdir(dirp)) != NULL) {
  417.               if (dir->d_name[0] == '.')
  418.                   continue;
  419. !             sprintf(bfr,"%s -S -p %s", RNEWS, dir->d_name);
  420. !             if (system(bfr) != 0) {
  421.                   sprintf(bfr, "../%s", dir->d_name);
  422.                   (void) LINK(dir->d_name, bfr);
  423. !                 logerr("rnews failed. Batch saved in %s/%s",
  424. !                     SPOOLDIR, dir->d_name);
  425.               }
  426.               (void) unlink(dir->d_name);
  427.               foundsome++;
  428. --- 1142,1163 ----
  429.           while ((dir=readdir(dirp)) != NULL) {
  430.               if (dir->d_name[0] == '.')
  431.                   continue;
  432. !             if ((pid=vfork()) == -1)
  433. !                 xerror("Can't fork: %s", errmsg(errno));
  434. !             if (pid == 0) {
  435. !                 execl(RNEWS, "rnews", "-S", "-p", dir->d_name,
  436. !                     (char *) NULL);
  437. !                 _exit(1);
  438. !             }
  439. !             
  440. !             while ((ret=wait(&status)) != pid && ret != -1)
  441. !                 /* continue */;
  442. !             if (status != 0) {
  443.                   sprintf(bfr, "../%s", dir->d_name);
  444.                   (void) LINK(dir->d_name, bfr);
  445. !                 logerr("rnews failed, status %d. Batch saved in %s/%s",
  446. !                     status, SPOOL, dir->d_name);
  447.               }
  448.               (void) unlink(dir->d_name);
  449.               foundsome++;
  450. Index: control.c
  451. Prereq: 2.49
  452. *** .d/control.c    Wed Dec 17 18:23:05 1986
  453. --- control.c    Mon Dec 29 18:17:52 1986
  454. ***************
  455. *** 19,25 ****
  456.    */
  457.   
  458.   #ifdef SCCSID
  459. ! static char    *SccsId = "@(#)control.c    2.49    12/16/86";
  460.   #endif /* SCCSID */
  461.   
  462.   #include "iparams.h"
  463. --- 19,25 ----
  464.    */
  465.   
  466.   #ifdef SCCSID
  467. ! static char    *SccsId = "@(#)control.c    2.50    12/29/86";
  468.   #endif /* SCCSID */
  469.   
  470.   #include "iparams.h"
  471. ***************
  472. *** 479,489 ****
  473.                   ORGDISTRIB);
  474.               fprintf(fd,
  475.                   "In other words, by executing the command:\n");
  476. !             fprintf(fd, "%s/inews -d %s -C %s\n", LIB, 
  477. !                             ORGDISTRIB, argv[1]);
  478.   #  else /* !ORGDISTRIB */
  479.               fprintf(fd, "In other words, by executing the command:\n");
  480. !             fprintf(fd, "%s/inews -C %s\n", LIB, argv[1]);
  481.   #  endif /* !ORGDISTRIB */
  482.           }
  483.           (void) mclose(fd);
  484. --- 479,490 ----
  485.                   ORGDISTRIB);
  486.               fprintf(fd,
  487.                   "In other words, by executing the command:\n");
  488. !             fprintf(fd, "%s/inews -d %s -C %s %s\n", LIB, 
  489. !                 ORGDISTRIB, argv[1], argc > 2 ? argv[2] : "");
  490.   #  else /* !ORGDISTRIB */
  491.               fprintf(fd, "In other words, by executing the command:\n");
  492. !             fprintf(fd, "%s/inews -C %s %s\n", LIB, argv[1],
  493. !                 argc > 2 ? argv[2] : "");
  494.   #  endif /* !ORGDISTRIB */
  495.           }
  496.           (void) mclose(fd);
  497. Index: rfuncs.c
  498. Prereq: 2.38
  499. *** .d/rfuncs.c    Wed Dec 17 18:23:41 1986
  500. --- rfuncs.c    Mon Dec 29 15:54:15 1986
  501. ***************
  502. *** 16,22 ****
  503.    */
  504.   
  505.   #ifdef SCCSID
  506. ! static char    *SccsId = "@(#)rfuncs.c    2.38    12/16/86";
  507.   #endif /* SCCSID */
  508.   
  509.   /*LINTLIBRARY*/
  510. --- 16,22 ----
  511.    */
  512.   
  513.   #ifdef SCCSID
  514. ! static char    *SccsId = "@(#)rfuncs.c    2.39    12/23/86";
  515.   #endif /* SCCSID */
  516.   
  517.   /*LINTLIBRARY*/
  518. ***************
  519. *** 622,631 ****
  520.       p = ACTIVE;
  521.       ACTIVE = newactivename;
  522.       afp = xfopen(p, "r");
  523. -     tp = table;
  524.   #else /* !SORTACTIVE */
  525.       afp = xfopen(ACTIVE, "r");
  526.   #endif /* !SORTACTIVE */
  527.       while (fgets(aline, sizeof aline, afp) != NULL) {
  528.           if (sscanf(aline,"%s %ld %ld %c", ngname, &tp->maxart,
  529.               &tp->minart, &tp->yn) != 4) 
  530. --- 622,631 ----
  531.       p = ACTIVE;
  532.       ACTIVE = newactivename;
  533.       afp = xfopen(p, "r");
  534.   #else /* !SORTACTIVE */
  535.       afp = xfopen(ACTIVE, "r");
  536.   #endif /* !SORTACTIVE */
  537. +     tp = table;
  538.       while (fgets(aline, sizeof aline, afp) != NULL) {
  539.           if (sscanf(aline,"%s %ld %ld %c", ngname, &tp->maxart,
  540.               &tp->minart, &tp->yn) != 4) 
  541. Index: rfuncs2.c
  542. Prereq: 1.33
  543. *** .d/rfuncs2.c    Wed Dec 17 18:23:28 1986
  544. --- rfuncs2.c    Mon Dec 29 15:54:19 1986
  545. ***************
  546. *** 16,22 ****
  547.    */
  548.   
  549.   #ifdef SCCSID
  550. ! static char    *SccsId = "@(#)rfuncs2.c    1.33    12/16/86";
  551.   #endif /* SCCSID */
  552.   
  553.   /*LINTLIBRARY*/
  554. --- 16,22 ----
  555.    */
  556.   
  557.   #ifdef SCCSID
  558. ! static char    *SccsId = "@(#)rfuncs2.c    1.34    12/23/86";
  559.   #endif /* SCCSID */
  560.   
  561.   /*LINTLIBRARY*/
  562. ***************
  563. *** 149,154 ****
  564. --- 149,155 ----
  565.           if (checkfrom && strncmp(bfr, "From ", 5) == 0)
  566.               putc('>', ofp);
  567.           (void) fputs(bfr, ofp);
  568. +         if (ferror(ofp)) break;        /* E.g. disk full */
  569.       }
  570.       if (SigTrap)
  571.           qfflush(ofp);
  572. Index: unbatch.c
  573. Prereq: 1.24
  574. *** .d/unbatch.c    Wed Dec 17 18:23:30 1986
  575. --- unbatch.c    Mon Dec 29 15:54:23 1986
  576. ***************
  577. *** 13,19 ****
  578.    */
  579.   
  580.   #ifdef SCCSID
  581. ! static char    *SccsId = "@(#)unbatch.c    1.24    12/16/86";
  582.   #endif /* SCCSID */
  583.   
  584.   #define    MAXARGS        32
  585. --- 13,19 ----
  586.    */
  587.   
  588.   #ifdef SCCSID
  589. ! static char    *SccsId = "@(#)unbatch.c    1.25    12/23/86";
  590.   #endif /* SCCSID */
  591.   
  592.   #define    MAXARGS        32
  593. ***************
  594. *** 105,111 ****
  595.   #ifdef IHCC
  596.               (void) sprintf(buf, "%s/%s/rnews", logdir(HOME), LIBDIR);
  597.   #else
  598. !             (void) sprintf(buf, "%s/rnews", BINDIR);
  599.   #endif
  600.   #ifdef SPOOLNEWS
  601.               execlp(buf, "rnews", "-S", (char *)0);
  602. --- 105,111 ----
  603.   #ifdef IHCC
  604.               (void) sprintf(buf, "%s/%s/rnews", logdir(HOME), LIBDIR);
  605.   #else
  606. !             strcpy(buf, RNEWS);
  607.   #endif
  608.   #ifdef SPOOLNEWS
  609.               execlp(buf, "rnews", "-S", (char *)0);
  610. Index vnews.help
  611. *** .d/vnews.help    Wed Dec 17 18:23:38 1986
  612. --- vnews.help    Mon Dec 29 15:49:43 1986
  613. ***************
  614. *** 17,22 ****
  615.   ESC-r  Reply directly using mailer      m   Move on to next item in a digest
  616.   f   Post a followup article             s   Save article in file
  617.   N   Go to newsgroup (next is default)   w   Save without header
  618. ! l   List unread articles in group    L   List all articles in group
  619.   
  620.   [Press ^L to see article again]
  621. --- 17,22 ----
  622.   ESC-r  Reply directly using mailer      m   Move on to next item in a digest
  623.   f   Post a followup article             s   Save article in file
  624.   N   Go to newsgroup (next is default)   w   Save without header
  625. ! l   List unread articles in group       L   List all articles in group
  626.   
  627.   [Press ^L to see article again]
  628.  
  629. Index: funcs2.c
  630. Prereq: 1.17
  631. *** .d/funcs2.c    Wed Dec 17 18:23:11 1986
  632. --- funcs2.c    Mon Dec 29 18:19:19 1986
  633. ***************
  634. *** 17,23 ****
  635.    */
  636.   
  637.   #ifdef SCCSID
  638. ! static char    *SccsId = "@(#)funcs2.c    1.17    12/16/86";
  639.   #endif /* SCCSID */
  640.   
  641.   #include "params.h"
  642. --- 17,23 ----
  643.    */
  644.   
  645.   #ifdef SCCSID
  646. ! static char    *SccsId = "@(#)funcs2.c    1.18    12/29/86";
  647.   #endif /* SCCSID */
  648.   
  649.   #include "params.h"
  650. ***************
  651. *** 127,133 ****
  652. --- 127,137 ----
  653.    * A sys file line reading "ME" means the name of the local system.
  654.    */
  655.       if (strcmp(sp->s_name, "ME") == 0)
  656. + #ifdef HIDDENNET
  657. +         (void) strcpy(sp->s_name, LOCALSYSNAME);
  658. + #else /* !HIDDENNET */
  659.           (void) strcpy(sp->s_name, FULLSYSNAME);
  660. + #endif /* !HIDDENNET */
  661.       e = index(sp->s_name, '/');
  662.       if (e) {
  663.           *e++ = '\0';
  664. Index: patchlevel.h
  665. *** .d/patchlevel.h    Wed Dec 17 18:23:46 1986
  666. --- patchlevel.h    Mon Dec 29 18:19:21 1986
  667. ***************
  668. *** 1,3 ****
  669. ! #define    PATCHLEVEL    2
  670.   
  671. ! #define NEWS_VERSION   "B 2.11 12/17/86"
  672. --- 1,3 ----
  673. ! #define    PATCHLEVEL    3
  674.   
  675. ! #define NEWS_VERSION   "B 2.11 12/29/86"
  676.  
  677.  
  678.  
  679.