Subversion Repositories Kolibri OS

Rev

Rev 6787 | Rev 6798 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2288 clevermous 1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2
;;                                                              ;;
6462 pathoswith 3
;; Copyright (C) KolibriOS team 2004-2016. All rights reserved. ;;
4
;;  Distributed under terms of the GNU General Public License.  ;;
2288 clevermous 5
;;                                                              ;;
6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
7
 
8
$Revision: 6792 $
9
 
2889 turbanoff 10
ERROR_SUCCESS        = 0
11
ERROR_DISK_BASE      = 1
12
ERROR_UNSUPPORTED_FS = 2
13
ERROR_UNKNOWN_FS     = 3
14
ERROR_PARTITION      = 4
15
ERROR_FILE_NOT_FOUND = 5
16
ERROR_END_OF_FILE    = 6
17
ERROR_MEMORY_POINTER = 7
18
ERROR_DISK_FULL      = 8
19
ERROR_FS_FAIL        = 9
20
ERROR_ACCESS_DENIED  = 10
21
ERROR_DEVICE         = 11
5994 pathoswith 22
ERROR_OUT_OF_MEMORY  = 12
2288 clevermous 23
 
6468 pathoswith 24
maxPathLength = 1000h
25
 
2288 clevermous 26
image_of_eax EQU esp+32
27
image_of_ebx EQU esp+20
28
 
6464 pathoswith 29
; System function 70
2288 clevermous 30
 
3296 clevermous 31
file_system_lfn_protected:
32
        pushad
33
        call    protect_from_terminate
34
        call    file_system_lfn
35
        call    unprotect_from_terminate
36
        popad
37
        mov     [image_of_eax], eax
38
        mov     [image_of_ebx], ebx
39
        ret
40
 
2288 clevermous 41
file_system_lfn:
6464 pathoswith 42
; in: ebx -> parameter structure
6468 pathoswith 43
        lea     ebp, [ebx+20]
44
        cmp     byte [ebp], 0
2288 clevermous 45
        jnz     @f
6468 pathoswith 46
        mov     ebp, [ebx+21]
2288 clevermous 47
@@:
6502 pathoswith 48
        cmp     word [ebp], '/'
49
        jz      .rootdir
50
        cmp     byte [ebp], 4
51
        jnc     @f
52
        cmp     byte [ebp], 0
53
        jz      @f
54
        cmp     word [ebp+1], '/'
55
        jnz     @f
56
        cmp     byte [ebp], 2
57
        jnz     .rootdir
58
        cmp     word [ebp+3], 0
59
        jz      .rootdir
60
@@:
6792 pathoswith 61
        stdcall kernel_alloc, maxPathLength
62
        push    eax ebx
63
        xchg    eax, edi
64
        mov     esi, ebp
65
        xor     eax, eax
66
        call    getFullPath
67
        pop     ebx ebp
68
        test    eax, eax
69
        jz      .notfound
6464 pathoswith 70
        cmp     dword[ebx], 7   ; start application
6502 pathoswith 71
        jnz     @f
6333 serge 72
        mov     edx, [ebx+4]
6792 pathoswith 73
        mov     ecx, [ebx+8]
74
        mov     ebx, ebp
75
        call    fs_execute
6333 serge 76
        mov     [image_of_eax], eax
77
        ret
6464 pathoswith 78
 
6333 serge 79
@@:
6502 pathoswith 80
        lea     esi, [ebp+2]
81
        mov     ax, [esi]
6464 pathoswith 82
        or      ax, 2020h
83
        cmp     ax, 'cd'
84
        jz      .CD
85
        call    dyndisk_handler ; not returns if success
86
.notfound:
6468 pathoswith 87
        stdcall kernel_free, ebp
6464 pathoswith 88
        mov     dword[image_of_eax], ERROR_FILE_NOT_FOUND
89
        ret
90
 
91
.CD:
92
        add     esi, 2
93
        xor     eax, eax
94
        lodsb       ; disk number
95
        sub     eax, '0'
96
        cmp     eax, 10
97
        jnc     .notfound
98
        mov     edi, eax
2288 clevermous 99
        lodsb
6464 pathoswith 100
        test    eax, eax
101
        jz      .maindir
2288 clevermous 102
        cmp     al, '/'
6464 pathoswith 103
        jnz     .notfound
104
        lodsb       ; partition number
105
        test    eax, eax
106
        jz      .maindir
107
        cmp     al, '1'
108
        jnz     .notfound
109
        cmp     byte [esi], '/'
110
        jnz     @f
111
        inc     esi
112
@@:
113
        call    reserve_cd
114
        mov     eax, edi
115
        bt      eax, 0
116
        setc    [DiskNumber]
117
        bt      eax, 1
118
        setc    [ChannelNumber]
119
        inc     [ChannelNumber]
120
        inc     eax
121
        mov     [cdpos], eax
122
        call    reserve_cd_channel
123
        mov     eax, edi
124
        not     eax
125
        and     eax, 3
126
        shl     eax, 1
127
        inc     eax
128
        shr     edi, 2
129
        mov     dword[image_of_eax], ERROR_FILE_NOT_FOUND
130
        bt      [edi*5+DRIVE_DATA+1], ax
131
        jnc     @f
132
        mov     ecx, [ebx+12]
133
        mov     edx, [ebx+16]
134
        mov     eax, [ebx]
135
        mov     dword[image_of_eax], ERROR_UNSUPPORTED_FS
136
        cmp     eax, fs_NumCdServices
137
        jae     @f
138
        add     ebx, 4
6611 clevermous 139
        push    ebp
6464 pathoswith 140
        call    dword[fs_CdServices + eax*4]
6611 clevermous 141
        pop     ebp
6464 pathoswith 142
        mov     [image_of_eax], eax
143
        mov     [image_of_ebx], ebx
144
@@:
145
        call    free_cd_channel
146
        and     [cd_status], 0
6468 pathoswith 147
        stdcall kernel_free, ebp
6464 pathoswith 148
        ret
149
 
150
.nextCD:
151
        test    eax, eax    ; partition number
152
        stc
153
        jnz     @f      ; no more partitions
154
        mov     al, 1   ; /cdX/1
155
        clc
156
@@:
157
        ret
158
 
159
.maindir:   ; list partitions
160
        mov     esi, .nextCD
161
.maindir_noesi:     ; backjump from dyndisk_handler
6468 pathoswith 162
        push    ebp
163
        mov     ebp, ecx
164
        call    kernel_free
6464 pathoswith 165
        cmp     dword[ebx], 1
166
        jnz     .access_denied  ; read folder?
6468 pathoswith 167
        push    ebp
168
        pushd   [ebx+4]         ; first block
6464 pathoswith 169
        mov     ebp, [ebx+12]   ; the number of blocks to read
6468 pathoswith 170
        mov     edx, [ebx+16]   ; buffer
2288 clevermous 171
        mov     ebx, [ebx+8]    ; flags
6464 pathoswith 172
        mov     ecx, 32/4
2288 clevermous 173
        mov     edi, edx
6464 pathoswith 174
        xor     eax, eax
2288 clevermous 175
        rep stosd
176
        mov     byte [edx], 1   ; version
177
.maindir_loop:
178
        call    esi
179
        jc      .maindir_done
6464 pathoswith 180
        inc     dword[edx+8]
181
        dec     dword[esp]
2288 clevermous 182
        jns     .maindir_loop
183
        dec     ebp
184
        js      .maindir_loop
6464 pathoswith 185
        inc     dword[edx+4]
186
        mov     dword[edi], 16      ; attributes: folder
187
        mov     dword[edi+4], ebx   ; name encoding
2288 clevermous 188
        push    eax
6464 pathoswith 189
        mov     ecx, 32/4
190
        add     edi, 8
2288 clevermous 191
        xor     eax, eax
192
        rep stosd
193
        pop     eax
6464 pathoswith 194
        push    eax edx edi
195
; convert number in eax to decimal string
2288 clevermous 196
        push    -'0'
197
        mov     ecx, 10
198
@@:
199
        xor     edx, edx
200
        div     ecx
201
        push    edx
202
        test    eax, eax
203
        jnz     @b
6464 pathoswith 204
        cmp     ebx, 1
205
        jz      .uni
2288 clevermous 206
@@:
207
        pop     eax
6464 pathoswith 208
        add     eax, '0'
2288 clevermous 209
        stosb
6464 pathoswith 210
        test    eax, eax
2288 clevermous 211
        jnz     @b
6464 pathoswith 212
        pop     edi edx eax
213
        add     edi, 264
214
        jmp     .maindir_loop
215
 
216
.uni:
217
        pop     eax
218
        add     eax, '0'
219
        stosw
220
        test    eax, eax
221
        jnz     .uni
222
        pop     edi edx eax
2288 clevermous 223
        add     edi, 520
224
        jmp     .maindir_loop
6464 pathoswith 225
 
2288 clevermous 226
.maindir_done:
6464 pathoswith 227
        pop     eax eax
2288 clevermous 228
        mov     ebx, [edx+4]
229
        xor     eax, eax
230
        dec     ebp
231
        js      @f
232
        mov     al, ERROR_END_OF_FILE
233
@@:
234
        mov     [image_of_eax], eax
235
        mov     [image_of_ebx], ebx
236
        ret
6464 pathoswith 237
 
2288 clevermous 238
.access_denied:
6464 pathoswith 239
        mov     dword[image_of_eax], ERROR_ACCESS_DENIED
2288 clevermous 240
        ret
241
 
6464 pathoswith 242
.rootdir:   ; / - virtual root folder
243
        cmp     dword[ebx], 1   ; read folder?
244
        jnz     .access_denied
245
        mov     ebp, [ebx+12]   ; number of blocks
246
        mov     edx, [ebx+16]   ; return area
247
        push    dword[ebx+4]    ; first block
2288 clevermous 248
        mov     ebx, [ebx+8]    ; flags
6464 pathoswith 249
        mov     ecx, 32/4
250
        mov     edi, edx
2288 clevermous 251
        xor     eax, eax
252
        rep stosd
253
        mov     byte [edx], 1   ; version
4277 clevermous 254
        sub     esp, 16
6464 pathoswith 255
.rootdir_loop:
4277 clevermous 256
        push    edi
257
        lea     edi, [esp+4]
258
        call    dyndisk_enum_root
259
        pop     edi
260
        test    eax, eax
6464 pathoswith 261
        jz      .rootdirCD
262
        inc     dword[edx+8]
263
        dec     dword[esp+16]
264
        jns     .rootdir_loop
4277 clevermous 265
        dec     ebp
6464 pathoswith 266
        js      .rootdir_loop
267
        inc     dword[edx+4]
268
        mov     dword[edi], 16      ; attributes: folder
269
        mov     dword[edi+4], ebx   ; name encoding
4277 clevermous 270
        push    eax
6464 pathoswith 271
        mov     ecx, 32/4
272
        add     edi, 8
4277 clevermous 273
        xor     eax, eax
274
        rep stosd
6468 pathoswith 275
        push    edi
276
        lea     esi, [esp+8]
6464 pathoswith 277
        cmp     ebx, 1
278
        jz      .uni2
4277 clevermous 279
@@:
280
        lodsb
281
        stosb
6464 pathoswith 282
        test    eax, eax
4277 clevermous 283
        jnz     @b
6468 pathoswith 284
        pop     edi eax
6464 pathoswith 285
        add     edi, 264
286
        jmp     .rootdir_loop
287
 
288
.uni2:
289
        lodsb
290
        stosw
291
        test    eax, eax
292
        jnz     .uni2
6468 pathoswith 293
        pop     edi eax
4277 clevermous 294
        add     edi, 520
6464 pathoswith 295
        jmp     .rootdir_loop
296
 
297
.rootdirCD:
4277 clevermous 298
        add     esp, 16
6464 pathoswith 299
        or      esi, -1
300
.rootdirCD_loop:
301
        inc     esi
302
        cmp     esi, 10
303
        jnc     .rootdir_done
304
        mov     eax, esi
305
        not     eax
306
        and     eax, 3
307
        shl     eax, 1
308
        inc     eax
309
        mov     ecx, esi
310
        shr     ecx, 2
311
        bt      [ecx*5+DRIVE_DATA+1], ax
312
        jnc     .rootdirCD_loop
313
        inc     dword[edx+8]
314
        dec     dword[esp]
315
        jns     .rootdirCD_loop
2288 clevermous 316
        dec     ebp
6464 pathoswith 317
        js      .rootdirCD_loop
318
        inc     dword[edx+4]
319
        mov     dword[edi], 16      ; attributes: folder
320
        mov     dword[edi+4], ebx   ; name encoding
321
        mov     ecx, 32/4
2288 clevermous 322
        add     edi, 8
6464 pathoswith 323
        xor     eax, eax
2288 clevermous 324
        rep stosd
6464 pathoswith 325
        mov     eax, esi
326
        add     eax, '0'
327
        cmp     ebx, 1
328
        jz      @f
329
        mov     word [edi], 'cd'
330
        mov     [edi+2], ax
331
        add     edi, 264
332
        jmp     .rootdirCD_loop
333
 
2288 clevermous 334
@@:
6464 pathoswith 335
        mov     dword[edi], 640063h
336
        mov     [edi+4], eax
2288 clevermous 337
        add     edi, 520
6464 pathoswith 338
        jmp     .rootdirCD_loop
339
 
340
.rootdir_done:
2288 clevermous 341
        pop     eax
342
        mov     ebx, [edx+4]
343
        xor     eax, eax
344
        dec     ebp
345
        js      @f
346
        mov     al, ERROR_END_OF_FILE
347
@@:
348
        mov     [image_of_eax], eax
349
        mov     [image_of_ebx], ebx
350
        ret
351
 
4700 mario79 352
;-----------------------------------------------------------------------------
2288 clevermous 353
process_replace_file_name:
6464 pathoswith 354
; in: [esi] = virtual path
355
; out: [esi]+[ebp] = physical path
3689 mario79 356
        xor     edi, edi
6471 pathoswith 357
        xor     ebp, ebp
2288 clevermous 358
.loop:
3711 clevermous 359
        cmp     edi, [full_file_name_table.size]
3689 mario79 360
        jae     .notfound
2288 clevermous 361
        push    esi edi
6464 pathoswith 362
        shl     edi, 7
6471 pathoswith 363
        add     edi, [full_file_name_table]
2288 clevermous 364
@@:
6464 pathoswith 365
        cmp     byte [edi], 0
2288 clevermous 366
        jz      .dest_done
367
        lodsb
368
        test    al, al
369
        jz      .cont
6464 pathoswith 370
        or      al, 20h
2288 clevermous 371
        scasb
372
        jz      @b
6464 pathoswith 373
.cont:
374
        pop     edi esi
375
        inc     edi
376
        jmp     .loop
377
 
2288 clevermous 378
.dest_done:
379
        cmp     byte [esi], 0
380
        jz      .found
381
        cmp     byte [esi], '/'
382
        jnz     .cont
383
.found:
384
        pop     edi eax
6464 pathoswith 385
        shl     edi, 7
6471 pathoswith 386
        add     edi, [full_file_name_table]
2288 clevermous 387
        mov     ebp, esi
388
        lea     esi, [edi+64]
389
.notfound:
390
        ret
6464 pathoswith 391
 
3689 mario79 392
;-----------------------------------------------------------------------------
3663 mario79 393
uglobal
6471 pathoswith 394
addDirSeal db  ?
3663 mario79 395
endg
6338 serge 396
 
6464 pathoswith 397
sys_current_directory:  ; sysfunction 30
2288 clevermous 398
        mov     eax, [current_slot]
399
        mov     edi, [eax+APPDATA.cur_dir]
400
        dec     ebx
401
        jz      .set
402
        dec     ebx
403
        jz      .get
3663 mario79 404
        dec     ebx
405
        jz      .mount_additional_directory
6471 pathoswith 406
        dec     ebx
407
        jz      .get16
408
@@:
2288 clevermous 409
        ret
3663 mario79 410
 
411
.mount_additional_directory:
6464 pathoswith 412
; in: ecx -> dir name+dir path (128)
6471 pathoswith 413
        mov     al, 1
414
        xchg    [addDirSeal], al
415
        test    al, al
416
        jnz     @b
3663 mario79 417
        mov     esi, ecx
418
        mov     edi, sysdir_name1
419
        mov     ecx, 63
6464 pathoswith 420
        rep movsb   ; copying fake directory name
3663 mario79 421
        inc     esi
422
        xor     eax, eax
6464 pathoswith 423
        stosb       ; terminator of name, in case if we get the inlet trash
6471 pathoswith 424
        mov     cl, 63
425
        cmp     word [esi], 2
426
        jz      .utf16
427
        call    cp866toUTF8_string
428
@@:
429
        mov     byte [edi], 0
3663 mario79 430
        mov     [full_file_name_table.size], 2
431
        ret
6338 serge 432
 
6471 pathoswith 433
.utf16:
434
        add     esi, 2
435
        call    UTF16to8_string
436
        jmp     @b
437
 
6464 pathoswith 438
.get:       ; in: ecx -> buffer, edx = length
6471 pathoswith 439
        mov     esi, edi
6534 pathoswith 440
        inc     esi
6471 pathoswith 441
        mov     edi, ecx
442
        cmp     edx, maxPathLength
443
        jc      @f
444
        mov     edx, maxPathLength
2288 clevermous 445
@@:
446
        mov     ecx, edx
6471 pathoswith 447
@@:
448
        dec     ecx
449
        js      @f
450
        call    utf8to16
451
        call    uni2ansi_char
452
        stosb
453
        test    al, al
454
        jnz     @b
455
        sub     edx, ecx
456
        mov     ecx, edx
457
@@:
458
        mov     [esp+32], ecx
2288 clevermous 459
        ret
460
 
6471 pathoswith 461
.get16:
462
        mov     esi, edi
6534 pathoswith 463
        inc     esi
6471 pathoswith 464
        mov     edi, ecx
465
        cmp     edx, maxPathLength
466
        jc      @f
467
        mov     edx, maxPathLength
468
@@:
469
        shr     edx, 1
470
        mov     ecx, edx
471
@@:
472
        dec     ecx
473
        js      @f
474
        call    utf8to16
475
        stosw
476
        test    ax, ax
477
        jnz     @b
478
        sub     edx, ecx
479
        mov     ecx, edx
480
@@:
481
        mov     [esp+32], ecx
2288 clevermous 482
        ret
6464 pathoswith 483
 
2288 clevermous 484
.set:
6792 pathoswith 485
        mov     esi, ecx
486
        xor     eax, eax
487
getFullPath:
488
; in: esi -> file path, eax = string encoding, edi -> destination
489
; out: UTF-8 string (with marker), eax = length, 0 -> error
490
        test    eax, eax
491
        jnz     @f
492
        cmp     byte [esi], 4
6502 pathoswith 493
        jnc     @f
6792 pathoswith 494
        cmp     byte [esi], 0
495
        jz      @f
496
        lodsb
6471 pathoswith 497
@@:
498
        cmp     byte [esi], '/'
6792 pathoswith 499
        jnz     .relative
500
        cmp     eax, 2
501
        jnz     @f
502
        cmp     word [esi], '/'
503
        jnz     .relative
6471 pathoswith 504
        inc     esi
6792 pathoswith 505
        inc     esi
506
        jmp     .start
507
 
508
@@:
509
        inc     esi
6758 pathoswith 510
        cmp     byte [esi], 4
6792 pathoswith 511
        jnc     .start
512
        lodsb
6758 pathoswith 513
        cmp     byte [esi], '/'
514
        jnz     .start
515
        inc     esi
516
.start:
6792 pathoswith 517
        push    eax edi
6468 pathoswith 518
        call    process_replace_file_name
6792 pathoswith 519
        mov     edi, [esp]
520
        mov     ecx, maxPathLength
6502 pathoswith 521
        mov     al, 3
522
        mov     ah, '/'
523
        stosw
524
        sub     ecx, 2
6471 pathoswith 525
        test    ebp, ebp
526
        jz      .absolute
527
@@:
6468 pathoswith 528
        lodsb
529
        stosb
6471 pathoswith 530
        dec     ecx
6468 pathoswith 531
        test    al, al
6471 pathoswith 532
        jnz     @b
533
        mov     esi, ebp
6468 pathoswith 534
        dec     edi
6471 pathoswith 535
.absolute:
6792 pathoswith 536
        cmp     byte [esp+4], 2
6502 pathoswith 537
        jz      .utf16
6792 pathoswith 538
        cmp     byte [esp+4], 3
6502 pathoswith 539
        jz      .utf8
6471 pathoswith 540
        call    cp866toUTF8_string
6787 pathoswith 541
        jns     .end
6471 pathoswith 542
        jmp     .fail
543
 
6502 pathoswith 544
.utf8:
545
        dec     ecx
546
        js      .fail
547
        lodsb
548
        stosb
549
        test    al, al
6787 pathoswith 550
        jz      .end
6502 pathoswith 551
        jmp     .utf8
552
 
553
.utf16:
6471 pathoswith 554
        call    UTF16to8_string
6787 pathoswith 555
        jns     .end
6468 pathoswith 556
.fail:
557
        mov     byte [edi], 0
6792 pathoswith 558
        pop     eax eax
6468 pathoswith 559
        xor     eax, eax
6792 pathoswith 560
        ret
6468 pathoswith 561
 
6792 pathoswith 562
.relative:
563
        push    eax edi
564
        mov     ebx, esi
6468 pathoswith 565
        mov     edi, [current_slot]
566
        mov     edi, [edi+APPDATA.cur_dir]
567
        mov     edx, edi
6792 pathoswith 568
        mov     ecx, maxPathLength
6468 pathoswith 569
        xor     eax, eax
570
        repnz scasb
571
        mov     esi, edi
6792 pathoswith 572
        mov     edi, [esp]
6468 pathoswith 573
        jecxz   .fail
6502 pathoswith 574
        cmp     byte [ebx], 0
575
        jz      .set_ok
6792 pathoswith 576
        dec     esi
6471 pathoswith 577
        cmp     edx, edi    ; is destination equal to cur_dir?
578
        mov     edi, esi
579
        jz      @f
6792 pathoswith 580
        mov     edi, [esp]
2288 clevermous 581
        mov     ecx, esi
6468 pathoswith 582
        sub     ecx, edx
2288 clevermous 583
        mov     esi, edx
584
        mov     edx, edi
585
        rep movsb
6471 pathoswith 586
@@:
2288 clevermous 587
        mov     byte [edi], '/'
588
        inc     edi
6471 pathoswith 589
        mov     esi, ebx
590
        mov     ecx, edx
6792 pathoswith 591
        add     ecx, maxPathLength
6471 pathoswith 592
        sub     ecx, edi
593
        jmp     .absolute
594
 
6787 pathoswith 595
.set_ok:
596
        cmp     edx, edi    ; is destination equal to cur_dir?
6471 pathoswith 597
        jz      @f
6787 pathoswith 598
        mov     ecx, esi
599
        sub     ecx, edx
600
        mov     esi, edx
601
        rep movsb
2288 clevermous 602
@@:
6792 pathoswith 603
        pop     eax
604
        sub     edi, eax
605
        pop     eax
606
        mov     eax, edi
607
        ret
6787 pathoswith 608
 
609
.end:
610
        or      ecx, -1
6792 pathoswith 611
        mov     edi, [esp]
6787 pathoswith 612
        xor     eax, eax
613
        push    edi
614
        repnz scasb
615
        not     ecx
616
        pop     edi
617
.parse:
618
        mov     al, '/'
619
        repnz scasb
620
        jecxz   @b
621
        cmp     byte [edi], '.'
622
        jnz     .parse
623
        mov     esi, edi
624
@@:
625
        lodsw
626
        sub     ecx, 2
627
        cmp     ax, './'
628
        jz      @b
629
        cmp     ax, '..'
630
        jnz     @f
6471 pathoswith 631
        cmp     byte [esi], '/'
6787 pathoswith 632
        jnz     @f
633
        mov     edx, ecx
634
        mov     ecx, edi
6792 pathoswith 635
        sub     ecx, [esp]
6787 pathoswith 636
        sub     ecx, 2
637
        jc      .fail
638
        sub     edi, 2
639
        lodsb
640
        dec     edx
641
        std
642
        repnz scasb
643
        cld
644
        add     edi, 2
645
        mov     ecx, edx
646
        jmp     @b
6464 pathoswith 647
 
6787 pathoswith 648
@@:
649
        sub     esi, 2
650
        add     ecx, 2
651
        cmp     esi, edi
652
        jz      .parse
653
        push    edi ecx
654
        rep movsb
655
        pop     ecx edi
656
        jmp     .parse
657
 
6462 pathoswith 658
include "parse_fn.inc"
659
include "fs_common.inc"
660
include "iso9660.inc"   ; read for CD filesystem
661
include "fat.inc"
662
include "ntfs.inc"
663
include "ext.inc"
6503 pathoswith 664
; include "xfs.asm"
665
 
666
xfs_create_partition:
667
        xor     eax, eax
668
        ret