From:	SMTP%"DSJ@WKUVX1.WKU.EDU" 28-MAR-1995 12:10:35.50
To:	EVERHART
CC:	
Subj:	FEBRUARY95.ALPHA

X-FileServer: Digital Systems Journal File Server <DSJ@WKUVX1.WKU.EDU>
Date: Tue, 28 Mar 1995 11:09:05 CST
Sender: DSJ-Mgr@WKUVX1.WKU.EDU
Errors-To: DSJ-Mgr@WKUVX1.WKU.EDU
Warnings-To: <>
From: DSJ-Mgr@WKUVX1.WKU.EDU
Reply-To: DSJ@WKUVX1.WKU.EDU
Subject: FEBRUARY95.ALPHA
To: EVERHART@arisia.gce.com

$! ------------------ CUT HERE -----------------------
$ v='f$verify(f$trnlnm("SHARE_UNPACK_VERIFY"))'
$!
$! This archive created:
$!  Name : ALPHA
$!  By   : Hunter Goatley <goathunter@ALPHA.WKU.EDU>
$!  Date : 23-FEB-1995 07:17:26.51
$!  Using: VMS_SHARE 8.5-1, (C) 1993 Andy Harper, Kings College London UK
$!
$! Credit is due to these people for their original ideas:
$!    James Gray, Michael Bednarek 
$!
$! To unpack this archive:
$!    Minimum of VMS 4.4 (VAX) / OpenVMS 1.0 (Alpha) is required.
$!    Remove the headers of the first part, up to `cut here' line.
$!    Execute file as a command procedure.
$!
$! The following file(s) will be created after unpacking:
$!       1. ALPHA.DSJ;1
$!
$ set="set"
$ set symbol/scope=(nolocal,noglobal)
$ f="SYS$SCRATCH:."+f$getjpi("","PID")+";"
$ if f$trnlnm("SHARE_UNPACK") .nes. "" then $ -
 f=f$parse("SHARE_UNPACK_TEMP",f)
$ e="write sys$error  ""%UNPACK"", "
$ w="write sys$output ""%UNPACK"", "
$ if .not. f$trnlnm("SHARE_UNPACK_LOG") then $ w = "!"
$ if f$getsyi("CPU") .gt. 127 then $ goto start
$ 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=file,P2=chksum,P3=attrib,P4=size,P5=fileno,P6=filetotal
$ 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:
$ x=f$search(P1)
$ if x .eqs. "" then $ goto file_absent
$ e "-W-EXISTS, File ''P1' exists. Skipped"
$ delete 'f'*
$ exit
$file_absent:
$ w "-I-UNPACK, Unpacking ", P5, " of ", P6, " - ", P1, " - ", P4, " Blocks"
$ 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/NOJOURNAL 'f'/OUT='n'
PROCEDURE GetHex(s,p)LOCAL x1,x2;x1:=INDEX(t,SUBSTR(s,p,1))-1;x2:=INDEX(t,
SUBSTR(s,p+1,1))-1;RETURN 16*x1+x2;ENDPROCEDURE;PROCEDURE SkipPartsep LOCAL m;
LOOP m:=MARK(NONE);EXITIF m=END_OF(CURRENT_BUFFER);DELETE(m);EXITIF INDEX(
ERASE_LINE,"-+-+-+-+-+-+-+-+")=1;ENDLOOP;ENDPROCEDURE;
PROCEDURE ProcessLine LOCAL c,s,l,b,n,p;s := ERASE_LINE;c := SUBSTR(s,1,1);s :=
 s-c;IF c = "X" THEN SPLIT_LINE; ENDIF;MOVE_HORIZONTAL(-1);l := LENGTH(s);p :=
 1;LOOP EXITIF p > l;c := SUBSTR(s,p,1);p := p+1;CASE c FROM ' ' TO '`' ['`']
: COPY_TEXT(ASCII(GetHex(s,p))); p:=p+2;[' ']: p:=p+1;[INRANGE,OUTRANGE]
: COPY_TEXT(c);ENDCASE;ENDLOOP;ENDPROCEDURE;PROCEDURE Decode(b)LOCAL m;
POSITION(BEGINNING_OF(b));LOOP m:=MARK(NONE);EXITIF m=END_OF(b);DELETE(m);
IF INDEX(CURRENT_LINE,"+-+-+-+-+-+-+-+-")=1 THEN SkipPartSep;ELSE ProcessLine;
MOVE_HORIZONTAL(1);ENDIF;ENDLOOP;ENDPROCEDURE;SET(FACILITY_NAME,"UNPACK");SET(
SUCCESS,OFF);SET(INFORMATIONAL,OFF);t:="0123456789ABCDEF";f:=GET_INFO(
COMMAND_LINE,"file_name");o:=CREATE_BUFFER(f,f);Decode(o);WRITE_FILE(o,
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 'f'
$ fa=f$getdvi(f$parse(f),"ALLDEVNAM")
$ Pa=f$getdvi(f$parse(P1),"ALLDEVNAM")
$ if fa .eqs. Pa then $ rename &f 'f$parse(P1)'
$ if fa .nes. Pa then $ copy &f 'f$parse(P1)'
$dl: delete 'f'*
$ checksum 'P1'
$ if checksum$checksum .nes. P2 then $ -
  e "-E-CHKSMFAIL, Checksum of ''P1' failed."
$ exit
$ endsubroutine
$start:
$!
$ create 'f'
X/*
X;+
X;
X;`20----`09LOG_PORT:`09Process'`20terminal`20server`20and`20port`20logging`20
V
X;
X;
X;`20Facility:
X;
X;`09VAX/VMS`20system`20management
X;
X;`20Environment:
X;
X;`09OPENVMS`20VAX`20V5.5-2`20or`20OPENVMS`20AXP`201.5`20or`20later,`20kernel
V`20mode
X;`09Tested`20under`20VAX`20C`20and`20DEC`20C`20(on`20AXP)
X;
X;`20Linking:
X;$`20If`20f$getsyi("ARCH_NAME")`20.EQS.`20"Alpha"
X;$`20`20Then
X;$`09link/notrace/exec=log_port_alpha.exe`20log_port,sys$input/opt
X;sys$loadable_images:sys$base_image.exe/share
X;$`20`20Else
X;$`09link/notrace`20log_port,sys$input/opt
X;sys$share:vaxcrtl.exe/share
X;sys$system:sys.stb/selective_search
X;$`20EndIf
X;`09
X;`20Running:
X;$`20If`20f$getsyi("ARCH_NAME")`20.EQS.`20"Alpha"
X;$`20`20Then
X;$`09If`20"''F$MODE()'"`20.eqs.`20"INTERACTIVE"`20Then`20run`20sys$system:log_
Vport
X;$`20`20Else
X;$`09If`20"''F$MODE()'"`20.eqs.`20"INTERACTIVE"`20Then`20run`20sys$system:log_
Vport_alpha
X;$`20`20EndIf
X;
X;`20Abstract:
X;`09This`20routine`20will`20extract`20the`20current`20process'`20terminal`20se
Vrver
X;`09name`20and`20port`20id,`20if`20it`20is`20a`20lat`20process.`20`20`20This
V`20information`20will
X;`09the`20be`20stored`20in`20the`20remote`20node`20name`20and`20remote`20node
V`20id`20fields`20of`20
X;`09the`20process'`20P1.`20`20These`20fields`20are`20normally`20only`20used`20
Vby`20RTTDRIVER
X;`09and`20REMACP`20for`20remote`20process',`20should`20be`20no`20problem.`20
V`20These`20fields`20are
X;`09however`20written`20by`20the`20system`20accounting`20facility`20and`20will
V`20provide
X;`09a`20convenient`20means`20for`20storing`20and`20tracking`20this`20informati
Von.
X;
X;`20Version:`20`20`20`20`20`09V02.000
X;`20Date:`09`097-Aug-1994
X;`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
X;`20Kevin`09F.`20Homan`202-FEB-1995
X;`20Science`20Applications`20International`20Corporation.
X;`20P.O.`20Box`202501
X;`20301`20Laboratory`20Rd
X;`20Oak`20Ridge,`20TN`20`2037831
X;`20(615)`20482-9031
X;`20homan@orvb.saic.com
X;`20http://www-itg.saic.com/
X;
X;`20Modifications:
X;
X;`0916-Nov-1987`09kfh`09Initial`20creation
X;
X;`097-Aug-1994`09kfh`09Converted`20to`20C`20and`20modified`20to`20run`20under
V`20alpha
X;`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
V`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
V`20`20
X;-`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
V`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
V`20
X*/
X#include`20<string.h>
X#include`20<starlet.h>
X#include`20<lib$routines.h>
X#include`20<stdio.h>
X#include`20<descrip.h>
X#include`20<dvidef.h>
X
X/*`20storage`20areas`20for`20server`20and`20port`20*/
X`20`20unsigned`20char`20serverlen,`20portlen;
X`20`20char`09`09*server,`20*port;
X
X
Xint`20main()
X`7B
X
X`20`20long`20int`20status;`20`20`20`20`20
X`20`20struct`20`20`20/*`20io`20status`20block`20*/
X`20`20`20`20`7B
X`20`20`20`20`20`20long`20condition;
X`20`20`20`20`20`20long`20ignored;
X`20`20`20`20`7D`20iosb;
X
X`20`20$DESCRIPTOR`20(dev_name_desc,"tt");`20/*`20terminal`20device`20*/
X`20`20int`20move_info();
X`20`20char`09`09`09*ptr;
X`20`20static`20`20char`09`09buffer`5B129`5D;
X`20`20static`20$DESCRIPTOR(device_name,buffer);
X
X/*`20standard`20item`20list`20structure`20*/
X`20`20struct
X`20`20`7B
X`20`20short`09int`09`09buf_len;
X`20`20short`09int`09`09item;
X`20`20char`09`09`09*buf_addr;
X`20`20unsigned`20short`20int`09*ret_len;
X`20`20int`09`09`09end;
X`20`20`7Ditem_list`20=`20`7Bdevice_name.dsc$w_length,`20DVI$_TT_ACCPORNAM,
X`09`20`20`20`20`20device_name.dsc$a_pointer,`20
X`09`20`20`20`20`20`26device_name.dsc$w_length,`200`7D;
X
X`20`20memset(buffer,0,129);`20/*`20init`20buffer`20*/
X
X/*`20get`20real`20device`20name`20*/
X`20`20status`20=`20sys$getdviw(`200,0,`26dev_name_desc,`26item_list,`26iosb,0,
V0,0);
X
X/*`20check`20for`20success`20*/
X`20`20if`20(!`20(status`20`26`201))`20lib$stop`20(status);
X`20`20if`20(!`20(iosb.condition))`20lib$stop`20(status);
X
X/*`20check`20for`20slash`20separating`20the`20server`20name`20from`20the`20por
Vt`20name`20*/
X/*`20if`20there`20is`20no`20slash`20then`20this`20is`20not`20a`20terminal`20se
Vrver`20*/
X`20`20if`20((ptr`20=`20strrchr(buffer,'/'))`20!=`20NULL)`20`7B
X`09server`20=`20buffer;`09/*`20the`20server`20is`20first`20place`20in`20buffer
V`20*/
X`09port`20=`20ptr+1;`09`09/*`20separated`20with`20a`20slash`20is`20the`20port
V`20*/
X`09*ptr`20=`200;`09`09/*`20zero`20terminate`20server`20string`20*/
X`09serverlen`20=`20strlen(server);`09/*`20store`20server`20name`20length`20*/
V
X`09portlen`20=`20strlen(port);`09`09/*`20ditto`20for`20port`20name`20*/
X`09if`20(serverlen`20>`206)`20serverlen`20=`206;`09/*`20only`20room`20for`20si
Vx`20char`20*/
X`09if`20(portlen`20>`2016)`20portlen`20=`2016;`09/*`20sixteen`20in`20the`20rem
Voteid`20field`20*/
X
X#ifdef`20DEBUG
X`09printf("server`20%s`20`5Cn",server);
X`09printf("port`20%s`20`5Cn",port);
X#endif
X`09status`20=`20sys$cmkrnl(move_info,0);
X`09(void)`20sys$exit(status);`20
X`09`7D
X`7D
X
Xint`20move_info()
X`7B
X#ifdef`20__DECC
X`20`20#pragma`20extern_model`20save
X`20`20#pragma`20extern_model`20strict_refdef
X`20`20extern`20char`20ctl$t_nodename;
X`20`20extern`20char`20ctl$t_remoteid;
X`20`20#pragma`20extern_model`20restore
X#else`20/*`20VAXC`20*/
X`20`20globalref`20char`20ctl$t_nodename;
X`20`20globalref`20char`20ctl$t_remoteid;
X#endif
X
X`20`20lib$establish(lib$sig_to_ret);`09`20/*`20for`20the`20hackers`20*/
X`20`20strncpy((char`20*)`26ctl$t_nodename+1,server,serverlen);`09/*`20store`20
Vserver`20*/
X`20`20strncpy((char`20*)`26ctl$t_remoteid+1,port,portlen);`09/*`20store`20port
V`20*/
X`20`20ctl$t_nodename`20=`20serverlen;`09`09/*`20its`20counted`20string`20*/
X`20`20ctl$t_remoteid`20=`20portlen;`09`09/*`20so`20store`20the`20lengths`20*/
V
X`20`20return(1);`09`09`09`09/*`20always`20seems`20to`20work?`20*/
X`7D
$ call unpack ALPHA.DSJ;1 1416962012 "" 9 1 1
$ v=f$verify(v)
$ exit