[news.software.anu-news] NEWS V59A - DIFF/SLP version 1/3

gih900@csc.anu.oz (Geoff Huston) (10/10/89)

$! ------------------ CUT HERE -----------------------
$ v='f$verify(f$trnlnm("SHARE_VERIFY"))'
$!
$! This archive created by VMS_SHARE Version 7.1-004  3-AUG-1989
$!   On 10-OCT-1989 08:45:30.26   By user GIH900 
$!
$! This VMS_SHARE Written by:
$!    Andy Harper, Kings College London UK
$!
$! Acknowledgements to:
$!    James Gray       - Original VMS_SHARE
$!    Michael Bednarek - Original Concept and implementation
$!
$!+ THIS PACKAGE DISTRIBUTED IN 3 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. AAREADME.TXT;1
$!       2. ADD_TRANSFORM.SLP;2
$!       3. MAILDEF.SLP;1
$!       4. NEWS.SLP;1
$!       5. NEWSADD.SLP;2
$!       6. NEWSBUILD.SLP;2
$!       7. NEWSCMD.SLP;2
$!       8. NEWSDEFINE.SLP;1
$!       9. NEWSDELETE.SLP;2
$!      10. NEWSDIR.SLP;2
$!      11. NEWSDISPLAY.SLP;2
$!      12. NEWSDIST.SLP;2
$!      13. NEWSEXTERN.SLP;2
$!      14. NEWSEXTRACT.SLP;2
$!      15. NEWSFILES.SLP;2
$!      16. NEWSFORWARD.SLP;2
$!      17. NEWSHELP.SLP;2
$!      18. NEWSINCLUDE.SLP;2
$!      19. NEWSMOD.SLP;2
$!      20. NEWSMODE.SLP;2
$!      21. NEWSPOST.SLP;2
$!      22. NEWSRC.SLP;2
$!      23. NEWSREAD.SLP;2
$!      24. NEWSREGISTER.SLP;2
$!      25. NEWSREMCLIENT.SLP;2
$!      26. NEWSRTL.SLP;2
$!      27. NEWSSEARCH.SLP;2
$!      28. NEWSSELECT.SLP;2
$!      29. NEWSSETSHOW.SLP;2
$!      30. NEWSSITE.SLP;2
$!      31. NEWSSITE_H.SLP;2
$!      32. NEWSSKIM.SLP;2
$!      33. NEWSSKIP.SLP;2
$!      34. NEWSUTILITY.SLP;2
$!      35. NEWSV58_UPGRADE.SLP;2
$!      36. NEWSVARIABLES.SLP;1
$!      37. NEWSVMSMAIL.SLP;2
$!      38. NEWS_HLP.SLP;1
$!      39. NNTP_CLIENT.SLP;1
$!      40. NNTP_DEC.SLP;1
$!      41. NNTP_DECM.SLP;1
$!      42. NNTP_FEED.SLP;2
$!      43. NNTP_SERVER.SLP;2
$!      44. NNTP_TCPCMU.SLP;2
$!      45. NNTP_TCPWIN.SLP;1
$!      46. NNTP_TTY.SLP;1
$!      47. NNTP_XFER.C;1
$!      48. OPTIONS_C_LINK.OPT;1
$!
$set="set"
$set symbol/scope=(nolocal,noglobal)
$f=f$parse("SHARE_TEMP","SYS$SCRATCH:.TMP_"+f$getjpi("","PID"))
$e="write sys$error  ""%UNPACK"", "
$w="write sys$output ""%UNPACK"", "
$ if f$trnlnm("SHARE_LOG") then $ w = "!"
$ if f$getsyi("version") .ges. "V4.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
$ if f$search(P1) .eqs. "" then $ goto file_absent
$ e "-W-EXISTS, File ''P1' exists. Skipped."
$ delete/nolog '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/nolog 'f'*
$ exit
$dirok:
$ w "-I-PROCESS, Processing file ''P1'."
$ define/user sys$output nl:
$ EDIT/TPU/NOSEC/NODIS/COM=SYS$INPUT 'f'/OUT='P1'
PROCEDURE Unpacker ON_ERROR ENDON_ERROR;SET(FACILITY_NAME,"UNPACK");SET(
SUCCESS,OFF);SET(INFORMATIONAL,OFF);f:=GET_INFO(COMMAND_LINE,"file_name");
buff:=CREATE_BUFFER(f,f);p:=SPAN(" ")@r&LINE_END;POSITION(BEGINNING_OF(buff))
;LOOP EXITIF SEARCH(p,FORWARD)=0;POSITION(r);ERASE(r);ENDLOOP;POSITION(
BEGINNING_OF(buff));g:=0;LOOP EXITIF MARK(NONE)=END_OF(buff);x:=
ERASE_CHARACTER(1);IF g = 0 THEN IF x="X" THEN MOVE_VERTICAL(1);ENDIF;IF x=
"V" THEN APPEND_LINE;MOVE_HORIZONTAL(-CURRENT_OFFSET);MOVE_VERTICAL(1);ENDIF;
IF x="+" THEN g:=1;ERASE_LINE;ENDIF;ELSE IF x="-" THEN g:=0;ENDIF;ERASE_LINE;
ENDIF;ENDLOOP;p:="`";POSITION(BEGINNING_OF(buff));LOOP r:=SEARCH(p,FORWARD);
EXITIF r=0;POSITION(r);ERASE(r);COPY_TEXT(ASCII(INT(ERASE_CHARACTER(3))));
ENDLOOP;o:=GET_INFO(COMMAND_LINE,"output_file");WRITE_FILE(buff,o);
ENDPROCEDURE;Unpacker;EXIT;
$ delete/nolog 'f'*
$ CHECKSUM 'P1'
$ IF CHECKSUM$CHECKSUM .eqs. P2 THEN $ EXIT
$ e "-E-CHKSMFAIL, Checksum of ''P1' failed."
$ ENDSUBROUTINE
$START:
$ create/nolog 'f'
XRelease notes for NEWS V5.9A release.
X
XI have built V5.9A using the VAX C compiler V3.0. If you are using an earlie
Vr
Xversion of the compiler you'll need to keep the .h files which have been pos
Vted
Xto the anu-news mailing list in September 1989. I will not include these fil
Ves
Xin any subsequent releases.
X
Xa) File changes in V5.9a
X`009DELETED`009    sortdef.h`009-- no longer referenced in any of the module
Vs
X`009RENAMED     newsmail.c`009-- newsvmsmail.c
X`009NEW FILE    nntp
X
Xb) BEFORE applying the v5.9a patches RENAME NEWSMAIL.C to NEWSVMSMAIL.C
X
XGeoff Huston
$ CALL UNPACK AAREADME.TXT;1 1918433
$ create/nolog 'f'
X-   48,   48
X**`009`009*@*`009  gateway::in%"\001@\002"
X-  116,  117
X`009`123"*@*",`009    "in\%\"\001@\002\""`125,
X`009`123"*::*",    "in\%\"\002@\001\""`125,
X/
$ CALL UNPACK ADD_TRANSFORM.SLP;2 1411858633
$ create/nolog 'f'
X/
$ CALL UNPACK MAILDEF.SLP;1 47
$ create/nolog 'f'
X/
$ CALL UNPACK NEWS.SLP;1 47
$ create/nolog 'f'
X- 1173, 1174
X           net_sender`091132`093,
X`009   save_itm_fname`091256`093;
X
X      strcpy(save_itm_fname,itm_fname);
X- 1195
X      strcpy(itm_fname,save_itm_fname);`009/* new */
X/
$ CALL UNPACK NEWSADD.SLP;2 840437443
$ create/nolog 'f'
X-   48
X                      twg$tcp:`091netdist.include.arpa`093,-
X-   80,   80
X$ call compile "NEWSVMSMAIL"    "DELOBJ"    'p1
X-  320
X$! NNTP_XFER
X$!
X$ if f$search("NNTP_XFER.OBJ").eqs."" then $ goto do9a
X$ if f$cvtime(f$file_attributes("`091-.NEWS_SRC`093NNTP_XFER.C","rdt")).gts.
V-
X  f$cvtime(f$file_attributes("NNTP_XFER.OBJ","rdt")) then $ goto do9a
X$ goto past9a
X$do9a:
X$ set def `091-.news_src`093
X$ write sys$output "$ cc nntp_xfer"
X$ cc/nolis/object=`091-.news_build`093nntp_xfer nntp_xfer
X$ set def `091-.news_build`093
X$ purge nntp_xfer.*,`091-.news_src`093nntp_xfer.*
X$past9a:
X$ if f$search("`091-.NEWS_DIST`093NNTP_XFER.EXE").eqs."" then $ goto do18a
X$ if f$cvtime(f$file_attributes("NNTP_XFER.OBJ","rdt")).gts.-
X  f$cvtime(f$file_attributes("`091-.NEWS_DIST`093NNTP_XFER.EXE","rdt")) then
V $ goto do18a
X$ goto past18a
X$do18a:
X$ write sys$output "$ link nntp_xfer"
X$ link/notrace/nomap/exe=`091-.NEWS_DIST`093nntp_xfer nntp_xfer,`091-.news_s
Vrc`093options_c_link/opt
X$ purge nntp_xfer.*,`091-.news_dist`093nntp_xfer.*
X$past18a:
X$!
X/
$ CALL UNPACK NEWSBUILD.SLP;2 2001158135
$ create/nolog 'f'
X-  481,  481
X    parameter   P2          label=NOTEID
X-  663,  670
X-  738
X    qualifier   UNREGISTERED nonnegatable
X-  742,  742
X    disallow    any2 (ALL,ITEMS,NEW,NEWSGROUPS,REGISTER,SINCE,UNREGISTERED)
X-  784
X    synonym ANSWER
X/
$ CALL UNPACK NEWSCMD.SLP;2 1786584076
$ create/nolog 'f'
X-   48
X#define DIR_UNREGISTER  4
X/
$ CALL UNPACK NEWSDEFINE.SLP;1 139671331
$ create/nolog 'f'
X-  931,  939
X       mail_from`091256`093,
X       mail_cfrom`091256`093,
X       mail_groups`091256`093,
X       mail_dist`091256`093,
X       mail_id`091256`093,
X       post_path`091256`093,
X       post_dist`091256`093,
X       loc_id`091IDLEN`093,
X       id`091256`093,
X       ngroup`091256`093,
X-  980,  980
X  strcpy(mail_cfrom,mail_from);
X  s_to_lower(mail_cfrom);
X-  988,  991
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-  999,  999
X          if (!(wild_match(mail_cfrom,inpline))) `123
X/
$ CALL UNPACK NEWSDELETE.SLP;2 1231500617
$ create/nolog 'f'
X-  143
X        case DIR_UNREGISTER:
X            put_line("NEWS - Directory of UNRegistered Newsgroups",0);
X            break;
X-  217
X    else if (cli$present(c$dsc("UNREGISTERED")) == CLI$_PRESENT)
X      dir_type = DIR_UNREGISTER;
X-  259
X      case DIR_UNREGISTER:
X        incl_grp = (ga`091gindx`093->grp_reg == 0);
X        break;
X/
$ CALL UNPACK NEWSDIR.SLP;2 1949595161
$ create/nolog 'f'
X-  281,  281
X        else if (   !strncmp(resp,"top",min(3,strlen(resp)))
X                 && (*(resp + 1) == 'o')
X                 && (strlen(resp) <= 3)) `123
X/
$ CALL UNPACK NEWSDISPLAY.SLP;2 1262879188
$ create/nolog 'f'
X-  215
X  int n;
X-  219,  220
X  cp1 = s;`009`009`009`009/* s is compressed, stripped string */
X  while (isgraph(*cp1)) cp1++;       `009/* scan accross node word */
X  if (!*cp1) cp1 = 0;
X  else *cp1++ = '\0';              `009/* and null terminate node word */
X  strcpy(node,s);
X  if (!strlen(node)) return; `009`009/* handle the case of the string " " */
X-  224,  235
X  if (cp1) `123           `009`009`009/* now handle following words */
X    while (cp2 = strchr(cp1,' ')) *cp2 = ','; `009/* convert ' ' -> ',' */
X    strcpy(tolist,cp1);
X    cp1 = tolist;
X    do `123
X      if (cp2 = strchr(cp1,',')) *cp2++ = '\0';
X      if (strlen(cp1)) `123
X        fmp = malloc(sizeof *fmp);
X        strcpy((fmp->sys_filtnam = malloc(strlen(cp1) + 1)),cp1);
X        fmp->sys_fnext = 0;
X        if (!tmp->to_names) tmp->to_names = f1 = fmp;
X        else `123
X          f1->sys_fnext = fmp;
X          f1 = fmp;
X          `125
X        `125
X      cp1 = cp2;
X      `125 while (cp1);
X    `125
X/
$ CALL UNPACK NEWSDIST.SLP;2 1075586354
$ create/nolog 'f'
X/
$ CALL UNPACK NEWSEXTERN.SLP;2 47
$ create/nolog 'f'
X-  237,  239
X  if (w_ok) `123
X    sprintf(xfrbuf,"X-NEWS: %s %s: %d\n",
X                  news_node,ga`091g`093->grp_name,ga`091g`093->grp_ia`091m`0
V93.itm_num);
X    fputs(xfrbuf,fpextract);
X    `125
X/
$ CALL UNPACK NEWSEXTRACT.SLP;2 1316375812
$ create/nolog 'f'
X-   69
X  i->f.fab$l_alq = 4;
X  i->f.fab$w_deq = 32;
X  i->f.fab$l_fop `124= FAB$M_TEF;
X/
$ CALL UNPACK NEWSFILES.SLP;2 705562367
$ create/nolog 'f'
X/
$ CALL UNPACK NEWSFORWARD.SLP;2 47
$ create/nolog 'f'
X/
$ CALL UNPACK NEWSHELP.SLP;2 47
$ create/nolog 'f'
X/
$ CALL UNPACK NEWSINCLUDE.SLP;2 47
$ create/nolog 'f'
X/
$ CALL UNPACK NEWSMOD.SLP;2 47
$ create/nolog 'f'
X/
$ CALL UNPACK NEWSMODE.SLP;2 47
$ create/nolog 'f'
X/
$ CALL UNPACK NEWSPOST.SLP;2 47
$ create/nolog 'f'
X/
$ CALL UNPACK NEWSRC.SLP;2 47
$ create/nolog 'f'
X/
$ CALL UNPACK NEWSREAD.SLP;2 47
$ create/nolog 'f'
X/
$ CALL UNPACK NEWSREGISTER.SLP;2 47
$ create/nolog 'f'
X-  349,  349
X  if (!nntp_write("STAT") `124`124 (!(wait_net_response(RESP_TIMER,1)))) `12
V3
X/
$ CALL UNPACK NEWSREMCLIENT.SLP;2 1023703700
$ create/nolog 'f'
X/
$ CALL UNPACK NEWSRTL.SLP;2 47
$ create/nolog 'f'
X/
$ CALL UNPACK NEWSSEARCH.SLP;2 47
$ create/nolog 'f'
X/
$ CALL UNPACK NEWSSELECT.SLP;2 47
$ create/nolog 'f'
X- 1208, 1245
X  char acline`091256`093, cknode`091132`093, mod`091132`093,
X       *cp, *ap, *op;
X  FILE *fpd;
X
X  ga`091g`093->grp_flags `124= NEWS_M_ACCESS_CHECKED;
X  if (ga`091g`093->grp_flags & NEWS_M_MAILMODERATE) `123
X    sprintf(mod,"%s@%s",usr_username,Node_address);
X    if (!strcmp(mod,moderator_address(ga`091g`093->grp_name))) `123
X      ga`091g`093->grp_flags `124= (NEWS_M_MOD_USER `124 NEWS_M_WRITE_ACCESS
V);
X      return;
X      `125
X    `125
X  if (!(ga`091g`093->grp_flags & NEWS_M_NOWRITE_SET))
X    ga`091g`093->grp_flags `124= NEWS_M_WRITE_ACCESS;
X  sprintf(itm_fname,Access_template,util_dir(ga`091g`093->grp_name));
X  sysprv();
X  if (fpd = fopen(itm_fname,"r")) `123
X    while (fgets(acline,256,fpd)) `123
X      if (*acline == '#') continue;
X      if (cp = strchr(acline,'\n')) *cp = ' ';
X      s_to_lower(acline);
X      if (cp = strchr(acline,' ')) *cp = '\0';
X      if (ap = strchr(acline,'@')) *ap = '\0';
X      if (op = strchr(acline,':')) *op = '\0';
X      if (   !strcmp(acline,usr_username)
X          `124`124 wild_match(usr_username,acline)
X          `124`124 idmatch(acline)) `123
X        if (cp) *cp = ' ';
X        if (ap) *ap = '@';
X        if (strchr(acline,'@')) `123
X          sprintf(cknode,"@%s ",news_node);
X          if (!substrcmp(cp,cknode)) continue;
X          `125
X        if (substrcmp(cp," write ")) ga`091g`093->grp_flags `124= NEWS_M_WRI
VTE_ACCESS;
X        if (substrcmp(cp," nowrite ")) ga`091g`093->grp_flags &= `126NEWS_M_
VWRITE_ACCESS;
X        if (substrcmp(cp," moderate ")) ga`091g`093->grp_flags `124= (NEWS_M
V_MOD_USER `124 NEWS_M_WRITE_ACCESS);
X        `125
X      `125
X    fclose(fpd);
X    `125
X  nosysprv();
X/
$ CALL UNPACK NEWSSETSHOW.SLP;2 1275210311
$ create/nolog 'f'
X/
$ CALL UNPACK NEWSSITE.SLP;2 47
$ create/nolog 'f'
X/
$ CALL UNPACK NEWSSITE_H.SLP;2 47
$ create/nolog 'f'
X/
$ CALL UNPACK NEWSSKIM.SLP;2 47
$ create/nolog 'f'
X/
$ CALL UNPACK NEWSSKIP.SLP;2 47
$ create/nolog 'f'
X/
$ CALL UNPACK NEWSUTILITY.SLP;2 47
$ create/nolog 'f'
X/
$ CALL UNPACK NEWSV58_UPGRADE.SLP;2 47
$ create/nolog 'f'
X/
$ CALL UNPACK NEWSVARIABLES.SLP;1 47
$ create/nolog 'f'
X-    4,    4
X**      NEWSVMSMAIL
X-   25,   25
X#module NEWSVMSMAIL "V5.8"
X-  126
X  tmp->fnext = 0;
X-  731,  731
X  all = ((news_context == 1) `124`124 (cli$present(c$dsc("ALL")) & 1));
X/
$ CALL UNPACK NEWSVMSMAIL.SLP;2 455178520
$ create/nolog 'f'
X/
$ CALL UNPACK NEWS_HLP.SLP;1 47
$ create/nolog 'f'
X/
$ CALL UNPACK NNTP_CLIENT.SLP;1 47
$ create/nolog 'f'
X/
$ CALL UNPACK NNTP_DEC.SLP;1 47
$ create/nolog 'f'
X/
$ CALL UNPACK NNTP_DECM.SLP;1 47
$ create/nolog 'f'
X-  485,  485
X    if (!nntp_write("STAT") `124`124 (!(wait_net_response(RESP_TIMER,1)))) `
V123
X/
$ CALL UNPACK NNTP_FEED.SLP;2 1902669267
$ create/nolog 'f'
X-   93,   93
X#define NEWSBATCH       "NEWS_MANAGER:NNTP_%X.BATCH"
X-  262,  262
Xint mail_add_expiry,
X    ihave_size = 0;
X- 1257, 1257
X    char line`091BUFF_STRLEN`093,
X         batch`091FILE_STRLEN`093;
X- 1265, 1265
X    sprintf(batch,NEWSBATCH,getpid());
X    if (!(fpw = fopen(batch,"a"))) `123
X- 1269, 1269
X    fprintf(fpw,"#! rnews %d\n", (ihave_size > 0 ? ihave_size : 1));
X- 1273
X    while (!delete(fn));
X- 1820, 1852
XFILE *openartbyid(id,msg_status,stm)
X  char *id;
X  int *msg_status;
X  int stm;
X`123
X  char l_id`091IDLEN + 4`093;
X  int i;
X
X  ihave_size = 0;
X  *msg_status = M430;
X  for (i = 0; i < (IDLEN + 4); ++i) l_id`091i`093 = '\0';
X  strncpy(l_id,id,IDLEN);
X
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
X  itmrab.rab$l_kbf = l_id;
X  itmrab.rab$b_ksz = IDLEN + 4;
X  itmrab.rab$b_krf = 1;
+-+-+-+-+-+-+-+-  END  OF PART 1 +-+-+-+-+-+-+-+-