Rev 517 | Rev 814 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 517 | Rev 589 | ||
---|---|---|---|
Line 4... | Line 4... | ||
4 | .cur_pos dq ? |
4 | .cur_pos dq ? |
5 | .filesize dq ? |
5 | .filesize dq ? |
6 | .buf_pos dd ? |
6 | .buf_pos dd ? |
7 | .buf_size dd ? |
7 | .buf_size dd ? |
8 | .col dq ? |
8 | .col dq ? |
- | 9 | .hPlugin dd ? |
|
- | 10 | .hFile dd ? |
|
- | 11 | .hWorkFile dd ? |
|
9 | .encoding db ? |
12 | .encoding db ? |
10 | .bEofReached db ? |
13 | .bEofReached db ? |
11 | .flags db ? ; & 1: hex mode |
14 | .flags db ? ; & 1: hex mode |
12 | ; & 2: unwrap |
15 | ; & 2: unwrap |
13 | ; & 4: big-endian unicode |
16 | ; & 4: big-endian unicode |
14 | rb 1 |
17 | rb 1 |
15 | .filename rb 1024 |
18 | .filename rb 1024 |
- | 19 | .hostname rb 1024 |
|
16 | .buf rb 16384 |
20 | .buf rb 16384 |
17 | .size = $ |
21 | .size = $ |
18 | end virtual |
22 | end virtual |
Line 19... | Line 23... | ||
19 | 23 | ||
Line 32... | Line 36... | ||
32 | pop ecx |
36 | pop ecx |
33 | test eax, eax |
37 | test eax, eax |
34 | jnz @f |
38 | jnz @f |
35 | ret |
39 | ret |
36 | @@: |
40 | @@: |
- | 41 | mov eax, dword [esi+panel1_hPlugin-panel1_dir] |
|
- | 42 | mov [ebp+viewer_data.hPlugin], eax |
|
- | 43 | test eax, eax |
|
- | 44 | jz .nocopyhostname |
|
- | 45 | lea edi, [ebp+viewer_data.hostname] |
|
- | 46 | push esi |
|
- | 47 | mov eax, dword [esi+panel1_parents-panel1_dir] |
|
- | 48 | mov esi, dword [esi+panel1_parents_sz-panel1_dir] |
|
- | 49 | add esi, eax |
|
- | 50 | @@: |
|
- | 51 | dec esi |
|
- | 52 | cmp byte [esi-1], 0 |
|
- | 53 | jz @f |
|
- | 54 | cmp byte [esi-1], '/' |
|
- | 55 | jnz @b |
|
- | 56 | @@: |
|
- | 57 | lodsb |
|
- | 58 | stosb |
|
- | 59 | test al, al |
|
- | 60 | jnz @b |
|
- | 61 | pop esi |
|
- | 62 | .nocopyhostname: |
|
- | 63 | mov eax, dword [esi+panel1_hFile-panel1_dir] |
|
- | 64 | mov [ebp+viewer_data.hFile], eax |
|
37 | mov [ebp+viewer_data.encoding], encodings.cp866 |
65 | mov [ebp+viewer_data.encoding], encodings.cp866 |
38 | mov [ebp+viewer_data.flags], 0 |
66 | mov [ebp+viewer_data.flags], 0 |
39 | and dword [ebp+viewer_data.col], 0 |
67 | and dword [ebp+viewer_data.col], 0 |
40 | and dword [ebp+viewer_data.col+4], 0 |
68 | and dword [ebp+viewer_data.col+4], 0 |
41 | lea edi, [ebp+viewer_data.filename] |
69 | lea edi, [ebp+viewer_data.filename] |
Line 46... | Line 74... | ||
46 | jz @f |
74 | jz @f |
47 | stosb |
75 | stosb |
48 | jmp @b |
76 | jmp @b |
49 | @@: |
77 | @@: |
50 | lea esi, [ecx+40] |
78 | lea esi, [ecx+40] |
- | 79 | cmp byte [edi-1], '/' |
|
- | 80 | jz @f |
|
51 | mov al, '/' |
81 | mov al, '/' |
52 | stosb |
82 | stosb |
53 | @@: |
83 | @@: |
54 | lodsb |
84 | lodsb |
55 | stosb |
85 | stosb |
Line 58... | Line 88... | ||
58 | pop eax |
88 | pop eax |
59 | push eax |
89 | push eax |
60 | mov ebx, attrinfo |
90 | mov ebx, attrinfo |
61 | mov [ebx+21], eax |
91 | mov [ebx+21], eax |
62 | .attr_retry: |
92 | .attr_retry: |
- | 93 | mov edx, [ebp+viewer_data.hPlugin] |
|
- | 94 | test edx, edx |
|
- | 95 | jz .attr_native |
|
- | 96 | push ebp |
|
- | 97 | push dword [ebx+16] |
|
- | 98 | push eax |
|
- | 99 | push [ebp+viewer_data.hFile] |
|
- | 100 | call [edx+PluginInfo.getattr] |
|
- | 101 | pop ebp |
|
- | 102 | jmp .attr_common |
|
- | 103 | .attr_native: |
|
63 | push 70 |
104 | push 70 |
64 | pop eax |
105 | pop eax |
65 | int 40h |
106 | int 40h |
- | 107 | .attr_common: |
|
66 | test eax, eax |
108 | test eax, eax |
67 | jz @f |
109 | jz @f |
68 | lea ebx, [ebp+viewer_data.filename] |
110 | lea ebx, [ebp+viewer_data.filename] |
69 | push ebx |
111 | push ebx |
70 | push aCannotReadFile |
112 | push aCannotReadFile |
Line 73... | Line 115... | ||
73 | mov eax, esp |
115 | mov eax, esp |
74 | push RetryOrCancelBtn |
116 | push RetryOrCancelBtn |
75 | push 2 |
117 | push 2 |
76 | push eax |
118 | push eax |
77 | push 3 |
119 | push 3 |
78 | push -1 |
- | |
79 | push -1 |
- | |
80 | push aError |
- | |
81 | call SayErr |
120 | call SayErr |
82 | add esp, 3*4 |
121 | add esp, 3*4 |
83 | mov ebx, attrinfo |
122 | mov ebx, attrinfo |
84 | test eax, eax |
123 | test eax, eax |
85 | jz .attr_retry |
124 | jz .attr_retry |
- | 125 | pop eax |
|
86 | jmp delete_active_screen |
126 | jmp delete_active_screen |
87 | @@: |
127 | @@: |
88 | mov eax, dword [attrinfo.attr+32] |
128 | mov eax, dword [attrinfo.attr+32] |
89 | mov dword [ebp+viewer_data.filesize], eax |
129 | mov dword [ebp+viewer_data.filesize], eax |
90 | mov eax, dword [attrinfo.attr+36] |
130 | mov eax, dword [attrinfo.attr+36] |
Line 100... | Line 140... | ||
100 | mov [ebx+readinfo.size-readinfo], 16384 |
140 | mov [ebx+readinfo.size-readinfo], 16384 |
101 | lea eax, [ebp+viewer_data.buf] |
141 | lea eax, [ebp+viewer_data.buf] |
102 | mov [readinfo.data], eax |
142 | mov [readinfo.data], eax |
103 | mov [ebp+viewer_data.buf_pos], eax |
143 | mov [ebp+viewer_data.buf_pos], eax |
104 | pop dword [readinfo.name] |
144 | pop dword [readinfo.name] |
- | 145 | mov eax, [ebp+viewer_data.hPlugin] |
|
- | 146 | test eax, eax |
|
- | 147 | jz .retry |
|
- | 148 | push ebx ebp |
|
- | 149 | push O_READ |
|
- | 150 | push dword [readinfo.name] |
|
- | 151 | push [ebp+viewer_data.hFile] |
|
- | 152 | call [eax+PluginInfo.open] |
|
- | 153 | pop ebp ebx |
|
- | 154 | mov [ebp+viewer_data.hWorkFile], eax |
|
- | 155 | test eax, eax |
|
- | 156 | jnz .retry |
|
- | 157 | push ContinueBtn |
|
- | 158 | push 1 |
|
- | 159 | push aCannotOpenFile_ptr |
|
- | 160 | push 1 |
|
- | 161 | call SayErr |
|
- | 162 | jmp delete_active_screen |
|
105 | .retry: |
163 | .retry: |
- | 164 | mov eax, [ebp+viewer_data.hPlugin] |
|
- | 165 | test eax, eax |
|
- | 166 | jz .read_native |
|
- | 167 | push ebp |
|
- | 168 | push 16384 |
|
- | 169 | push [ebx+readinfo.data-readinfo] |
|
- | 170 | push [ebp+viewer_data.hWorkFile] |
|
- | 171 | call [eax+PluginInfo.read] |
|
- | 172 | pop ebp |
|
- | 173 | cmp eax, -1 |
|
- | 174 | jz .readok ; let's hope that plugin says error itself |
|
- | 175 | mov [ebp+viewer_data.buf_size], eax |
|
- | 176 | mov ebx, eax |
|
- | 177 | jmp .readok |
|
- | 178 | .read_native: |
|
106 | push 70 |
179 | push 70 |
107 | pop eax |
180 | pop eax |
108 | int 40h |
181 | int 40h |
109 | mov [ebp+viewer_data.buf_size], ebx |
182 | mov [ebp+viewer_data.buf_size], ebx |
110 | test eax, eax |
183 | test eax, eax |
111 | jz .readok |
184 | jz .readok |
112 | cmp eax, 6 |
185 | cmp eax, 6 |
113 | jz .readok |
186 | jz .readok |
- | 187 | .readerr: |
|
114 | lea ebx, [ebp+viewer_data.filename] |
188 | lea ebx, [ebp+viewer_data.filename] |
115 | push ebx |
189 | push ebx |
116 | push aCannotReadFile |
190 | push aCannotReadFile |
117 | call get_error_msg |
191 | call get_error_msg |
118 | push eax |
192 | push eax |
119 | mov eax, esp |
193 | mov eax, esp |
120 | push RetryOrCancelBtn |
194 | push RetryOrCancelBtn |
121 | push 2 |
195 | push 2 |
122 | push eax |
196 | push eax |
123 | push 3 |
197 | push 3 |
124 | push -1 |
- | |
125 | push -1 |
- | |
126 | push aError |
- | |
127 | call SayErr |
198 | call SayErr |
128 | add esp, 3*4 |
199 | add esp, 3*4 |
129 | mov ebx, readinfo |
200 | mov ebx, readinfo |
130 | test eax, eax |
201 | test eax, eax |
131 | jz .attr_retry |
202 | jz .attr_retry |
Line 192... | Line 263... | ||
192 | mov [readinfo.data], edi |
263 | mov [readinfo.data], edi |
193 | lea eax, [ebp+viewer_data.filename] |
264 | lea eax, [ebp+viewer_data.filename] |
194 | mov [readinfo.name], eax |
265 | mov [readinfo.name], eax |
195 | .readretry: |
266 | .readretry: |
196 | mov ebx, readinfo |
267 | mov ebx, readinfo |
- | 268 | mov eax, [ebp+viewer_data.hPlugin] |
|
- | 269 | test eax, eax |
|
- | 270 | jz .native |
|
- | 271 | push ecx ebp |
|
- | 272 | push 8192 |
|
- | 273 | push [ebx+readinfo.data-readinfo] |
|
- | 274 | push [ebp+viewer_data.hWorkFile] |
|
- | 275 | call [eax+PluginInfo.read] |
|
- | 276 | pop ebp ecx |
|
- | 277 | mov ebx, eax |
|
- | 278 | cmp eax, -1 |
|
- | 279 | jnz .readok |
|
- | 280 | xor ebx, ebx |
|
- | 281 | jmp .readok |
|
- | 282 | .native: |
|
197 | push 70 |
283 | push 70 |
198 | pop eax |
284 | pop eax |
199 | int 40h |
285 | int 40h |
200 | test eax, eax |
286 | test eax, eax |
201 | jz .readok |
287 | jz .readok |
202 | cmp eax, 6 |
288 | cmp eax, 6 |
203 | jz .readok |
289 | jz .readok |
- | 290 | .readerr: |
|
204 | call ask_retry_ignore |
291 | call ask_retry_ignore |
205 | jz .readretry |
292 | jz .readretry |
206 | .readok: |
293 | .readok: |
207 | sub [ebp+viewer_data.buf_pos], 8192 |
294 | sub [ebp+viewer_data.buf_pos], 8192 |
208 | add ebx, 16384-8192 |
295 | add ebx, 16384-8192 |
Line 974... | Line 1061... | ||
974 | mov [ebx+12], eax |
1061 | mov [ebx+12], eax |
975 | lea eax, [ebp+viewer_data.buf] |
1062 | lea eax, [ebp+viewer_data.buf] |
976 | mov [ebx+16], eax |
1063 | mov [ebx+16], eax |
977 | lea eax, [ebp+viewer_data.filename] |
1064 | lea eax, [ebp+viewer_data.filename] |
978 | mov [ebx+21], eax |
1065 | mov [ebx+21], eax |
979 | push 70 |
1066 | call .q |
980 | pop eax |
- | |
981 | int 40h |
- | |
982 | test eax, eax |
- | |
983 | jz .readok |
- | |
984 | cmp eax, 6 |
- | |
985 | jz .readok |
- | |
986 | call ask_retry_ignore |
- | |
987 | jz .doread |
- | |
988 | .readok: |
- | |
989 | cmp ebx, [readinfo.size] |
1067 | cmp ebx, [readinfo.size] |
990 | jnz @f |
1068 | jnz @f |
991 | add ebx, [ebp+viewer_data.buf_size] |
1069 | add ebx, [ebp+viewer_data.buf_size] |
992 | @@: |
1070 | @@: |
993 | .ret: |
1071 | .ret: |
Line 1025... | Line 1103... | ||
1025 | adc edx, 0 |
1103 | adc edx, 0 |
1026 | mov [ebx+8], edx |
1104 | mov [ebx+8], edx |
1027 | mov [ebx+12], eax |
1105 | mov [ebx+12], eax |
1028 | lea eax, [ebp+viewer_data.filename] |
1106 | lea eax, [ebp+viewer_data.filename] |
1029 | mov [ebx+21], eax |
1107 | mov [ebx+21], eax |
- | 1108 | call .q |
|
- | 1109 | sub ebx, [readinfo.size] |
|
- | 1110 | add ebx, 16384 |
|
- | 1111 | jmp .ret |
|
- | 1112 | ||
- | 1113 | .q: |
|
- | 1114 | mov ebx, readinfo |
|
- | 1115 | mov eax, [ebp+viewer_data.hPlugin] |
|
- | 1116 | test eax, eax |
|
- | 1117 | jz .native |
|
- | 1118 | push ebp |
|
- | 1119 | push dword [ebx+12] |
|
- | 1120 | push dword [ebx+16] |
|
- | 1121 | push [ebp+viewer_data.hWorkFile] |
|
- | 1122 | push eax |
|
- | 1123 | push dword [ebx+8] |
|
- | 1124 | push dword [ebx+4] |
|
- | 1125 | push [ebp+viewer_data.hWorkFile] |
|
- | 1126 | call [eax+PluginInfo.setpos] |
|
- | 1127 | pop eax |
|
- | 1128 | call [eax+PluginInfo.read] |
|
- | 1129 | pop ebp |
|
- | 1130 | mov ebx, eax |
|
- | 1131 | cmp eax, -1 |
|
- | 1132 | jnz @f |
|
- | 1133 | xor ebx, ebx |
|
1030 | @@: |
1134 | @@: |
- | 1135 | ret |
|
- | 1136 | .native: |
|
1031 | push 70 |
1137 | push 70 |
1032 | pop eax |
1138 | pop eax |
1033 | int 40h |
1139 | int 40h |
1034 | test eax, eax |
1140 | test eax, eax |
1035 | jz @f |
1141 | jz .readok |
1036 | cmp eax, 6 |
1142 | cmp eax, 6 |
1037 | jz @f |
1143 | jz .readok |
- | 1144 | .readerr: |
|
1038 | call ask_retry_ignore |
1145 | call ask_retry_ignore |
1039 | jnz @f |
- | |
1040 | mov ebx, readinfo |
- | |
1041 | jmp @b |
1146 | jz .q |
1042 | @@: |
1147 | .readok: |
1043 | sub ebx, [readinfo.size] |
- | |
1044 | add ebx, 16384 |
- | |
1045 | jmp .ret |
1148 | ret |
Line 1046... | Line 1149... | ||
1046 | 1149 | ||
1047 | ask_retry_ignore: |
1150 | ask_retry_ignore: |
1048 | push esi |
1151 | push esi |
1049 | lea esi, [ebp+viewer_data.filename] |
1152 | lea esi, [ebp+viewer_data.filename] |
Line 1054... | Line 1157... | ||
1054 | mov eax, esp |
1157 | mov eax, esp |
1055 | push RetryOrIgnoreBtn |
1158 | push RetryOrIgnoreBtn |
1056 | push 2 |
1159 | push 2 |
1057 | push eax |
1160 | push eax |
1058 | push 3 |
1161 | push 3 |
1059 | push -1 |
- | |
1060 | push -1 |
- | |
1061 | push aError |
- | |
1062 | call SayErr |
1162 | call SayErr |
1063 | add esp, 3*4 |
1163 | add esp, 3*4 |
1064 | pop esi |
1164 | pop esi |
1065 | test eax, eax |
1165 | test eax, eax |
1066 | ret |
1166 | ret |
Line 1266... | Line 1366... | ||
1266 | viewer_OnRedraw: |
1366 | viewer_OnRedraw: |
1267 | call viewer_set_keybar |
1367 | call viewer_set_keybar |
1268 | call viewer_draw_text |
1368 | call viewer_draw_text |
1269 | ret |
1369 | ret |
Line -... | Line 1370... | ||
- | 1370 | ||
- | 1371 | viewer_OnExit: |
|
- | 1372 | mov edx, [ebp+viewer_data.hPlugin] |
|
- | 1373 | test edx, edx |
|
- | 1374 | jz @f |
|
- | 1375 | and [ebp+viewer_data.hPlugin], 0 |
|
- | 1376 | push edx ebp |
|
- | 1377 | push [ebp+viewer_data.hWorkFile] |
|
- | 1378 | call [edx+PluginInfo.close] |
|
- | 1379 | pop ebp edx |
|
- | 1380 | mov ebx, [ebp+viewer_data.hFile] |
|
- | 1381 | call close_handle_if_unused |
|
- | 1382 | @@: |
|
- | 1383 | ret |
|
- | 1384 | ||
- | 1385 | viewer_IsHandleUsed: |
|
- | 1386 | cmp edx, [ebp+viewer_data.hPlugin] |
|
- | 1387 | jnz @f |
|
- | 1388 | cmp ebx, [ebp+viewer_data.hFile] |
|
- | 1389 | @@: |
|
- | 1390 | ret |
|
1270 | 1391 | ||
1271 | viewer_OnKey: |
1392 | viewer_OnKey: |
1272 | mov esi, viewer_ctrlkeys |
1393 | mov esi, viewer_ctrlkeys |
1273 | jmp process_ctrl_keys |
1394 | jmp process_ctrl_keys |
1274 | .exit: |
1395 | .exit: |
1275 | call delete_active_screen |
1396 | call viewer_OnExit |
1276 | ret |
1397 | jmp delete_active_screen |
1277 | .down: |
1398 | .down: |
1278 | cmp [ebp+viewer_data.bEofReached], 0 |
1399 | cmp [ebp+viewer_data.bEofReached], 0 |
1279 | jnz .ret |
1400 | jnz .ret |
1280 | call viewer_seek_to_current |
1401 | call viewer_seek_to_current |
Line 1457... | Line 1578... | ||
1457 | stosd |
1578 | stosd |
1458 | stosd |
1579 | stosd |
1459 | stosb |
1580 | stosb |
1460 | end if |
1581 | end if |
1461 | sub ecx, 13 |
1582 | sub ecx, 13 |
- | 1583 | cmp [ebp+viewer_data.hPlugin], 0 |
|
- | 1584 | jz .native |
|
- | 1585 | lea esi, [ebp+viewer_data.hostname] |
|
- | 1586 | push ecx edi |
|
- | 1587 | shr ecx, 1 |
|
- | 1588 | @@: |
|
- | 1589 | lodsb |
|
- | 1590 | test al, al |
|
- | 1591 | jz @f |
|
- | 1592 | stosb |
|
- | 1593 | loop @b |
|
- | 1594 | @@: |
|
- | 1595 | sub edi, [esp] |
|
- | 1596 | sub [esp+4], edi |
|
- | 1597 | add [esp], edi |
|
- | 1598 | pop edi ecx |
|
- | 1599 | lea esi, [ebp+viewer_data.filename] |
|
- | 1600 | jmp .main |
|
- | 1601 | .native: |
|
1462 | lea esi, [ebp+viewer_data.filename] |
1602 | lea esi, [ebp+viewer_data.filename] |
1463 | push 3 |
1603 | push 3 |
1464 | pop edx |
1604 | pop edx |
1465 | @@: |
1605 | @@: |
1466 | lodsb |
1606 | lodsb |
1467 | stosb |
1607 | stosb |
1468 | dec ecx |
1608 | dec ecx |
- | 1609 | test al, al |
|
- | 1610 | jz .ret |
|
1469 | cmp al, '/' |
1611 | cmp al, '/' |
1470 | jnz @b |
1612 | jnz @b |
1471 | dec edx |
1613 | dec edx |
1472 | jnz @b |
1614 | jnz @b |
- | 1615 | .main: |
|
1473 | push esi |
1616 | push esi |
1474 | @@: |
1617 | @@: |
1475 | lodsb |
1618 | lodsb |
1476 | test al, al |
1619 | test al, al |
1477 | jnz @b |
1620 | jnz @b |
Line 1491... | Line 1634... | ||
1491 | @@: |
1634 | @@: |
1492 | lodsb |
1635 | lodsb |
1493 | stosb |
1636 | stosb |
1494 | test al, al |
1637 | test al, al |
1495 | jnz @b |
1638 | jnz @b |
- | 1639 | .ret: |
|
1496 | ret' |
1640 | ret' |