Re: [ZEND-ENGINE-CVS] cvs: TSRM(PHP_5_2) / tsrm_virtual_cwd.c tsrm_virtual_cwd.h php-src NEWS
| From: | Wez Furlong | Date: | Fri, 10 Nov 2006 15:50:20 +0000 |
| Subject: | Re: [ZEND-ENGINE-CVS] cvs: TSRM(PHP_5_2) / tsrm_virtual_cwd.c tsrm_virtual_cwd.h php-src NEWS | ||
| References: | 1 2 | Groups: | php.zend-engine.cvs |
| Request: | Send a blank email to php-zend-engine-cvs+get-5389@lists.php.net to get a copy of this message | ||
NTFS uses ACLs which are different from file modes. They are much
more expensive to obtain, and do not mean the same thing.
If we want to support ACLs, we should provide an API that works with
both POSIX and NTFS systems.
--Wez.
On 11/10/06, Nuno Lopes <nlopess@php.net> wrote:
Hi Dmitry,
Glad to see your commits :)
+ buf->st_uid = buf->st_gid = buf->st_ino = 0;
+ buf->st_mode = (data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ?
(S_IFDIR|S_IEXEC|(S_IEXEC>>3)|(S_IEXEC>>6)) : S_IFREG;
+ buf->st_mode |= (data.dwFileAttributes & FILE_ATTRIBUTE_READONLY) ?
(S_IREAD|(S_IREAD>>3)|(S_IREAD>>6)) :
(S_IREAD|(S_IREAD>>3)|(S_IREAD>>6)|S_IWRITE|(S_IWRITE>>3)|(S_IWRITE>>6));
+ if ((data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0) {
+ int len = strlen(path);
+
+ if (path[len-4] == '.') {
+ if (_memicmp(path+len-3, "exe", 3) == 0 ||
+ _memicmp(path+len-3, "com", 3) == 0 ||
+ _memicmp(path+len-3, "bat", 3) == 0 ||
+ _memicmp(path+len-3, "cmd", 3) == 0) {
+ buf->st_mode |= (S_IEXEC|(S_IEXEC>>3)|(S_IEXEC>>6));
+ }
+ }
+ }
This logic is correct with FAT, but probably not with NTFS as NTFS supports
an execute attribute, which you aren't using here. Also, you are giving the
same permissions for owner/group/user, but again, with NTFS this is not true
at all.
However I navigated through the MSDN site and I couldn't find any function
to retrieve these NTFS attributes. Anyway, I hope you understand my point.
Nuno
--
Zend Engine CVS Mailing List (http://cvs.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php