Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2000-02-17 22:38:33 +0300
committerChristopher Faylor <me@cgf.cx>2000-02-17 22:38:33 +0300
commit1fd5e000ace55b323124c7e556a7a864b972a5c4 (patch)
treedc4fcf1e5e22a040716ef92c496b8d94959b2baa /winsup/cygwin/include/cygwin/acl.h
parent369d8a8fd5e887eca547bf34bccfdf755c9e5397 (diff)
import winsup-2000-02-17 snapshot
Diffstat (limited to 'winsup/cygwin/include/cygwin/acl.h')
-rw-r--r--winsup/cygwin/include/cygwin/acl.h81
1 files changed, 81 insertions, 0 deletions
diff --git a/winsup/cygwin/include/cygwin/acl.h b/winsup/cygwin/include/cygwin/acl.h
new file mode 100644
index 000000000..d54655a5a
--- /dev/null
+++ b/winsup/cygwin/include/cygwin/acl.h
@@ -0,0 +1,81 @@
+/* cygwin/acl.h header file for Cygwin.
+
+ Copyright 1999, 2000 Cygnus Solutions.
+ Written by C. Vinschen.
+
+This file is part of Cygwin.
+
+This software is a copyrighted work licensed under the terms of the
+Cygwin license. Please consult the file "CYGWIN_LICENSE" for
+details. */
+
+#ifndef _CYGWIN_ACL_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define _CYGWIN_ACL_H
+
+#include <_ansi.h>
+
+#include <sys/types.h>
+#include <sys/stat.h>
+
+/* Values for `cmd' in calls to acl(2) and facl(2) */
+#define SETACL (0x0)
+#define GETACL (0x1)
+#define GETACLCNT (0x2)
+
+#define MIN_ACL_ENTRIES (4) // minimal acl entries from GETACLCNT
+#define MAX_ACL_ENTRIES (256) // max entries of each type
+
+// Return values of aclcheck(3) in case of error */
+#define GRP_ERROR (0x1)
+#define USER_ERROR (0x2)
+#define CLASS_ERROR (0x3)
+#define OTHER_ERROR (0x4)
+#define DUPLICATE_ERROR (0x5)
+#define ENTRY_ERROR (0x6)
+#define MISS_ERROR (0x7) // which = -1
+#define MEM_ERROR (0x8) // which = -1
+
+// Values for entry type of struct acl
+#define USER_OBJ (0x0001) // owner
+#define USER (0x0002) // additional user
+#define GROUP_OBJ (0x0004) // owning group
+#define GROUP (0x0008) // additional group
+#define CLASS_OBJ (0x0010) // mask entry
+#define OTHER_OBJ (0x0020) // others
+#define ACL_DEFAULT (0x1000) // default flag
+#define DEF_USER_OBJ (ACL_DEFAULT|USER_OBJ) // default owner
+#define DEF_USER (ACL_DEFAULT|USER) // default additional user
+#define DEF_GROUP_OBJ (ACL_DEFAULT|GROUP_OBJ) // default owning group
+#define DEF_GROUP (ACL_DEFAULT|GROUP) // default additional group
+#define DEF_CLASS_OBJ (ACL_DEFAULT|CLASS_OBJ) // default mask entry
+#define DEF_OTHER_OBJ (ACL_DEFAULT|OTHER_OBJ) // default others
+// Values with equivalent meanings
+#define USER_OWNER USER_OBJ
+#define GROUP_OWNER GROUP_OBJ
+#define MASK CLASS_OBJ
+#define OTHER OTHER_OBJ
+
+typedef struct acl {
+ int a_type; /* entry type */
+ uid_t a_id; /* UID | GID */
+ mode_t a_perm; /* permissions */
+} aclent_t;
+
+int _EXFUN(acl,(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));
+int _EXFUN(acltomode,(aclent_t *aclbufp, int nentries, mode_t *modep));
+int _EXFUN(aclfrommode,(aclent_t *aclbufp, int nentries, mode_t *modep));
+int _EXFUN(acltopbits,(aclent_t *aclbufp, int nentries, mode_t *pbitsp));
+int _EXFUN(aclfrompbits,(aclent_t *aclbufp, int nentries, mode_t *pbitsp));
+char *_EXFUN(acltotext,(aclent_t *aclbufp, int aclcnt));
+aclent_t *_EXFUN(aclfromtext,(char *acltextp, int *aclcnt));
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* _CYGWIN_ACL_H */