Consolidate license copies
[its.git] / system / dmpcpy.8
1 ; -*- MIDAS -*-
2 ;;; Copyright (c) 1999 Massachusetts Institute of Technology
3 ;;;
4 ;;; This program is free software; you can redistribute it and/or
5 ;;; modify it under the terms of the GNU General Public License as
6 ;;; published by the Free Software Foundation; either version 3 of the
7 ;;; License, or (at your option) any later version.
8 ;;;
9 ;;; This program is distributed in the hope that it will be useful,
10 ;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
11 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 ;;; General Public License for more details.
13 ;;;
14 ;;; You should have received a copy of the GNU General Public License
15 ;;; along with this program; if not, write to the Free Software
16 ;;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17
18
19         TITLE DMPCPY - COPY DUMPS FROM SWAP AREA TO FILE AREA
20
21 A=1
22 B=2
23 C=3
24 D=4
25 E=5
26 T=6
27 TT=7
28 P=17
29
30 CHDIRI=10
31 CHDSKI=11
32 CHDSKO=12
33
34 .INSRT SYSENG;FSDEFS >
35
36 PDL:    -20,,.
37         BLOCK 20
38
39 ;DIRECTORIES WHERE STUFF MIGHT GET DUMPED OUT OF TIMESHARING
40 DIRLST: SIXBIT/./
41         SIXBIT/CRASH/
42         SIXBIT/CRASH2/
43 NDIRS==.-DIRLST
44
45 DIR:    BLOCK 2000
46 BUF:    BLOCK 2000
47 \f
48 GO:     .CLOSE 1,               ;RUNS AS DAEMON
49         MOVE P,PDL
50 CHKTIM: .CALL [ SETZ ? SIXBIT /RQDATE/  ; don't frob with files
51                 SETZM A ]       ; if system doesn't know the time
52          .LOSE %LSSYS
53         AOJN A,KNOTIM
54         MOVEI A,30.*15.         ; 15 seconds
55         .SLEEP A,
56         JRST CHKTIM
57
58 KNOTIM: MOVSI E,-NDIRS
59 CHKDIR: .CALL [ SETZ ? SIXBIT/OPEN/
60                 [.BII,,CHDIRI]
61                 [SIXBIT/DSK/]
62                 [SIXBIT/.FILE./]
63                 [SIXBIT/(DIR)/]
64                 SETZ DIRLST(E)]
65          JRST NXTDIR            ; Hey, there might not -be- such a directory!
66         MOVE TT,[-2000,,DIR]
67         .IOT CHDIRI,TT
68         .CLOSE CHDIRI,
69         MOVE D,UDNAMP+DIR
70 CHKFIL: CAIL D,2000
71          JRST NXTDIR
72         MOVE TT,UNRNDM+DIR(D)
73         SKIPGE UNDATE+DIR(D)
74          TLNE TT,UNDUMP\UNIGFL\UNREAP\UNLINK    ; Don't screw with files
75           JRST NXTFIL                           ; you don't understand.
76         ;HERE WE HAVE FOUND A FILE WRITTEN OUT OF TIMESHARING
77         ;COPY IT SO AS TO (1) SET THE FILE DATE AND (2) GET IT OUT
78         ; OF THE SWAPPING AREA.  NTS FILES ARE WRITTEN IN THE SWAPPING
79         ; AREA TO DECREASE THE PROBABILITY OF CLOBBERING SOME OTHER FILE.
80         .CALL [ SETZ ? SIXBIT/OPEN/
81                 MOVES TT
82                 [.BII,,CHDSKI]
83                 [SIXBIT/DSK/]
84                 UNFN1+DIR(D)
85                 UNFN2+DIR(D)
86                 SETZ DIRLST(E) ]
87          JSP T,[ CAIN TT,%ENAPK
88                   JRST NXTFIL
89                  JRST LOSE ]
90         .CALL [ SETZ ? SIXBIT/OPEN/
91                 [.BIO,,CHDSKO]
92                 [SIXBIT/DSK/]
93                 [SIXBIT/_DMPCP/]
94                 [SIXBIT/OUTPUT/]
95                 SETZ DIRLST(E) ]
96          .LOSE %LSFIL
97 CPYFIL: MOVE TT,[-2000,,BUF]
98         .IOT CHDSKI,TT
99         MOVEI T,-BUF(TT)
100         JUMPE T,ENDFIL
101         MOVNS T
102         MOVSS T
103         HRRI T,BUF
104         .IOT CHDSKO,T
105         JRST CPYFIL
106
107 ENDFIL: .CLOSE CHDSKI,
108         .CALL [ SETZ ? 'RENMWO
109                 MOVEI CHDSKO
110                 UNFN1+DIR(D)
111                 SETZ UNFN2+DIR(D) ]
112          .LOSE %LSSYS
113         .CLOSE CHDSKO,
114 NXTFIL: ADDI D,LUNBLK
115         JRST CHKFIL
116
117 NXTDIR: AOBJN E,CHKDIR
118         .LOGOUT 1,
119         .VALUE
120
121 ; JSP T,LOSE is like .LOSE %LSFIL(TT)
122 LOSE:   .CALL [ SETZ ? SIXBIT /LOSE/
123                 MOVEI %LSFIL(TT)
124                 SETZI -2(T) ]
125          .LOSE %LSSYS
126
127 END GO