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 +-+-+-+-+-