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 |