bash-4.2 and symlink to folder that turns to be not executable

Denis Excoffier Cygwin@Denis-Excoffier.org
Mon Aug 1 14:13:00 GMT 2011


On Mon, Aug 01, 2011 at 02:24:25PM +0200, Corinna Vinschen wrote:
>>>> However, at a first glance I doubt this is a Cygwin bug. Consider:
>>>> - bash 4.1.10 returns "execut"
>> - /bin/test from coreustils returns "execut"
>> - My highly professional and streamlined testcase returns the correct
>> result:
>>>> #include <stdio.h>
>> #include <unistd.h>
>> #include <errno.h>
>> #include <string.h>
>>>> void
>> my_access (const char *file, int flag, const char *fname, int effective)
>> {
>> int ret = effective ? access (file, flag) : eaccess (file, flag);
>> printf ("%saccess (%s, %s) = %d",
>> 	 effective ? "e" : " ", file, fname, ret);
>> if (ret)
>> 	printf (" <%s>", strerror (errno));
>> fputc ('\n', stdout);
>> }
>>>> int
>> main (int argc, char**argv)
>> {
>> int eff;
>>>> if (argc > 1)
>> 	for (eff = 0; eff < 2; ++eff)
>> 	 {
>> 	 my_access (argv[1], F_OK, "F_OK", eff);
>> 	 my_access (argv[1], R_OK, "R_OK", eff);
>> 	 my_access (argv[1], W_OK, "W_OK", eff);
>> 	 my_access (argv[1], X_OK, "X_OK", eff);
>> 	 }
>> return 0;
>> }
>>>> $ gcc -g -o access access.c
>> $ ./access /tmp/xxx/folder
>> access (/tmp/xxx/folder, F_OK) = 0
>> access (/tmp/xxx/folder, R_OK) = 0
>> access (/tmp/xxx/folder, W_OK) = 0
>> access (/tmp/xxx/folder, X_OK) = 0
>> eaccess (/tmp/xxx/folder, F_OK) = 0
>> eaccess (/tmp/xxx/folder, R_OK) = 0
>> eaccess (/tmp/xxx/folder, W_OK) = 0
>> eaccess (/tmp/xxx/folder, X_OK) = 0
>>>>
Right, and me too. But if i replace in your testcase:
eaccess(file, flag) with
faccessat(0 /* not used if file is absolute */, file, flag, AT_EACCESS)
(and also "e" : " " with " " : "f" for clarity)
(and i have to include <fcntl.h>)
i obtain:
% ./corinna++ /tmp/xxx/folder
faccess (/tmp/xxx/folder, F_OK) = 0
faccess (/tmp/xxx/folder, R_OK) = 0
faccess (/tmp/xxx/folder, W_OK) = 0
faccess (/tmp/xxx/folder, X_OK) = -1 <Permission denied>
 access (/tmp/xxx/folder, F_OK) = 0
 access (/tmp/xxx/folder, R_OK) = 0
 access (/tmp/xxx/folder, W_OK) = 0
 access (/tmp/xxx/folder, X_OK) = 0
%
(faccess is what i find in bash-4.2/lib/sh/eaccess.c)
Is this under control?
>> Corinna
Denis Excoffier.
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple


More information about the Cygwin mailing list

AltStyle によって変換されたページ (->オリジナル) /