]> andersk Git - moira.git/blobdiff - server/query.h
Command line printer manipulation client, and build goo.
[moira.git] / server / query.h
index e32b46daa4471cd7b428503ac389e04733a8e778..7a663def6cde24622761f188a13270466211a50e 100644 (file)
@@ -1,65 +1,85 @@
-/* $Header$
+/* $Id$
  *
  * Structures and constants used in the query dispatch table
+ *
+ * Copyright (C) 1987-1998 by the Massachusetts Institute of Technology.
+ * For copying and distribution information, please see the file
+ * <mit-copyright.h>.
  */
 
 /* Query Types */
-enum query_type {RETRIEVE, UPDATE, APPEND, DELETE, SPECIAL};
+enum query_type {MR_Q_RETRIEVE, MR_Q_UPDATE, MR_Q_APPEND, MR_Q_DELETE, MR_Q_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? */
+  char *name;                  /* query name */
+  char *shortname;             /* abbreviated query name (must be 4 chars) */
+  int  version;                        /* query version */
+  enum query_type type;                /* query type */
+  char *rvar;                  /* range variable */
+  enum tables 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 */
+  char *sort;                  /* fields to sort on */
+  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)();
+  /* 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)(struct query *q, char *Argv[], client *cl);
+  /* pre-processing routine (var setup only) */
+  int (*pre_rtn)(struct query *q, char *Argv[], client *cl);
+  /* 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};
+enum vo_type {V_NAME, V_ID, V_TYPE, V_TYPEDATA, V_RENAME, V_CHAR,
+             V_LEN, V_NUM};
 
 /* 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;
+  enum vo_type type;
+  int index;                   /* index of object to validate */
+  enum tables 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
+/* prototypes from increment.dc */
+void incremental_before(enum tables table, char *qualx, char **argv);
+void incremental_clear_before(void);
+void incremental_after(enum tables table, char *qualx, char **argv);
+void incremental_clear_after(void);
+
+/* prototypes from qrtn.dc */
+int check_query_access(struct query *q, char *argv[], client *cl);
+int set_next_object_id(char *objectx, enum tables table, int limit);
+int name_to_id(char *name, enum tables type, int *id);
+int id_to_name(int id, enum tables type, char **name);
 
+/* prototypes from qsubs.c */
+void list_queries(client *cl, int (*action)(int, char *[], void *),
+                 void *actarg);
+void help_query(struct query *q, int (*action)(int, char *[], void *),
+               void *actarg);
+struct query *get_query_by_name(char *name, int version);
This page took 0.555871 seconds and 4 git commands to generate.