* $Header$
*
* Copyright 1987, 1988 by the Massachusetts Institute of Technology.
+ * For copying and distribution information, please see the file
+ * <mit-copyright.h>.
*/
+#include <mit-copyright.h>
#include "query.h"
#include "sms_et.h"
int setup_dfil();
int setup_dnfp();
int setup_dnfq();
+int setup_sshi();
+int setup_akum();
/* Query Followup Routines */
int followup_fix_modby();
int followup_ausr();
int followup_gpob();
int followup_glin();
-int followup_amtl();
int followup_anfq();
int followup_gzcl();
int followup_gsha();
int set_modtime_by_id();
int set_finger_modtime();
int set_pobox_modtime();
-int set_mach_modtime();
+int set_uppercase_modtime();
int set_mach_modtime_by_id();
int set_cluster_modtime_by_id();
int set_serverhost_modtime();
/* Special Queries */
int set_pobox();
int get_list_info();
+int add_member_to_list();
+int delete_member_from_list();
int get_ace_use();
int qualified_get_lists();
int get_members_of_list();
int count_members_of_list();
int get_lists_of_member();
int register_user();
-int add_user_group();
\f
{V_ID, 0, USERS, LOGIN, USERS_ID, SMS_USER},
};
+static struct valobj VOuser0lock[] = {
+ {V_LOCK, 0, USERS, 0, USERS_ID, SMS_DEADLOCK},
+ {V_ID, 0, USERS, LOGIN, USERS_ID, SMS_USER},
+};
+
static struct valobj VOmach0[] = {
{V_ID, 0, MACHINE, NAME, MACH_ID, SMS_MACHINE},
};
{V_ID, 0, LIST, NAME, LIST_ID, SMS_LIST},
};
+static struct valobj VOfilsys0[] = {
+ {V_ID, 0, FILESYS, LABEL, FILSYS_ID, SMS_FILESYS},
+};
+
static struct valobj VOchar0[] = {
{V_CHAR, 0},
};
};
static struct valobj VOfilsys0user1[] = {
+ {V_LOCK, 0, FILESYS, 0, FILSYS_ID, SMS_DEADLOCK},
{V_ID, 0, FILESYS, LABEL, FILSYS_ID, SMS_FILESYS},
{V_ID, 1, USERS, LOGIN, USERS_ID, SMS_USER},
};
};
static struct valobj ausr_valobj[] = {
+ {V_LOCK, 0, USERS, 0, USERS_ID, SMS_DEADLOCK},
{V_CHAR, 0},
{V_CHAR, 3},
{V_CHAR, 4},
static struct validate ausr_validate = {
ausr_valobj,
- 6,
+ 7,
LOGIN,
"u.login = \"%s\"",
1,
UID, LOGIN, "fs_type"
};
+static struct valobj rusr_valobj[] = {
+ {V_LOCK, 0, USERS, 0, USERS_ID, SMS_DEADLOCK},
+ {V_LOCK, 0, LIST, 0, LIST_ID, SMS_DEADLOCK},
+ {V_LOCK, 0, FILESYS, 0, FILSYS_ID, SMS_DEADLOCK},
+ {V_LOCK, 0, "nfsphys", 0, "nfsphys_id", SMS_DEADLOCK},
+};
+
static struct validate rusr_validate = {
- 0,
- 0,
+ rusr_valobj,
+ 4,
0,
0,
0,
};
static struct valobj uusr_valobj[] = {
+ {V_LOCK, 0, USERS, 0, USERS_ID, SMS_DEADLOCK},
{V_ID, 0, USERS, LOGIN, USERS_ID, SMS_USER},
{V_RENAME, 1, USERS, LOGIN, USERS_ID, SMS_NOT_UNIQUE},
{V_CHAR, 4},
static struct validate uusr_validate = {
uusr_valobj,
- 7,
+ 8,
0,
0,
0,
};
static struct validate uush_validate = {
- VOuser0,
- 1,
+ VOuser0lock,
+ 2,
0,
0,
0,
};
static struct validate uust_validate = {
- VOuser0,
- 1,
+ VOuser0lock,
+ 2,
0,
0,
0,
};
static struct validate dusr_validate = {
- VOuser0,
- 1,
+ VOuser0lock,
+ 2,
0,
0,
0,
};
static struct valobj dubu_valobj[] = {
+ {V_LOCK, 0, USERS, 0, USERS_ID, SMS_DEADLOCK},
{V_ID, 0, USERS, UID, USERS_ID, SMS_USER}
};
static struct validate dubu_validate = {
dubu_valobj,
- 1,
+ 2,
0,
0,
0,
0,
};
+static char *gkum_fields[] = { LOGIN, "kerberos",
+ LOGIN, "kerberos" };
+
+static char *akum_fields[] = { LOGIN, "kerberos" };
+
+static struct valobj akum_valobj[] =
+{
+ {V_ID, 0, USERS, LOGIN, USERS_ID, SMS_USER},
+ {V_ID, 1, "strings", "string", "string_id", SMS_NO_MATCH},
+};
+
+static struct validate akum_validate =
+{
+ akum_valobj,
+ 1,
+ USERS_ID,
+ "k.users_id = %d or k.string_id = %d",
+ 2,
+ USERS_ID,
+ access_user,
+ setup_akum,
+ 0
+};
+
+static struct validate dkum_validate =
+{
+ akum_valobj,
+ 2,
+ USERS_ID,
+ "k.users_id = %d and k.string_id = %d",
+ 2,
+ USERS_ID,
+ access_user,
+ 0,
+ 0
+};
+
static char *gfbl_fields[] = {
LOGIN,
LOGIN, "fullname", "nickname", "home_addr",
};
static struct validate ufbl_validate = {
- VOuser0,
- 1,
+ VOuser0lock,
+ 2,
0,
0,
0,
};
static struct valobj spob_valobj[] = {
+ {V_LOCK, 0, USERS, 0, USERS_ID, SMS_DEADLOCK},
{V_ID, 0, USERS, LOGIN, USERS_ID, SMS_USER},
{V_TYPE, 1, "pobox", 0, 0, SMS_TYPE},
};
static struct validate spob_validate = /* SET_POBOX */
{
spob_valobj,
- 2,
+ 3,
0,
0,
0,
static struct validate spop_validate = /* SET_POBOX_POP */
{
- VOuser0,
- 1,
+ VOuser0lock,
+ 2,
0,
0,
0,
static struct validate dpob_validate = /* DELETE_POBOX */
{
- VOuser0,
- 1,
+ VOuser0lock,
+ 2,
0,
0,
0,
static struct valobj amac_valobj[] = {
{V_CHAR, 0},
+ {V_LOCK, 0, MACHINE, 0, MACH_ID, SMS_DEADLOCK},
{V_TYPE, 1, "mac_type", 0, 0, SMS_TYPE},
};
static struct validate amac_validate = {
amac_valobj,
- 2,
+ 3,
NAME,
"m.name = uppercase(\"%s\")",
1,
MACH_ID,
0,
0,
- set_mach_modtime,
+ set_uppercase_modtime,
};
static char *umac_fields[] = {
};
static struct valobj umac_valobj[] = {
+ {V_LOCK, 0, MACHINE, 0, MACH_ID, SMS_DEADLOCK},
{V_ID, 0, MACHINE, NAME, MACH_ID, SMS_MACHINE},
{V_RENAME, 1, MACHINE, NAME, MACH_ID, SMS_NOT_UNIQUE},
{V_TYPE, 2, "mac_type", 0, 0, SMS_TYPE},
static struct validate umac_validate = {
umac_valobj,
- 3,
+ 4,
0,
0,
0,
NAME,
};
+static struct valobj dmac_valobj[] = {
+ {V_LOCK, 0, MACHINE, 0, MACH_ID, SMS_DEADLOCK},
+ {V_ID, 0, MACHINE, NAME, MACH_ID, SMS_MACHINE},
+};
+
static struct validate dmac_validate = {
- VOmach0,
- 1,
+ dmac_valobj,
+ 2,
0,
0,
0,
NAME, DESC, LOCATION,
};
+static struct valobj aclu_valobj[] = {
+ {V_LOCK, 0, CLUSTER, 0, CLU_ID, SMS_DEADLOCK},
+ {V_CHAR, 0}
+};
+
static struct validate aclu_validate = /* for aclu */
{
- VOchar0,
- 1,
+ aclu_valobj,
+ 2,
NAME,
"c.name = \"%s\"",
1,
};
static struct valobj uclu_valobj[] = {
+ {V_LOCK, 0, CLUSTER, 0, CLU_ID, SMS_DEADLOCK},
{V_ID, 0, CLUSTER, NAME, CLU_ID, SMS_CLUSTER},
{V_RENAME, 1, CLUSTER, NAME, CLU_ID, SMS_NOT_UNIQUE},
};
static struct validate uclu_validate = {
uclu_valobj,
- 2,
+ 3,
0,
0,
0,
static struct valobj acld_valobj[] =
{
{V_ID, 0, CLUSTER, NAME, CLU_ID, SMS_CLUSTER},
- {V_TYPE, 1, "slabel", 0, 0, SMS_TYPE},
{V_CHAR, 2},
};
};
static struct valobj asin_valobj[] = {
+ {V_LOCK, 0, MACHINE, 0, MACH_ID, SMS_DEADLOCK},
{V_CHAR, 0},
{V_TYPE, 4, "service", 0, 0, SMS_TYPE},
{V_TYPE, 6, ACE_TYPE, 0, 0, SMS_ACE},
static struct validate asin_validate = /* for asin, usin */
{
asin_valobj,
- 4,
+ 5,
NAME,
"s.name = uppercase(\"%s\")",
1,
0,
0,
0,
- set_modtime,
+ set_uppercase_modtime,
};
static struct validate rsve_validate = {
- 0,
- 0,
+ asin_valobj,
+ 1,
NAME,
"s.name = uppercase(\"%s\")",
1,
0,
access_service,
0,
- set_modtime,
+ set_uppercase_modtime,
};
static char *ssif_fields[] = {
};
static struct validate ssif_validate = {
- 0,
- 0,
+ asin_valobj,
+ 1,
NAME,
"s.name = uppercase(\"%s\")",
1,
};
static struct validate dsin_validate = {
- 0,
- 0,
+ asin_valobj,
+ 1,
NAME,
"s.name = uppercase(\"%s\")",
1,
};
static struct valobj ashi_valobj[] = {
+ {V_LOCK, 0, MACHINE, 0, MACH_ID, SMS_DEADLOCK},
{V_NAME, 0, "servers", NAME, 0, SMS_SERVICE},
{V_ID, 1, MACHINE, NAME, MACH_ID, SMS_MACHINE},
};
static struct validate ashi_validate = /* ashi & ushi */
{
ashi_valobj,
- 2,
+ 3,
SERVICE,
"sh.service = uppercase(\"%s\") and sh.mach_id = %d",
2,
static struct validate rshe_validate =
{
ashi_valobj,
- 2,
+ 3,
SERVICE,
"sh.service = uppercase(\"%s\") and sh.mach_id = %d",
2,
static struct validate ssho_validate =
{
ashi_valobj,
- 2,
+ 3,
SERVICE,
"sh.service = uppercase(\"%s\") and sh.mach_id = %d",
2,
static struct valobj sshi_valobj[] = {
{V_NAME, 0, "servers", NAME, 0, SMS_SERVICE},
- {V_ID, 1, MACHINE, NAME, MACH_ID, SMS_MACHINE},
};
static struct validate sshi_validate =
{
sshi_valobj,
- 2,
- SERVICE,
- "s.service = uppercase(\"%s\") and s.mach_id = %d",
- 2,
+ 1,
+ 0,
+ 0,
0,
0,
0,
+ setup_sshi,
0,
};
static struct validate dshi_validate =
{
ashi_valobj,
- 2,
+ 3,
SERVICE,
"sh.service = uppercase(\"%s\") and sh.mach_id = %d",
2,
static struct valobj afil_valobj[] = {
{V_CHAR, 0},
+ {V_LOCK, 0, FILESYS, 0, FILSYS_ID, SMS_DEADLOCK},
{V_TYPE, 1, FILESYS, 0, 0, SMS_FSTYPE},
{V_ID, 2, MACHINE, NAME, MACH_ID, SMS_MACHINE},
{V_CHAR, 3},
static struct validate afil_validate = {
afil_valobj,
- 7,
+ 8,
LABEL,
"fs.label = \"%s\"",
1,
};
static struct valobj ufil_valobj[] = {
+ {V_LOCK, 0, FILESYS, 0, FILSYS_ID, SMS_DEADLOCK},
{V_ID, 0, FILESYS, LABEL, FILSYS_ID, SMS_FILESYS},
{V_RENAME, 1, FILESYS, LABEL, FILSYS_ID, SMS_NOT_UNIQUE},
{V_TYPE, 2, FILESYS, 0, 0, SMS_FSTYPE},
static struct validate ufil_validate = {
ufil_valobj,
- 8,
+ 9,
LABEL,
"fs.filsys_id = %d",
1,
};
static struct valobj dfil_valobj[] = {
+ {V_LOCK, 0, FILESYS, 0, FILSYS_ID, SMS_DEADLOCK},
{V_ID, 0, FILESYS, LABEL, FILSYS_ID, SMS_FILESYS},
};
static struct validate dfil_validate = {
dfil_valobj,
- 1,
+ 2,
"label",
"fs.filsys_id = %d",
1,
0,
};
+static char *gfgm_fields[] = {
+ "fsgroup", FILESYS, "sortkey"
+};
+
+static struct valobj gfgm_valobj[] = {
+ {V_ID, 0, FILESYS, LABEL, FILSYS_ID, SMS_FILESYS},
+ {V_SORT, 1},
+ {V_SORT, 0},
+};
+
+static struct validate gfgm_validate = {
+ gfgm_valobj,
+ 3,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+};
+
+static struct valobj aftg_valobj[] = {
+ {V_LOCK, 0, FILESYS, 0, FILSYS_ID, SMS_DEADLOCK},
+ {V_ID, 0, FILESYS, LABEL, FILSYS_ID, SMS_FILESYS},
+ {V_ID, 1, FILESYS, LABEL, FILSYS_ID, SMS_FILESYS},
+};
+
+static struct validate aftg_validate = {
+ aftg_valobj,
+ 3,
+ "group_id",
+ "fg.group_id = %d and fg.filsys_id = %d",
+ 2,
+ 0,
+ 0,
+ 0,
+ 0,
+};
+
static char *ganf_fields[] = {
MACHINE, DIR, DEVICE, STATUS, "allocated", "size", MOD1, MOD2, MOD3,
};
0,
access_filesys,
0,
- followup_fix_modby,
+ followup_gnfq,
};
static char *gnqp_fields[] = {
static struct validate anfq_validate = {
VOfilsys0user1,
- 2,
+ 3,
USERS_ID,
"nq.filsys_id = %d and nq.users_id = %d",
2,
static struct validate unfq_validate = {
VOfilsys0user1,
- 2,
+ 3,
USERS_ID,
"nq.filsys_id = %d and nq.users_id = %d",
2,
static struct validate dnfq_validate = {
VOfilsys0user1,
- 2,
+ 3,
USERS_ID,
"nq.filsys_id = %d and nq.users_id = %d",
2,
};
static struct valobj alis_valobj[] = {
+ {V_LOCK, 0, LIST, 0, LIST_ID, SMS_DEADLOCK},
{V_CHAR, 0},
{V_TYPE, 7, ACE_TYPE, 0, 0, SMS_ACE},
{V_TYPEDATA, 8, 0, 0, LIST_ID, SMS_ACE},
static struct validate alis_validate = {
alis_valobj,
- 3,
+ 4,
NAME,
"l.name = \"%s\"",
1,
};
static struct valobj ulis_valobj[] = {
+ {V_LOCK, 0, LIST, 0, LIST_ID, SMS_DEADLOCK},
{V_ID, 0, LIST, NAME, LIST_ID, SMS_LIST},
{V_RENAME, 1, LIST, NAME, LIST_ID, SMS_NOT_UNIQUE},
{V_TYPE, 8, ACE_TYPE, 0, 0, SMS_ACE},
static struct validate ulis_validate = {
ulis_valobj,
- 4,
+ 5,
NAME,
"l.list_id = %d",
1,
};
static struct valobj amtl_valobj[] = {
+ {V_LOCK, 0, LIST, 0, LIST_ID, SMS_DEADLOCK},
{V_ID, 0, LIST, NAME, LIST_ID, SMS_LIST},
{V_TYPE, 1, "member", 0, 0, SMS_TYPE},
{V_TYPEDATA, 2, 0, 0, 0, SMS_NO_MATCH},
};
-static struct validate amtl_validate = /* for amtl and dmfl */
+static struct validate amtl_validate =
{
amtl_valobj,
- 3,
- "member_id",
- "m.list_id = %d and m.member_type = \"%s\" and m.member_id = %d",
- 3,
+ 4,
+ 0,
+ 0,
+ 0,
+ 0,
+ access_list,
+ 0,
+ add_member_to_list,
+};
+
+static struct validate dmfl_validate =
+{
+ amtl_valobj,
+ 4,
+ 0,
+ 0,
+ 0,
0,
access_list,
0,
- followup_amtl,
+ delete_member_from_list,
};
static char *gaus_fields[] = {
count_members_of_list,
};
-static char *augr_fields[] = {
- LOGIN,
-};
-
-static struct validate augr_validate = {
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- add_user_group,
-};
-
static char *gzcl_fields[] = {
CLASS,
CLASS, "xmt_type", "xmt_name", "sub_type", "sub_name",
static char *gpcp_fields[] = {
"printer",
- "printer", "printcap", MOD1, MOD2, MOD3,
+ "printer", "spooling_host", "spool_directory", "rprinter", "comments",
+ MOD1, MOD2, MOD3,
};
static char *apcp_fields[] = {
- "printer", "printcap", MOD1, MOD2, MOD3,
+ "printer", "spooling_host", "spool_directory", "rprinter", "comments",
+ MOD1, MOD2, MOD3,
+};
+
+static struct valobj apcp_valobj[] = {
+ {V_CHAR, 0},
+ {V_ID, 1, MACHINE, NAME, MACH_ID, SMS_MACHINE},
};
static struct validate apcp_validate = {
- VOchar0,
+ apcp_valobj,
+ 2,
+ NAME,
+ "p.name = \"%s\"",
1,
+ 0,
+ 0,
+ 0,
+ set_modtime,
+};
+
+static struct validate dpcp_validate = {
+ 0,
+ 0,
+ NAME,
+ "p.name = \"%s\"",
+ 1,
+ 0,
+ 0,
+ 0,
+ 0,
+};
+
+static char *gpdm_fields[] = {
+ NAME,
+ NAME, "rpcnum", "host", MOD1, MOD2, MOD3,
+};
+
+static char *apdm_fields[] = {
+ NAME, "rpcnum", "host"
+};
+
+static struct valobj apdm_valobj[] = {
+ {V_CHAR, 0},
+ {V_ID, 2, MACHINE, NAME, MACH_ID, SMS_MACHINE},
+};
+
+static struct validate apdm_validate = {
+ apdm_valobj,
+ 2,
NAME,
"p.name = \"%s\"",
1,
set_modtime,
};
+static struct validate dpdm_validate = {
+ 0,
+ 0,
+ NAME,
+ "p.name = \"%s\"",
+ 1,
+ 0,
+ 0,
+ 0,
+ 0,
+};
+
static char *gali_fields[] = {
NAME, TYPE, "trans",
NAME, TYPE, "trans",
"%c = u.login, %c = text(u.uid), %c = u.shell, %c = u.last, %c = u.first, %c = u.middle",
galo_fields,
6,
- "u.status == 1",
+ "u.status = 1",
0,
0,
},
&dubu_validate,
},
+ {
+ /* Q_GKUM - GET_KERBEROS_USER_MAP */
+ "get_kerberos_user_map",
+ "gkum",
+ RETRIEVE,
+ "k",
+ "krbmap",
+ "%c = users.login, %c = strings.string",
+ gkum_fields,
+ 2,
+ "users.login = \"%s\" and strings.string = \"%s\" and k.users_id = users.users_id and k.string_id = strings.string_id",
+ 2,
+ &VDsort2,
+ },
+
+ {
+ /* Q_AKUM - ADD_KERBEROS_USER_MAP */
+ "add_kerberos_user_map",
+ "akum",
+ APPEND,
+ "k",
+ "krbmap",
+ "users_id = %i4, string_id = %i4",
+ akum_fields,
+ 2,
+ 0,
+ 0,
+ &akum_validate,
+ },
+
+ {
+ /* Q_DKUM - DELETE_KERBEROS_USER_MAP */
+ "delete_kerberos_user_map",
+ "dkum",
+ DELETE,
+ "k",
+ "krbmap",
+ 0,
+ akum_fields,
+ 0,
+ "k.users_id = %d and k.string_id = %d",
+ 2,
+ &dkum_validate,
+ },
+
{
/* Q_GFBL - GET_FINGER_BY_LOGIN */
"get_finger_by_login",
"override = int1(%c), success = int1(%c), inprogress = int1(%c), hosterror = int1(%c), hosterrmsg = %c, ltt = int4(%c), lts = int4(%c)",
sshi_fields,
7,
- "s.service = uppercase(\"%s\") and s.mach_id = %d",
+ "s.service = uppercase(\"%s\") and s.mach_id = machine.mach_id and machine.name = \"%s\"",
2,
&sshi_validate,
},
&dfil_validate,
},
+ {
+ /* Q_GFGM - GET_FSGROUOP_MEMBERS */
+ "get_fsgroup_members",
+ "gfgm",
+ RETRIEVE,
+ "fg",
+ "fsgroup",
+ "%c = filesys.label, %c = fg.key",
+ gfgm_fields,
+ 2,
+ "fg.group_id = %d and filesys.filsys_id = fg.filsys_id",
+ 1,
+ &gfgm_validate,
+ },
+
+ {
+ /* Q_AFTG - ADD_FILESYS_TO_FSGROUP */
+ "add_filesys_to_fsgroup",
+ "aftg",
+ APPEND,
+ "fg",
+ "fsgroup",
+ "group_id = filesys.filsys_id, filsys_id = %i4, key = %c",
+ gfgm_fields,
+ 2,
+ "filesys.filsys_id = %d and filesys.type = \"FSGROUP\"",
+ 1,
+ &aftg_validate,
+ },
+
+ {
+ /* Q_RFFG - REMOVE_FILESYS_FROM_FSGROUP */
+ "remove_filesys_from_fsgroup",
+ "rffg",
+ DELETE,
+ "fg",
+ "fsgroup",
+ (char *)0,
+ gfgm_fields,
+ 0,
+ "fg.group_id = %d and fg.filsys_id = %d",
+ 2,
+ &aftg_validate,
+ },
+
{
/* Q_GANF - GET_ALL_NFSPHYS */
"get_all_nfsphys",
RETRIEVE,
"nq",
"nfsquota",
- "%c = filesys.label, %c = users.login, %c = text(nq.quota), %c = nfsphys.dir, %c = machine.name, %c = nq.modtime, %c = text(nq.modby), %c = nq.modwith",
+ "%c = filesys.label, %c = users.login, %c = text(nq.quota), %c = text(nq.phys_id), %c = machine.name, %c = nq.modtime, %c = text(nq.modby), %c = nq.modwith",
gnfq_fields,
8,
- "filesys.label = \"%s\" and nq.users_id = %d and filesys.filsys_id = nq.filsys_id and nfsphys.nfsphys_id = filesys.phys_id and machine.mach_id = filesys.mach_id and users.users_id = nq.users_id",
+ "filesys.label = \"%s\" and nq.users_id = %d and filesys.filsys_id = nq.filsys_id and machine.mach_id = filesys.mach_id and users.users_id = nq.users_id",
2,
&gnfq_validate,
},
"%c = filesys.label, %c = users.login, %c = text(nq.quota), %c = nfsphys.dir, %c = machine.name",
gnqp_fields,
5,
- "filesys.mach_id = %d and nfsphys.dir = \"%s\" and nq.filsys_id = filesys.filsys_id and nfsphys.nfsphys_id = filesys.phys_id and users.users_id = nq.users_id and machine.mach_id = filesys.mach_id",
+ "nfsphys.mach_id = %d and nfsphys.dir = \"%s\" and nq.phys_id = nfsphys.nfsphys_id and filesys.filsys_id = nq.filsys_id and users.users_id = nq.users_id and machine.mach_id = nfsphys.mach_id",
2,
&VDmach,
},
APPEND,
"nq",
"nfsquota",
- "filsys_id = %i4, users_id = %i4, quota = int4(%c)",
+ "filsys_id = filesys.filsys_id, users_id = %i4, quota = int4(%c), phys_id = filesys.phys_id",
anfq_fields,
- 3,
- (char *)0,
- 0,
+ 2,
+ "filesys.filsys_id = %d",
+ 1,
&anfq_validate,
},
"add_member_to_list",
"amtl",
APPEND,
- "m",
- "members",
- "list_id=%i4, member_type=%c, member_id=%i4",
+ 0,
+ "imembers",
+ 0,
amtl_fields,
3,
(char *)0,
"delete_member_from_list",
"dmfl",
DELETE,
- "m",
- "members",
+ 0,
+ "imembers",
(char *)0,
amtl_fields,
0,
- "m.list_id = %d and m.member_type = \"%s\" and m.member_id = %d",
+ 0,
3,
- &amtl_validate,
+ &dmfl_validate,
},
{
"gmol",
RETRIEVE,
(char *)0,
- "members",
+ "imembers",
(char *)0,
gmol_fields,
0,
"glom",
RETRIEVE,
0,
- "members",
+ "imembers",
0,
glom_fields,
6,
"cmol",
RETRIEVE,
0,
- "members",
+ "imembers",
0,
cmol_fields,
1,
1,
&cmol_validate,
},
-#ifdef notdef
- {
- /* Q_AUGR - ADD_USER_GROUP */
- "add_user_group",
- "augr",
- APPEND,
- (char *)0,
- (char *)0,
- (char *)0,
- augr_fields,
- 1,
- (char *)0,
- 0,
- &augr_validate,
- },
-#endif
+
{
/* Q_GZCL - GET_ZEPHYR_CLASS */
"get_zephyr_class",
RETRIEVE,
"p",
"printcap",
- "%c = p.name, %c = p.pcap, %c = p.modtime, %c = text(p.modby), %c = p.modwith",
+ "%c = p.name, %c = machine.name, %c = p.dir, %c = p.rp, %c = p.comments, %c = p.modtime, %c = text(p.modby), %c = p.modwith",
gpcp_fields,
- 5,
- "p.name = \"%s\"",
+ 8,
+ "p.name = \"%s\" and machine.mach_id = p.mach_id",
1,
&VDsortf,
},
APPEND,
"p",
"printcap",
- "name = %c, pcap = %c",
+ "name = %c, mach_id = %i4, dir = %c, rp = %c, comments = %c",
apcp_fields,
- 2,
+ 5,
0,
0,
&apcp_validate,
0,
"p.name = \"%s\"",
1,
- &apcp_validate,
+ &dpcp_validate,
+ },
+
+ {
+ /* Q_GPDM - GET_PALLADIUM */
+ "get_palladium",
+ "gpdm",
+ RETRIEVE,
+ "p",
+ "palladium",
+ "%c = p.name, %c = text(p.ident), %c = machine.name, %c = p.modtime, %c = text(p.modby), %c = p.modwith",
+ gpdm_fields,
+ 6,
+ "p.name = \"%s\" and machine.mach_id = p.mach_id",
+ 1,
+ &VDsortf,
+ },
+
+ {
+ /* Q_APDM - ADD_PALLADIUM */
+ "add_palladium",
+ "apdm",
+ APPEND,
+ "p",
+ "palladium",
+ "name = %c, ident = int4(%c), mach_id = %i4",
+ apdm_fields,
+ 3,
+ 0,
+ 0,
+ &apdm_validate,
+ },
+
+ {
+ /* Q_DPDM - DELETE_PALLADIUM */
+ "delete_palladium",
+ "dpdm",
+ DELETE,
+ "p",
+ "palladium",
+ 0,
+ apdm_fields,
+ 0,
+ "p.name = \"%s\"",
+ 1,
+ &dpdm_validate,
},
{