Subversion Repositories Kolibri OS

Rev

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