gih900@csc.anu.oz (Geoff Huston) (12/21/89)
+-+-+-+ Beginning of part 4 +-+-+-+ X*** 862,868 X routine do_post X parameter P1, label=INFILE,value(type=$infile) X qualifier EDIT, negatable,default X! qualifier CONTROL, negatable X qualifier HEADERS, negatable X qualifier NEWSGROUPS, nonnegatable, value(required,list) X qualifier SUBJECT, nonnegatable, value(required) X--- 861,867 ----- X routine do_post X parameter P1, label=INFILE,value(type=$infile) X qualifier EDIT, negatable,default X! qualifier CONTROL, value, nonnegatable X qualifier HEADERS, negatable X qualifier NEWSGROUPS, nonnegatable, value(required,list) X qualifier SUBJECT, nonnegatable, value(required) X************** X*** 938,943 X qualifier IDENTIFIER, value,nonnegatable X qualifier MARKER, value,nonnegatable X qualifier FOLLOWUP, value,nonnegatable V disallow any2(PREV,BACK,NEXT,LAST,PARENT,TOPIC,IDENTIFIER,MARKER,FOL XLOWUP) X `032 X define verb REFRESH X--- 937,944 ----- X qualifier IDENTIFIER, value,nonnegatable X qualifier MARKER, value,nonnegatable X qualifier FOLLOWUP, value,nonnegatable X+ qualifier SUBJECT value,nonnegatable X+ qualifier TITLE value,nonnegatable V disallow any2(PREV,BACK,NEXT,LAST,PARENT,TOPIC,IDENTIFIER,MARKER,FOL XLOWUP) X `032 X define verb REFRESH $ GOSUB UNPACK_FILE $ FILE_IS = "NEWSDEFINE.DIFF" $ CHECKSUM_IS = 1610839846 $ COPY SYS$INPUT VMS_SHARE_DUMMY.DUMMY X*** [.news_v59_src]newsdefine.h X--- [.news_src]newsdefine.h X************** X*** 46,51 X #define DIR_DATE 1 X #define DIR_NEW 2 X #define DIR_REGISTER 3 X `032 X #define HELP_FILE "NEWS_ROOT:NEWS.HLB" X `032 X--- 46,52 ----- X #define DIR_DATE 1 X #define DIR_NEW 2 X #define DIR_REGISTER 3 X+ #define DIR_UNREGISTER 4 X `032 X #define HELP_FILE "NEWS_ROOT:NEWS.HLB" X `032 X************** X*** 71,77 X #define Access_template "NEWS_DEVICE:[%s]ACCESS.NEWS" X #define News_ini "NEWS_INI" X `032 X! #define DISP_BUF_SIZE 500 X `032 X #define IDLEN 60 X #define SUBJLEN 50 /* max length of newsgroup name */ X--- 72,78 ----- X #define Access_template "NEWS_DEVICE:[%s]ACCESS.NEWS" X #define News_ini "NEWS_INI" X `032 X! #define DISP_BUF_SIZE 700 X `032 X #define IDLEN 60 X #define SUBJLEN 50 /* max length of newsgroup name */ $ GOSUB UNPACK_FILE $ FILE_IS = "NEWSDELETE.DIFF" $ CHECKSUM_IS = 1734932688 $ COPY SYS$INPUT VMS_SHARE_DUMMY.DUMMY X*** [.news_v59_src]newsdelete.c X--- [.news_src]newsdelete.c X************** X*** 928,939 X `123 X int cur_time; X char inpline[256], X! mail_from[132], X! mail_groups[132], X! mail_dist[132], X! mail_id[132], X! post_path[132], X! post_dist[132], X loc_id[IDLEN], X id[132], X ngroup[132], X--- 928,940 ----- X `123 X int cur_time; X char inpline[256], X! mail_from[256], X! mail_cfrom[256], X! mail_groups[256], X! mail_dist[256], X! mail_id[256], X! post_path[256], X! post_dist[256], X loc_id[IDLEN], X id[256], X ngroup[256], X************** X*** 935,942 X post_path[132], X post_dist[132], X loc_id[IDLEN], X! id[132], X! ngroup[132], X *p, X *m_a; X struct tm *stm; X--- 936,943 ----- X post_path[256], X post_dist[256], X loc_id[IDLEN], X! id[256], X! ngroup[256], X *p, X *m_a; X struct tm *stm; X************** X*** 977,983 X return(0); X `125 X `032 X! s_to_lower(mail_from); X m_a = moderator_address(ga[curr_g]->grp_name); X s_to_lower(m_a); X sprintf(inpline,"%s@%s",mail_sig,Node_address); X--- 978,985 ----- X return(0); X `125 X `032 X! strcpy(mail_cfrom,mail_from); X! s_to_lower(mail_cfrom); X m_a = moderator_address(ga[curr_g]->grp_name); X s_to_lower(m_a); X strcpy(inpline,mail_sig); X************** X*** 980,986 X s_to_lower(mail_from); X m_a = moderator_address(ga[curr_g]->grp_name); X s_to_lower(m_a); X! sprintf(inpline,"%s@%s",mail_sig,Node_address); X s_to_lower(inpline); X if (strcmp(inpline,m_a)) `123 X sprintf(inpline,"*%s@%s*\n",usr_username,Node_address); X--- 982,988 ----- X s_to_lower(mail_cfrom); X m_a = moderator_address(ga[curr_g]->grp_name); X s_to_lower(m_a); X! strcpy(inpline,mail_sig); X s_to_lower(inpline); X if (strcmp(inpline,m_a)) `123 X sprintf(inpline,"*%s@%s*\n",usr_username,Node_address); X************** X*** 985,991 X if (strcmp(inpline,m_a)) `123 X sprintf(inpline,"*%s@%s*\n",usr_username,Node_address); X s_to_lower(inpline); X! if (!(wild_match(mail_from,inpline))) `123 X sprintf(inpline,"%s@%s",usr_username,Node_address); X s_to_lower(inpline); X if (!(wild_match(mail_from,inpline))) `123 X--- 987,993 ----- X if (strcmp(inpline,m_a)) `123 X sprintf(inpline,"*%s@%s*\n",usr_username,Node_address); X s_to_lower(inpline); X! if (!(wild_match(mail_cfrom,inpline))) `123 X sprintf(inpline,"%s@%s",usr_username,Node_address); X s_to_lower(inpline); X if (!(wild_match(mail_cfrom,inpline))) `123 X************** X*** 988,994 X if (!(wild_match(mail_from,inpline))) `123 X sprintf(inpline,"%s@%s",usr_username,Node_address); X s_to_lower(inpline); X! if (!(wild_match(mail_from,inpline))) `123 X if (no_priv() && !(ga[curr_g]->grp_flags & NEWS_M_MOD_ACCESS)) `123 V err_line("\Error: Cancel - Only original poster may cancel items\ Xn"); X `009 return(0); X--- 990,996 ----- X if (!(wild_match(mail_cfrom,inpline))) `123 X sprintf(inpline,"%s@%s",usr_username,Node_address); X s_to_lower(inpline); X! if (!(wild_match(mail_cfrom,inpline))) `123 X if (no_priv() && !(ga[curr_g]->grp_flags & NEWS_M_MOD_ACCESS)) `123 V err_line("\Error: Cancel - Only original poster may cancel items\ Xn"); X `009 return(0); X************** X*** 996,1002 X else `123 X sprintf(inpline,"*@%s*\n",Node_address); X s_to_lower(inpline); X! if (!(wild_match(mail_from,inpline))) `123 V err_line("\Error: Cancel - Item was not posted from this node\n X"); X return(0); X `125 X--- 998,1004 ----- X else `123 X sprintf(inpline,"*@%s*\n",Node_address); X s_to_lower(inpline); X! if (!(wild_match(mail_cfrom,inpline))) `123 V err_line("\Error: Cancel - Item was not posted from this node\n X"); X return(0); X `125 X************** X*** 1010,1015 X if (status == RMS$_EOF) return(0); V if ((status & 1) && (response_length) && (tolower(*response) == 'y')) `12 X3 X if (fp = fopen(Post_file,"w")) `123 X fprintf(fp,"Path: %s!%s\n",news_node,usr_username); X sprintf(post_path," %s!%s",news_node,usr_username); X fprintf(fp,mail_from); X--- 1012,1020 ----- X if (status == RMS$_EOF) return(0); V if ((status & 1) && (response_length) && (tolower(*response) == 'y')) `12 X3 X if (fp = fopen(Post_file,"w")) `123 X+ int cre_grp[2]; X+ char subj_line[132]; X+`032 X fprintf(fp,"Path: %s!%s\n",news_node,usr_username); X sprintf(post_path," %s!%s",news_node,usr_username); X fprintf(fp,mail_from); X************** X*** 1016,1021 X sscanf(mail_groups,"Newsgroups: %s",ngroup); X fprintf(fp,mail_groups); X fprintf(fp,"Subject: cancel %s\n",id); X strcpy(loc_id,gen_id()); X fprintf(fp,"Message-ID: %s\n",loc_id); X time(&cur_time); X--- 1021,1027 ----- X sscanf(mail_groups,"Newsgroups: %s",ngroup); X fprintf(fp,mail_groups); X fprintf(fp,"Subject: cancel %s\n",id); X+ sprintf(subj_line,"cancel %s",id); X strcpy(loc_id,gen_id()); X fprintf(fp,"Message-ID: %s\n",loc_id); X time(&cur_time); X************** X*** 1034,1040 X `125 X fprintf(fp,"Lines: 1\n\ncancel %s\n",id); X fclose(fp); X!`032 X sys_remote_send(post_path,ngroup,post_dist,Post_file,loc_id,0); X while (!(delete(Post_file))); X `125 X--- 1040,1047 ----- X `125 X fprintf(fp,"Lines: 1\n\ncancel %s\n",id); X fclose(fp); X! do_new_group("control",0,cre_grp); V! if (cre_grp[0]) do_new_item(cre_grp,loc_id,subj_line,Post_file,1,1,1) X; X sys_remote_send(post_path,ngroup,post_dist,Post_file,loc_id,0); X while (!(delete(Post_file))); X `125 $ GOSUB UNPACK_FILE $ FILE_IS = "NEWSDIR.DIFF" $ CHECKSUM_IS = 124604378 $ COPY SYS$INPUT VMS_SHARE_DUMMY.DUMMY X*** [.news_v59_src]newsdir.c X--- [.news_src]newsdir.c X************** X*** 141,146 X case DIR_REGISTER: X put_line("NEWS - Directory of Registered Newsgroups",0); X break; X `125 X put_line(class_name(),0); V sprintf(err_oline," Number %-*.*s Count Unread",SUBJLEN,SUBJLEN," XGroup"); 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 = 186376220 $ 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 X************** X*** 423,428 X * Perform a simple parse of the mail line, remove header lines X */ X `032 X static put_parse(s,h,disp_h) X char *s; X int *h, X--- 425,432 ----- X * Perform a simple parse of the mail line, remove header lines X */ X `032 X+ static int colon_expected = 0; X+`032 X static put_parse(s,h,disp_h) X char *s; X int *h, X************** X*** 424,432 X */ X `032 X static put_parse(s,h,disp_h) X! char *s; X! int *h, X! disp_h; X `123 X int i = strlen(s), X colon, X--- 428,436 ----- X static int colon_expected = 0; X `032 X static put_parse(s,h,disp_h) X! char *s; X! int *h, X! disp_h; X `123 X int i = strlen(s), X colon, X************** X*** 428,436 X int *h, X disp_h; X `123 X! int i = strlen(s), X! colon, X! space; X `032 X if ((!i) `124`124 (strspn(s," \t\r") == i)) `123 X if (!disp_h) `123 X--- 432,440 ----- X int *h, X disp_h; X `123 X! int i = strlen(s), X! colon, X! space; X `032 X if ((!i) `124`124 (strspn(s," \t\r") == i)) `123 X if (++(*h)) `123 X************** X*** 432,454 X colon, X space; X `032 X! if ((!i) `124`124 (strspn(s," \t\r") == i)) `123 X! if (!disp_h) `123 X! if (*subjline) put_line(subjline,0); X! if (*fromline) `123 X! if (*orgline) `123 X! strcat(fromline,","); X! strcat(fromline,orgline); X! `125 X! put_line(fromline,0); X! `125 X! if (!screen_active) put_line("",0); X! end_header(); X! if (*summline) put_line(summline,0); X! if (*keywline) put_line(keywline,0); X! if (*markline) put_line(markline,0); X! if (*dateline) put_line(dateline,0); X! put_line("",0); X `125 X else put_line(s,0); X *h = 1; X--- 436,449 ----- X colon, X space; X `032 X! if ((!i) `124`124 (strspn(s," \t\r") == i)) `123 X! if (++(*h)) `123 X! if (!disp_h) `123 X! if (*subjline) put_line(subjline,0); X! if (*fromline) `123 X! if (*orgline) `123 X! strcat(fromline,","); X! strcat(fromline,orgline); X `125 X put_line(fromline,0); X `125 X************** X*** 450,458 X if (*dateline) put_line(dateline,0); X put_line("",0); X `125 X! else put_line(s,0); X! *h = 1; X! return; X `125 X `032 X colon = strcspn(s,":"); X--- 445,459 ----- X strcat(fromline,","); X strcat(fromline,orgline); X `125 X! put_line(fromline,0); X! `125 X! if (!screen_active) put_line("",0); X! end_header(); X! if (*summline) put_line(summline,0); X! if (*keywline) put_line(keywline,0); X! if (*markline) put_line(markline,0); X! if (*dateline) put_line(dateline,0); X! put_line("",0); X `125 X else put_line(s,0); X colon_expected = 0; X************** X*** 454,459 X *h = 1; X return; X `125 X `032 -+-+-+-+-+ End of part 4 +-+-+-+-+-