[news.software.anu-news] NEWS V5.9C diff 20/21

gih900@csc.anu.oz (Geoff Huston) (12/21/89)

+-+-+-+ Beginning of part 20 +-+-+-+
X              return(0);
X  #endif
X          `125
X      else `123
X**************
X*** 452,457
X              return(0);
X          `125
X  #endif
X      else `123
X          sprintf(netobj,"%s::\"NEWS=\"",node);
X          return(sys$assign(c$dsc(netobj),&net_chan,0,0) & 1);
X--- 443,449 -----
X              sys$dassgn(net_chan);
X              return(0);
X  #endif
X+         `125
X      else `123
X          sprintf(netobj,"%s::\"TASK=NNTP\"",node);
X          return(sys$assign(c$dsc(netobj),&net_chan,0,0) & 1);
X**************
X*** 453,459
X          `125
X  #endif
X      else `123
X!         sprintf(netobj,"%s::\"NEWS=\"",node);
X          return(sys$assign(c$dsc(netobj),&net_chan,0,0) & 1);
X          `125
X  `125
X--- 445,451 -----
X  #endif
X          `125
X      else `123
X!         sprintf(netobj,"%s::\"TASK=NNTP\"",node);
X          return(sys$assign(c$dsc(netobj),&net_chan,0,0) & 1);
X          `125
X  `125
X**************
X*** 482,488
X `032
X  toggle_link()
X  `123
V!     if (!nntp_write("YCMND") `124`124 (!(wait_net_response(RESP_TIMER,1))))
X `123
X          if (*net_open_chan) `123
X              close_net();
X              printf("Lost connection to NEWS SERVER ([%c] %s)",
X--- 474,480 -----
X `032
X  toggle_link()
X  `123
V!     if (!nntp_write("STAT") `124`124 (!(wait_net_response(RESP_TIMER,1))))
X `123
X          if (*net_open_chan) `123
X              close_net();
X              printf("Lost connection to NEWS SERVER ([%c] %s)",
X**************
X*** 514,520
X  /*
X   *  open_rem_chan
X   *
X!  *  Open channel to remote NNTP server on host name node, using protocol
X   *  proto_num (3 == SRITCP, 2 == WINTCP, 1 == CMUTCP, 0 = DECNET)
X   */
X `032
X--- 506,512 -----
X  /*
X   *  open_rem_chan
X   *
X!  *  proto_num (3 == MULTINETTCP, 2 == WINTCP, 1 == CMUTCP, 0 = DECNET)
X   *  proto_num (3 == SRITCP, 2 == WINTCP, 1 == CMUTCP, 0 = DECNET)
X   */
X `032
X**************
X*** 588,594
X      if (lines_written) `123
X          while (fgets(inpstr,132,fpr)) fprintf(fpw,"%s",inpstr);
X          fclose(fpw);
X!         lib$rename_file(c$dsc("nntpfeed.tmp"),c$dsc(idfile),
X                          0,0,0,0,0,0,0,0,0,0);
X          strcat(idfile,";-1");
X          delete(idfile);
X--- 580,586 -----
X      if (lines_written) `123
X          while (fgets(inpstr,132,fpr)) fprintf(fpw,"%s",inpstr);
X          fclose(fpw);
X!         lib$rename_file(c$dsc(tmpf),c$dsc(idfile),
X                          0,0,0,0,0,0,0,0,0,0);
X          strcat(idfile,";-1");
X          delete(idfile);
X**************
X*** 595,601
X          `125
X      else `123
X          fclose(fpw);
X!         delete("nntpfeed.tmp;");
X          `125
X      if (type==MAX_OFFERED) `123
X  `009int len = 3;
X--- 587,593 -----
X          `125
X      else `123
X          fclose(fpw);
X!         delete(tmpf);
X          `125
X      if (type==MAX_OFFERED) `123
X  `009int len = 3;
X**************
X*** 756,764
X `032
X  #if TWG
X      if (tolower(*proto) == 't') proto_num = WINTCP;
X!     if (tolower(*proto) == 'w') proto_num = WINTCP;
X! #elif SRI
X!     if (tolower(*proto) == 't') proto_num = SRITCP;
X      if (tolower(*proto) == 's') proto_num = SRITCP;
X  #else
X      if (tolower(*proto) == 't') proto_num = CMUTCP;
X--- 748,756 -----
X `032
X  #if TWG
X      if (tolower(*proto) == 't') proto_num = WINTCP;
X! #elif MULTINET
X!     if (tolower(*proto) == 't') proto_num = MULTINETTCP;
X!     if (tolower(*proto) == 'm') proto_num = MULTINETTCP;
X      if (tolower(*proto) == 's') proto_num = SRITCP;
X  #else
X      if (tolower(*proto) == 't') proto_num = CMUTCP;
X**************
X*** 771,777
X          exit(1);
X          `125
X      if (cp = strchr(idfile,';')) *cp = '\0';
X!     fpw = fopen("nntpfeed.tmp","w");
X      if(debugging) fpd = fopen(dbgfile,"w");
X `032
X      printf("\tConnecting to NEWS SERVER on node %s:: ...\n",node);
X--- 763,774 -----
X          exit(1);
X          `125
X      if (cp = strchr(idfile,';')) *cp = '\0';
X!     strcpy(tmpf,idfile);
X!     if (cp = strrchr(tmpf,']')) cp++;
X!     else if (cp = strrchr(tmpf,':')) cp++;
X!     else cp = tmpf;
X!     sprintf(cp,"NNTP_%X.TMP",getpid());  `032
X!     fpw = fopen(tmpf,"w");
X      if(debugging) fpd = fopen(dbgfile,"w");
X `032
X      printf("\tConnecting to NEWS SERVER on node %s:: ...\n",node);
X**************
X*** 867,874
X          `125
X      fclose(fpr);
X      fclose(fpw);            /* close nntpfeed.tmp */
V!     if (lines_written) lib$rename_file(c$dsc("nntpfeed.tmp"),c$dsc(idfile),
X0,0,0,0,0,0,0,0,0,0);
X!     else delete("nntpfeed.tmp;");
X      if (logging)`123
X          dat();
X          fpl = fopen(logfile,"a+");
X--- 864,871 -----
X          `125
X      fclose(fpr);
X      fclose(fpw);            /* close nntpfeed.tmp */
V!     if (lines_written) lib$rename_file(c$dsc(tmpf),c$dsc(idfile),0,0,0,0,0,
X0,0,0,0,0);
X!     else delete(tmpf);
X      if (logging)`123
X          dat();
X          fpl = fopen(logfile,"a+");
$ GOSUB UNPACK_FILE

$ FILE_IS = "NNTP_SERVER.DIFF"
$ CHECKSUM_IS = 106179609
$ COPY SYS$INPUT VMS_SHARE_DUMMY.DUMMY
X*** [.news_v59_src]nntp_server.c
X--- [.news_src]nntp_server.c
X**************
X*** 90,96
X  #define LOG_TABLE   "LNM$SYSTEM"
X `032
X                              /* file names */
X! #define NEWSBATCH       "NEWS_MANAGER:NNTP.BATCH"
X `032
V  #define CLOSE_LINK      0   /* Status flags passed between server and drive
Xr */
X  #define NO_INPUT        0
X--- 90,97 -----
X  #define LOG_TABLE   "LNM$SYSTEM"
X `032
X                              /* file names */
X! #define NEWSBATCH       "NEWS_MANAGER:NNTP_%X.BATCH"
X! #define NEWS_BATCH_SIZE 250000
X `032
V  #define CLOSE_LINK      0   /* Status flags passed between server and drive
Xr */
X  #define NO_INPUT        0
X**************
X*** 259,265
X  GRP newsgrp;                    /* newsgroup i/o buffer */
X `032
X  static
X! int mail_add_expiry;
X `032
X  sysprv()
X  `123
X--- 260,267 -----
X  GRP newsgrp;                    /* newsgroup i/o buffer */
X `032
X  static
X! int mail_add_expiry,
X!     ihave_size = 0;
X `032
X  sysprv()
X  `123
X**************
X*** 1102,1107
X    fseek(fpr,0,0);
X    while (fgets(xfrbuf,IO_SIZE,fpr)) `123
X      if (*xfrbuf == '\n') break;
X      if (isspace(*xfrbuf)) `123
X        if (curr_line) `123
V          curr_line = realloc(curr_line,strlen(curr_line) + strlen(xfrbuf) +
X 1);
X--- 1104,1111 -----
X    fseek(fpr,0,0);
X    while (fgets(xfrbuf,IO_SIZE,fpr)) `123
X      if (*xfrbuf == '\n') break;
X+     if (xfrbuf[strlen(xfrbuf)-1]=='\n')
X+       xfrbuf[strlen(xfrbuf)-1]='\0'; /* remove newline (POK) */
X      if (isspace(*xfrbuf)) `123
X        if (curr_line) `123
V          curr_line = realloc(curr_line,strlen(curr_line) + strlen(xfrbuf) +
X 1);
X**************
X*** 1247,1256
X `032
X  static
X  add_item(fn,mode,msgbuf,stm)
X!     char *fn;
X!     int mode;
X!     char *msgbuf;
X!     int stm;
X  `123
X      FILE *fpr,
X           *fpw;
X--- 1251,1260 -----
X `032
X  static
X  add_item(fn,mode,msgbuf,stm)
X!   char *fn;
X!   int mode;
X!   char *msgbuf;
X!   int stm;
X  `123
X    FILE *fpr,
X         *fpw;
X**************
X*** 1252,1260
X      char *msgbuf;
X      int stm;
X  `123
X!     FILE *fpr,
X!          *fpw;
X!     char line[BUFF_STRLEN];
X `032
X      if (mode == POST) return(post_add_item(fn,msgbuf,stm));
X `032
X--- 1256,1266 -----
X    char *msgbuf;
X    int stm;
X  `123
X!   FILE *fpr,
X!        *fpw;
X!   char line[BUFF_STRLEN],
X!        batch[FILE_STRLEN];
X!   struct stat sbuffer;
X `032
X    if (mode == POST) return(post_add_item(fn,msgbuf,stm));
X `032
X**************
X*** 1256,1262
X           *fpw;
X      char line[BUFF_STRLEN];
X `032
X!     if (mode == POST) return(post_add_item(fn,msgbuf,stm));
X `032
X      if (!(fpr = fopen(fn,"r"))) `123
X          strcpy(msgbuf,"File handler error in NNTP Server.");
X--- 1262,1268 -----
X         batch[FILE_STRLEN];
X    struct stat sbuffer;
X `032
X!   if (mode == POST) return(post_add_item(fn,msgbuf,stm));
X `032
X    if (!(fpr = fopen(fn,"r"))) `123
X      strcpy(msgbuf,"File handler error in NNTP Server.");
X**************
X*** 1258,1277
X `032
X      if (mode == POST) return(post_add_item(fn,msgbuf,stm));
X `032
X!     if (!(fpr = fopen(fn,"r"))) `123
X!         strcpy(msgbuf,"File handler error in NNTP Server.");
X!         return(0);
X!         `125
X!     if (!(fpw = fopen(NEWSBATCH,"a"))) `123
X!         strcpy(msgbuf,"File handler error in NNTP Server.");
X!         return(0);
X!         `125
X!     fputs("#! rnews 1\n",fpw);
X!     while (fgets(line,BUFF_STRLEN,fpr)) fputs(line,fpw);
X!     fclose(fpr);
X!     fclose(fpw);
X!     strcpy(msgbuf,"Item successfully spooled.");
X!     return(1);
X  `125
X  `012
X  /*
X--- 1264,1291 -----
X `032
X    if (mode == POST) return(post_add_item(fn,msgbuf,stm));
X `032
X!   if (!(fpr = fopen(fn,"r"))) `123
X!     strcpy(msgbuf,"File handler error in NNTP Server.");
X!     return(0);
X!     `125
X!   sprintf(batch,NEWSBATCH,getpid());
X!   if (!stat(batch,&sbuffer)) `123
V!     if (sbuffer.st_size > NEWS_BATCH_SIZE) fpw = fopen(batch,"w","alq=30","
Xdeq=30");
X!     else
V!       if (!(fpw = fopen(batch,"a"))) fpw = fopen(batch,"w","alq=30","deq=30
X");
X!     `125
X!   else fpw = fopen(batch,"w","alq=30","deq=30");
X!   if (!fpw) `123
X!     strcpy(msgbuf,"File handler error in NNTP Server.");
X!     return(0);
X!     `125
X!   fprintf(fpw,"#! rnews %d\n", (ihave_size > 0 ? ihave_size : 1));
X!   while (fgets(line,BUFF_STRLEN,fpr)) fputs(line,fpw);
X!   fclose(fpr);
X!   fclose(fpw);
X!   strcpy(msgbuf,"Item successfully spooled.");
X!   while (!delete(fn));
X!   return(1);
X  `125
X  `012
X  /*
X**************
X*** 1817,1826
X   */
X `032
X  static
X! FILE *openartbyid(id, msg_status,stm)
X!     char    *id;
X!     int     *msg_status;
X!     int     stm;
X  `123
X      char    l_id[IDLEN + 4];
X      int     i;
X--- 1831,1840 -----
X   */
X `032
X  static
X! FILE *openartbyid(id,msg_status,stm)
X!   char *id;
X!   int *msg_status;
X!   int stm;
X  `123
X    char l_id[IDLEN + 4];
X    int i;
X**************
X*** 1822,1829
X      int     *msg_status;
X      int     stm;
X  `123
X!     char    l_id[IDLEN + 4];
X!     int     i;
X `032
X      *msg_status = M430;
X      for (i = 0; i < (IDLEN + 4); ++i) l_id[i] = '\0';
X--- 1836,1843 -----
X    int *msg_status;
X    int stm;
X  `123
X!   char l_id[IDLEN + 4];
X!   int i;
X `032
X    ihave_size = 0;
X    *msg_status = M430;
X**************
X*** 1825,1833
X      char    l_id[IDLEN + 4];
X      int     i;
X `032
X!     *msg_status = M430;
X!     for (i = 0; i < (IDLEN + 4); ++i) l_id[i] = '\0';
X!     strncpy(l_id,id,IDLEN);
X `032
X      grprab.rab$l_kbf = &(newsitm.itm_grp);
X      grprab.rab$b_ksz = 4;
X--- 1839,1848 -----
X    char l_id[IDLEN + 4];
X    int i;
X `032
X!   ihave_size = 0;
X!   *msg_status = M430;
X!   for (i = 0; i < (IDLEN + 4); ++i) l_id[i] = '\0';
X!   strncpy(l_id,id,IDLEN);
X `032
X    grprab.rab$l_kbf = &(newsitm.itm_grp);
X    grprab.rab$b_ksz = 4;
X**************
X*** 1829,1839
X      for (i = 0; i < (IDLEN + 4); ++i) l_id[i] = '\0';
X      strncpy(l_id,id,IDLEN);
X `032
X!     grprab.rab$l_kbf = &(newsitm.itm_grp);
X!     grprab.rab$b_ksz = 4;
X!     grprab.rab$b_krf = 1;
X!     grprab.rab$l_rop = RAB$M_RRL `124 RAB$M_NLK;
X!     grprab.rab$b_rac = RAB$C_KEY;
X `032
X      itmrab.rab$l_kbf = l_id;
X      itmrab.rab$b_ksz = IDLEN + 4;
X--- 1844,1854 -----
X    for (i = 0; i < (IDLEN + 4); ++i) l_id[i] = '\0';
X    strncpy(l_id,id,IDLEN);
X `032
X!   grprab.rab$l_kbf = &(newsitm.itm_grp);
X!   grprab.rab$b_ksz = 4;
X!   grprab.rab$b_krf = 1;
X!   grprab.rab$l_rop = RAB$M_RRL `124 RAB$M_NLK;
X!   grprab.rab$b_rac = RAB$C_KEY;
X `032
X    itmrab.rab$l_kbf = l_id;
X    itmrab.rab$b_ksz = IDLEN + 4;
X**************
X*** 1835,1855
X      grprab.rab$l_rop = RAB$M_RRL `124 RAB$M_NLK;
X      grprab.rab$b_rac = RAB$C_KEY;
X `032
X!     itmrab.rab$l_kbf = l_id;
X!     itmrab.rab$b_ksz = IDLEN + 4;
X!     itmrab.rab$b_krf = 1;
X!     itmrab.rab$l_rop = RAB$M_KGE `124 RAB$M_RRL `124 RAB$M_NLK;
X!     itmrab.rab$b_rac = RAB$C_KEY;
X!     if (!(sys$get(&itmrab) & 1) `124`124 strcmp(l_id,newsitm.itm_id)
X!          `124`124 !(sys$get(&grprab) & 1))
X!         return(0);
X!     itmrab.rab$b_rac = RAB$C_SEQ;
X!     while (!check_ngperm(newsgrp.grp_name,stm))
X!         if (!(sys$get(&itmrab) & 1) `124`124 strcmp(l_id,newsitm.itm_id)
X!              `124`124 !(sys$get(&grprab) & 1))
X!             return((*msg_status = M502),0);
V!     sprintf(itm_fname,Itm_template,util_dir(newsgrp.grp_name),newsitm.itm_n
Xum);
X!     return(fopen(itm_fname,"r"));
X  `125
X  `012
X  /*
X--- 1850,1874 -----
X    grprab.rab$l_rop = RAB$M_RRL `124 RAB$M_NLK;
X    grprab.rab$b_rac = RAB$C_KEY;
X `032
X!   itmrab.rab$l_kbf = l_id;
X!   itmrab.rab$b_ksz = IDLEN + 4;
X!   itmrab.rab$b_krf = 1;
X!   itmrab.rab$l_rop = RAB$M_KGE `124 RAB$M_RRL `124 RAB$M_NLK;
X!   itmrab.rab$b_rac = RAB$C_KEY;
X!   if (   !(sys$get(&itmrab) & 1)
X!       `124`124 strcmp(l_id,newsitm.itm_id)
X!       `124`124 !(sys$get(&grprab) & 1))
X!     return(0);
X!   itmrab.rab$b_rac = RAB$C_SEQ;
X!   while (!check_ngperm(newsgrp.grp_name,stm))
X!     if (   !(sys$get(&itmrab) & 1)
X!         `124`124 strcmp(l_id,newsitm.itm_id)
X!         `124`124 !(sys$get(&grprab) & 1)) `123
X!       *msg_status = M502;
X!       return(0);
X!       `125
V!   sprintf(itm_fname,Itm_template,util_dir(newsgrp.grp_name),newsitm.itm_num
X);
X!   return(fopen(itm_fname,"r"));
X  `125
X  `012
X  /*
X**************
X*** 2159,2164
X    FILE *fpl = 0;
X `032
X    next_call(stm,parser,CMD_INPUT);
X    read_net(ibuf,512,stm);
X    while (strcmp(ibuf,".\n")) `123
X      if (!fpl) fpl = open_file(stm);
X--- 2178,2184 -----
X    FILE *fpl = 0;
X `032
X    next_call(stm,parser,CMD_INPUT);
X+   ihave_size = 0;
X    read_net(ibuf,512,stm);
X    while (strcmp(ibuf,".\n")) `123
X      if (!fpl) fpl = open_file(stm);
X**************
X*** 2162,2168
X    read_net(ibuf,512,stm);
X    while (strcmp(ibuf,".\n")) `123
X      if (!fpl) fpl = open_file(stm);
X!     if ((!strcmp(ibuf,"..\n")) && (fpl)) fputs(ibuf + 1,fpl);
X      else if (fpl) fputs(ibuf,fpl);
X      read_net(ibuf,512,stm);
X      `125
X--- 2182,2191 -----
X    read_net(ibuf,512,stm);
X    while (strcmp(ibuf,".\n")) `123
X      if (!fpl) fpl = open_file(stm);
X!     if ((!strcmp(ibuf,"..\n")) && (fpl)) `123
X!       --ihave_size;
X!       fputs(ibuf + 1,fpl);
X!       `125
X      else if (fpl) fputs(ibuf,fpl);
X      ihave_size += strlen(ibuf);
X      read_net(ibuf,512,stm);
X**************
X*** 2164,2169
X      if (!fpl) fpl = open_file(stm);
X      if ((!strcmp(ibuf,"..\n")) && (fpl)) fputs(ibuf + 1,fpl);
X      else if (fpl) fputs(ibuf,fpl);
X      read_net(ibuf,512,stm);
X      `125
X    if (fpl) `123
X--- 2187,2193 -----
X        fputs(ibuf + 1,fpl);
X        `125
X      else if (fpl) fputs(ibuf,fpl);
X+     ihave_size += strlen(ibuf);
X      read_net(ibuf,512,stm);
-+-+-+-+-+ End of part 20 +-+-+-+-+-