From:	MERC::"uunet!VM1.NODAK.EDU!owner-anu-news" 27-APR-1993 11:31:07.70
To:	Multiple recipients of list ANU-NEWS <ANU-NEWS@VM1.NoDak.EDU>
CC:	
Subj:	BUG-fixes / EXTENSION  SHARE 5/7

-+-+-+-+-+-+-+-+ START OF PART 5 -+-+-+-+-+-+-+-+
X`20`20`20`20`20`20if`20((fi`20>`200)`20`26`26`20!li)`20apply_filter(d_itm`5Bdi
V`5D.ngrp,fi,func);
X`20`20`20`20`20`20else`20if`20(fi`20<`200)`20`7B
X`20`20`20`20`20`20`20`20for`20(i`20=`201;`20i`20<=`20ga`5Bd_itm`5Bdi`5D.ngrp
V`5D->grp_count;`20++i)
X!`20`20`20`20`20`20`20`20`20apply_filter(d_itm`5Bdi`5D.ngrp,ga`5Bd_itm`5Bdi
V`5D.ngrp`5D->grp_ia`5Bi`5D.itm_num,func);
X`20`20`20`20`20`20`20`20`7D
X`20`20`20`20`20`20else`20`7B
X`20`20`20`20`20`20`20`20for`20(i`20=`20fi;`20i`20<=`20li;`20++i)`20apply_filte
Vr(d_itm`5Bdi`5D.ngrp,i,func);
X---`201218,1225`20-----
X`20`20`20`20`20`20if`20((fi`20>`200)`20`26`26`20!li)`20apply_filter(d_itm`5Bdi
V`5D.ngrp,fi,header_filter,func);
X`20`20`20`20`20`20else`20if`20(fi`20<`200)`20`7B
X`20`20`20`20`20`20`20`20for`20(i`20=`201;`20i`20<=`20ga`5Bd_itm`5Bdi`5D.ngrp
V`5D->grp_count;`20++i)
X!`20`20`20`20`20`20`20`20`20apply_filter(d_itm`5Bdi`5D.ngrp,ga`5Bd_itm`5Bdi
V`5D.ngrp`5D->grp_ia`5Bi`5D.itm_num,
X!`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20header_filt
Ver,func);
X`20`20`20`20`20`20`20`20`7D
X`20`20`20`20`20`20else`20`7B
X`20`20`20`20`20`20`20`20for`20(i`20=`20fi;`20i`20<=`20li;`20++i)`20
X**************
X***`201050,1056
X`20`20`20`20`20`20`20`20`20`20apply_filter(d_itm`5Bdi`5D.ngrp,ga`5Bd_itm`5Bdi
V`5D.ngrp`5D->grp_ia`5Bi`5D.itm_num,func);
X`20`20`20`20`20`20`20`20`7D
X`20`20`20`20`20`20else`20`7B
X!`20`20`20`20`20`20`20for`20(i`20=`20fi;`20i`20<=`20li;`20++i)`20apply_filter(
Vd_itm`5Bdi`5D.ngrp,i,func);
X`20`20`20`20`20`20`20`20`7D
X`20`20`20`20`20`20`7D
X`20`20`7D
X---`201222,1229`20-----
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20header_fi
Vlter,func);
X`20`20`20`20`20`20`20`20`7D
X`20`20`20`20`20`20else`20`7B
X!`20`20`20`20`20`20`20for`20(i`20=`20fi;`20i`20<=`20li;`20++i)`20
X!`20`20`20`20`20`20`20`20`20apply_filter(d_itm`5Bdi`5D.ngrp,i,header_filter,fu
Vnc);
X`20`20`20`20`20`20`20`20`7D
X`20`20`20`20`20`20`7D
X`20`20`7D
X**************
X***`201086,1091
X`20`20static`20int`20dextr()
X`20`20`7B
X`20`20`20`20unsigned`20short`20ofnam_len`20=`200;
X`20`20
X`20`20`09/*`20Next`20line`20stops`20EXTRACT`20command`20working`20for`20NEWS/C
VAPTIVE`20*/
X`20`20`20`20if`20(news_captive)`20return(0);
X---`201259,1265`20-----
X`20`20static`20int`20dextr()
X`20`20`7B
X`20`20`20`20unsigned`20short`20ofnam_len`20=`200;
X+`20`20`20unsigned`20int`20header_filter;
X`20`20
X`20`20`09/*`20Next`20line`20stops`20EXTRACT`20command`20working`20for`20NEWS/C
VAPTIVE`20*/
X`20`20`20`20if`20(news_captive)`20return(0);
X**************
X***`201094,1100
X`20`20`20`20append_ofile`20=`20(cli$present(c$dsc("APPEND"))`20`26`201);
X`20`20`20`20m_seen`20=`20(cli$present(c$dsc("SEEN"))`20`26`201);
X`20`20`20`20rot13_sw`20=`20(cli$present(c$dsc("ROT13"))`20`26`201);
X-`20`20`20i_header`20=`20(cli$present(c$dsc("HEADER"))`20`26`201);
X`20`20`20`20if`20(!(cli$get_value(c$dsc("FILE"),`26ofnam_dsc,`26ofnam_len)`20
V`26`201))`20ofnam_len`20=`200;
X`20`20`20`20ofnam`5Bofnam_len`5D`20=`20'\0';
X`20`20`20`20ofnam_valid`20=`20*ofnam;
X---`201268,1273`20-----
X`20`20`20`20append_ofile`20=`20(cli$present(c$dsc("APPEND"))`20`26`201);
X`20`20`20`20m_seen`20=`20(cli$present(c$dsc("SEEN"))`20`26`201);
X`20`20`20`20rot13_sw`20=`20(cli$present(c$dsc("ROT13"))`20`26`201);
X`20`20`20`20if`20(!(cli$get_value(c$dsc("FILE"),`26ofnam_dsc,`26ofnam_len)`20
V`26`201))`20ofnam_len`20=`200;
X`20`20`20`20ofnam`5Bofnam_len`5D`20=`20'\0';
X`20`20`20`20ofnam_valid`20=`20*ofnam;
$ call unpack NEWSEXTRACT.DIFF;1 1013591271 "FORMAT STREAM_LF"
$!
$ create 'f'
X***`20newsforward.c;-1
X---`20newsforward.c
X**************
X***`2037,42
X`20`20**`09`20`20`20`20When`20a`20message`20is`20being`20"REPLIED"`20to,`20cha
Vnge`20the`20default`20subject
X`20`20**`09`20`20`20`20line`20to`20be`20"Re:`20<original`20subject>"`20as`20lo
Vng`20as`20the`20original`20subject
X`20`20**`09`20`20`20`20didn't`20already`20start`20with`20"Re:"
X`20`20**--
X`20`20**/
X`20`20`0C
X---`2037,46`20-----
X`20`20**`09`20`20`20`20When`20a`20message`20is`20being`20"REPLIED"`20to,`20cha
Vnge`20the`20default`20subject
X`20`20**`09`20`20`20`20line`20to`20be`20"Re:`20<original`20subject>"`20as`20lo
Vng`20as`20the`20original`20subject
X`20`20**`09`20`20`20`20didn't`20already`20start`20with`20"Re:"
X+`20**`20`20`20`20`20`20V6.1`20`20`20`20`2026-Apr-1993`20`20`20`20winter@visio
Vn.rs.ch
X+`20**`20`20`20`20`20`20`20`20`20`20changed`20MAIL`20and`20FORWARD`20to`20allo
Vw`20multiple`20items`20in`20a`20single
X+`20**`20`20`20`20`20`20`20`20`20`20message.`20Added`20/MARK,`20/ALL`20and`20i
Vtemrange`20to`20MAIL`20and`20FORWARD
X+`20**`20`20`20`20`20`20`20`20`20`20to`20provide`20this`20functionality
X`20`20**--
X`20`20**/
X`20`20`0C
X**************
X***`2050,55
X`20`20#include`20"newsextern.h"
X`20`20#include`20"newsmail.h"
X`20`20
X`20`20/*
X`20`20`20*`20`20do_mail
X`20`20`20*
X---`2054,61`20-----
X`20`20#include`20"newsextern.h"
X`20`20#include`20"newsmail.h"
X`20`20
X+`20
X+`20`0C
X`20`20/*
X`20`20`20*`20`20do_mail
X`20`20`20*
X**************
X***`20262,268
X`20`20`7D
X`20`20`0C
X`20`20/*
X!`20`20*`20`20do_forward
X`20`20`20*
X`20`20`20*`20`20Forward`20a`20mail`20item`20via`20VMS`20MAIL
X`20`20`20*/
X---`20268,274`20-----
X`20`20`7D
X`20`20`0C
X`20`20/*
X!`20`20*`20`20forward_additm
X`20`20`20*
X`20`20`20*`20`20Adds`20a`20message`20to`20the`20mailfile`20for`20forwarding.
X`20`20`20*/
X**************
X***`20264,269
X`20`20/*
X`20`20`20*`20`20do_forward
X`20`20`20*
X`20`20`20*`20`20Forward`20a`20mail`20item`20via`20VMS`20MAIL
X`20`20`20*/
X`20`20
X---`20270,352`20-----
X`20`20/*
X`20`20`20*`20`20forward_additm
X`20`20`20*
X+`20`20*`20`20Adds`20a`20message`20to`20the`20mailfile`20for`20forwarding.
X+`20`20*/
X+`20
X+`20static`20int`20forward_additm(g,`20m,`20fpw,`20incl_header,`20multiple,
V`20subj)
X+`20`20`20int`20g,`20m,`20incl_header,`20*multiple;
X+`20`20`20char`20*subj;
X+`20`20`20FILE`20**fpw;
X+`20`7B
X+`20`20`20int`20header;
X+`20`20`20char`20xfrbuf`5B512`5D,`20address`5B512`5D,`20id`5B256`5D,`20from
V`5B256`5D,`20idate`5B256`5D,`20fpad`5B3`5D;
X+`20`20`20FILE`20*fpr;
X+`20
X+`20`20`20if`20((m`20=`20scan_filter(g,m))`20==`200)`20`20`20`20`20
X+`20`20`20`20`20return(0);
X+`20`20
X+`20`20`20if`20(!(fpr`20=`20do_open_item(g,m,"r",fp_open)))`20`7B
X+`20`20`20`20`20err_line("Error:`20Mailer`20-`20cannot`20read`20item");
X+`20`20`20`20`20return(0);
X+`20`20`20`20`20`7D
X+`20
X+`20`20`20if`20(*multiple`20>`200)
X+`20`20`20`20`20fprintf(*fpw,"\n\f\n");
X+`20`20`20(*multiple)++;
X+`20`20`20fprintf(*fpw,"X-News:`20%s`20%s:%d\n",news_node,ga`5Bg`5D->grp_name,
Vga`5Bg`5D->grp_ia`5Bm`5D.itm_num);
X+`20
X+`20`20`20*id`20=`20*from`20=`20*subj`20=`20*idate`20=`20*fpad`20=`20'\0';
X+`20
X+`20`20`20header`20=`201;
X+`20`20`20while`20(fgets(xfrbuf,510,fpr))`20`7B
X+`20`20`20`20`20if`20((*xfrbuf`20==`20'\n')`20`26`26`20(header))`20`7B
X+`20`20`20`20`20`20`20if`20(incl_header)`20fprintf(*fpw,"%s%s",fpad,xfrbuf);
X+`20`20`20`20`20`20`20else`20`7B
X+`20`20`20`20`20`20`20`20`20fprintf(*fpw,"%sFrom:`20%s\n%sSubject:%s\n%s%s",fp
Vad,from,fpad,subj,fpad,idate);
X+`20`20`20`20`20`20`20`20`20fprintf(*fpw,"%s%s",fpad,"Message-ID:");
X+`20`20`20`20`20`20`20`20`20if`20(*id)`20fprintf(*fpw,"%s\n\n",id);
X+`20`20`20`20`20`20`20`20`20else`20fprintf(*fpw,"<%s`20%s:%d>\n\n",news_node,g
Va`5Bg`5D->grp_name,ga`5Bg`5D->grp_ia`5Bm`5D.itm_num);
X+`20`20`20`20`20`20`20`20`20`7D
X+`20`20`20`20`20`20`20header`20=`200;
X+`20`20`20`20`20`20`20continue;
X+`20`20`20`20`20`20`20`7D
X+`20`20`20`20`20else`20if`20(header)`20`7B
X+`20`20`20`20`20`20`20if`20(!strncmp(xfrbuf,"From:",5))`20`7B
X+`20`20`20`20`20`20`20`20`20strcpy(from,`26xfrbuf`5B6`5D);
X+`20`09chop_str(from,'\n');
X+`20`20`20`20`20`20`20`20`20`7D
X+`20`20`20`20`20`20`20else`20if`20(!strncmp(xfrbuf,"Message-ID:",11))`20`7B
X+`20`20`20`20`20`20`20`20`20strcpy(id,`26xfrbuf`5B12`5D);
X+`20`09chop_str(id,'\n');
X+`20`20`20`20`20`20`20`20`20`7D
X+`20`20`20`20`20`20`20else`20if`20(!strncmp(xfrbuf,"Subject:",8))`20`7B
X+`20`20`20`20`20`20`20`20`20strcpy(subj,`26xfrbuf`5B9`5D);
X+`20`09chop_str(subj,'\n');
X+`20`20`20`20`20`20`20`20`20`7D
X+`20`20`20`20`20`20`20else`20if`20(!strncmp(xfrbuf,"Date:",5))`20`7B
X+`20`20`20`20`20`20`20`20`20strcpy(idate,xfrbuf);
X+`20`20`20`20`20`20`20`20`20`7D
X+`20`20`20`20`20`20`20`7D
X+`20`20`20`20`20if`20((!header)`20`7C`7C`20((incl_header)`20`26`26`20(header))
V)`20`7B
X+`20`20`20`20`20`20`20if`20((*xfrbuf`20==`20'>')`20`26`26`20*fpad)`20fprintf(*
Vfpw,">%s",xfrbuf);
X+`20`20`20`20`20`20`20else`20fprintf(*fpw,"%s%s",fpad,xfrbuf);
X+`20`20`20`20`20`20`20`7D
X+`20`20`20`20`20`7D
X+`20`20`20fclose(fpr);
X+`20`20`20if`20(*fp_open`20>`201)`20delete_file_versions(fp_open);
X+`20`20`20*fp_open`20=`20'\0';
X+`20`20`20if`20(`20(fpr`20=`20profile_sigfile(0))`20!=`200`20)`20`7B
X+`20`20`20`20`20fputs("--`20\n",*fpw);
X+`20`20`20`20`20fputs("Forwarded-By:\n",*fpw);
X+`20`20`20`20`20while`20(fgets(xfrbuf,512,fpr))`20fputs(xfrbuf,*fpw);
X+`20`20`20`20`20fclose(fpr);
X+`20`20`20`20`20`7D
X+`20`20`20return(0);
X+`20`7D
X+`20`0C
X+`20/*
X+`20`20*`20`20do_forward
X+`20`20*
X`20`20`20*`20`20Forward`20a`20mail`20item`20via`20VMS`20MAIL
X`20`20`20*/
X`20`20
X**************
X***`20270,276
X`20`20static`20int
X`20`20dfwd()
X`20`20`7B
X!`20`20`20do_mail(1,(cli$present(c$dsc("HEADERS"))`20`26`201));
X`20`20`20`20return(0);
X`20`20`7D
X`20`20
X---`20353,453`20-----
X`20`20static`20int
X`20`20dfwd()
X`20`20`7B
X!`20`20`20int`20di,`20fi,`20li,`20i,`20header,`20reply_to`20=`200,`20multiple
V`20=`200;
X!`20`20`20char`20xfrbuf`5B512`5D,`20subj`5B256`5D,`20ngroup`5B132`5D,`20subjli
Vne`5B132`5D,`20fpad`5B3`5D;
X!`20`20`20FILE`20*fpw;
X!`20`20`20unsigned`20short`20ngroup_len;
X!`20`20`20$DESCRIPTOR(ngroup_dsc,ngroup);
X!`20`20`20struct`20stat`20sbuffer;
X!`20
X!`20`09/*`20Next`20line`20stops`20MAIL/FORW/REPLY`20commands`20working`20for
V`20NEWS/CAPTIVE`20*/
X!`20`20`20if`20(news_captive)`20return(0);
X!`20
X!`20`20`20if`20(!getnoterange())`20`7B`20
X!`20`20`20`20`20err_line("Error:`20Mailer`20-`20No`20items`20located`20to`20ma
Vil");
X!`20`20`20`20`20return(0);
X!`20`20`20`20`20`7D
X!`20
X!`20`20`20if`20(!(fpw`20=`20fopen(Mail_file,"w","rat=cr","rfm=var")))`20`7B
X!`20`20`20`20`20err_line("Error:`20Mailer`20-`20cannot`20open`20tmp`20output
V`20file");
X!`20`20`20`20`20return(0);
X!`20`20`20`20`20`7D
X!`20
X!`20`20`20for`20(di`20=`200;`20(li`20=`20d_itm`5Bdi`5D.litm),`20(fi`20=`20d_it
Vm`5Bdi`5D.fitm);`20++di)`20`7B
X!`20`20`20`20`20if`20((fi`20>`200)`20`26`26`20!li)`20
X!`20`20`20`20`20`20`20forward_additm(d_itm`5Bdi`5D.ngrp,`20fi,`20`26fpw,`20
X!`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20(cli$present(c$ds
Vc("HEADERS"))`20`26`201),`20`26multiple,`20subj);
X!`20`20`20`20`20else`20if`20(fi`20<`200)`20`7B
X!`20`20`20`20`20`20`20for`20(i`20=`201;`20i`20<=`20ga`5Bd_itm`5Bdi`5D.ngrp`5D-
V>grp_count;`20++i)
X!`20`20`20`20`20`20`20`20`20forward_additm(d_itm`5Bdi`5D.ngrp,`20ga`5Bd_itm
V`5Bdi`5D.ngrp`5D->grp_ia`5Bi`5D.itm_num,`20
X!`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`26fpw,`20(cli$present(c$dsc("HE
VADERS"))`20`26`201),`20`26multiple,`20subj);
X!`20`20`20`20`20`20`20`7D
X!`20`20`20`20`20else`20`7B
X!`20`20`20`20`20`20`20for`20(i`20=`20fi;`20i`20<=`20li;`20++i)
X!`20`20`20`20`20`20`20`20`20forward_additm(d_itm`5Bdi`5D.ngrp,`20i,`20`26fpw,
V`20
X!`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20(cli$presen
Vt(c$dsc("HEADERS"))`20`26`201),`20`26multiple,`20subj);
X!`20`20`20`20`20`7D
X!`20`20`20`7D
X!`20
X!`20`20`20fclose(fpw);
X!`20
X!`20`20`20set_mail_self_flag(1);
X!`20
X!`20`20`20*xfrbuf`20=`20'\0';
X!`20`20`20if`20(cli$get_value(c$dsc("TO"),`26ngroup_dsc,`26ngroup_len)`20`26
V`201)`20`7B
X!`20`20`20`20`20do`20`7B
X!`20`20`20`20`20`20`20ngroup`5Bngroup_len`5D`20=`20'\0';
X!`20`20`20`20`20`20`20sprintf(`26xfrbuf`5Bstrlen(xfrbuf)`5D,"%s,",add_transfor
Vm(ngroup));
X!`20`20`20`20`20`20`20`7D`20while`20(cli$get_value(c$dsc("TO"),`26ngroup_dsc,
V`26ngroup_len)`20`26`201);
X!`20`20`20`20`20`7D
X!`20`20`20else`20`7B
X!`20`20`20`20`20char`20*comma_pointer,`20*address_field;
X!`20
X!`20`20`20`20`20status`20=`20get_input(`26ngroup_dsc,c$dsc("To:`20"),`26ngroup
V_len);
X!`20`20`20`20`20if`20((status`20==`20RMS$_EOF)`20`7C`7C`20(status`20==`20SMG$_
VEOF))`20`7B
X!`20`20`20`20`20`20`20delete_file_versions(Mail_file);
X!`20`20`20`20`20`20`20mail_self_flag`20=`200;
X!`20`20`20`20`20`20`20return(0);
X!`20`20`20`20`20`20`20`7D
X!`20`20`20`20`20ngroup`5Bngroup_len`5D`20=`20'\0';
X!`20`20`20`20`20address_field`20=`20ngroup;
X!`20`20`20`20`20do`20`7B
X!`20`20`20`20`20`20`20comma_pointer`20=`20chop_str_plus(address_field,',');
X!`20`20`20`20`20`20`20sprintf(`26xfrbuf`5Bstrlen(xfrbuf)`5D,"%s,",add_transfor
Vm(address_field));
X!`20`20`20`20`20`20`20address_field`20=`20comma_pointer;
X!`20`20`20`20`20`20`20`7D`20while`20(address_field);
X!`20`20`20`20`20`7D
X!`20`20`20xfrbuf`5Bstrlen(xfrbuf)`20-`201`5D`20=`20'\0';
X!`20
X!`20`20`20if`20(cli$get_value(c$dsc("SUBJECT"),`26ngroup_dsc,`26ngroup_len)
X!`20`20`20`20`20`20`20==`20CLI$_ABSENT)`20`7B
X!`20`20`20`20`20if`20(multiple`20>`201)
X!`20`20`20`20`20`20`20subjline`5B0`5D`20=`20'\0';
X!`20`20`20`20`20else
X!`20`20`20`20`20`20`20strcpy(subjline,subj);
X!`20`20`20`20`20status`20=`20get_input_dflt(`26ngroup_dsc,c$dsc("Subject:`20")
V,`26ngroup_len,c$dsc(subjline),0);
X!`20`20`20`20`20if`20((status`20==`20RMS$_EOF)`20`7C`7C`20(status`20==`20SMG$_
VEOF))`20`7B
X!`20`20`20`20`20`20`20delete_file_versions(Mail_file);
X!`20`20`20`20`20`20`20return(0);
X!`20`20`20`20`20`20`20`7D
X!`20`20`20`20`20`7D
X!`20`20`20ngroup`5Bngroup_len`5D`20=`20'\0';
X!`20`20`20strcpy(subj,ngroup);
X!`20
X!`20`20`20if`20(stat(Mail_file,`26sbuffer))`20`7B
X!`20`20`20`20`20err_line("Error:`20Mail`20-`20extracted`20file`20not`20found")
V;
X!`20`20`20`20`20mail_self_flag`20=`200;
X!`20`20`20`20`20return(0);
X!`20`20`20`20`20`7D
X!`20`20`20if`20(!sbuffer.st_size)`20`7B
X!`20`20`20`20`20err_line("Error:`20Mail`20-`20extracted`20file`20is`20empty");
V
X!`20`20`20`20`20delete_file_versions(Mail_file);
X!`20`20`20`20`20mail_self_flag`20=`200;
X!`20`20`20`20`20return(0);
X!`20`20`20`20`20`7D
X!`20`20`20call_mail(Mail_file,subj,xfrbuf,"Invoking`20mailer...");
X!`20`20`20mail_self_flag`20=`200;
X!`20`20`20delete_file_versions(Mail_file);
X`20`20`20`20return(0);
X`20`20`7D
X`20`20
$ call unpack NEWSFORWARD.DIFF;1 1499157285 "FORMAT STREAM_LF"
$!
$ create 'f'
X***`20newspost.c;-1
X---`20newspost.c
X**************
X***`2034,39
X`20`20**`20`20`20`20`20`20V6.1`20`20`20`2025-FEB-1993`20`20`20`20`20ewilts%GAL
+-+-+-+-+-+-+-+-  END  OF PART 5 +-+-+-+-+-+-+-+-
----------------------------------------------------------------------------
Radio Suisse Ltd,       Internet:  winter@vision.rs.ch
Laupenstrasse 18a                  postmaster@rs.ch
3008 Bern               PSI-Mail: +22846431062::WINTER     (public X.25)
Switzerland             X.400: C=CH; A=ARCOM; P=RS; O=DM; S=WINTER, G=MARTIN
----------------------------------------------------------------------------
