diff options
author | Christopher Faylor <me@cgf.cx> | 2000-02-17 22:38:33 +0300 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2000-02-17 22:38:33 +0300 |
commit | 1fd5e000ace55b323124c7e556a7a864b972a5c4 (patch) | |
tree | dc4fcf1e5e22a040716ef92c496b8d94959b2baa /winsup/cygwin/include/cygwin/acl.h | |
parent | 369d8a8fd5e887eca547bf34bccfdf755c9e5397 (diff) |
import winsup-2000-02-17 snapshot
Diffstat (limited to 'winsup/cygwin/include/cygwin/acl.h')
-rw-r--r-- | winsup/cygwin/include/cygwin/acl.h | 81 |
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 */ |