diff --git a/build/build.tcl b/build/build.tcl index 45a6fd94..8e063fec 100644 --- a/build/build.tcl +++ b/build/build.tcl @@ -462,6 +462,10 @@ source $build/muddle.tcl respond "*" ":midas sys3;ts lsrprt_sysen1; lsrprt\r" expect ":KILL" +respond "*" ":midas sysbin;_sra; gcmail\r" +expect ":KILL" +respond "*" ":link dragon; hourly gcmail,sysbin; gcmail bin\r" + bootable_tapes # make output.tape diff --git a/doc/programs.md b/doc/programs.md index 7425838b..f17b6142 100644 --- a/doc/programs.md +++ b/doc/programs.md @@ -61,6 +61,7 @@ - FRETTY, display list of free TTYs. - FTPS, FTP Server. - FTPU, FTP Client. +- GCMAIL, delete old files from .MAIL. - GETSYM, copy all symbols from running ITS to a file. - GMSGS, copy system messages to mail file. - H3MAKE, a job that requests DRAGON to build host table. diff --git a/src/sra/gcmail.17 b/src/sra/gcmail.17 new file mode 100755 index 00000000..836cd4db --- /dev/null +++ b/src/sra/gcmail.17 @@ -0,0 +1,127 @@ +;-*-midas-*- +title gcmail -- gc the .mail.; directory (or clone thereof) + +;; We flush DSK:.MAIL.;OSTATS * files that are older than AGE +;; seconds, provided the file is backed up and isn't set no-reap. + days==24.*60.*60. +age: 7*days + +irp z,,[a,b,c,d,e,q] + z==.irpcnt+1 +termin + +p==17 ? call=: ? ret=: +.insrt ai:system;t20mac > + +$$abs==1 +.insrt ai:syseng;datime > + +.begin fsdefs +.insrt ai:system;fsdefs > +.end fsdefs + +define syscal foo,bar + .call [setz ? sixbit 'foo' ? bar ((setz))] +termin + +.scalar ufd(ufdlen==2000), pdl(pdllen==200), curtad, dir + +dev: sixbit |DSK | + +dirtab: sixbit |GCMAIL| ? sixbit |.MAIL.| + sixbit |GCBULK| ? sixbit |.BULK.| + 0 ? sixbit |.MAIL.| + +lstfn1: sixbit |.FILE.| +lstfn2: sixbit |(DIR) | + + + +gcmail: move p,[-pdllen,,pdl-1] + .suset [.rxjname,,1] + setz 2, + do. + skipe dirtab(2) + camn 1,dirtab(2) + exit. + addi 2,2 + loop. + enddo. + move 1,dirtab+1(2) + movem 1,dir + .suset [.roption,,0] + syscal open,[movsi .bii ? movei ? dev ? lstfn1 ? lstfn2 ? dir] + .lose + move 1,[-ufdlen,,ufd] + .iot 1 + skipge 1 + .lose + .close 1, + + move 1,ufd+fsdefs"udname + came 1,dir + .lose + + call datime"timgtn + .lose + movem a,curtad + +; tlne %opddt +; .value [asciz " p"] + + move q,ufd+fsdefs"udnamp + addi q,ufd + do. + move 1,fsdefs"unfn1(q) + came 1,[sixbit 'OSTATS'] + ifskp. + move 1,fsdefs"unrndm(q) + tlnn 1,fsdefs"unreap + tlnn 1,fsdefs"undump + anskp. + movei 1,fsdefs"unfn2(q) + call isanum + anskp. + move a,fsdefs"undate(q) + call isold + anskp. + tlne %opddt + ifskp. + syscal delete,[dev ? fsdefs"unfn1(q) ? fsdefs"unfn2(q) ? dir] + .lose + else. + .value [asciz ": Delete îq/ ' 'î"] + endif. + endif. + addi q,fsdefs"lunblk + caige q,ufd+ufdlen + loop. + enddo. + + .logout 1, + jrst .-1 + +isanum: hrli 1,440600 + movei 2,6 + do. + ildb 3,1 + jumpe 3,.+4 + cail 3,'0 + caile 3,'9 + ret + sojg 2,top. + enddo. + aos (p) + ret + +isold: call datime"timnet + add a,age + camge a,curtad + aos (p) + ret + + +...var::variab ; sic +...lit: consta + + end gcmail