Skip to content

Commit 6aa9a87

Browse files
committed
first commit
0 parents  commit 6aa9a87

11 files changed

+2840
-0
lines changed

BBHeader.py

+206
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,206 @@
1+
import VMSBackupHelper
2+
import BaseHeader
3+
4+
@VMSBackupHelper.static_init
5+
class BBHeader(BaseHeader.BaseHeader) :
6+
7+
def static_init(self) -> None :
8+
9+
self.kAddressData = VMSBackupHelper.addr()
10+
11+
self.kAddressData.add("W_SIZE", None, None, VMSBackupHelper.sizeof.uint16_t)
12+
self.kAddressData.add("W_OPSYS", "W_SIZE", "W_SIZE", VMSBackupHelper.sizeof.uint16_t)
13+
self.kAddressData.add("W_SUBSYS", "W_OPSYS", "W_OPSYS", VMSBackupHelper.sizeof.uint16_t)
14+
self.kAddressData.add("W_APPLIC", "W_SUBSYS", "W_SUBSYS", VMSBackupHelper.sizeof.uint16_t)
15+
self.kAddressData.add("L_NUMBER", "W_APPLIC", "W_APPLIC", VMSBackupHelper.sizeof.uint32_t)
16+
self.kAddressData.add("FILL_1", "L_NUMBER", "L_NUMBER", VMSBackupHelper.sizeof.int8_t, 20)
17+
self.kAddressData.add("W_STRUCLEV", "FILL_1", "FILL_1", VMSBackupHelper.sizeof.uint16_t)
18+
self.kAddressData.add("B_STRUCVER", "W_STRUCLEV", None, VMSBackupHelper.sizeof.uint8_t)
19+
self.kAddressData.add("B_STRUCLEV", "B_STRUCVER", "B_STRUCVER", VMSBackupHelper.sizeof.uint8_t)
20+
self.kAddressData.add("W_VOLNUM", "W_STRUCLEV", "W_STRUCLEV", VMSBackupHelper.sizeof.uint16_t)
21+
self.kAddressData.add("L_CRC", "W_VOLNUM", "W_VOLNUM", VMSBackupHelper.sizeof.uint32_t)
22+
self.kAddressData.add("L_BLOCKSIZE", "L_CRC", "L_CRC", VMSBackupHelper.sizeof.uint32_t)
23+
self.kAddressData.add("L_FLAGS", "L_BLOCKSIZE", "L_BLOCKSIZE", VMSBackupHelper.sizeof.uint32_t)
24+
self.kAddressData.add("V_NOCRC", "L_FLAGS", None, VMSBackupHelper.sizeof.uint8_t)
25+
self.kAddressData.add("T_SSNAME", "L_FLAGS", "L_FLAGS", VMSBackupHelper.sizeof.int8_t, 32)
26+
self.kAddressData.add("W_FID", "T_SSNAME", "T_SSNAME", VMSBackupHelper.sizeof.uint16_t, 3)
27+
self.kAddressData.add("W_FID_NUM", "W_FID", None, VMSBackupHelper.sizeof.uint16_t)
28+
self.kAddressData.add("W_FID_SEQ", "W_FID_NUM", "W_FID_NUM", VMSBackupHelper.sizeof.uint16_t)
29+
self.kAddressData.add("W_FID_RVN", "W_FID_SEQ", "W_FID_SEQ", VMSBackupHelper.sizeof.uint16_t)
30+
self.kAddressData.add("B_FID_RVN", "W_FID_RVN", "W_FID_RVN", VMSBackupHelper.sizeof.uint8_t)
31+
self.kAddressData.add("B_FID_NMX", "B_FID_RVN", "B_FID_RVN", VMSBackupHelper.sizeof.uint8_t)
32+
self.kAddressData.add("W_DID", "W_FID", None, VMSBackupHelper.sizeof.uint16_t, 3)
33+
self.kAddressData.add("W_DID_NUM", "W_DID", None, VMSBackupHelper.sizeof.uint16_t)
34+
self.kAddressData.add("W_DID_SEQ", "W_DID_NUM", "W_DID_NUM", VMSBackupHelper.sizeof.uint8_t)
35+
self.kAddressData.add("W_DID_RVN", "W_DID_SEQ", "W_DID_SEQ", VMSBackupHelper.sizeof.uint8_t)
36+
self.kAddressData.add("B_DID_RVN", "W_DID_RVN", None, VMSBackupHelper.sizeof.uint8_t)
37+
self.kAddressData.add("B_DID_NMX", "B_DID_RVN", "B_DID_RVN", VMSBackupHelper.sizeof.uint8_t)
38+
self.kAddressData.add("T_FILENAME", "W_FID", "W_FID", VMSBackupHelper.sizeof.int8_t, 128)
39+
self.kAddressData.add("B_RTYPE", "T_FILENAME", "T_FILENAME", VMSBackupHelper.sizeof.uint8_t)
40+
self.kAddressData.add("B_RATTRIB", "B_RTYPE", "B_RTYPE", VMSBackupHelper.sizeof.uint8_t)
41+
self.kAddressData.add("W_RSIZE", "B_RATTRIB", "B_RATTRIB", VMSBackupHelper.sizeof.uint16_t)
42+
self.kAddressData.add("B_BKTSIZE", "W_RSIZE", "W_RSIZE", VMSBackupHelper.sizeof.uint8_t)
43+
self.kAddressData.add("B_VFCSIZE", "B_BKTSIZE", "B_BKTSIZE", VMSBackupHelper.sizeof.uint8_t)
44+
self.kAddressData.add("W_MAXREC", "B_VFCSIZE", "B_VFCSIZE", VMSBackupHelper.sizeof.uint16_t)
45+
self.kAddressData.add("L_FILESIZE", "W_MAXREC", "W_MAXREC", VMSBackupHelper.sizeof.uint32_t)
46+
self.kAddressData.add("T_RESERVED2", "L_FILESIZE", "L_FILESIZE", VMSBackupHelper.sizeof.int8_t, 22)
47+
self.kAddressData.add("W_CHECKSUM", "T_RESERVED2", "T_RESERVED2", VMSBackupHelper.sizeof.uint16_t)
48+
49+
#end
50+
51+
def W_SIZE(self) -> int :
52+
return self.kAddressData.get("W_SIZE", self.kBuffer)
53+
#end
54+
55+
def W_OPSYS(self) -> int :
56+
return self.kAddressData.get("W_OPSYS", self.kBuffer)
57+
#end
58+
59+
def W_SUBSYS(self) -> int :
60+
return self.kAddressData.get("W_SUBSYS", self.kBuffer)
61+
#end
62+
63+
def W_APPLIC(self) -> int :
64+
return self.kAddressData.get("W_APPLIC", self.kBuffer)
65+
#end
66+
67+
def L_NUMBER(self) -> int :
68+
return self.kAddressData.get("L_NUMBER", self.kBuffer)
69+
#end
70+
71+
def W_STRUCLEV(self) -> int :
72+
return self.kAddressData.get("W_STRUCLEV", self.kBuffer)
73+
#end
74+
75+
def B_STRUCVER(self) -> int :
76+
return self.kAddressData.get("B_STRUCVER", self.kBuffer)
77+
#end
78+
79+
def B_STRUCLEV(self) -> int :
80+
return self.kAddressData.get("B_STRUCLEV", self.kBuffer)
81+
#end
82+
83+
def W_VOLNUM(self) -> int :
84+
return self.kAddressData.get("W_VOLNUM", self.kBuffer)
85+
#end
86+
87+
def L_CRC(self) -> int :
88+
return self.kAddressData.get("L_CRC", self.kBuffer)
89+
#end
90+
91+
def L_BLOCKSIZE(self) -> int :
92+
return self.kAddressData.get("L_BLOCKSIZE", self.kBuffer)
93+
#end
94+
95+
def L_FLAGS(self) -> int :
96+
return self.kAddressData.get("L_FLAGS", self.kBuffer)
97+
#end
98+
99+
def V_NOCRC(self) -> int :
100+
return self.kAddressData.get("V_NOCRC", self.kBuffer)
101+
#end
102+
103+
def T_SSNAME(self) -> str :
104+
return "".join(map(chr,[k for k in self.kAddressData.get("T_SSNAME", self.kBuffer)[1:] if k > 0]))
105+
#end
106+
107+
def W_FID(self) -> int :
108+
return self.kAddressData.get("W_FID", self.kBuffer)
109+
#end
110+
111+
def W_FID_NUM(self) -> int :
112+
return self.kAddressData.get("W_FID_NUM", self.kBuffer)
113+
#end
114+
115+
def W_FID_SEQ(self) -> int :
116+
return self.kAddressData.get("W_FID_SEQ", self.kBuffer)
117+
#end
118+
119+
def W_FID_RVN(self) -> int :
120+
return self.kAddressData.get("W_FID_RVN", self.kBuffer)
121+
#end
122+
123+
def B_FID_RVN(self) -> int :
124+
return self.kAddressData.get("B_FID_RVN", self.kBuffer)
125+
#end
126+
127+
def B_FID_NMX(self) -> int :
128+
return self.kAddressData.get("B_FID_NMX", self.kBuffer)
129+
#end
130+
131+
def W_DID(self) -> int :
132+
return self.kAddressData.get("W_DID", self.kBuffer)
133+
#end
134+
135+
def W_DID_NUM(self) -> int :
136+
return self.kAddressData.get("W_DID_NUM", self.kBuffer)
137+
#end
138+
139+
def W_DID_SEQ(self) -> int :
140+
return self.kAddressData.get("W_DID_SEQ", self.kBuffer)
141+
#end
142+
143+
def W_DID_RVN(self) -> int :
144+
return self.kAddressData.get("W_DID_RVN", self.kBuffer)
145+
#end
146+
147+
def B_DID_RVN(self) -> int :
148+
return self.kAddressData.get("B_DID_RVN", self.kBuffer)
149+
#end
150+
151+
def B_DID_NMX(self) -> int :
152+
return self.kAddressData.get("B_DID_NMX", self.kBuffer)
153+
#end
154+
155+
def T_FILENAME(self) -> int :
156+
return self.kAddressData.get("T_FILENAME", self.kBuffer)
157+
#end
158+
159+
def B_RTYPE(self) -> int :
160+
return self.kAddressData.get("B_RTYPE", self.kBuffer)
161+
#end
162+
163+
def B_RATTRIB(self) -> int :
164+
return self.kAddressData.get("B_RATTRIB", self.kBuffer)
165+
#end
166+
167+
def W_RSIZE(self) -> int :
168+
return self.kAddressData.get("W_RSIZE", self.kBuffer)
169+
#end
170+
171+
def B_BKTSIZE(self) -> int :
172+
return self.kAddressData.get("B_BKTSIZE", self.kBuffer)
173+
#end
174+
175+
def B_VFCSIZE(self) -> int :
176+
return self.kAddressData.get("B_VFCSIZE", self.kBuffer)
177+
#end
178+
179+
def W_MAXREC(self) -> int :
180+
return self.kAddressData.get("W_MAXREC", self.kBuffer)
181+
#end
182+
183+
def L_FILESIZE(self) -> int :
184+
return self.kAddressData.get("L_FILESIZE", self.kBuffer)
185+
#end
186+
187+
def W_CHECKSUM(self) -> int :
188+
return self.kAddressData.get("W_CHECKSUM", self.kBuffer)
189+
#end
190+
191+
def GetLength(self) -> bool :
192+
193+
return (self.W_SIZE())
194+
195+
#end
196+
197+
def Validate(self, kBaseHeader) -> bool :
198+
199+
return (self.L_BLOCKSIZE () == 0) or (self.L_BLOCKSIZE () == kBaseHeader.L_BLOCKSIZE ())
200+
201+
#end
202+
203+
kAddressData : VMSBackupHelper.addr
204+
kBuffer : bytes
205+
206+
#end

BRHeader.py

+96
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
import VMSBackupHelper
2+
import BaseHeader
3+
import enum
4+
5+
@VMSBackupHelper.static_init
6+
class BRHeader(BaseHeader.BaseHeader) :
7+
8+
class RecordType(enum.IntEnum) :
9+
RECORD_NULL = 0, # null record
10+
RECORD_SUMMARY = 1, # BACKUP summary record
11+
RECORD_VOLUME = 2, # volume summary record
12+
RECORD_FILE = 3, # file attribute record
13+
RECORD_VBN = 4, # file virtual block record
14+
RECORD_PHYSVOL = 5, # physical volume attribute record
15+
RECORD_LBN = 6, # physical volume logical block record
16+
RECORD_FID = 7, # file ID record
17+
RECORD_FILE_EXT = 8, # file attribute extension record
18+
RECORD_LBN_576 = 9, # 576 byte LBN record
19+
RECORD_RS_DIRATTR = 10, # RSTS directory attribute record
20+
RECORD_ALIAS = 11,
21+
RECORD_MAX_RTYPE = 12 # max record type
22+
23+
def static_init(self) -> None :
24+
25+
self.kAddressData = VMSBackupHelper.addr()
26+
27+
self.kAddressData.add("W_RSIZE", None, None, VMSBackupHelper.sizeof.uint16_t)
28+
self.kAddressData.add("W_RTYPE", "W_RSIZE", "W_RSIZE", VMSBackupHelper.sizeof.uint16_t)
29+
self.kAddressData.add("L_FLAGS", "W_RTYPE", "W_RTYPE", VMSBackupHelper.sizeof.uint32_t)
30+
self.kAddressData.add("V_BADDATA", "L_FLAGS", None, VMSBackupHelper.sizeof.uint8_t)
31+
self.kAddressData.add("V_DIRECTORY", "L_FLAGS", None, VMSBackupHelper.sizeof.uint8_t)
32+
self.kAddressData.add("V_NONSEQUENTIAL", "L_FLAGS", None, VMSBackupHelper.sizeof.uint8_t)
33+
self.kAddressData.add("V_BLOCKERRS", "L_FLAGS", None, VMSBackupHelper.sizeof.uint8_t)
34+
self.kAddressData.add("V_ALIAS_ENTRY", "L_FLAGS", None, VMSBackupHelper.sizeof.uint8_t)
35+
self.kAddressData.add("V_HEADONLY", "L_FLAGS", None, VMSBackupHelper.sizeof.uint8_t)
36+
self.kAddressData.add("L_ADDRESS", "L_FLAGS", "L_FLAGS", VMSBackupHelper.sizeof.uint32_t)
37+
self.kAddressData.add("W_BLOCKFLAGS", "L_ADDRESS", "L_ADDRESS", VMSBackupHelper.sizeof.uint16_t)
38+
self.kAddressData.add("W_RESERVED", "W_BLOCKFLAGS", "W_BLOCKFLAGS", VMSBackupHelper.sizeof.uint16_t)
39+
40+
#end
41+
42+
def W_RSIZE(self) -> int :
43+
return self.kAddressData.get("W_RSIZE", self.kBuffer)
44+
#end
45+
46+
def W_RTYPE(self) -> int :
47+
return self.kAddressData.get("W_RTYPE", self.kBuffer)
48+
#end
49+
50+
def L_FLAGS(self) -> int :
51+
return self.kAddressData.get("L_FLAGS", self.kBuffer)
52+
#end
53+
54+
def V_BADDATA(self) -> bool :
55+
return (self.kAddressData.get("V_BADDATA", self.kBuffer) & 0x80) == 0x80
56+
#end
57+
58+
def V_DIRECTORY(self) -> bool :
59+
return (self.kAddressData.get("V_DIRECTORY", self.kBuffer) & 0x40) == 0x40
60+
#end
61+
62+
def V_NONSEQUENTIAL(self) -> bool :
63+
return (self.kAddressData.get("V_NONSEQUENTIAL", self.kBuffer) & 0x20) == 0x20
64+
#end
65+
66+
def V_BLOCKERRS(self) -> bool :
67+
return (self.kAddressData.get("V_BLOCKERRS", self.kBuffer) & 0x10) == 0x10
68+
#end
69+
70+
def V_ALIAS_ENTRY(self) -> bool :
71+
return (self.kAddressData.get("V_ALIAS_ENTRY", self.kBuffer) & 0x08) == 0x08
72+
#end
73+
74+
def V_HEADONLY(self) -> bool :
75+
return (self.kAddressData.get("V_HEADONLY", self.kBuffer) & 0x04) == 0x04
76+
#end
77+
78+
def L_ADDRESS(self) -> int :
79+
return self.kAddressData.get("L_ADDRESS", self.kBuffer)
80+
#end
81+
82+
def W_BLOCKFLAGS(self) -> int :
83+
return self.kAddressData.get("W_BLOCKFLAGS", self.kBuffer)
84+
#end
85+
86+
def W_RESERVED(self) -> int :
87+
return self.kAddressData.get("W_RESERVED", self.kBuffer)
88+
#end
89+
90+
def GetLength(self) -> bool :
91+
92+
return (self.kAddressData.length())
93+
94+
#end
95+
96+
#end

BSAHeader.py

+48
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
import VMSBackupHelper
2+
import BaseHeader
3+
import VMSBackupRAMCache
4+
5+
class BSAHeader(BaseHeader.BaseHeader) :
6+
7+
def __init__(self) -> None :
8+
9+
self.kAddressData = VMSBackupHelper.addr()
10+
11+
self.kAddressData.add("W_SIZE", None, None, VMSBackupHelper.sizeof.uint16_t)
12+
self.kAddressData.add("W_TYPE", "W_SIZE", "W_SIZE", VMSBackupHelper.sizeof.uint16_t)
13+
14+
#end
15+
16+
def LoadHeaderFromFile(self, kFile : VMSBackupRAMCache.VMSBackupRAMCache) -> None :
17+
super().LoadHeaderFromFile(kFile=kFile)
18+
self.Add_T_Text()
19+
super().ExtendHeaderFromFile(kFile=kFile)
20+
#end
21+
22+
def LoadHeaderFromBuffer(self, kBlock : bytes) -> None :
23+
super().LoadHeaderFromBuffer(kBlock=kBlock)
24+
self.Add_T_Text()
25+
super().ExtendHeaderFromBuffer(kBlock=kBlock)
26+
#end
27+
28+
def Add_T_Text(self) :
29+
self.kAddressData.add("T_TEXT", "W_TYPE", "W_TYPE", VMSBackupHelper.sizeof.uint8_t, self.W_SIZE())
30+
#end
31+
32+
def W_SIZE(self) -> int :
33+
return self.kAddressData.get("W_SIZE", self.kBuffer)
34+
#end
35+
36+
def W_TYPE(self) -> int :
37+
return self.kAddressData.get("W_TYPE", self.kBuffer)
38+
#end
39+
40+
def T_TEXT(self) -> list[int] :
41+
return self.kAddressData.get("T_TEXT", self.kBuffer)
42+
#end
43+
44+
def GetLength(self) :
45+
return self.kAddressData.length()
46+
#end
47+
48+
#end

0 commit comments

Comments
 (0)