Subversion Repositories Kolibri OS

Rev

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

Rev 6861 Rev 6871
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: 6861 $
8
$Revision: 6871 $
9
 
9
 
10
; EXT external functions
10
; EXT external functions
11
;   in:
11
;   in:
Line 102... Line 102...
102
inodeSize           dw  ?
102
inodeSize           dw  ?
103
thisBlockGroup      dw  ?
103
thisBlockGroup      dw  ?
104
compatibleFlags     dd  ?
104
compatibleFlags     dd  ?
105
incompatibleFlags   dd  ?
105
incompatibleFlags   dd  ?
106
RO_compatibleFlags  dd  ?
106
RO_compatibleFlags  dd  ?
-
 
107
UUID                rb  16
-
 
108
volumeLabel         rb  16
107
ends
109
ends
Line 108... Line 110...
108
 
110
 
109
; ext4 extent tree
111
; ext4 extent tree
110
struct NODEHEADER       ; tree node header
112
struct NODEHEADER       ; tree node header
Line 2057... Line 2059...
2057
        pop     eax ebx
2059
        pop     eax ebx
2058
        ret
2060
        ret
Line 2059... Line 2061...
2059
 
2061
 
2060
;----------------------------------------------------------------
2062
;----------------------------------------------------------------
2061
ext_GetFileInfo:
-
 
2062
        call    ext_lock
2063
ext_GetFileInfo:
2063
        cmp     byte [esi], 0
2064
        cmp     byte [esi], 0
-
 
2065
        jz      .volume
2064
        jz      .is_root
2066
        call    ext_lock
-
 
2067
        call    findInode
2065
        call    findInode
2068
        jc      .ret
2066
        lea     esi, [ebp+EXTFS.inodeBuffer]
-
 
2067
        jnc     @f
-
 
2068
        push    eax
-
 
2069
        call    ext_unlock
-
 
2070
        pop     eax
-
 
2071
        ret
-
 
2072
 
-
 
2073
.is_root:
-
 
2074
        mov     edi, esi
-
 
2075
        lea     esi, [ebp+EXTFS.rootInodeBuffer]
-
 
2076
@@:
2069
        lea     esi, [ebp+EXTFS.inodeBuffer]
2077
        mov     edx, [ebx+16]
2070
        mov     edx, [ebx+16]
2078
        mov     bl, [edi]
2071
        mov     bl, [edi]
2079
        xor     eax, eax
2072
        xor     eax, eax
2080
        mov     edi, edx
2073
        mov     edi, edx
Line 2103... Line 2096...
2103
        call    fsTime2bdfe
2096
        call    fsTime2bdfe
Line 2104... Line 2097...
2104
 
2097
 
2105
        mov     eax, [esi+INODE.dataModified]
2098
        mov     eax, [esi+INODE.dataModified]
2106
        sub     eax, 978307200
2099
        sub     eax, 978307200
-
 
2100
        call    fsTime2bdfe
-
 
2101
        xor     eax, eax
-
 
2102
.ret:
2107
        call    fsTime2bdfe
2103
        push    eax
-
 
2104
        call    ext_unlock
-
 
2105
        pop     eax
-
 
2106
        ret
-
 
2107
 
-
 
2108
.volume:
-
 
2109
        mov     eax, dword[ebp+EXTFS.Length]
-
 
2110
        mov     edx, dword[ebp+EXTFS.Length+4]
-
 
2111
        mov     edi, [ebx+16]
-
 
2112
        shld    edx, eax, 9
-
 
2113
        shl     eax, 9
-
 
2114
        mov     [edi+36], edx
-
 
2115
        mov     [edi+32], eax
-
 
2116
        mov     eax, [ebx+8]
-
 
2117
        mov     byte [edi], 8
-
 
2118
        mov     [edi+4], eax
-
 
2119
        lea     esi, [ebp+EXTFS.superblock.volumeLabel]
-
 
2120
        mov     ecx, 16
-
 
2121
        add     edi, 40
-
 
2122
        cmp     eax, 3
-
 
2123
        jz      .utf8
-
 
2124
        add     ecx, esi
-
 
2125
        cmp     eax, 2
-
 
2126
        jz      .utf16
-
 
2127
@@:
-
 
2128
        call    utf8to16
-
 
2129
        call    uni2ansi_char
-
 
2130
        stosb
-
 
2131
        cmp     esi, ecx
-
 
2132
        jc      @b
-
 
2133
        jmp     @f
-
 
2134
 
-
 
2135
.utf8:
-
 
2136
        rep movsb
-
 
2137
        jmp     @f
-
 
2138
 
-
 
2139
.utf16:
-
 
2140
        call    utf8to16
-
 
2141
        stosw
-
 
2142
        cmp     esi, ecx
-
 
2143
        jc      .utf16
2108
        call    ext_unlock
2144
@@:
-
 
2145
        xor     eax, eax
2109
        xor     eax, eax
2146
        mov     [edi], ax
Line 2110... Line 2147...
2110
        ret
2147
        ret
2111
 
2148
 
2112
;----------------------------------------------------------------
2149
;----------------------------------------------------------------