]> andersk Git - moira.git/commitdiff
Initial revision
authorgenoa <genoa>
Mon, 20 Jul 1992 15:44:51 +0000 (15:44 +0000)
committergenoa <genoa>
Mon, 20 Jul 1992 15:44:51 +0000 (15:44 +0000)
server/query.h [new file with mode: 0644]

diff --git a/server/query.h b/server/query.h
new file mode 100644 (file)
index 0000000..e32b46d
--- /dev/null
@@ -0,0 +1,65 @@
+/* $Header$
+ *
+ * Structures and constants used in the query dispatch table
+ */
+
+/* Query Types */
+enum query_type {RETRIEVE, UPDATE, APPEND, DELETE, SPECIAL};
+
+/* Query Definition Structure */
+struct query
+{
+    char *name;                        /* query name */
+    char *shortname;           /* abbreviated query name (must be 4 chars) */
+    enum query_type type;      /* query type */
+    char *rvar;                        /* range variable */
+    char *rtable;              /* range table */
+    char *tlist;               /* target list */
+    char **fields;             /* input and output variable names (for help) */
+    int  vcnt;                 /* variable count */
+    char *qual;                        /* format string for "where" clause */
+    int  argc;                 /* number of args for qualifier */
+    struct validate *validate; /* validation support */
+    int         acl;                   /* hint as to query ACL for this query */
+    int  everybody;            /* is the default user on this ACL? */
+};
+
+/* Query Validation Structure */
+struct validate
+{
+    /* object validation (e.g., user, filesys, type) */
+    struct valobj *valobj;     /* array of object validation descriptors */
+    int objcnt;                        /* size of array */
+    /* row validation - retrieve (exists = any(rvar.field where qual)) */
+    char *field;               /* field to check for */
+    char *qual;                        /* format string for "where" clause */
+    int  argc;                 /* number of args used in qual */
+    /* values field containing current max object id */
+    char *object_id;
+    /* routine to verify access permission on objects */
+    int (*acs_rtn)();
+    /* pre-processing routine (var setup only) */
+    int (*pre_rtn)();
+    /* post-processing routine */
+    int (*post_rtn)();
+};
+       
+/* Validated Object Types */
+enum vo_type {V_NAME, V_ID, V_TYPE, V_TYPEDATA, V_DATE, 
+             V_SORT, V_RENAME, V_CHAR, V_LOCK};
+
+/* Validated Object Definition */
+struct valobj
+{
+    enum vo_type type;
+    int index;                 /* index of object to validate */
+    char *table;               /* table containing object */
+    char *namefield;           /* table's fieldname for object */
+    char *idfield;             /* table's corresponding id field (if any) */
+    int error;
+};
+
+/* Used to setup static argv, maximum argc and argument lengths */
+#define QMAXARGS       20
+#define QMAXARGSIZE    513
+
This page took 0.040753 seconds and 5 git commands to generate.