+Thu Apr 13 8:48:00 2000 Corinna Vinschen <corinna@vinschen.de>
+
+ * path.cc (conv_to_win32_path): Detect a win32 path
+ if path contains backslashes.
+ * cygwin.din: Add symbol for `lacl'.
+ * security.cc (ReadSD): Add debug output.
+ (acl_worker): New static function.
+ (acl): Call acl_worker now.
+ (lacl): New function.
+ (facl): Call acl_worker now.
+ * include/cygwin/acl.h: Add prototype for `lacl'.
+
Wed Apr 12 18:48:33 2000 Christopher Faylor <cgf@cygnus.com>
* path.cc (path_conv::path_conv): Ensure that suffix is correctly
} aclent_t;
int _EXFUN(acl,(const char *path, int cmd, int nentries, aclent_t *aclbufp));
+int _EXFUN(lacl,(const char *path, int cmd, int nentries, aclent_t *aclbufp));
int _EXFUN(facl,(int fd, int cmd, int nentries, aclent_t *aclbufp));
int _EXFUN(aclcheck,(aclent_t *aclbufp, int nentries, int *which));
int _EXFUN(aclsort,(int nentries, int calclass, aclent_t *aclbufp));
}
/* Open file for read */
+ debug_printf("file = %s", file);
HANDLE hFile = CreateFile (file, GENERIC_READ,
FILE_SHARE_READ | FILE_SHARE_WRITE,
&sec_none_nih, OPEN_EXISTING,
return -1;
}
-extern "C"
+static
int
-acl (const char *path, int cmd, int nentries, aclent_t *aclbufp)
+acl_worker (const char *path, int cmd, int nentries, aclent_t *aclbufp,
+ int nofollow)
{
- path_conv real_path (path);
+ path_conv real_path (path, nofollow ? SYMLINK_NOFOLLOW : SYMLINK_FOLLOW, 1);
if (real_path.error)
{
set_errno (real_path.error);
case GETACL:
if (nentries < 1)
set_errno (EINVAL);
- else if (! stat (path, &st))
+ else if ((nofollow && ! lstat (path, &st))
+ || (!nofollow && ! stat (path, &st)))
{
aclent_t lacl[4];
if (nentries > 0)
extern "C"
int
+acl (const char *path, int cmd, int nentries, aclent_t *aclbufp)
+{
+ return acl_worker (path, cmd, nentries, aclbufp, 0);
+}
+
+extern "C"
+int
+lacl (const char *path, int cmd, int nentries, aclent_t *aclbufp)
+{
+ return acl_worker (path, cmd, nentries, aclbufp, 1);
+}
+
+extern "C"
+int
facl (int fd, int cmd, int nentries, aclent_t *aclbufp)
{
if (dtable.not_open (fd))
return -1;
}
syscall_printf ("facl (%d): calling acl (%s)", fd, path);
- return acl (path, cmd, nentries, aclbufp);
+ return acl_worker (path, cmd, nentries, aclbufp, 0);
}
extern "C"