diff --git a/kernel/trunk/docs/sysfuncs.txt b/kernel/trunk/docs/sysfuncs.txt index bb2225aa9..b6a3d9051 100644 --- a/kernel/trunk/docs/sysfuncs.txt +++ b/kernel/trunk/docs/sysfuncs.txt @@ -4148,6 +4148,7 @@ Structure of block of data for folder entry (BDFE): and after archiving this bit is cleared - it can be useful for automatically creating of backup-archives as at writing this bit is usually set + * bit 6 (mask 0x40): this is a symbolic link (currently only set by the ext driver). * +4: dword: encoding, equals to field +8 in the information structure * +8: 4*byte: time of file creation * +12 = +0xC: 4*byte: date of file creation diff --git a/kernel/trunk/fs/ext.inc b/kernel/trunk/fs/ext.inc index 3916d857b..b5022b748 100644 --- a/kernel/trunk/fs/ext.inc +++ b/kernel/trunk/fs/ext.inc @@ -212,6 +212,7 @@ DIR_DIRECTORY = 2 DIR_SYMLINK = 7 KOS_HIDDEN = 2 KOS_DIRECTORY = 10h +KOS_SYMLINK = 40h READ_ONLY = 1 SYMLINK_MAX_DEPTH = 40 FAST_SYMLINK_MAX_SIZE = 60 @@ -3392,6 +3393,11 @@ ext_ReadFolder: stosd mov eax, [esi+INODE.fileSizeHigh] stosd + movzx eax, [esi+INODE.accessMode] + and eax, TYPE_MASK + cmp eax, FLAG_SYMLINK + jne @f + or dword [edx], KOS_SYMLINK @@: mov esi, [esp+12] movzx ecx, [esi+DIRENTRY.nameLength]