aboutsummaryrefslogtreecommitdiff
path: root/src/include/utils/acl.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/utils/acl.h')
-rw-r--r--src/include/utils/acl.h197
1 files changed, 103 insertions, 94 deletions
diff --git a/src/include/utils/acl.h b/src/include/utils/acl.h
index 5d9451d9689..f6e6a75ab5d 100644
--- a/src/include/utils/acl.h
+++ b/src/include/utils/acl.h
@@ -1,21 +1,21 @@
/*-------------------------------------------------------------------------
*
* acl.h--
- * Definition of (and support for) access control list data structures.
+ * Definition of (and support for) access control list data structures.
*
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: acl.h,v 1.7 1997/08/19 21:40:18 momjian Exp $
+ * $Id: acl.h,v 1.8 1997/09/07 05:02:05 momjian Exp $
*
* NOTES
- * For backward-compatability purposes we have to allow there
- * to be a null ACL in a pg_class tuple. This will be defined as
- * meaning "no protection" (i.e., old catalogs get old semantics).
+ * For backward-compatability purposes we have to allow there
+ * to be a null ACL in a pg_class tuple. This will be defined as
+ * meaning "no protection" (i.e., old catalogs get old semantics).
*
- * The AclItems in an ACL array are currently kept in sorted order.
- * Things will break hard if you change that without changing the
- * code wherever this is included.
+ * The AclItems in an ACL array are currently kept in sorted order.
+ * Things will break hard if you change that without changing the
+ * code wherever this is included.
*
*-------------------------------------------------------------------------
*/
@@ -26,99 +26,106 @@
#include <utils/array.h>
/*
- * AclId system identifier for the user, group, etc.
- * XXX currently UNIX uid for users...
+ * AclId system identifier for the user, group, etc.
+ * XXX currently UNIX uid for users...
*/
-typedef uint32 AclId;
-#define ACL_ID_WORLD 0 /* XXX only idtype should be checked */
+typedef uint32 AclId;
+
+#define ACL_ID_WORLD 0 /* XXX only idtype should be checked */
/*
* AclIdType tag that describes if the AclId is a user, group, etc.
*/
-typedef uint8 AclIdType;
-#define ACL_IDTYPE_WORLD 0x00
-#define ACL_IDTYPE_UID 0x01 /* user id - from pg_user */
-#define ACL_IDTYPE_GID 0x02 /* group id - from pg_group */
+typedef uint8 AclIdType;
+
+#define ACL_IDTYPE_WORLD 0x00
+#define ACL_IDTYPE_UID 0x01 /* user id - from pg_user */
+#define ACL_IDTYPE_GID 0x02 /* group id - from pg_group */
/*
- * AclMode the actual permissions
- * XXX should probably use bit.h routines.
- * XXX should probably also stuff the modechg cruft in the
- * high bits, too.
+ * AclMode the actual permissions
+ * XXX should probably use bit.h routines.
+ * XXX should probably also stuff the modechg cruft in the
+ * high bits, too.
*/
-typedef uint8 AclMode;
-#define ACL_NO 0 /* no permissions */
-#define ACL_AP (1<<0) /* append */
-#define ACL_RD (1<<1) /* read */
-#define ACL_WR (1<<2) /* write (append/delete/replace) */
-#define ACL_RU (1<<3) /* place rules */
-#define N_ACL_MODES 4
-
-#define ACL_MODECHG_ADD 1
-#define ACL_MODECHG_DEL 2
-#define ACL_MODECHG_EQL 3
+typedef uint8 AclMode;
+
+#define ACL_NO 0 /* no permissions */
+#define ACL_AP (1<<0) /* append */
+#define ACL_RD (1<<1) /* read */
+#define ACL_WR (1<<2) /* write (append/delete/replace) */
+#define ACL_RU (1<<3) /* place rules */
+#define N_ACL_MODES 4
+
+#define ACL_MODECHG_ADD 1
+#define ACL_MODECHG_DEL 2
+#define ACL_MODECHG_EQL 3
/* change this line if you want to set the default acl permission */
-#define ACL_WORLD_DEFAULT (ACL_RD)
-/* #define ACL_WORLD_DEFAULT (ACL_RD|ACL_WR|ACL_AP|ACL_RU) */
-#define ACL_OWNER_DEFAULT (ACL_RD|ACL_WR|ACL_AP|ACL_RU)
+#define ACL_WORLD_DEFAULT (ACL_RD)
+/* #define ACL_WORLD_DEFAULT (ACL_RD|ACL_WR|ACL_AP|ACL_RU) */
+#define ACL_OWNER_DEFAULT (ACL_RD|ACL_WR|ACL_AP|ACL_RU)
/*
* AclItem
*/
-typedef struct AclItem {
- AclId ai_id;
- AclIdType ai_idtype;
- AclMode ai_mode;
-} AclItem;
-/* Note: if the size of AclItem changes,
+typedef struct AclItem
+{
+ AclId ai_id;
+ AclIdType ai_idtype;
+ AclMode ai_mode;
+} AclItem;
+
+/* Note: if the size of AclItem changes,
change the aclitem typlen in pg_type.h */
/*
- * The value of the first dimension-array element. Since these arrays
+ * The value of the first dimension-array element. Since these arrays
* always have a lower-bound of 0, this is the same as the number of
* elements in the array.
*/
-#define ARR_DIM0(a) (((unsigned *) (((char *) a) + sizeof(ArrayType)))[0])
+#define ARR_DIM0(a) (((unsigned *) (((char *) a) + sizeof(ArrayType)))[0])
/*
- * Acl a one-dimensional POSTGRES array of AclItem
+ * Acl a one-dimensional POSTGRES array of AclItem
*/
typedef ArrayType Acl;
-#define ACL_NUM(ACL) ARR_DIM0(ACL)
-#define ACL_DAT(ACL) ((AclItem *) ARR_DATA_PTR(ACL))
-#define ACL_N_SIZE(N) \
- ((unsigned) (ARR_OVERHEAD(1) + ((N) * sizeof(AclItem))))
-#define ACL_SIZE(ACL) ARR_SIZE(ACL)
+
+#define ACL_NUM(ACL) ARR_DIM0(ACL)
+#define ACL_DAT(ACL) ((AclItem *) ARR_DATA_PTR(ACL))
+#define ACL_N_SIZE(N) \
+ ((unsigned) (ARR_OVERHEAD(1) + ((N) * sizeof(AclItem))))
+#define ACL_SIZE(ACL) ARR_SIZE(ACL)
/*
- * IdList a one-dimensional POSTGRES array of AclId
+ * IdList a one-dimensional POSTGRES array of AclId
*/
typedef ArrayType IdList;
-#define IDLIST_NUM(IDL) ARR_DIM0(IDL)
-#define IDLIST_DAT(IDL) ((AclId *) ARR_DATA_PTR(IDL))
-#define IDLIST_N_SIZE(N) \
- ((unsigned) (ARR_OVERHEAD(1) + ((N) * sizeof(AclId))))
-#define IDLIST_SIZE(IDL) ARR_SIZE(IDL)
-
-#define ACL_MODECHG_STR "+-=" /* list of valid characters */
-#define ACL_MODECHG_ADD_CHR '+'
-#define ACL_MODECHG_DEL_CHR '-'
-#define ACL_MODECHG_EQL_CHR '='
-#define ACL_MODE_STR "arwR" /* list of valid characters */
-#define ACL_MODE_AP_CHR 'a'
-#define ACL_MODE_RD_CHR 'r'
-#define ACL_MODE_WR_CHR 'w'
-#define ACL_MODE_RU_CHR 'R'
+
+#define IDLIST_NUM(IDL) ARR_DIM0(IDL)
+#define IDLIST_DAT(IDL) ((AclId *) ARR_DATA_PTR(IDL))
+#define IDLIST_N_SIZE(N) \
+ ((unsigned) (ARR_OVERHEAD(1) + ((N) * sizeof(AclId))))
+#define IDLIST_SIZE(IDL) ARR_SIZE(IDL)
+
+#define ACL_MODECHG_STR "+-=" /* list of valid characters */
+#define ACL_MODECHG_ADD_CHR '+'
+#define ACL_MODECHG_DEL_CHR '-'
+#define ACL_MODECHG_EQL_CHR '='
+#define ACL_MODE_STR "arwR" /* list of valid characters */
+#define ACL_MODE_AP_CHR 'a'
+#define ACL_MODE_RD_CHR 'r'
+#define ACL_MODE_WR_CHR 'w'
+#define ACL_MODE_RU_CHR 'R'
/* result codes for pg_aclcheck */
-#define ACLCHECK_OK 0
-#define ACLCHECK_NO_PRIV 1
-#define ACLCHECK_NO_CLASS 2
-#define ACLCHECK_NOT_OWNER 3
+#define ACLCHECK_OK 0
+#define ACLCHECK_NO_PRIV 1
+#define ACLCHECK_NO_CLASS 2
+#define ACLCHECK_NOT_OWNER 3
/* warning messages. set these in aclchk.c. */
-extern char *aclcheck_error_strings[];
+extern char *aclcheck_error_strings[];
/*
* Enable ACL execution tracing and table dumps
@@ -126,41 +133,43 @@ extern char *aclcheck_error_strings[];
/*#define ACLDEBUG_TRACE*/
/*
- * routines used internally (parser, etc.)
+ * routines used internally (parser, etc.)
*/
-extern Acl *aclownerdefault(AclId ownerid);
-extern Acl *acldefault(void);
-extern Acl *aclinsert3(Acl *old_acl, AclItem *mod_aip, unsigned modechg);
+extern Acl *aclownerdefault(AclId ownerid);
+extern Acl *acldefault(void);
+extern Acl *aclinsert3(Acl * old_acl, AclItem * mod_aip, unsigned modechg);
-extern char* aclmakepriv(char* old_privlist, char new_priv);
-extern char* aclmakeuser(char* user_type, char* user);
-extern ChangeACLStmt* makeAclStmt(char* privs, List* rel_list, char* grantee,
- char grant_or_revoke);
+extern char *aclmakepriv(char *old_privlist, char new_priv);
+extern char *aclmakeuser(char *user_type, char *user);
+extern ChangeACLStmt *
+makeAclStmt(char *privs, List * rel_list, char *grantee,
+ char grant_or_revoke);
/*
* exported routines (from acl.c)
*/
-extern Acl *makeacl(int n);
+extern Acl *makeacl(int n);
extern AclItem *aclitemin(char *s);
-extern char *aclitemout(AclItem *aip);
-extern Acl *aclinsert(Acl *old_acl, AclItem *mod_aip);
-extern Acl *aclremove(Acl *old_acl, AclItem *mod_aip);
-extern int32 aclcontains(Acl *acl, AclItem *aip);
+extern char *aclitemout(AclItem * aip);
+extern Acl *aclinsert(Acl * old_acl, AclItem * mod_aip);
+extern Acl *aclremove(Acl * old_acl, AclItem * mod_aip);
+extern int32 aclcontains(Acl * acl, AclItem * aip);
/*
* prototypes for functions in aclchk.c
*/
-extern void ChangeAcl(char *relname, AclItem *mod_aip, unsigned modechg);
-extern AclId get_grosysid(char *groname);
-extern char *get_groname(AclId grosysid);
+extern void ChangeAcl(char *relname, AclItem * mod_aip, unsigned modechg);
+extern AclId get_grosysid(char *groname);
+extern char *get_groname(AclId grosysid);
/* XXX move these elsewhere -pma */
-extern int32 pg_aclcheck(char *relname, char *usename, AclMode mode);
-extern int32 pg_ownercheck(char *usename, char *value, int cacheid);
-extern int32 pg_func_ownercheck(char *usename, char *funcname,
- int nargs, Oid *arglist);
-extern int32 pg_aggr_ownercheck(char *usename, char *aggname,
- Oid basetypeID);
-
-#endif /* ACL_H */
-
+extern int32 pg_aclcheck(char *relname, char *usename, AclMode mode);
+extern int32 pg_ownercheck(char *usename, char *value, int cacheid);
+extern int32
+pg_func_ownercheck(char *usename, char *funcname,
+ int nargs, Oid * arglist);
+extern int32
+pg_aggr_ownercheck(char *usename, char *aggname,
+ Oid basetypeID);
+
+#endif /* ACL_H */