Rev 6848 | Rev 6852 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 6848 | Rev 6849 | ||
---|---|---|---|
Line 3... | Line 3... | ||
3 | ;; Copyright (C) KolibriOS team 2013-2016. All rights reserved. ;; |
3 | ;; Copyright (C) KolibriOS team 2013-2016. All rights reserved. ;; |
4 | ;; Distributed under terms of the GNU General Public License. ;; |
4 | ;; Distributed under terms of the GNU General Public License. ;; |
5 | ;; ;; |
5 | ;; ;; |
6 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
6 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
Line 7... | Line 7... | ||
7 | 7 | ||
Line 8... | Line 8... | ||
8 | $Revision: 6848 $ |
8 | $Revision: 6849 $ |
9 | 9 | ||
10 | ; EXT external functions |
10 | ; EXT external functions |
11 | ; in: |
11 | ; in: |
Line 1016... | Line 1016... | ||
1016 | jmp @b |
1016 | jmp @b |
Line 1017... | Line 1017... | ||
1017 | 1017 | ||
1018 | extfsExtendFile: |
1018 | extfsExtendFile: |
1019 | ; in: |
1019 | ; in: |
1020 | ; [ebp+EXTFS.inodeBuffer] = inode |
1020 | ; [ebp+EXTFS.inodeBuffer] = inode |
1021 | ; eax = inode number |
1021 | ; ecx = inode number |
1022 | ; ecx = new size |
1022 | ; edx:eax = new size |
1023 | push ebx ecx edx esi edi eax |
1023 | push ebx esi edi ecx |
1024 | lea esi, [ebp+EXTFS.inodeBuffer] |
1024 | lea esi, [ebp+EXTFS.inodeBuffer] |
1025 | mov eax, ecx |
1025 | mov ebx, [esi+INODE.fileSize] |
1026 | mov edx, [esi+INODE.fileSize] |
1026 | mov ecx, [esi+INODE.fileSizeHigh] |
- | 1027 | cmp ebx, eax |
|
1027 | cmp edx, eax |
1028 | sbb ecx, edx |
- | 1029 | jnc .ret |
|
1028 | jnc .ret |
1030 | mov ecx, [esi+INODE.fileSizeHigh] |
1029 | mov [esi+INODE.fileSize], eax |
1031 | mov [esi+INODE.fileSize], eax |
1030 | mov ecx, [ebp+EXTFS.sectorsPerBlockLog] |
1032 | mov [esi+INODE.fileSizeHigh], edx |
1031 | add ecx, 9 |
1033 | sub eax, 1 |
1032 | dec eax |
1034 | sbb edx, 0 |
1033 | shr eax, cl |
1035 | div [ebp+EXTFS.bytesPerBlock] |
- | 1036 | inc eax |
|
- | 1037 | xchg eax, ebx |
|
1034 | inc eax |
1038 | mov edx, ecx |
- | 1039 | sub eax, 1 |
|
1035 | sub edx, 1 |
1040 | sbb edx, 0 |
1036 | jc @f |
1041 | jc @f |
1037 | shr edx, cl |
1042 | div [ebp+EXTFS.bytesPerBlock] |
1038 | @@: |
1043 | @@: |
1039 | inc edx |
1044 | inc eax |
1040 | sub eax, edx |
1045 | sub ebx, eax |
1041 | jz .ret |
1046 | jz .ret |
- | 1047 | push ebx |
|
1042 | push eax |
1048 | mov edx, eax |
1043 | @@: |
1049 | @@: |
1044 | mov ecx, [esp] |
1050 | mov ecx, [esp] |
1045 | mov eax, [esp+4] |
1051 | mov eax, [esp+4] |
1046 | test ecx, ecx |
1052 | test ecx, ecx |
Line 1182... | Line 1188... | ||
1182 | stdcall kernel_free, esi |
1188 | stdcall kernel_free, esi |
1183 | .done: |
1189 | .done: |
1184 | xor eax, eax |
1190 | xor eax, eax |
1185 | pop edi |
1191 | pop edi |
1186 | .ret: |
1192 | .ret: |
1187 | pop edi edi esi edx ecx ebx |
1193 | pop edi edi esi ebx |
1188 | ret |
1194 | ret |
Line 1189... | Line 1195... | ||
1189 | 1195 | ||
1190 | .errSave: |
1196 | .errSave: |
1191 | push eax |
1197 | push eax |
Line 1306... | Line 1312... | ||
1306 | .ret: |
1312 | .ret: |
1307 | xor edx, edx |
1313 | xor edx, edx |
1308 | ret |
1314 | ret |
Line 1309... | Line 1315... | ||
1309 | 1315 | ||
1310 | extfsTruncateFile: |
1316 | extfsTruncateFile: |
1311 | ; in: ecx = new size, [ebp+EXTFS.inodeBuffer] = inode |
- | |
1312 | push ebx ecx edx esi edi |
1317 | ; in: edx:eax = new size, [ebp+EXTFS.inodeBuffer] = inode |
- | 1318 | lea esi, [ebp+EXTFS.inodeBuffer] |
|
1313 | lea esi, [ebp+EXTFS.inodeBuffer] |
1319 | mov ecx, edx |
- | 1320 | cmp eax, [esi+INODE.fileSize] |
|
1314 | cmp ecx, [esi+INODE.fileSize] |
1321 | sbb ecx, [esi+INODE.fileSizeHigh] |
1315 | jnc .ret |
1322 | jnc .ret |
- | 1323 | mov [esi+INODE.fileSize], eax |
|
1316 | mov [esi+INODE.fileSize], ecx |
1324 | mov [esi+INODE.fileSizeHigh], edx |
1317 | mov edx, ecx |
1325 | sub eax, 1 |
1318 | jecxz .directBlocks |
1326 | sbb edx, 0 |
1319 | dec edx |
1327 | jc @f |
- | 1328 | div [ebp+EXTFS.bytesPerBlock] |
|
1320 | mov ecx, [ebp+EXTFS.sectorsPerBlockLog] |
1329 | @@: |
1321 | add ecx, 9 |
1330 | inc eax |
1322 | shr edx, cl |
- | |
1323 | inc edx |
1331 | mov edx, eax |
1324 | cmp edx, 12 |
1332 | cmp edx, 12 |
1325 | jc .directBlocks |
1333 | jc .directBlocks |
1326 | sub edx, 12 |
1334 | sub edx, 12 |
1327 | cmp edx, [ebp+EXTFS.dwordsPerBlock] |
1335 | cmp edx, [ebp+EXTFS.dwordsPerBlock] |
Line 1397... | Line 1405... | ||
1397 | .err: |
1405 | .err: |
1398 | pop eax eax |
1406 | pop eax eax |
1399 | .done: |
1407 | .done: |
1400 | call kernel_free |
1408 | call kernel_free |
1401 | .ret: |
1409 | .ret: |
1402 | pop edi esi edx ecx ebx |
- | |
1403 | ret |
1410 | ret |
Line 1404... | Line 1411... | ||
1404 | 1411 | ||
1405 | linkInode: |
1412 | linkInode: |
1406 | ; in: |
1413 | ; in: |
Line 1483... | Line 1490... | ||
1483 | inc ecx |
1490 | inc ecx |
1484 | cmp ecx, [esp] |
1491 | cmp ecx, [esp] |
1485 | push ecx |
1492 | push ecx |
1486 | jnz @f |
1493 | jnz @f |
1487 | .alloc_block: |
1494 | .alloc_block: |
1488 | mov ecx, [esi+INODE.fileSize] |
1495 | mov eax, [esi+INODE.fileSize] |
1489 | add ecx, [ebp+EXTFS.bytesPerBlock] |
1496 | add eax, [ebp+EXTFS.bytesPerBlock] |
- | 1497 | xor edx, edx |
|
1490 | mov eax, [esp+24] |
1498 | mov ecx, [esp+24] |
1491 | call extfsExtendFile |
1499 | call extfsExtendFile |
1492 | jc .error_get_inode_block |
1500 | jc .error_get_inode_block |
1493 | mov eax, [esp+24] |
1501 | mov eax, [esp+24] |
1494 | mov ebx, esi |
1502 | mov ebx, esi |
1495 | call writeInode |
1503 | call writeInode |
Line 1631... | Line 1639... | ||
1631 | lea edi, [ebp+EXTFS.inodeBuffer] |
1639 | lea edi, [ebp+EXTFS.inodeBuffer] |
1632 | movzx ecx, [ebp+EXTFS.superblock.inodeSize] |
1640 | movzx ecx, [ebp+EXTFS.superblock.inodeSize] |
1633 | mov edx, esi |
1641 | mov edx, esi |
1634 | rep movsb |
1642 | rep movsb |
1635 | pop esi |
1643 | pop esi |
1636 | pushd 0 ROOT_INODE |
1644 | pushd ebx 0 ROOT_INODE |
1637 | mov edi, esi |
1645 | mov edi, esi |
1638 | cmp [edx+INODE.fileSize], 0 |
1646 | cmp [edx+INODE.fileSize], 0 |
1639 | jz .not_found |
1647 | jz .not_found |
1640 | cmp byte [esi], 0 |
1648 | cmp byte [esi], 0 |
1641 | jnz .next_path_part |
1649 | jnz .next_path_part |
1642 | xor eax, eax |
1650 | xor eax, eax |
1643 | pop esi ecx |
1651 | pop esi ecx ebx |
1644 | ret |
1652 | ret |
Line 1645... | Line 1653... | ||
1645 | 1653 | ||
1646 | @@: |
1654 | @@: |
1647 | pop esi esi |
1655 | pop esi esi |
1648 | .error: |
1656 | .error: |
1649 | pop esi ecx |
1657 | pop esi ecx ebx |
1650 | xor edi, edi |
1658 | xor edi, edi |
1651 | stc |
1659 | stc |
Line 1652... | Line 1660... | ||
1652 | ret |
1660 | ret |
Line 1727... | Line 1735... | ||
1727 | xor edi, edi ; path folder not found |
1735 | xor edi, edi ; path folder not found |
1728 | @@: |
1736 | @@: |
1729 | movi eax, ERROR_FILE_NOT_FOUND |
1737 | movi eax, ERROR_FILE_NOT_FOUND |
1730 | stc |
1738 | stc |
1731 | .ret: |
1739 | .ret: |
1732 | pop esi ecx |
1740 | pop esi ecx ebx |
1733 | ret |
1741 | ret |
Line 1734... | Line 1742... | ||
1734 | 1742 | ||
1735 | writeSuperblock: |
1743 | writeSuperblock: |
1736 | push ebx |
1744 | push ebx |
Line 1760... | Line 1768... | ||
1760 | ;---------------------------------------------------------------- |
1768 | ;---------------------------------------------------------------- |
1761 | ext_ReadFolder: |
1769 | ext_ReadFolder: |
1762 | call ext_lock |
1770 | call ext_lock |
1763 | cmp byte [esi], 0 |
1771 | cmp byte [esi], 0 |
1764 | jz .root_folder |
1772 | jz .root_folder |
1765 | push ebx |
- | |
1766 | call findInode |
1773 | call findInode |
1767 | pop ebx |
- | |
1768 | jc .error_ret |
1774 | jc .error_ret |
1769 | lea esi, [ebp+EXTFS.inodeBuffer] |
1775 | lea esi, [ebp+EXTFS.inodeBuffer] |
1770 | test [esi+INODE.accessMode], FLAG_FILE |
1776 | test [esi+INODE.accessMode], FLAG_FILE |
1771 | jnz .error_not_found |
1777 | jnz .error_not_found |
1772 | jmp @f |
1778 | jmp @f |
Line 1970... | Line 1976... | ||
1970 | jmp .error_ret |
1976 | jmp .error_ret |
Line 1971... | Line 1977... | ||
1971 | 1977 | ||
1972 | ;---------------------------------------------------------------- |
1978 | ;---------------------------------------------------------------- |
1973 | ext_ReadFile: |
1979 | ext_ReadFile: |
1974 | call ext_lock |
- | |
1975 | pushd 0 ebx |
1980 | call ext_lock |
1976 | call findInode |
- | |
1977 | pop ebx |
1981 | call findInode |
1978 | push eax |
1982 | pushd 0 eax |
1979 | jc .ret |
1983 | jc .ret |
1980 | lea esi, [ebp+EXTFS.inodeBuffer] |
1984 | lea esi, [ebp+EXTFS.inodeBuffer] |
1981 | mov byte [esp], ERROR_ACCESS_DENIED |
1985 | mov byte [esp], ERROR_ACCESS_DENIED |
1982 | test [esi+INODE.accessMode], FLAG_FILE |
1986 | test [esi+INODE.accessMode], FLAG_FILE |
Line 2077... | Line 2081... | ||
2077 | ret |
2081 | ret |
Line 2078... | Line 2082... | ||
2078 | 2082 | ||
2079 | ;---------------------------------------------------------------- |
2083 | ;---------------------------------------------------------------- |
2080 | ext_GetFileInfo: |
2084 | ext_GetFileInfo: |
2081 | call ext_lock |
- | |
2082 | mov edx, [ebx+16] |
2085 | call ext_lock |
2083 | cmp byte [esi], 0 |
2086 | cmp byte [esi], 0 |
2084 | jz .is_root |
- | |
2085 | push edx |
2087 | jz .is_root |
2086 | call findInode |
- | |
2087 | pop edx |
2088 | call findInode |
2088 | lea esi, [ebp+EXTFS.inodeBuffer] |
2089 | lea esi, [ebp+EXTFS.inodeBuffer] |
2089 | jnc @f |
2090 | jnc @f |
2090 | push eax |
2091 | push eax |
2091 | call ext_unlock |
2092 | call ext_unlock |
Line 2094... | Line 2095... | ||
2094 | 2095 | ||
2095 | .is_root: |
2096 | .is_root: |
2096 | mov edi, esi |
2097 | mov edi, esi |
2097 | lea esi, [ebp+EXTFS.rootInodeBuffer] |
2098 | lea esi, [ebp+EXTFS.rootInodeBuffer] |
- | 2099 | @@: |
|
2098 | @@: |
2100 | mov edx, [ebx+16] |
2099 | mov bl, [edi] |
2101 | mov bl, [edi] |
2100 | xor eax, eax |
2102 | xor eax, eax |
2101 | mov edi, edx |
2103 | mov edi, edx |
2102 | mov ecx, 40/4 |
2104 | mov ecx, 40/4 |
Line 2131... | Line 2133... | ||
2131 | ret |
2133 | ret |
Line 2132... | Line 2134... | ||
2132 | 2134 | ||
2133 | ;---------------------------------------------------------------- |
2135 | ;---------------------------------------------------------------- |
2134 | ext_SetFileInfo: |
2136 | ext_SetFileInfo: |
2135 | call extfsWritingInit |
- | |
2136 | pushd [ebx+16] |
2137 | call extfsWritingInit |
2137 | call findInode |
- | |
2138 | pop edx |
2138 | call findInode |
2139 | jc @f |
2139 | jc @f |
2140 | push esi ; inode number |
2140 | push esi |
- | 2141 | mov esi, [ebx+16] |
|
2141 | lea esi, [edx+16] |
2142 | add esi, 16 |
2142 | lea edi, [ebp+EXTFS.inodeBuffer] |
2143 | lea edi, [ebp+EXTFS.inodeBuffer] |
2143 | call fsCalculateTime |
2144 | call fsCalculateTime |
2144 | add eax, 978307200 ; 01.01.1970-01.01.2001 = (365*31+8)*24*60*60 |
2145 | add eax, 978307200 ; 01.01.1970-01.01.2001 = (365*31+8)*24*60*60 |
Line 2234... | Line 2235... | ||
2234 | @@: |
2235 | @@: |
2235 | mov eax, [esp] |
2236 | mov eax, [esp] |
2236 | lea ebx, [ebp+EXTFS.inodeBuffer] |
2237 | lea ebx, [ebp+EXTFS.inodeBuffer] |
2237 | call readInode |
2238 | call readInode |
2238 | jc .error_stack4_eax |
2239 | jc .error_stack4_eax |
- | 2240 | push edx |
|
- | 2241 | xor eax, eax |
|
2239 | xor ecx, ecx |
2242 | xor edx, edx |
2240 | call extfsTruncateFile ; free file's data |
2243 | call extfsTruncateFile ; free file's data |
2241 | movzx ecx, [ebp+EXTFS.superblock.inodeSize] |
2244 | movzx ecx, [ebp+EXTFS.superblock.inodeSize] |
2242 | lea edi, [ebp+EXTFS.inodeBuffer] |
2245 | lea edi, [ebp+EXTFS.inodeBuffer] |
2243 | xor eax, eax |
2246 | xor eax, eax |
2244 | push edx edi |
2247 | push edi |
2245 | rep stosb |
2248 | rep stosb |
2246 | call fsGetTime |
2249 | call fsGetTime |
2247 | pop ebx ecx |
2250 | pop ebx ecx |
2248 | add eax, 978307200 |
2251 | add eax, 978307200 |
2249 | mov [ebx+INODE.deletedTime], eax |
2252 | mov [ebx+INODE.deletedTime], eax |
Line 2406... | Line 2409... | ||
2406 | mov esi, edi |
2409 | mov esi, edi |
2407 | mov dl, DIR_FLAG_FILE |
2410 | mov dl, DIR_FLAG_FILE |
2408 | call linkInode |
2411 | call linkInode |
2409 | jc .error2 |
2412 | jc .error2 |
2410 | pop esi ebx |
2413 | pop esi ebx |
2411 | mov ecx, [ebx+12] |
2414 | mov eax, [ebx+12] |
- | 2415 | xor edx, edx |
|
2412 | jmp ext_WriteFile.start |
2416 | jmp ext_WriteFile.start |
Line 2413... | Line 2417... | ||
2413 | 2417 | ||
2414 | .exist: |
2418 | .exist: |
2415 | movi eax, ERROR_ACCESS_DENIED |
2419 | movi eax, ERROR_ACCESS_DENIED |
2416 | test [ebp+EXTFS.inodeBuffer.accessMode], FLAG_FILE |
2420 | test [ebp+EXTFS.inodeBuffer.accessMode], FLAG_FILE |
2417 | jz .error ; not a file |
2421 | jz .error ; not a file |
2418 | pop ebx |
2422 | pop ebx |
- | 2423 | mov eax, [ebx+12] |
|
- | 2424 | xor edx, edx |
|
2419 | mov ecx, [ebx+12] |
2425 | push eax edx ebx esi |
- | 2426 | call extfsTruncateFile |
|
2420 | call extfsTruncateFile |
2427 | pop esi ebx edx eax |
Line 2421... | Line 2428... | ||
2421 | jmp ext_WriteFile.start |
2428 | jmp ext_WriteFile.start |
2422 | 2429 | ||
2423 | .error2: |
2430 | .error2: |
Line 2429... | Line 2436... | ||
2429 | ret |
2436 | ret |
Line 2430... | Line 2437... | ||
2430 | 2437 | ||
2431 | ;---------------------------------------------------------------- |
2438 | ;---------------------------------------------------------------- |
2432 | ext_WriteFile: |
2439 | ext_WriteFile: |
2433 | call extfsWritingInit |
- | |
2434 | push ebx |
2440 | call extfsWritingInit |
2435 | call findInode |
- | |
2436 | pop ebx |
2441 | call findInode |
2437 | pushd 0 eax |
2442 | pushd 0 eax |
2438 | jc .ret |
2443 | jc .ret |
2439 | mov byte [esp], ERROR_ACCESS_DENIED |
2444 | mov byte [esp], ERROR_ACCESS_DENIED |
2440 | test [ebp+EXTFS.inodeBuffer.accessMode], FLAG_FILE |
2445 | test [ebp+EXTFS.inodeBuffer.accessMode], FLAG_FILE |
- | 2446 | jz .ret ; not a file |
|
2441 | jz .ret ; not a file |
2447 | mov byte [esp], 0 |
- | 2448 | mov eax, [ebx+4] |
|
2442 | mov ecx, [ebx+4] |
2449 | mov edx, [ebx+8] |
- | 2450 | add eax, [ebx+12] |
|
2443 | add ecx, [ebx+12] |
2451 | adc edx, 0 |
2444 | .start: |
2452 | .start: |
2445 | push esi |
2453 | push esi |
2446 | mov eax, esi |
2454 | mov ecx, esi |
2447 | call extfsExtendFile |
2455 | call extfsExtendFile |
2448 | jc .errorExtend |
2456 | jc .errorExtend |
- | 2457 | mov eax, [ebx+4] |
|
2449 | mov eax, [ebx+4] |
2458 | mov edx, [ebx+8] |
2450 | mov ecx, [ebx+12] |
2459 | mov ecx, [ebx+12] |
2451 | mov esi, [ebx+16] |
2460 | mov esi, [ebx+16] |
2452 | .write: |
- | |
2453 | xor edx, edx |
2461 | .write: |
2454 | div [ebp+EXTFS.bytesPerBlock] |
2462 | div [ebp+EXTFS.bytesPerBlock] |
2455 | test edx, edx |
2463 | test edx, edx |
2456 | jz .aligned |
2464 | jz .aligned |
2457 | .piece: |
2465 | .piece: |
Line 2545... | Line 2553... | ||
2545 | call ext_unlock |
2553 | call ext_unlock |
2546 | pop eax ebx |
2554 | pop eax ebx |
2547 | ret |
2555 | ret |
Line 2548... | Line 2556... | ||
2548 | 2556 | ||
2549 | .erase: |
2557 | .erase: |
2550 | push eax eax edx |
2558 | push eax eax edi |
2551 | mov eax, ebx |
2559 | mov eax, ebx |
Line 2552... | Line 2560... | ||
2552 | jmp .write |
2560 | jmp .write |
2553 | 2561 | ||
2554 | ;---------------------------------------------------------------- |
2562 | ;---------------------------------------------------------------- |
2555 | ext_SetFileEnd: |
- | |
2556 | call extfsWritingInit |
2563 | ext_SetFileEnd: |
2557 | pushd [ebx+4] |
- | |
2558 | call findInode |
2564 | call extfsWritingInit |
2559 | pop ecx |
2565 | call findInode |
2560 | jc .error2 |
2566 | jc .error2 |
2561 | lea edi, [ebp+EXTFS.inodeBuffer] |
2567 | lea edi, [ebp+EXTFS.inodeBuffer] |
2562 | movi eax, ERROR_ACCESS_DENIED |
2568 | movi eax, ERROR_ACCESS_DENIED |
- | 2569 | test [edi+INODE.accessMode], FLAG_FILE |
|
2563 | test [edi+INODE.accessMode], FLAG_FILE |
2570 | jz .error2 ; not a file |
2564 | jz .error2 ; not a file |
2571 | mov eax, [ebx+4] |
- | 2572 | mov edx, [ebx+8] |
|
2565 | push esi |
2573 | mov ebx, [edi+INODE.fileSize] |
2566 | mov ebx, [edi+INODE.fileSize] |
2574 | mov ecx, [edi+INODE.fileSizeHigh] |
- | 2575 | push esi ecx |
|
- | 2576 | cmp ebx, eax |
|
2567 | mov eax, esi |
2577 | sbb ecx, edx |
2568 | cmp ebx, ecx |
2578 | mov ecx, esi |
- | 2579 | jnc @f |
|
2569 | jnc @f |
2580 | call extfsExtendFile |
- | 2581 | pop esi |
|
- | 2582 | jc .error |
|
2570 | call extfsExtendFile |
2583 | mov eax, [edi+INODE.fileSize] |
- | 2584 | mov edx, [edi+INODE.fileSizeHigh] |
|
- | 2585 | sub eax, ebx |
|
2571 | jc .error |
2586 | sbb edx, esi |
2572 | sub ecx, ebx |
2587 | jnz .done |
2573 | cmp ecx, 1000001h |
2588 | cmp eax, 1000001h |
2574 | jnc .done |
2589 | jnc .done |
2575 | push ecx |
2590 | push eax |
2576 | stdcall kernel_alloc, ecx |
2591 | stdcall kernel_alloc, eax |
2577 | pop ecx |
2592 | pop ecx |
2578 | test eax, eax |
2593 | test eax, eax |
2579 | jz .error |
2594 | jz .error |
2580 | push ecx |
2595 | push ecx |
- | 2596 | add ecx, 3 |
|
2581 | add ecx, 3 |
2597 | shr ecx, 2 |
2582 | shr ecx, 2 |
2598 | mov edx, esi |
2583 | mov esi, eax |
2599 | mov esi, eax |
2584 | mov edi, eax |
2600 | mov edi, eax |
2585 | xor eax, eax |
2601 | xor eax, eax |
2586 | rep stosd |
2602 | rep stosd |
2587 | pop ecx edx |
2603 | pop ecx edi |
2588 | push esi |
2604 | push esi |
2589 | call ext_WriteFile.erase |
2605 | call ext_WriteFile.erase |
2590 | call kernel_free |
2606 | call kernel_free |
Line 2591... | Line 2607... | ||
2591 | xor eax, eax |
2607 | xor eax, eax |
2592 | ret |
2608 | ret |
- | 2609 | ||
2593 | 2610 | @@: |
|
2594 | @@: |
2611 | call extfsTruncateFile |
2595 | call extfsTruncateFile |
2612 | pop eax |
2596 | .done: |
2613 | .done: |
2597 | xor eax, eax |
2614 | xor eax, eax |