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

$! ------------------ CUT HERE -----------------------
$ v='f$verify(f$trnlnm("SHARE_UNPACK_VERIFY"))'
$!
$! This archive created by VMS_SHARE Version 8.1
$!   On 27-APR-1993 13:52:27.06   By user WINTER
$!
$! The VMS_SHARE software that created this archive
$!    was written by  Andy Harper, Kings College London UK
$!    -- September 1992
$!
$! Credit is due to these people for their original ideas:
$!    James Gray, Michael Bednarek
$!
$!+ THIS PACKAGE DISTRIBUTED IN 7 PARTS, TO KEEP EACH PART
$!  BELOW 30 BLOCKS
$!
$! TO UNPACK THIS SHARE FILE, CONCATENATE ALL PARTS IN ORDER
$! AND EXECUTE AS A COMMAND PROCEDURE  (  @name  )
$!
$! THE FOLLOWING FILE(S) WILL BE CREATED AFTER UNPACKING:
$!       1. MWPATCHES.DOC;1
$!       2. NEWSCMD.DIFF;1
$!       3. NEWSDEFINE.DIFF;1
$!       4. NEWSEXTERN.DIFF;1
$!       5. NEWSEXTRACT.DIFF;1
$!       6. NEWSFORWARD.DIFF;1
$!       7. NEWSPOST.DIFF;1
$!       8. NEWSRTL.DIFF;1
$!       9. NEWSSEARCH.DIFF;1
$!
$set="set"
$set symbol/scope=(nolocal,noglobal)
$f=f$parse("SHARE_UNPACK_TEMP","SYS$SCRATCH:."+f$getjpi("","PID"))
$e="write sys$error  ""%UNPACK"", "
$w="write sys$output ""%UNPACK"", "
$ if .not. f$trnlnm("SHARE_UNPACK_LOG") then $ w = "!"
$ ve=f$getsyi("version")
$ if ve-f$extract(0,1,ve) .ges. "4.4" then $ goto start
$ e "-E-OLDVER, Must run at least VMS 4.4"
$ v=f$verify(v)
$ exit 44
$unpack: subroutine ! P1=filename, P2=checksum, P3=attributes
$ if f$search(P1) .eqs. "" then $ goto file_absent
$ e "-W-EXISTS, File ''P1' exists. Skipped."
$ delete 'f'*
$ exit
$file_absent:
$ if f$parse(P1) .nes. "" then $ goto dirok
$ dn=f$parse(P1,,,"DIRECTORY")
$ w "-I-CREDIR, Creating directory ''dn'"
$ create/dir 'dn'
$ if $status then $ goto dirok
$ e "-E-CREDIRFAIL, Unable to create ''dn' File skipped."
$ delete 'f'*
$ exit
$dirok:
$ w "-I-UNPACK, Unpacking file ''P1'"
$ n=P1
$ if P3 .nes. "" then $ n=f
$ if .not. f$verify() then $ define/user sys$output nl:
$ EDIT/TPU/NOSEC/NODIS/COM=SYS$INPUT 'f'/OUT='n'
PROCEDURE GetHex LOCAL x1,x2;x1:=INDEX(t,ERASE_CHARACTER(1))-1;x2:=INDEX(t,
ERASE_CHARACTER(1))-1;RETURN 16*x1+x2;ENDPROCEDURE;
PROCEDURE SkipPartsep LOOP EXITIF INDEX(ERASE_LINE,"-+-+-+-+-+-+-+-+")=1;
ENDLOOP;ENDPROCEDURE;
PROCEDURE ExpandChar CASE CURRENT_CHARACTER FROM ' ' TO 'z' ["`"]
:ERASE_CHARACTER(1);COPY_TEXT(ASCII(GetHex));[" "]:ERASE_CHARACTER(1);[
OUTRANGE,INRANGE]:MOVE_HORIZONTAL(1);ENDCASE;ENDPROCEDURE;
PROCEDURE ProcessLine s:=ERASE_CHARACTER(1);LOOP EXITIF CURRENT_OFFSET>=LENGTH(
CURRENT_LINE);ExpandChar;ENDLOOP;IF s="V" THEN APPEND_LINE;ENDIF;ENDPROCEDURE;
PROCEDURE AdvanceLine MOVE_HORIZONTAL(-CURRENT_OFFSET);MOVE_VERTICAL(1);
ENDPROCEDURE;PROCEDURE Decode POSITION(BEGINNING_OF(b));LOOP EXITIF MARK(NONE)=
END_OF(b);IF INDEX(CURRENT_LINE,"+-+-+-+-+-+-+-+-")=1 THEN SkipPartSep;
ELSE ProcessLine;AdvanceLine;ENDIF;ENDLOOP;ENDPROCEDURE;SET(FACILITY_NAME,
"UNPACK");SET(SUCCESS,OFF);SET(INFORMATIONAL,OFF);t:="0123456789ABCDEF";f:=
GET_INFO(COMMAND_LINE,"file_name");b:=CREATE_BUFFER(f,f);Decode;WRITE_FILE(b,
GET_INFO(COMMAND_LINE,"output_file"));QUIT;
$ if p3 .eqs. "" then $ goto dl
$ open/write fdl &f
$ write fdl "RECORD"
$ write fdl P3
$ close fdl
$ w "-I-CONVRFM, Converting record format to ", P3
$ convert/fdl=&f &f-1 &P1
$dl: delete 'f'*
$ if P2 .eqs. "" then $ goto ckskip
$ checksum 'P1'
$ if checksum$checksum .nes. P2 then $ -
  e "-E-CHKSMFAIL, Checksum of ''P1' failed."
$ exit
$ckskip: e "-W-CHKSUMSKIP, checksum validation unavailable for ''P1'"
$ endsubroutine
$start:
$!
$ create 'f'
XANU-News`20`206.1B7`20`20bug-fixes`20and`20extensions
X-----------------------------------------
X
X1)`20BUG`20in`20SEARCH-command`20converting`20the`20Umlaute`20`20(a",`20u"`20e
Vtc.)
X`20
X`20`20`20Explanation:
X`20`20`20The`20tolower()`20does`20not`20convert`20Umlaute,`20but`20the`20CLI-r
Voutines`20does`20it.
X`20`20`20If`20someone`20enters`20Umlaute`20on`20the`20command`20line`20then
V`20the`20CLI`20converts
X`20`20`20them`20to`20uppercase`20and`20passes`20it`20to`20NEWS.`20NEWS`20tried
V`20to`20convert`20everything
X`20`20`20back`20to`20lowercase,`20using`20the`20tolower()`20of`20VAX-C`20which
V`20does`20not`20convert
X`20`20`20the`20Umlaute.`20The`20result-string`20will`20end`20up`20with`20all
V`20lowercase`20except
X`20`20`20the`20Umlaute`20uppercase.`20Because`20of`20that`20a`20string`20with
V`20Umlaute`20in`20SEARCH
X`20`20`20does`20NEVER`20match.
X
X`20`20`20fixed`20in`20NEWSRTL.C`20(strip_compress_lower()`20and`20lower_case()
V)`20by`20removing
X`20`20`20the`20tolower()`20and`20replacing`20it`20with`20the`20same`20algorith
Vm`20to`20translate
X`20`20`20as`20the`20CLI-routine`20does.
X
X
X2)`20BUG`20in`20SEARCH-command`20with`20normal`20SEARCH`20and`20SEARCH`20/ALL
X
X`20`20`20Explanation:
X`20`20`20NEWS`206.1B7`20does`20always`20start`20its`20searches`20from`20the
V`20beginning`20of`20the
X`20`20`20current`20area`20and`20not`20(as`20described)`20from`20the`20current
V`20position.
X`20`20`20The`20default`20behavior`20is`20now`20as`20if`20/ALL`20was`20always
V`20specified.
X
X`20`20`20fixed`20in`20NEWSSEARCH.C`20(dsh())`20by`20using`20getnoterange()`20t
Vo`20get`20the
X`20`20`20specified`20range`20instead`20of`20just`20assuming`20the`20whole`20gr
Voup.
X
X
X3)`20EXTENSION`20in`20SEARCH-command`20with`20/REVERSE-qualifier
X
X`20`20`20Explanation:
X`20`20`20Sometimes`20I`20need`20to`20find`20the`20newest`20message`20with`20a
V`20specified`20word`20in
X`20`20`20it.`20For`20this`20reason`20I`20added`20/REVERSE`20to`20search`20back
Vwards.`20A`20normal
X`20`20`20SEARCH`20keyword`20/REVERSE`20searches`20backward`20from`20the`20curr
Vent`20position
X`20`20`20to`20the`20beginning`20of`20the`20newsgroup.`20To`20repeat`20the`20se
Varch`20it's`20sufficent
X`20`20`20to`20just`20enter`20SEARCH`20(as`20usual)`20and`20it`20will`20continu
Ve`20in`20backward
X`20`20`20direction.`20A`20new`20search`20without`20/REVERSE`20always`20runs
V`20forward.`20If`20a`20
X`20`20`20range`20is`20specified`20for`20the`20SEARCH,`20then`20the`20same`20ra
Vnge`20(eg`202-5`20or
X`20`20`20/MARK)`20is`20searched`20except`20the`20search`20will`20be`20backward
Vs,`20starting`20with
X`20`20`20the`20last`20item`20up`20to`20the`20first`20item.
X
X`20`20`20Side`20effects`20/`20Compatibility`20issues:
X`20`20`20There`20should`20be`20no`20compatiblity`20issues`20with`20this`20exte
Vnsion`20-`20without
X`20`20`20the`20/REVERSE`20the`20SEARCH`20works`20as`20usual.
X`20
X`20`20`20changed`20modules:`20`20NEWSCMD.CLD,`20NEWSDEFINE.H`20and`20NEWSSEARC
VH.C
X
X
X4)`20EXTENSION`20in`20EXTRACT`20and`20PRINT`20to`20the`20/HEADER`20qualifier
X
X`20`20`20Explanation:
X`20`20`20I`20added`20the`20possibility`20to`20specify`20WHICH`20headerlines
V`20should`20be`20in`20the
X`20`20`20extracted`20file`20or`20printed.`20/HEADER`20and`20/NOHEADER`20works
V`20as`20usual`20but
X`20`20`20allows`20now`20to`20add`20a`20list`20to`20select`20the`20header-eleme
Vnts.
X`20`20`20The`20following`20rfc-lines`20are`20selectable:
X`20`20`20`20`20ALL`20`20`20`20`20`20`20`20`20`20`20`20(all`20headerlines,`20in
Vcluding`20any`20special`20or`20unlisted`20ones)
X`20`20`20`20`20NONE`20`20`20`20`20`20`20`20`20`20`20(no`20headerlines,`20same
V`20as`20specifiing`20/NOHEADER)
X`20`20`20`20`20APPROVED`20`20`20`20`20`20`20("Approved:"`20-`20Line)
X`20`20`20`20`20CONTROL`20`20`20`20`20`20`20`20("Control:"`20-`20Line)
X`20`20`20`20`20DATE`20`20`20`20`20`20`20`20`20`20`20("Date:"`20-`20Line)
X`20`20`20`20`20DISTRIBUTION`20`20`20("Distribution:"`20-`20Line)
X`20`20`20`20`20EXPIRES`20`20`20`20`20`20`20`20("Expires:"`20-`20Line)
X`20`20`20`20`20FOLLOWUP`20`20`20`20`20`20`20("Followup-To:"`20-`20Line)
X`20`20`20`20`20FROM`20`20`20`20`20`20`20`20`20`20`20("From:"`20-`20Line)
X`20`20`20`20`20MESSAGEID`20`20`20`20`20`20("Message-Id:"`20-`20Line)
X`20`20`20`20`20KEYWORDS`20`20`20`20`20`20`20("Keywords:"`20-`20Line)
X`20`20`20`20`20LINES`20`20`20`20`20`20`20`20`20`20("Lines:"`20-`20Line)
X`20`20`20`20`20ORGANIZATION`20`20`20("Organization:"`20-`20Line)
X`20`20`20`20`20NEWSGROUPS`20`20`20`20`20("Newsgroups:"`20-`20Line)
X`20`20`20`20`20PATH`20`20`20`20`20`20`20`20`20`20`20("Path:"`20-`20Line)
X`20`20`20`20`20REFERENCES`20`20`20`20`20("References:"`20-`20Line)
X`20`20`20`20`20REPLYTO`20`20`20`20`20`20`20`20("Reply-To:"`20-`20Line)
X`20`20`20`20`20SENDER`20`20`20`20`20`20`20`20`20("Sender:"`20-`20Line)
X`20`20`20`20`20SUBJECT`20`20`20`20`20`20`20`20("Subject:"`20-`20Line)
X`20`20`20`20`20SUMMARY`20`20`20`20`20`20`20`20("Summary:"`20-`20Line)
X`20`20`20`20`20XREF`20`20`20`20`20`20`20`20`20`20`20("Xref:"`20-`20Line)
X`20`20`20`20`20XNEWS`20`20`20`20`20`20`20`20`20`20("X-NEWS:"`20-`20Line`20(add
Ved`20by`20ANU-News`20during`20EXTRACT/PRINT))
X`20`20`20Example:`20
X`20`20`20If`20you`20want`20to`20get`20only`20from,`20date`20and`20subject`20in
V`20the`20extracted`20(printed)
X`20`20`20file`20then`20`20/HEADER=(FROM,DATE,SUBJECT)`20`20will`20do`20it.
X
X`20`20`20Side`20effects`20/`20Compatibility`20issues:
X`20`20`20The`20/HEADER`20in`20the`20PRINT-command`20doesn't`20allow`20to`20ena
Vble`20and`20disable
X`20`20`20the`20print-header`20-`20It`20works`20now`20as`20it`20is`20documented
V`20if`20it`20is`20specified
X`20`20`20without`20the`20a`20list`20of`20rfc-elements.
X
X`20`20`20changed`20modules:`20`20NEWSCMD.CLD,`20NEWSEXTERN.H`20and`20NEWSEXTRA
VCT.C
X
X
X5)`20EXTENSION`20in`20FOLLOWUP`20to`20add`20a`20/NEWSGROUPS`20qualifier
X
X`20`20`20Explanation:
X`20`20`20ANU`206.1b7`20always`20asks`20for`20the`20newsgroup`20in`20a`20follow
V-up.`20I`20added`20the
X`20`20`20/NEWSGROUPS=<newsgroups>`20`20qualifier`20to`20avoid`20the`20addition
Val`20prompt`20and`20
X`20`20`20specify`20it`20directly.`20
X
X`20`20`20Side`20effects`20/`20Compatibility`20issues:
X`20`20`20There`20should`20be`20no`20compatibility`20problems,`20because`20with
Vout`20this`20
X`20`20`20qualifier`20it`20works`20as`20usual.
X
X`20`20`20changed`20modules:`20`20NEWSCMD.CLD,`20NEWSPOST.C
X
X
X6)`20EXTENSION`20to`20MAIL`20`26`20FORWARD`20to`20mail`20multiple`20messages
V`20at`20once
X
X`20`20`20Explanation:
X`20`20`20MAIL`20(and`20its`20synonyom`20FORWARD)`20allows`20only`20a`20single
V`20item`20to`20be`20sent.
X`20`20`20I`20added`20the`20code`20to`20select`20a`20range`20with`20/MARK,`20/A
VLL`20or`20an`20itemrange
X`20`20`20If`20multiple`20messages`20are`20mailed`20then`20they`20are`20separet
Ved`20by`20a`20<FF>
X`20`20`20in`20the`20mail-message.
X
X`20`20`20Side`20effects`20/`20Compatibility`20issues:
X`20`20`20There`20is`20no`20default`20subject`20given,`20if`20multiple`20items
V`20are`20mailed,`20but
X`20`20`20there`20should`20be`20no`20compatibility`20problems,`20because`20with
Vout`20specifing
X`20`20`20a`20range`20it`20works`20as`20usual.
X
X`20`20`20changed`20modules:`20`20NEWSCMD.CLD,`20NEWSFORWARD.C
X
$ call unpack MWPATCHES.DOC;1 510608840 ""
$!
$ create 'f'
X***`20newscmd.cld;-1
X---`20newscmd.cld
X**************
X***`2024,29
X`20`20!`20`20`20Modification`20History:
X`20`20!`20`20`206.1b6`2022-Mar-1993`20`20Charles`20Bailey`20`20bailey@genetics
V.upenn.edu
X`20`20!`20`20`20`20-`20changes`20to`20synchronize`20with`206.1b6`20C`20source
X`20`20!--
X`20`20
X`20`20!
X---`2024,39`20-----
X`20`20!`20`20`20Modification`20History:
X`20`20!`20`20`206.1b6`2022-Mar-1993`20`20Charles`20Bailey`20`20bailey@genetics
V.upenn.edu
X`20`20!`20`20`20`20-`20changes`20to`20synchronize`20with`206.1b6`20C`20source
X+`20!
X+`20!`20`20`20Modification`20History:
X+`20!`20`20`206.1b7`2026-Apr-1993`20`20Martin`20Winter`20`20winter@vision.rs.c
Vh
X+`20!`20`20`20`20-`20added`20/HEADER=(list_of_rfc-elements)`20to`20EXTRACT`20a
Vnd`20PRINT`20which
X+`20!`20`20`20`20`20`20allows`20to`20specifiy`20which`20headerlines`20should
V`20be`20in`20the`20file`20or`20print
X+`20!`20`20`20`20-`20added`20/REVERSE`20to`20SEARCH`20to`20allow`20searching
V`20in`20the`20reverse`20order
X+`20!`20`20`20`20-`20added`20/NEWSGROUPS=(list_of_newsgroups)`20to`20FOLLOWUP
V`20to`20avoid`20the
X+`20!`20`20`20`20`20`20newsgroup-prompt
X+`20!`20`20`20`20-`20added`20/MARK,`20/ALL`20and`20itemrange`20to`20MAIL`20and
V`20FORWARD
X+`20!
X`20`20!--
X`20`20
X`20`20!
X**************
X***`2071,77
X`20`20`20`20`20`20keyword`20`20`20`20`20UNSEEN`20`20`20`20`20`20default
X`20`20`20`20`20`20keyword`20`20`20`20`20DIRECTORY
X`20`20
X!`20define`20type`20PRINT_DIRTYPE
X`20`20`20`20`20`20keyword`20`20`20`20`20NEWSGROUPS
X`20`20`20`20`20`20keyword`09NEWSGROUPTITLES
X`20`20`20`20`20`20keyword`20`20`20`20`20GROUPS
X---`2081,99`20-----
X`20`20`20`20`20`20keyword`20`20`20`20`20UNSEEN`20`20`20`20`20`20default
X`20`20`20`20`20`20keyword`20`20`20`20`20DIRECTORY
X`20`20
X!`20define`20type`20HEADER_LINES
X!`20`20`20`20`20keyword`20`20`20`20`20ALL`20`20`20`20`20`20`20`20`20default
X!`20`20`20`20`20keyword`20`20`20`20`20APPROVED
X!`20`20`20`20`20keyword`20`20`20`20`20CONTROL
X!`20`20`20`20`20keyword`20`20`20`20`20DATE
X!`20`20`20`20`20keyword`20`20`20`20`20DISTRIBUTION
X!`20`20`20`20`20keyword`20`20`20`20`20EXPIRES
X!`20`20`20`20`20keyword`20`20`20`20`20FOLLOWUP
X!`20`20`20`20`20keyword`20`20`20`20`20FROM
X!`20`20`20`20`20keyword`20`20`20`20`20MESSAGEID
X!`20`20`20`20`20keyword`20`20`20`20`20KEYWORDS
X!`20`20`20`20`20keyword`20`20`20`20`20LINES
X!`20`20`20`20`20keyword`20`20`20`20`20ORGANIZATION
X`20`20`20`20`20`20keyword`20`20`20`20`20NEWSGROUPS
X`20`20`20`20`20`20keyword`20`20`20`20`20NONE
X`20`20`20`20`20`20keyword`20`20`20`20`20PATH
X**************
X***`2073,78
X`20`20
X`20`20define`20type`20PRINT_DIRTYPE
X`20`20`20`20`20`20keyword`20`20`20`20`20NEWSGROUPS
X`20`20`20`20`20`20keyword`09NEWSGROUPTITLES
X`20`20`20`20`20`20keyword`20`20`20`20`20GROUPS
X`20`20`20`20`20`20keyword`20`20`20`20`20NEWSITEMS
X---`2095,112`20-----
X`20`20`20`20`20`20keyword`20`20`20`20`20LINES
X`20`20`20`20`20`20keyword`20`20`20`20`20ORGANIZATION
X`20`20`20`20`20`20keyword`20`20`20`20`20NEWSGROUPS
X+`20`20`20`20`20keyword`20`20`20`20`20NONE
X+`20`20`20`20`20keyword`20`20`20`20`20PATH
X+`20`20`20`20`20keyword`20`20`20`20`20REFERENCES
X+`20`20`20`20`20keyword`20`20`20`20`20REPLYTO
X+`20`20`20`20`20keyword`20`20`20`20`20SENDER
X+`20`20`20`20`20keyword`20`20`20`20`20SUBJECT
X+`20`20`20`20`20keyword`20`20`20`20`20SUMMARY
X+`20`20`20`20`20keyword`20`20`20`20`20XREF
X+`20`20`20`20`20keyword`20`20`20`20`20XNEWS
X+`20
X+`20define`20type`20PRINT_DIRTYPE
X+`20`20`20`20`20keyword`20`20`20`20`20NEWSGROUPS
X`20`20`20`20`20`20keyword`09NEWSGROUPTITLES
X`20`20`20`20`20`20keyword`20`20`20`20`20GROUPS
X`20`20`20`20`20`20keyword`20`20`20`20`20NEWSITEMS
X**************
X***`20860,866
X`20`20`20`20`20`20qualifier`20`20`20APPEND,`20`20`20`20`20nonnegatable
+-+-+-+-+-+-+-+-  END  OF PART 1 +-+-+-+-+-+-+-+-
----------------------------------------------------------------------------
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
----------------------------------------------------------------------------
