gih900@csc.anu.oz (Geoff Huston) (12/21/89)
+-+-+-+ Beginning of part 9 +-+-+-+
X+ ga_size = ca_i - 1;
X+ `125
X+`032
X sysprv();
X if (regr = fopen("NEWS_MANAGER:NEWS.CLASSES","r")) `123
X char class[132], *cp, *cp2, *cp3;
X**************
X*** 340,347
X if (screen_active) `123
X if (force_dir) do_dir(force_dir,0);
X else `123
X! if (!*profile_dirstr) `123
X! char *gotenv;
X `032
X if (gotenv = getenv("NEWS_DEFAULT_DIRECTORY")) `123
X char try_command[256];
X--- 374,380 -----
X if (screen_active) `123
X if (force_dir) do_dir(force_dir,0);
X else `123
X! char *gotenv, try_command[256];
X `032
V if ((!*profile_dirstr) && (gotenv = getenv("NEWS_DEFAULT_DIRECTORY"))
X) `123
X `009strcpy(try_command,"DIRECTORY/");
X**************
X*** 343,357
X if (!*profile_dirstr) `123
X char *gotenv;
X `032
X! if (gotenv = getenv("NEWS_DEFAULT_DIRECTORY")) `123
X! char try_command[256];
X!`032
X! strcpy(try_command,"DIRECTORY/");
X! strcat(try_command,gotenv);
X! if (cli$dcl_parse(c$dsc(try_command),&newscmd,0,0) & 1)
X! strcpy(profile_dirstr,gotenv);
X! `125
X! `125
X if (*profile_dirstr) `123
X char dir_command[256];
X `032
X--- 376,387 -----
X else `123
X char *gotenv, try_command[256];
X `032
V! if ((!*profile_dirstr) && (gotenv = getenv("NEWS_DEFAULT_DIRECTORY"))
X) `123
X! `009strcpy(try_command,"DIRECTORY/");
X! `009strcat(try_command,gotenv);
X! `009if (cli$dcl_parse(c$dsc(try_command),&newscmd,0,0) & 1)
X! `009 strcpy(profile_dirstr,gotenv);
X! `009`125
X if (*profile_dirstr) `123
X `009strcpy(try_command,"DIRECTORY/");
X `009strcat(try_command,profile_dirstr);
X**************
X*** 353,365
X `125
X `125
X if (*profile_dirstr) `123
X! char dir_command[256];
X!`032
X! strcpy(dir_command,"DIRECTORY/");
X! strcat(dir_command,profile_dirstr);
X! if (cli$dcl_parse(c$dsc(dir_command),&newscmd,0,0) & 1)
X! cli$dispatch();
X! else *profile_dirstr = '\0';
X `125
X if ((!*profile_dirstr) && (old_dir_lev))
X do_dir(old_dir_lev,curr_class);
X--- 383,392 -----
X `009 strcpy(profile_dirstr,gotenv);
X `009`125
X if (*profile_dirstr) `123
X! `009strcpy(try_command,"DIRECTORY/");
X! `009strcat(try_command,profile_dirstr);
X! `009if (cli$dcl_parse(c$dsc(try_command),&newscmd,0,0) & 1) cli$dispatch();
X! `009else *profile_dirstr = '\0';
X `125
V if ((!*profile_dirstr) && old_dir_lev) do_dir(old_dir_lev,curr_class)
X;
X `125
X**************
X*** 361,368
X cli$dispatch();
X else *profile_dirstr = '\0';
X `125
X! if ((!*profile_dirstr) && (old_dir_lev))
X! do_dir(old_dir_lev,curr_class);
X `125
X if (save_curr_g != curr_g) return(0);
X `125
X--- 388,394 -----
X `009if (cli$dcl_parse(c$dsc(try_command),&newscmd,0,0) & 1) cli$dispatch();
X `009else *profile_dirstr = '\0';
X `125
V! if ((!*profile_dirstr) && old_dir_lev) do_dir(old_dir_lev,curr_class)
X;
X `125
X `009`009`009/* if (save_curr_g != curr_g) */
X return(0);
X**************
X*** 364,370
X if ((!*profile_dirstr) && (old_dir_lev))
X do_dir(old_dir_lev,curr_class);
X `125
X! if (save_curr_g != curr_g) return(0);
X `125
X `032
X if ((new_vals == 3) && (ga[curr_g]->grp_count)) `123
X--- 390,397 -----
X `125
V if ((!*profile_dirstr) && old_dir_lev) do_dir(old_dir_lev,curr_class)
X;
X `125
X! `009`009`009/* if (save_curr_g != curr_g) */
X! return(0);
X `125
X `032
X if ((new_vals == 3) && (ga[curr_g]->grp_count)) `123
X**************
X*** 403,409
X GRP_PTR l_ga;
X `032
X /* open a new version of the register file */
X! if (!(regr = fopen(news_register,"w"))) `123
X err_line("Cannot access NEWS register file");
X return(0);
X `125
X--- 430,436 -----
X GRP_PTR l_ga;
X `032
X /* open a new version of the register file */
X! if (!(regr = fopen(news_register,"w","mbc=40"))) `123
X err_line("Cannot access NEWS register file");
X return(0);
X `125
X**************
X*** 441,449
X `032
X /* if not mapped into memory then check if the
X old reg string still exists - if so then
V! write it out - (this is a bit of a fudge - If th
Xe
X! paste value is greater than 511 then it is the
V! return value of the malloc in read_reg_file()!)
X */
X if (!l_ia) `123
X if (l_ga->grp_reg_text) sprintf(inline," %s\n",l_ga->grp_reg_text);
X else sprintf(inline," <0\n");
X--- 468,474 -----
X `032
X /* if not mapped into memory then check if the
X old reg string still exists - if so then
X! write it out. */
X if (!l_ia) `123
X if (l_ga->grp_reg_text) `123
X putl(" ",regr);
X**************
X*** 445,453
X paste value is greater than 511 then it is the
V return value of the malloc in read_reg_file()!)
X */
X if (!l_ia) `123
X! if (l_ga->grp_reg_text) sprintf(inline," %s\n",l_ga->grp_reg_text);
X! else sprintf(inline," <0\n");
X! putl(inline,regr);
X continue;
X `125
X `032
X--- 470,481 -----
X old reg string still exists - if so then
X write it out. */
X if (!l_ia) `123
X! if (l_ga->grp_reg_text) `123
X! putl(" ",regr);
X! putl(l_ga->grp_reg_text,regr);
X! putl("\n",regr);
X! `125
X! else putl(" <0\n",regr);
X continue;
X `125
X `032
X**************
X*** 1352,1358
X `032
X if (!(ks + kf + kh)) ks = 1;
X dflt = ga[curr_g]->grp_name;
X! parse_newsgroups(newslist,dflt,1,0);
V if (!*newslist) return(err_line("\tError: Kill - No newsgroup specified
X\n"),0);
X if (ks) `123
X ks = 1;
X--- 1380,1386 -----
X `032
X if (!(ks + kf + kh)) ks = 1;
X dflt = ga[curr_g]->grp_name;
X! parse_newsgroups(newslist,dflt,1,0,0);
V if (!*newslist) return(err_line("\tError: Kill - No newsgroup specified
X\n"),0);
X if (ks) `123
X ks = 1;
X**************
X*** 1527,1533
X kf = c->k_itm_from;
X kh = c->k_itm_header;
X err_line("\tNewsgroups to which this kill filter applies\n");
X! parse_newsgroups(newslist,kng,1,0);
X err_line("\tSubject: line to filter (empty line if not used)\n");
V get_input_dflt(&kt_dsc,c$dsc("Kill_Subject: "),&kt_len,(kt ? c$dsc(
Xkt) : 0),&trm);
X nkt[kt_len] = '\0';
X--- 1555,1561 -----
X kf = c->k_itm_from;
X kh = c->k_itm_header;
X err_line("\tNewsgroups to which this kill filter applies\n");
X! parse_newsgroups(newslist,kng,1,0,0);
X err_line("\tSubject: line to filter (empty line if not used)\n");
V get_input_dflt(&kt_dsc,c$dsc("Kill_Subject: "),&kt_len,(kt ? c$dsc(
Xkt) : 0),&trm);
X nkt[kt_len] = '\0';
X**************
X*** 2241,2246
X profile_flags `124= PROFILE_CLASS;
X strcpy(profile_classstr,&inline[6]);
X `125
X else if (!strncmp(inline,"EDIT=",5)) `123
X profile_flags `124= PROFILE_EDIT;
X strcpy(profile_editstr,&inline[5]);
X--- 2269,2282 -----
X profile_flags `124= PROFILE_CLASS;
X strcpy(profile_classstr,&inline[6]);
X `125
X+ else if (!strncmp(inline,"RC-ORDER",8)) `123
X+ reorder_groups = 1;
X+ if (!profile_filter) include_all_groups = 1;
X+ `125
X+ else if (!strncmp(inline,"RC-FILTER",9)) `123
X+ profile_filter = 1;
X+ include_all_groups = 0;
X+ `125
X else if (!strncmp(inline,"EDIT=",5)) `123
X profile_flags `124= PROFILE_EDIT;
X strcpy(profile_editstr,&inline[5]);
X**************
X*** 2391,2396
X putl(profile_autostr,f);
X putl("\n",f);
X `125
X if (profile_flags & PROFILE_CLASS) `123
X putl("CLASS=",f);
X putl(profile_classstr,f);
X--- 2427,2434 -----
X putl(profile_autostr,f);
X putl("\n",f);
X `125
X+ if (reorder_groups) putl("RC-ORDER\n",f);
X+ if (profile_filter) putl("RC-FILTER\n",f);
X if (profile_flags & PROFILE_CLASS) `123
X putl("CLASS=",f);
X putl(profile_classstr,f);
X**************
X*** 2521,2526
X sprintf(err_oline,"KeyDefs File: %s",profile_keydefs);
X put_line(err_oline,0);
X `125
X put_line("",1);
X return(0);
X `125
X--- 2559,2568 -----
X sprintf(err_oline,"KeyDefs File: %s",profile_keydefs);
X put_line(err_oline,0);
X `125
X+ if (reorder_groups)`032
V+ put_line("RCOrder: Newsgroup Display ordering taken from newsrc file",0
X);
X+ if (profile_filter)
X+ put_line("RCFilter: Newsgroups Filter based on newsrc file",0);
X put_line("",1);
X return(0);
X `125
X**************
X*** 2562,2567
X ++errs;
X `125
X `125
X if ((status = cli$present(c$dsc("CLASS"))) == CLI$_NEGATED) `123
X if (!temp) profile_flags &= `126PROFILE_CLASS;
X `125
X--- 2604,2616 -----
X ++errs;
X `125
X `125
X+`032
V+ if ((status = cli$present(c$dsc("RCORDER"))) == CLI$_NEGATED) reorder_gro
Xups = 0;
X+ else if (status & 1) reorder_groups = 1;
X+`032
V+ if ((status = cli$present(c$dsc("RCFILTER"))) == CLI$_NEGATED) profile_fi
Xlter = 0;
X+ else if (status & 1) profile_filter = 1;
X+`032
X if ((status = cli$present(c$dsc("CLASS"))) == CLI$_NEGATED) `123
X if (!temp) profile_flags &= `126PROFILE_CLASS;
X `125
X**************
X*** 2849,2855
X if (gotenv = getenv("NEWSRC")) strcpy(news_register,gotenv);
X else if (gotenv = getenv("NEWS_REGISTER")) strcpy(news_register,gotenv);
X else strcpy(news_register,User_file);
X! if (!(regr = fopen(news_register,"r"))) clsfiles(0);
X if (!(inline = fgetl(regr))) clsallfiles(0);
X while (inline = fgetl(regr)) `123
X if (!(cp = strchr(inline,'('))) clsallfiles(no_new_news);
X--- 2898,2904 -----
X if (gotenv = getenv("NEWSRC")) strcpy(news_register,gotenv);
X else if (gotenv = getenv("NEWS_REGISTER")) strcpy(news_register,gotenv);
X else strcpy(news_register,User_file);
X! if (!(regr = fopen(news_register,"r","mbc=40"))) clsfiles(0);
X if (!(inline = fgetl(regr))) clsallfiles(0);
X while (inline = fgetl(regr)) `123
X if (!(cp = strchr(inline,'('))) clsallfiles(no_new_news);
$ GOSUB UNPACK_FILE
$ FILE_IS = "NEWSREAD.DIFF"
$ CHECKSUM_IS = 1831558372
$ COPY SYS$INPUT VMS_SHARE_DUMMY.DUMMY
X*** [.news_v59_src]newsread.c
X--- [.news_src]newsread.c
X**************
X*** 742,748
X * read command processing
X */
X `032
X! do_read()
X `123
X char item[SUBJLEN];
X $DESCRIPTOR(item_dsc,item);
X--- 742,750 -----
X * read command processing
X */
X `032
X! readtitle(h,r13,str,new_qual)
X! int h, r13, new_qual;
X! char *str;
X `123
X char *w_str,
X c_str[SUBJLEN];
X**************
X*** 744,754
X `032
X do_read()
X `123
X! char item[SUBJLEN];
X! $DESCRIPTOR(item_dsc,item);
X! short item_len;
X! int h = 0,
X! rot13 = 0;
X `032
X tpucall = 0;
X if (cli$present(c$dsc("HEADER")) & 1) h = 1;
X--- 746,755 -----
X int h, r13, new_qual;
X char *str;
X `123
X! char *w_str,
X! c_str[SUBJLEN];
X! int i;
X! ITM_PTR iap;
X `032
X if ((!curr_g) `124`124 (news_context < 2) `124`124 (curr_i < 1)) `123
X err_line("Error: Read - No Newsgroup selected");
X**************
X*** 750,784
X int h = 0,
X rot13 = 0;
X `032
X! tpucall = 0;
X! if (cli$present(c$dsc("HEADER")) & 1) h = 1;
X! if (cli$present(c$dsc("TPU")) & 1) tpucall = 1;
X! if (cli$present(c$dsc("EDITOR")) & 1) tpucall = 1;
X! else if (cli$present(c$dsc("ROT13")) & 1) rot13 = 1;
V! if (cli$present(c$dsc("FOLLOWUP")) & 1) return(do_readfollow(h,rot13,(c
Xli$present(c$dsc("NEW")) & 1)),0);
X! if (cli$present(c$dsc("NEW")) & 1) return(do_readnew(h,rot13,0),0);
V! if (cli$present(c$dsc("NEXT")) & 1) return(do_readnext(h,rot13,tpucall)
X,0);
X! if (cli$present(c$dsc("PARENT")) & 1) return(do_readparent(h,rot13),0);
V! if (cli$present(c$dsc("TOPIC")) & 1) return(do_readancestor(h,rot13,tpu
Xcall),0);
V! if (cli$present(c$dsc("IDENTIFIER")) & 1) return(do_readident(h,rot13),
X0);
X! if (cli$present(c$dsc("MARKER")) & 1) return(do_readmark(h,rot13),0);
X! if (cli$present(c$dsc("PREV")) & 1) return(do_readprev(h,rot13),0);
V! if ((cli$present(c$dsc("LAST")) & 1) `124`124 (cli$present(c$dsc("BACK"
X)) & 1)) `123
X! if ((news_context > 1) && curr_g && (curr_i > 0)) `123
X! if (cur_up_itm(curr_g,1,0) == 1) `123
X! item_update(curr_g,curr_i);
X! do_display(h,tpucall,rot13);
X! `125
X! `125
X! return(0);
X! `125
V! if (cli$get_value(c$dsc("NEWSITEM"),&item_dsc,&item_len) != CLI$_ABSENT
X) `123
X! if (curr_g) `123
X! item[item_len] = '\0';
X! do_readfind(item,h,rot13);
X! `125
X! `125
X! else if ((curr_g) && (curr_i > 0) && (news_context > 1)) `123
X item_update(curr_g,curr_i);
X do_display(h,tpucall,rot13);
X `125
X--- 751,831 -----
X int i;
X ITM_PTR iap;
X `032
X! if ((!curr_g) `124`124 (news_context < 2) `124`124 (curr_i < 1)) `123
X! err_line("Error: Read - No Newsgroup selected");
X! return(0);
X! `125
X!`032
X! iap = ga[curr_g]->grp_ia;
X! w_str = malloc(strlen(str)+3);
X! s_to_lower(str);
X! strcpy(w_str,"*");
X! strcat(w_str+1,str);
X! strcat(w_str,"*");
X! for (i = curr_i+1; i <= ga[curr_g]->grp_count; ++i) `123
X! if ( !new_qual
X! `124`124 (iap[i].itm_flags & NEWS_M_UNREAD)) `123
X! strcpy(c_str,iap[i].itm_title);
X! s_to_lower(c_str);
X! if (wild_match(c_str,w_str)) break;
X! `125
X! `125
X! free(w_str);
X! if (i <= ga[curr_g]->grp_count) `123
X! cur_set_itm(curr_g,i);
X! item_update(curr_g,curr_i);
X! do_display(h,tpucall,r13);
X! `125
X! else `123
X! sprintf(err_oline,"Subject: %s - not located\n",str);
X! err_line(err_oline);
X! `125
X! `125
X!`032
X! do_read()
X! `123
X! static char subj[128];
X! static $DESCRIPTOR(subj_dsc,subj);
X! char item[128];
X! $DESCRIPTOR(item_dsc,item);
X! short item_len;
X! int h = 0,
X! rot13 = 0;
X!`032
X! tpucall = 0;
X! if (cli$present(c$dsc("HEADER")) & 1) h = 1;
X! if (cli$present(c$dsc("TPU")) & 1) tpucall = 1;
X! if (cli$present(c$dsc("EDITOR")) & 1) tpucall = 1;
X! else if (cli$present(c$dsc("ROT13")) & 1) rot13 = 1;
-+-+-+-+-+ End of part 9 +-+-+-+-+-