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