[news.software.anu-news] NEWS V5.9B diff/patch 4/11

gih900@csc.anu.oz (Geoff Huston) (11/25/89)

+-+-+-+ Beginning of part 4 +-+-+-+
X--- 141,149 -----
X          case DIR_REGISTER:
X              put_line("NEWS - Directory of Registered Newsgroups",0);
X              break;
X+         case DIR_UNREGISTER:
X+             put_line("NEWS - Directory of UNRegistered Newsgroups",0);
X+             break;
X          `125
X      put_line(class_name(),0);
V      sprintf(err_oline,"  Number %-*.*s     Count  Unread",SUBJLEN,SUBJLEN,"
XGroup");
X**************
X*** 215,220
X        `125
X      else if (cli$present(c$dsc("NEW")) == CLI$_PRESENT) dir_type = DIR_NEW;
V      else if (cli$present(c$dsc("REGISTER")) == CLI$_PRESENT) dir_type = DIR
X_REGISTER;
X      else if (!class_len) `123
X        force_recalc = 0;
X        dir_type = cur_dir_type;
X--- 218,225 -----
X        `125
X      else if (cli$present(c$dsc("NEW")) == CLI$_PRESENT) dir_type = DIR_NEW;
V      else if (cli$present(c$dsc("REGISTER")) == CLI$_PRESENT) dir_type = DIR
X_REGISTER;
X+     else if (cli$present(c$dsc("UNREGISTERED")) == CLI$_PRESENT)
X+       dir_type = DIR_UNREGISTER;
X      else if (!class_len) `123
X        force_recalc = 0;
X        dir_type = cur_dir_type;
X**************
X*** 256,261
X          break;
X        case DIR_REGISTER:
X          incl_grp = (ga[gindx]->grp_reg);
X          break;
X        `125
X      if (incl_grp && class_check(gindx)) `123
X--- 261,269 -----
X          break;
X        case DIR_REGISTER:
X          incl_grp = (ga[gindx]->grp_reg);
X+         break;
X+       case DIR_UNREGISTER:
X+         incl_grp = (ga[gindx]->grp_reg == 0);
X          break;
X        `125
X      if (incl_grp && class_check(gindx)) `123
$ GOSUB UNPACK_FILE

$ FILE_IS = "NEWSDISPLAY.DIFF"
$ CHECKSUM_IS = 1762604156
$ COPY SYS$INPUT VMS_SHARE_DUMMY.DUMMY
X*** [.news_v59_src]newsdisplay.c
X--- [.news_src]newsdisplay.c
X**************
X*** 278,284
X            strcpy(resp,"10000");
X            trm = SMG$K_TRM_DOWN;
X            `125
V!         else if (!strncmp(resp,"top",min(3,strlen(resp))) && (*(resp + 1) =
X= 'o')) `123
X            strcpy(resp,"10000");
X            trm = SMG$K_TRM_UP;
X            `125
X--- 278,286 -----
X            strcpy(resp,"10000");
X            trm = SMG$K_TRM_DOWN;
X            `125
X!         else if (   !strncmp(resp,"top",min(3,strlen(resp)))
X!                  && (*(resp + 1) == 'o')
X!                  && (strlen(resp) <= 3)) `123
X            strcpy(resp,"10000");
X            trm = SMG$K_TRM_UP;
X            `125
$ GOSUB UNPACK_FILE

$ FILE_IS = "NEWSDIST.DIFF"
$ CHECKSUM_IS = 559246916
$ COPY SYS$INPUT VMS_SHARE_DUMMY.DUMMY
X*** [.news_v59_src]newsdist.c
X--- [.news_src]newsdist.c
X**************
X*** 213,218
X         tolist[IO_SIZE],
X         *cp1,
X         *cp2;
X    sys_filter_t *fmp, *f1;
X    dist_entry_t *tmp, *t1 = distfile;
X `032
X--- 213,219 -----
X         tolist[IO_SIZE],
X         *cp1,
X         *cp2;
X+   int n;
X    sys_filter_t *fmp, *f1;
X    dist_entry_t *tmp, *t1 = distfile;
X `032
X**************
X*** 216,223
X    sys_filter_t *fmp, *f1;
X    dist_entry_t *tmp, *t1 = distfile;
X `032
X!   if (sscanf(s,"%s %s",node,tolist) != 2) return;
X!   cp1 = tolist;
X    tmp = malloc(sizeof *tmp);
X    strcpy((tmp->from_name = malloc(strlen(node) + 1)),node);
X    tmp->to_names = 0;
X--- 217,228 -----
X    sys_filter_t *fmp, *f1;
X    dist_entry_t *tmp, *t1 = distfile;
X `032
X!   cp1 = s;`009`009`009`009/* s is compressed, stripped string */
X!   while (isgraph(*cp1)) cp1++;       `009/* scan accross node word */
X!   if (!*cp1) cp1 = 0;
X!   else *cp1++ = '\0';              `009/* and null terminate node word */
X!   strcpy(node,s);
V!   if (!strlen(node)) return; `009`009/* handle the case of the string " " *
X/
X    tmp = malloc(sizeof *tmp);
X    strcpy((tmp->from_name = malloc(strlen(node) + 1)),node);
X    tmp->to_names = 0;
X**************
X*** 221,238
X    tmp = malloc(sizeof *tmp);
X    strcpy((tmp->from_name = malloc(strlen(node) + 1)),node);
X    tmp->to_names = 0;
X!   do `123
X!     if (cp2 = strchr(cp1,',')) *cp2++ = '\0';
X!     fmp = malloc(sizeof *fmp);
X!     strcpy((fmp->sys_filtnam = malloc(strlen(cp1) + 1)),cp1);
X!     fmp->sys_fnext = 0;
X!     if (!tmp->to_names) tmp->to_names = f1 = fmp;
X!     else `123
X!       f1->sys_fnext = fmp;
X!       f1 = fmp;
X!       `125
X!     cp1 = cp2;
X!     `125 while (cp1);
X    tmp->next = 0;
X    if (!distfile) distfile = tmp;
X    else `123
X--- 226,250 -----
X    tmp = malloc(sizeof *tmp);
X    strcpy((tmp->from_name = malloc(strlen(node) + 1)),node);
X    tmp->to_names = 0;
X!   if (cp1) `123           `009`009`009/* now handle following words */
X!     while (cp2 = strchr(cp1,' ')) *cp2 = ','; `009/* convert ' ' -> ',' */
X!     strcpy(tolist,cp1);
X!     cp1 = tolist;
X!     do `123
X!       if (cp2 = strchr(cp1,',')) *cp2++ = '\0';
X!       if (strlen(cp1)) `123
X!         fmp = malloc(sizeof *fmp);
X!         strcpy((fmp->sys_filtnam = malloc(strlen(cp1) + 1)),cp1);
X!         fmp->sys_fnext = 0;
X!         if (!tmp->to_names) tmp->to_names = f1 = fmp;
X!         else `123
X!           f1->sys_fnext = fmp;
X!           f1 = fmp;
X!           `125
X!         `125
X!       cp1 = cp2;
X!       `125 while (cp1);
X!     `125
X    tmp->next = 0;
X    if (!distfile) distfile = tmp;
X    else `123
X**************
X*** 559,565
X      if (!strlen(s->sys_file)) continue;
X      if (test_accept(newsgroups,distribution,s->sys_f)) `123
X        if (*s->sys_type == 'n') `123
X!         if (fpo = fopen(s->sys_file,"a","rfm=var","rat=cr")) `123
X            fprintf(fpo,"%s\n",message_id);
X            fclose(fpo);
X            `125
X--- 571,584 -----
X      if (!strlen(s->sys_file)) continue;
X      if (test_accept(newsgroups,distribution,s->sys_f)) `123
X        if (*s->sys_type == 'n') `123
X!         if (!(fpo = fopen(s->sys_file,"a","rfm=var","rat=cr"))) `123
V!           sleep(1); /* assume append open due to multiple write - wait a bi
Xt -
X!                        if the append still fails try to open a new version
X!                        before giving up. */
X!           if (!(fpo = fopen(s->sys_file,"a","rfm=var","rat=cr")))
X!             fpo = fopen(s->sys_file,"w","rfm=var","rat=cr");
X!           `125
X!         if (fpo) `123
X            fprintf(fpo,"%s\n",message_id);
X            fclose(fpo);
X            `125
X**************
X*** 585,591
X `032
X          n_char = (*(s->sys_type + 1) == 'n');
X          if (*s->sys_type != 'b')
X!           fpo = fopen(s->sys_file,"w","rfm=var","rat=cr");
X          else `123
X            if (!stat(s->sys_file,&batfile_stat)) `123
V              if ((batfile_stat.st_size + infile_stat.st_size) > NEWS_BATCH_S
XIZE)
X--- 604,610 -----
X `032
X          n_char = (*(s->sys_type + 1) == 'n');
X          if (*s->sys_type != 'b')
V!           fpo = fopen(s->sys_file,"w","rfm=var","rat=cr","alq=30","deq=30")
X;
X          else `123
X            if (!stat(s->sys_file,&batfile_stat)) `123
V              if ((batfile_stat.st_size + infile_stat.st_size) > NEWS_BATCH_S
XIZE)
X**************
X*** 589,596
X          else `123
X            if (!stat(s->sys_file,&batfile_stat)) `123
V              if ((batfile_stat.st_size + infile_stat.st_size) > NEWS_BATCH_S
XIZE)
X!               fpo = fopen(s->sys_file,"w","rfm=var","rat=cr");
X!             else fpo = fopen(s->sys_file,"a");
X              `125
X            else fpo = fopen(s->sys_file,"w","rfm=var","rat=cr");
X            if (!fpo) `123
X--- 608,618 -----
X          else `123
X            if (!stat(s->sys_file,&batfile_stat)) `123
V              if ((batfile_stat.st_size + infile_stat.st_size) > NEWS_BATCH_S
XIZE)
V!               fpo = fopen(s->sys_file,"w","rfm=var","rat=cr","alq=30","deq=
X30");
X!             else `123
X!               if (!(fpo = fopen(s->sys_file,"a")))
V!                 fpo = fopen(s->sys_file,"w","rfm=var","rat=cr","alq=30","de
Xq=30");
X!               `125
X              `125
V            else fpo = fopen(s->sys_file,"w","rfm=var","rat=cr","alq=30","deq
X=30");
X            if (!fpo) `123
X**************
X*** 592,598
X                fpo = fopen(s->sys_file,"w","rfm=var","rat=cr");
X              else fpo = fopen(s->sys_file,"a");
X              `125
X!           else fpo = fopen(s->sys_file,"w","rfm=var","rat=cr");
X            if (!fpo) `123
X              fclose(fpi);
X              continue;
X--- 614,620 -----
V                  fpo = fopen(s->sys_file,"w","rfm=var","rat=cr","alq=30","de
Xq=30");
X                `125
X              `125
V!           else fpo = fopen(s->sys_file,"w","rfm=var","rat=cr","alq=30","deq
X=30");
X            if (!fpo) `123
X              fclose(fpi);
X              continue;
$ GOSUB UNPACK_FILE

$ FILE_IS = "NEWSEXTERN.DIFF"
$ CHECKSUM_IS = 1985495058
$ COPY SYS$INPUT VMS_SHARE_DUMMY.DUMMY
X*** [.news_v59_src]newsextern.h
X--- [.news_src]newsextern.h
$ GOSUB UNPACK_FILE

$ FILE_IS = "NEWSEXTRACT.DIFF"
$ CHECKSUM_IS = 1181743897
$ COPY SYS$INPUT VMS_SHARE_DUMMY.DUMMY
X*** [.news_v59_src]newsextract.c
X--- [.news_src]newsextract.c
X**************
X*** 234,242
X      `125
X    if (append_ofile) fprintf(fpextract,"\f\n");
X    append_ofile = 1;
X!   if (w_ok) sprintf(xfrbuf,"X-NEWS: %s %s: %d\n",
V!                           news_node,ga[g]->grp_name,ga[g]->grp_ia[m].itm_nu
Xm);
X!   fputs(xfrbuf,fpextract);
X    err_line(xfrbuf);
X    if (m_seen) item_update(g,m);
X    while (fgets(xfrbuf,510,fpr)) `123
X--- 234,244 -----
X      `125
X    if (append_ofile) fprintf(fpextract,"\f\n");
X    append_ofile = 1;
X!   if (w_ok) `123
X!     sprintf(xfrbuf,"X-NEWS: %s %s: %d\n",
X!                   news_node,ga[g]->grp_name,ga[g]->grp_ia[m].itm_num);
X!     fputs(xfrbuf,fpextract);
X!     `125
X    err_line(xfrbuf);
X    if (m_seen) item_update(g,m);
X    while (fgets(xfrbuf,510,fpr)) `123
$ GOSUB UNPACK_FILE

$ FILE_IS = "NEWSFILES.DIFF"
$ CHECKSUM_IS = 1411852509
$ COPY SYS$INPUT VMS_SHARE_DUMMY.DUMMY
X*** [.news_v59_src]newsfiles.c
X--- [.news_src]newsfiles.c
X**************
X*** 67,72
X    i->f.fab$b_org = FAB$C_SEQ;
X    i->f.fab$b_rat = FAB$M_CR;
X    i->f.fab$b_rfm = FAB$C_VAR;
X    i->f.fab$l_xab = &(i->p);
X    i->p = cc$rms_xabpro;
X    i->p.xab$w_pro = prot;
X--- 67,75 -----
X    i->f.fab$b_org = FAB$C_SEQ;
X    i->f.fab$b_rat = FAB$M_CR;
X    i->f.fab$b_rfm = FAB$C_VAR;
X+   i->f.fab$l_alq = 4;
X+   i->f.fab$w_deq = 32;
X+   i->f.fab$l_fop `124= FAB$M_TEF;
X    i->f.fab$l_xab = &(i->p);
X    i->p = cc$rms_xabpro;
X    i->p.xab$w_pro = prot;
$ GOSUB UNPACK_FILE

$ FILE_IS = "NEWSFORWARD.DIFF"
$ CHECKSUM_IS = 1985494578
$ COPY SYS$INPUT VMS_SHARE_DUMMY.DUMMY
X*** [.news_v59_src]newsforward.c
X--- [.news_src]newsforward.c
$ GOSUB UNPACK_FILE

$ FILE_IS = "NEWSHELP.DIFF"
$ CHECKSUM_IS = 1985494842
$ COPY SYS$INPUT VMS_SHARE_DUMMY.DUMMY
X*** [.news_v59_src]newshelp.c
X--- [.news_src]newshelp.c
$ GOSUB UNPACK_FILE

$ FILE_IS = "NEWSINCLUDE.DIFF"
$ CHECKSUM_IS = 1985494578
$ COPY SYS$INPUT VMS_SHARE_DUMMY.DUMMY
X*** [.news_v59_src]newsinclude.h
X--- [.news_src]newsinclude.h
$ GOSUB UNPACK_FILE

$ FILE_IS = "NEWSMOD.DIFF"
$ CHECKSUM_IS = 1985494578
$ COPY SYS$INPUT VMS_SHARE_DUMMY.DUMMY
X*** [.news_v59_src]newsmod.c
X--- [.news_src]newsmod.c
$ GOSUB UNPACK_FILE

$ FILE_IS = "NEWSMODE.DIFF"
$ CHECKSUM_IS = 1985494842
$ COPY SYS$INPUT VMS_SHARE_DUMMY.DUMMY
X*** [.news_v59_src]newsmode.c
X--- [.news_src]newsmode.c
$ GOSUB UNPACK_FILE

$ FILE_IS = "NEWSPOST.DIFF"
$ CHECKSUM_IS = 341141708
$ COPY SYS$INPUT VMS_SHARE_DUMMY.DUMMY
X*** [.news_v59_src]newspost.c
X--- [.news_src]newspost.c
X**************
X*** 220,226
X   *  Parse the newsgroup specification, building a comma separated list.
X   */ `032
X `032
X! parse_newsgroups(newslist,dflt,ask,use_aliases)
X    char *newslist, *dflt;
X    int ask, use_aliases;
X  `123
X--- 220,226 -----
X   *  Parse the newsgroup specification, building a comma separated list.
X   */ `032
X `032
X! parse_newsgroups(newslist,dflt,ask,use_aliases,auth_check)
X    char *newslist, *dflt;
X    int ask, use_aliases, auth_check;
X  `123
X**************
X*** 222,228
X `032
X  parse_newsgroups(newslist,dflt,ask,use_aliases)
X    char *newslist, *dflt;
X!   int ask, use_aliases;
X  `123
X    char newsgroups[256];
X    short newsgroups_len;
X--- 222,228 -----
X `032
X  parse_newsgroups(newslist,dflt,ask,use_aliases,auth_check)
X    char *newslist, *dflt;
X!   int ask, use_aliases, auth_check;
X  `123
X    char newsgroups[256];
X    short newsgroups_len;
X**************
X*** 236,242
X      if (status == RMS$_EOF) longjmp(env,2);
X      newsgroups[newsgroups_len] = '\0';
X      if (use_aliases) strcpy(newsgroups,aliases(newsgroups));
X!     auth_list(newsgroups);
X      strcpy(newslist,newsgroups);
X      `125
X    else `123
X--- 236,242 -----
X      if (status == RMS$_EOF) longjmp(env,2);
X      newsgroups[newsgroups_len] = '\0';
X      if (use_aliases) strcpy(newsgroups,aliases(newsgroups));
X!     if (auth_check) auth_list(newsgroups);
X      strcpy(newslist,newsgroups);
X      `125
X    else `123
X**************
X*** 244,250
X      do `123
X        newsgroups[newsgroups_len] = '\0';
X        if (use_aliases) strcpy(newsgroups,aliases(newsgroups));
X!       if (auth_list(newsgroups)) `123
X          strcat(newslist,newsgroups);
X          strcat(newslist,",");
X          `125
X--- 244,250 -----
X      do `123
X        newsgroups[newsgroups_len] = '\0';
X        if (use_aliases) strcpy(newsgroups,aliases(newsgroups));
X!       if (!auth_check `124`124 auth_list(newsgroups)) `123
X          strcat(newslist,newsgroups);
X          strcat(newslist,",");
X          `125
X**************
X*** 302,309
X   *  post a new news item
X   */
X `032
X! do_posting(postfile)
X!   int postfile;
X  `123
X    char ngroup[512],
X         post_dist[132], post_path[132],
X--- 302,310 -----
X   *  post a new news item
X   */
X `032
X! static
X! do_posting(postfile,crosspost)
X!   int postfile, crosspost;
X  `123
X    char ngroup[512],
X         post_dist[132], post_path[132],
X**************
X*** 313,318
X         xfrbuf[512],
X         *cp1, *cp2,
X         distribution[512], id[256], from[256], follow_groups[512],
V         followup_groups[512], ref_line[256], old_ref_line[256], subj_line[25
X6],
X          mod_address[132], post_address[256],
X         *cp, *p, *c1, *c2, *cn1, *cn2, *xx, *yy, *zz, lg[132], *pa;
X--- 314,320 -----
X         xfrbuf[512],
X         *cp1, *cp2,
X         distribution[512], id[256], from[256], follow_groups[512],
X+        xnewsgroups[512], xfollowgroups[512],
V         followup_groups[512], ref_line[256], old_ref_line[256], subj_line[25
X6],
X         mod_address[132], post_address[256], control_val[256],
X         *cp, *p, *c1, *c2, *cn1, *cn2, *xx, *yy, *zz, lg[132], *pa;
X**************
X*** 314,320
X         *cp1, *cp2,
X         distribution[512], id[256], from[256], follow_groups[512],
V         followup_groups[512], ref_line[256], old_ref_line[256], subj_line[25
X6],
X!         mod_address[132], post_address[256],
X         *cp, *p, *c1, *c2, *cn1, *cn2, *xx, *yy, *zz, lg[132], *pa;
X    int approval_required = 0,
X        fd,
X--- 316,322 -----
-+-+-+-+-+ End of part 4 +-+-+-+-+-