Article View: vmsnet.sources
Article #1UUCP log summary (UULOG), part 01/01
From: robert
Date: Wed, 28 Oct 1992 00:17
Date: Wed, 28 Oct 1992 00:17
316 lines
12093 bytes
12093 bytes
Submitted-by: robert@cpvax.cpses.tu.com
Posting-number: Volume 3, Issue 209
Archive-name: uucp_log_summary/part01
Here's a program to summarize UUCP.LOG that can be used to check your
phone bill. Output looks like this. When you receive mail, it makes an
attempt to tell you where it's going.
+- received
| +- sent
| | +- incoming news
| | | +- incoming mail
> node start time r s n m
> fallout 10/23-08:11:05 107 2 0 1 0
> uunet 10/23-08:28:17 0 0 0 0 0 BUSY
> uunet 10/23-08:44:16 0 0 0 0 0 BUSY
> uunet 10/23-09:00:18 133 6 4 0 3
> 1 86 robert
> 1 90 B_LMCGILVE
> 1 86 fallout!bruns
If you find it useful, drop me a line to give me a warm fuzzy!
-------------------------------------------------------------------------
Robert Eden 817-897-0491 Glen Rose, TX
Comanche Peak Steam Electric Station robert@cpvax.cpses.tu.com
^^^^^^^^^^^^^^^^^^^^^ politicese for a nuke plant
-------------------------------------------------------------------------
$! ------------------ CUT HERE -----------------------
$ v='f$verify(f$trnlnm("SHARE_VERIFY"))'
$!
$! This archive created by VMS_SHARE Version 7.2-007 22-FEB-1990
$! On 23-OCT-1992 09:55:38.75 By user ROBERT
$!
$! This VMS_SHARE Written by:
$! Andy Harper, Kings College London UK
$!
$! Acknowledgements to:
$! James Gray - Original VMS_SHARE
$! Michael Bednarek - Original Concept and implementation
$!
$! 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. AAAREADME.TXT;1
$! 2. UULOG.FOR;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 = "!"
$ 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
$ 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-PROCESS, Processing file ''P1'."
$ if .not. f$verify() then $ 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");b:=
CREATE_BUFFER(f,f);p:=SPAN(" ")@r&LINE_END;POSITION(BEGINNING_OF(b));
LOOP EXITIF SEARCH(p,FORWARD)=0;POSITION(r);ERASE(r);ENDLOOP;POSITION(
BEGINNING_OF(b));g:=0;LOOP EXITIF MARK(NONE)=END_OF(b);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 IF INDEX(CURRENT_LINE,"+-+-+-+-+-+-+-+")=
1 THEN g:=0;ENDIF;ENDIF;ERASE_LINE;ENDIF;ENDLOOP;t:="0123456789ABCDEF";
POSITION(BEGINNING_OF(b));LOOP r:=SEARCH("`",FORWARD);EXITIF r=0;POSITION(r);
ERASE(r);x1:=INDEX(t,ERASE_CHARACTER(1))-1;x2:=INDEX(t,ERASE_CHARACTER(1))-1;
COPY_TEXT(ASCII(16*x1+x2));ENDLOOP;WRITE_FILE(b,GET_INFO(COMMAND_LINE,
"output_file"));ENDPROCEDURE;Unpacker;QUIT;
$ delete/nolog 'f'*
$ CHECKSUM 'P1'
$ IF CHECKSUM$CHECKSUM .eqs. P2 THEN $ EXIT
$ e "-E-CHKSMFAIL, Checksum of ''P1' failed."
$ ENDSUBROUTINE
$START:
$ create 'f'
XHere's a program to summarize UUCP.LOG that can be used to check your
Xphone bill. Output looks like this. When you receive mail, it makes an
Xattempt to tell you where it's going.
X
X +- received r `20
X `7C +- sent
X `7C `7C +- incoming news
X `7C `7C `7C +- incoming mail
X> node start time r s n m`20
X> fallout 10/23-08:11:05 107 2 0 1 0
V `20
X> uunet 10/23-08:28:17 0 0 0 0 0 BUSY
V `20
X> uunet 10/23-08:44:16 0 0 0 0 0 BUSY
V `20
X> uunet 10/23-09:00:18 133 6 4 0 3
V `20
X> 1 86 robert
V `20
X> 1 90 B_LMCGILVE
V `20
X> 1 86 fallout!bruns
X
XIf you find it useful, drop me a line to give me a warm fuzzy!
X`20
X-------------------------------------------------------------------------
XRobert Eden 817-897-0491 Glen Rose, TX
XComanche Peak Steam Electric Station robert@cpvax.cpses.tu.com
X `5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`
V5E politicese for a nuke plant
X-------------------------------------------------------------------------
X
$ CALL UNPACK AAAREADME.TXT;1 526526495
$ create 'f'
X PROGRAM uulog
X IMPLICIT NONE
XC+
XC`20
XC ABSTRACT:`20
XC`20
XC This procedure summarizes the contents of the file pointed to
XC by the logical name UULOG. If setup as a foreign command, the
XC parameter is used to display info only about that node.
XC`20
XC uulog :== $uucp_bin:uulog
XC $ uulog
XC $ uulog uunet
XC
XC I know this procedure is not as good as it should be, this is
XC a quick-and-dirty job. I may update it later.
XC
XC
XC AUTHOR(S):`20
XC`20
XC Robert Eden - robert@cpvax.tu.com
XC Comanche Peak Steam Electric Station
XC Texas Utilities
XC POB 1002 (MZ E29)
XC Glen Rose, TX 76043
XC (817) 897-0491
XC
XC If you use this procedure, drop me a line... I'd like to know!
XC (It's good to feel useful sometimes)
XC`20
XC CREATION DATE:`20
XC`20
XC 23-OCT-1992
XC`20
XC`20
XC MODIFICATION HISTORY:
XC`20
XC Date `7C Name `7C Description
XC ----------------+-------+-------------------------------------------------
V----
XC `5Bchange_entry`5D
XC-
XCDEC$ IDENT '1.0'
X
X STRUCTURE /call_type/
X character*14 begin
X character*8 node
X integer sent,receive,secs,mail,news
X character*40 status
X END STRUCTURE !call_type
X
X STRUCTURE /rmail_type/
X character*40 add
X integer count,size
X END STRUCTURE !rmail_type
X
X
X RECORD /call_type/ call ! call info
X RECORD /rmail_type/ rmail(50) ! rmail command info
X
X character*255 line `20
X character*14 time
X character*40 add, cur_file
X character*8 onlynode,upnode
X integer rmail_count, i, cur_size, status, lib$get_foreign
X
X status = lib$get_foreign(line,%val(0),i,%val(0))
X if (.not.status) call lib$signal(%val(status))
X
X onlynode = line(1:i)
X
X open (unit=1, file='uulog', status='old', readonly)
X
X write(6,*) ' node start time r s n m '
X5 rmail_count = 0
X rmail(1).add = ' '`20
X call.begin = ' '
X call.status = ' '
X call.sent = 0
X call.receive = 0
X call.secs = 0
X call.mail = 0
X call.news = 0
X`20
XC
XC main loop
XC
X10 READ (UNIT=1, FMT='(A)', END=600) line `20
X
X IF (line(49:56).eq.'Calling' ) THEN
X if (call.begin .ne.' ') write(6,*) '**** missing end of call'
X call.begin = line(22:35)
X call.node = line(13:20)
X
X ELSE IF (line(49:65).eq.'They want to send') THEN
X call.status = ' '
X call.receive = call.receive + 1
X cur_file = line(70:69+INDEX (line(70:),' '))
X
X ELSE IF ((line(49:60) .eq.'File rcvd ok').and.
X + (cur_file(1:1).eq.'D' )) then
X READ (UNIT=line(65:), FMT=*) cur_size
X call.status = ' '
X
X ELSE IF (line(49:63).eq.'We want to send') THEN
X call.sent = call.sent + 1
X
X ELSE IF (line(49:69).eq.'Executing (rmail') THEN
X add = line(71:70+INDEX (line(71:),' '))
X i = 1
X DO WHILE ((rmail(1).add .ne. add).and.(i .lt. rmail_count))
X i = i + 1
X END DO
X if (rmail(i).add .ne. add) then
X rmail_count = rmail_count + 1
X i = rmail_count
X rmail(i).add = add
X rmail(i).count = 0
X rmail(i).size = 0
X endif
X rmail(i).count = rmail(i).count + 1
X rmail(i).size = rmail(i).size + cur_size
X call.mail = call.mail + 1
X
X ELSE IF (line(49:69).eq.'Executing (rnews') THEN
X call.news = call.news+1
X
X ELSE IF (line(49:62).eq.'Protocol stats') THEN
X call.status = line(65:64+index(line(65:),')')-1)
X
X ELSE IF (line(49:59).eq.'End of call') THEN
X READ (UNIT=line(75:), FMT=*) call.secs
X goto 500
X
X ELSE IF (line(47:59).eq.'* Script log ') THEN
X call.status = line(65:64+index(line(65:),')')-1)
X
X ELSE IF (line(47:58).eq.'* Other end ') THEN
X call.status = line(69:68+index(line(69:),')')-1)
X
X ELSE IF (line(47:55).eq.'* No ROK ') THEN
X call.status = line(49:60)
X
X ELSE IF (line(49:59).eq.'Call failed') THEN
X goto 500
X
X ELSE
XD write (7,*) 'unprocessed: '//line(1:70)
X END IF `20
X
X goto 10
XC
XC generate report
XC
XC123456789 123456789 123456789 123456789 123456789 123456789 123
XC node start stop s r time m n`20
XCnnnnnnnn aaaaaaaaaaaaaa bbbbbbbbbbbbbb ii ii iiii ii ii status
XC ii iiiiii add
X510 format(x,a8,x,a14,x,i5,4i3,x,a35)
X520 format(t40,i3,i7,x,a29)
X
X500 if (call.begin .eq.' ') goto 5
X
X call str$upcase(upnode , call.node)
X if ((onlynode.ne.' ').and.(onlynode.ne. upnode)) goto 5
X
X WRITE (6,510) call.node, call.begin,
X + call.secs, call.receive, call.sent,
X + call.news, call.mail, call.status
X IF (rmail_count.gt.0) THEN
X DO i=1,rmail_count
X write(6,520) rmail(i).count, rmail(i).size, rmail(i).add
X END DO
X rmail_count = 0
X rmail(1).add = ' '
X END IF
XC write (6,*) ' '
X goto 5
X
X600 close (1)
X END
$ CALL UNPACK UULOG.FOR;1 2000121200
$ v=f$verify(v)
$ EXIT
Technical Details
Message-ID:
<8847237@MVB.SAIC.COM>Path:
arc1-ca.pugleaf.net!sparky!uunet!think.com!sdd.hp.com!hamblin.math.byu.edu!arizona.edu!mvb.saic.com!vmsnet-sourcesShow Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!sparky!uunet!think.com!sdd.hp.com!hamblin.math.byu.edu!arizona.edu!mvb.saic.com!vmsnet-sources Newsgroups: vmsnet.sources Subject: UUCP log summary (UULOG), part 01/01 Message-ID: <8847237@MVB.SAIC.COM> From: robert@cpvax.cpses.tu.com Date: Wed, 28 Oct 1992 00:17:06 GMT Organization: Texas Utilities, Glen Rose TX Approved: Mark.Berryman@Mvb.Saic.Com Lines: 316