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
0 commit comments