Subversion Repositories Kolibri OS

Rev

Rev 1397 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1397 Rev 1398
Line 6... Line 6...
6
;;   23.01.2010  turbanoff  - support 70.0 70.1                 ;;
6
;;   23.01.2010  turbanoff  - support 70.0 70.1                 ;;
7
;;                                                              ;;
7
;;                                                              ;;
8
;;                                                              ;;
8
;;                                                              ;;
9
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
9
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Line 10... Line 10...
10
 
10
 
Line 11... Line 11...
11
$Revision: 1397 $
11
$Revision: 1398 $
12
 
12
 
13
EXT2_BAD_INO        = 1
13
EXT2_BAD_INO        = 1
14
EXT2_ROOT_INO        = 2
14
EXT2_ROOT_INO        = 2
Line 422... Line 422...
422
        jecxz   .find_wanted_end
422
            jecxz   .find_wanted_end
423
    .find_wanted_cycle:
423
    .find_wanted_cycle:
424
            cmp     [eax + EXT2_DIR_STRUC.inode], 0     ; if (inode = 0) => not used
424
            cmp     [eax + EXT2_DIR_STRUC.inode], 0     ; if (inode = 0) => not used
425
            jz      @F
425
            jz      @F
426
            inc     [EXT2_files_in_folder]
426
            inc     [EXT2_files_in_folder]
-
 
427
            dec     ecx
427
          @@:
428
          @@:
428
            movzx   ebx, [eax+EXT2_DIR_STRUC.rec_len]
429
            movzx   ebx, [eax+EXT2_DIR_STRUC.rec_len]
429
            add     eax, ebx                            ; к следующей записи
430
            add     eax, ebx                            ; к следующей записи
430
            cmp     eax, [EXT2_end_block]              ; проверяем "конец"
431
            cmp     eax, [EXT2_end_block]              ; проверяем "конец"
431
            jae      .end_block_find_wanted
432
            jb      .find_wanted_start
-
 
433
 
-
 
434
   .end_block_find_wanted:                                   ;вылетили из цикла find_wanted
-
 
435
        mov     ebx, [ext2_data.count_block_in_block]
-
 
436
        sub     [EXT2_counter_blocks], ebx
432
            loop    .find_wanted_cycle
437
        jz      .end_dir
-
 
438
 
-
 
439
        ;получаем новый блок
-
 
440
        inc     esi
-
 
441
        push    ecx
-
 
442
        mov     ecx, esi
-
 
443
        call    ext2_get_inode_block
-
 
444
        mov     eax, ecx
-
 
445
        mov     ebx, [ext2_data.ext2_save_block]
-
 
446
        call    ext2_get_block
-
 
447
        pop     ecx
-
 
448
        dec     ecx
-
 
449
        mov     eax, ebx
-
 
450
        add     ebx, [ext2_data.block_size]
-
 
451
        mov     [EXT2_end_block], ebx
433
    .find_wanted_end:
452
        jmp     .find_wanted_start
Line -... Line 453...
-
 
453
 
434
 
454
    .find_wanted_end:
-
 
455
        mov     ecx, edi
435
        mov     ecx, edi
456
 
436
    .wanted_start:                                      ; ищем first_wanted+count
457
    .wanted_start:                                      ; ищем first_wanted+count
437
            jecxz   .find_wanted_cycle                  ; ecx=0 => огромный цикл до конца папки
458
            jecxz   .find_wanted_cycle                  ; ecx=0 => огромный цикл до конца папки
438
            cmp     [eax + EXT2_DIR_STRUC.inode], 0     ; if (inode = 0) => not used
459
            cmp     [eax + EXT2_DIR_STRUC.inode], 0     ; if (inode = 0) => not used
439
            jz      .empty_rec
460
            jz      .empty_rec
Line 468... Line 489...
468
            push    eax ecx esi
489
            push    eax ecx esi
469
            movzx   ecx, [eax + EXT2_DIR_STRUC.name_len]
490
            movzx   ecx, [eax + EXT2_DIR_STRUC.name_len]
470
            lea     edi, [edx + 40]
491
            lea     edi, [edx + 40]
471
            lea     esi, [eax + EXT2_DIR_STRUC.name]
492
            lea     esi, [eax + EXT2_DIR_STRUC.name]
472
            call    utf8toansi_str
493
            call    utf8toansi_str
473
            ;rep     movsb
-
 
474
            pop     esi ecx eax
494
            pop     esi ecx eax
475
            and     byte [edi], 0
495
            and     byte [edi], 0
Line 476... Line 496...
476
 
496
 
Line 500... Line 520...
500
        mov     eax, ebx
520
        mov     eax, ebx
501
        add     ebx, [ext2_data.block_size]
521
        add     ebx, [ext2_data.block_size]
502
        mov     [EXT2_end_block], ebx
522
        mov     [EXT2_end_block], ebx
503
        jmp     .wanted_start
523
        jmp     .wanted_start
Line 504... Line -...
504
 
-
 
505
    .end_block_find_wanted:                                   ;вылетили из цикла find_wanted
-
 
506
        mov     ebx, [ext2_data.count_block_in_block]
-
 
507
        sub     [EXT2_counter_blocks], ebx
-
 
508
        jz      .end_dir
-
 
509
 
-
 
510
        ;получаем новый блок
524
 
511
        inc     esi
-
 
512
        push    ecx
-
 
513
        mov     ecx, esi
-
 
514
        call    ext2_get_inode_block
-
 
515
        mov     eax, ecx
-
 
516
        mov     ebx, [ext2_data.ext2_save_block]
-
 
517
        call    ext2_get_block
-
 
518
        pop     ecx
525
    .wanted_end:
519
        dec     ecx
-
 
520
        mov     eax, ebx
-
 
521
        add     ebx, [ext2_data.block_size]
-
 
522
        mov     [EXT2_end_block], ebx
526
    	dec     ecx
Line 523... Line 527...
523
        jmp     .find_wanted_start
527
    	jmp     .find_wanted_cycle
524
 
528
 
525
    .end_dir:
529
    .end_dir:
526
        pop     edx
530
        pop     edx