]> andersk Git - moira.git/blame_incremental - server/queries2.c
typo; commit lookup in incremental
[moira.git] / server / queries2.c
... / ...
CommitLineData
1/* This file defines the query dispatch table for version 2 of the protocol
2 *
3 * $Header$
4 *
5 * Copyright 1987, 1988 by the Massachusetts Institute of Technology.
6 * For copying and distribution information, please see the file
7 * <mit-copyright.h>.
8 */
9
10#include <mit-copyright.h>
11#include "query.h"
12#include "mr_et.h"
13
14/* Specialized Support Query Routines */
15
16/* Special Access Check Routines */
17int access_user();
18int access_login();
19int access_list();
20int access_visible_list();
21int access_vis_list_by_name();
22int access_member();
23int access_qgli();
24int access_service();
25int access_filesys();
26
27/* Query Setup Routines */
28int prefetch_value();
29int prefetch_filesys();
30int setup_ausr();
31int setup_dusr();
32int setup_spop();
33int setup_dpob();
34int setup_dmac();
35int setup_dclu();
36int setup_alis();
37int setup_dlis();
38int setup_dsin();
39int setup_dshi();
40int setup_afil();
41int setup_ufil();
42int setup_dfil();
43int setup_aftg();
44int setup_dnfp();
45int setup_dqot();
46int setup_sshi();
47int setup_akum();
48
49/* Query Followup Routines */
50int followup_fix_modby();
51int followup_ausr();
52int followup_gpob();
53int followup_glin();
54int followup_aqot();
55int followup_gzcl();
56int followup_gsha();
57int followup_gqot();
58int followup_gpce();
59int followup_guax();
60int followup_uuac();
61
62int set_modtime();
63int set_modtime_by_id();
64int set_finger_modtime();
65int set_pobox_modtime();
66int set_uppercase_modtime();
67int set_mach_modtime_by_id();
68int set_cluster_modtime_by_id();
69int set_serverhost_modtime();
70int set_nfsphys_modtime();
71int set_filesys_modtime();
72int set_zephyr_modtime();
73
74/* Special Queries */
75int set_pobox();
76int get_list_info();
77int add_member_to_list();
78int delete_member_from_list();
79int get_ace_use();
80int qualified_get_lists();
81int get_members_of_list();
82int get_end_members_of_list();
83int qualified_get_server();
84int qualified_get_serverhost();
85int trigger_dcm();
86int count_members_of_list();
87int get_lists_of_member();
88int register_user();
89
90
91\f
92/* String compression
93 * These are commonly used strings in the table, defined here so that
94 * they can be shared.
95 */
96
97static char ACE_NAME[] = "ace_name";
98static char ACE_TYPE[] = "ace_type";
99static char CLASS[] = "class";
100static char CLU_ID[] = "clu_id";
101static char CLUSTER[] = "cluster";
102static char COMMENTS[] = "comments";
103static char DESC[] = "description";
104static char DEVICE[] = "device";
105static char DIR[] = "dir";
106static char FILESYS[] = "filesys";
107static char FILSYS_ID[] = "filsys_id";
108static char FIRST[] = "firstname";
109static char LABEL[] = "label";
110static char LAST[] = "lastname";
111static char LIST[] = "list";
112static char LIST_ID[] = "list_id";
113static char LOCATION[] = "location";
114static char LOGIN[] = "login";
115static char MACH_ID[] = "mach_id";
116static char MACHINE[] = "machine";
117static char MIDDLE[] = "middle";
118static char MIT_ID[] = "clearid";
119static char MOD1[] = "modtime";
120static char MOD2[] = "modby";
121static char MOD3[] = "modwith";
122static char NAME[] = "name";
123static char QUOTA[] = "quota";
124static char QUOTA_TYPE[] = "quota_type";
125static char SECURE[] = "secure";
126static char SERVICE[] = "service";
127static char SHELL[] = "shell";
128static char SIGNATURE[] = "signature";
129static char STATUS[] = "status";
130static char TYPE[] = "type";
131static char USERS[] = "users";
132static char USERS_ID[] = "users_id";
133static char UID[] = "uid";
134
135
136
137/* VALOBJS
138 * These are commonly used validation objects, defined here so that they
139 * can be shared.
140 */
141
142static struct valobj VOsort0[] = {
143 {V_SORT, 0},
144};
145
146static struct valobj VOwild0[] = {
147 {V_WILD, 0},
148};
149
150static struct valobj VOupwild0[] = {
151 {V_UPWILD, 0},
152};
153
154static struct valobj VOwild0sort[] = {
155 {V_WILD, 0},
156 {V_SORT, 0},
157};
158
159static struct valobj VOupwild0sort[] = {
160 {V_UPWILD, 0},
161 {V_SORT, 0},
162};
163
164static struct valobj VOwild01sort0[] = {
165 {V_WILD, 0},
166 {V_WILD, 1},
167 {V_SORT, 0},
168};
169
170static struct valobj VOwild01sort01[] = {
171 {V_WILD, 0},
172 {V_WILD, 1},
173 {V_SORT, 0},
174 {V_SORT, 1},
175};
176
177static struct valobj VOwild012sort0[] = { /* get_alias */
178 {V_WILD, 0},
179 {V_WILD, 1},
180 {V_WILD, 2},
181 {V_SORT, 0},
182};
183
184static struct valobj VOdate1[] = {
185 {V_DATE, 1, 0, 0, 0, MR_DATE},
186};
187
188static struct valobj VOuser0[] = {
189 {V_ID, 0, USERS, LOGIN, USERS_ID, MR_USER},
190};
191
192static struct valobj VOuser0lock[] = {
193 {V_LOCK, 0, USERS, 0, USERS_ID, MR_DEADLOCK},
194 {V_ID, 0, USERS, LOGIN, USERS_ID, MR_USER},
195};
196
197static struct valobj VOmach0[] = {
198 {V_ID, 0, MACHINE, NAME, MACH_ID, MR_MACHINE},
199};
200
201static struct valobj VOclu0[] = {
202 {V_ID, 0, CLUSTER, NAME, CLU_ID, MR_CLUSTER},
203};
204
205static struct valobj VOlist0[] = {
206 {V_ID, 0, LIST, NAME, LIST_ID, MR_LIST},
207};
208
209static struct valobj VOfilsys0[] = {
210 {V_ID, 0, FILESYS, LABEL, FILSYS_ID, MR_FILESYS},
211};
212
213static struct valobj VOchar0[] = {
214 {V_CHAR, 0},
215};
216
217static struct valobj VOsort01[] = {
218 {V_SORT, 1},
219 {V_SORT, 0},
220};
221
222static struct valobj VOuser0sort[] = {
223 {V_ID, 0, USERS, LOGIN, USERS_ID, MR_USER},
224 {V_SORT, 0},
225};
226
227static struct valobj VOfilsys0user1[] = {
228 {V_LOCK, 0, FILESYS, 0, FILSYS_ID, MR_DEADLOCK},
229 {V_ID, 0, FILESYS, LABEL, FILSYS_ID, MR_FILESYS},
230 {V_ID, 1, USERS, LOGIN, USERS_ID, MR_USER},
231};
232
233
234/* Validations
235 * Commonly used validation records defined here so that they may
236 * be shared.
237 */
238
239static struct validate VDmach = { VOmach0, 1 };
240static struct validate VDsort0= { VOsort0, 1 };
241static struct validate VDwild0= { VOwild0, 1 };
242static struct validate VDupwild0= { VOupwild0, 1 };
243static struct validate VDsort2= { VOsort01,2 };
244static struct validate VDwild2sort2 = { VOwild01sort01,4 };
245static struct validate VDwild3sort1 = { VOwild012sort0,4 };
246static struct validate VDsortf = {
247 VOsort0,
248 1,
249 0,
250 0,
251 0,
252 0,
253 0,
254 0,
255 followup_fix_modby,
256};
257
258static struct validate VDwildsortf = {
259 VOwild0sort,
260 2,
261 0,
262 0,
263 0,
264 0,
265 0,
266 0,
267 followup_fix_modby,
268};
269
270static struct validate VDwild2sortf = {
271 VOwild01sort01,
272 4,
273 0,
274 0,
275 0,
276 0,
277 0,
278 0,
279 followup_fix_modby,
280};
281
282static struct validate VDupwildsortf = {
283 VOupwild0sort,
284 2,
285 0,
286 0,
287 0,
288 0,
289 0,
290 0,
291 followup_fix_modby,
292};
293
294
295\f
296/* Query data */
297
298static char *galo_fields[] = {
299 LOGIN, UID, SHELL, LAST, FIRST, MIDDLE,
300};
301
302static char *gual_fields[] = {
303 LOGIN,
304 LOGIN, UID, SHELL, LAST, FIRST, MIDDLE, STATUS,
305 MIT_ID, CLASS, COMMENTS, SIGNATURE, SECURE, MOD1, MOD2, MOD3,
306};
307
308static char *gubl_fields[] = {
309 LOGIN,
310 LOGIN, UID, SHELL, LAST, FIRST, MIDDLE, STATUS,
311 MIT_ID, CLASS, MOD1, MOD2, MOD3,
312};
313
314static struct validate gubl_validate =
315{
316 VOwild0sort,
317 2,
318 0,
319 0,
320 0,
321 0,
322 access_login,
323 0,
324 followup_guax,
325};
326
327static char *guau_fields[] = {
328 UID,
329 LOGIN, UID, SHELL, LAST, FIRST, MIDDLE, STATUS,
330 MIT_ID, CLASS, COMMENTS, SIGNATURE, SECURE, MOD1, MOD2, MOD3,
331};
332
333static char *guan_fields[] = {
334 FIRST, LAST,
335 LOGIN, UID, SHELL, LAST, FIRST, MIDDLE, STATUS,
336 MIT_ID, CLASS, COMMENTS, SIGNATURE, SECURE, MOD1, MOD2, MOD3,
337};
338
339static char *guac_fields[] = {
340 CLASS,
341 LOGIN, UID, SHELL, LAST, FIRST, MIDDLE, STATUS,
342 MIT_ID, CLASS, COMMENTS, SIGNATURE, SECURE, MOD1, MOD2, MOD3,
343};
344
345static char *guam_fields[] = {
346 MIT_ID,
347 LOGIN, UID, SHELL, LAST, FIRST, MIDDLE, STATUS,
348 MIT_ID, CLASS, COMMENTS, SIGNATURE, SECURE, MOD1, MOD2, MOD3,
349};
350
351static char *gubu_fields[] = {
352 UID,
353 LOGIN, UID, SHELL, LAST, FIRST, MIDDLE, STATUS,
354 MIT_ID, CLASS, MOD1, MOD2, MOD3,
355};
356
357static struct validate gubu_validate =
358{
359 VOsort0,
360 1,
361 0,
362 0,
363 0,
364 0,
365 access_login,
366 0,
367 followup_fix_modby,
368};
369
370static char *gubn_fields[] = {
371 FIRST, LAST,
372 LOGIN, UID, SHELL, LAST, FIRST, MIDDLE, STATUS,
373 MIT_ID, CLASS, MOD1, MOD2, MOD3,
374};
375
376static struct validate gubn_validate =
377{
378 VOwild01sort0,
379 3,
380 0,
381 0,
382 0,
383 0,
384 0,
385 0,
386 followup_fix_modby,
387};
388
389static char *gubc_fields[] = {
390 CLASS,
391 LOGIN, UID, SHELL, LAST, FIRST, MIDDLE, STATUS,
392 MIT_ID, CLASS, MOD1, MOD2, MOD3,
393};
394
395static char *gubm_fields[] = {
396 MIT_ID,
397 LOGIN, UID, SHELL, LAST, FIRST, MIDDLE, STATUS,
398 MIT_ID, CLASS, MOD1, MOD2, MOD3,
399};
400
401static char *auac_fields[] = {
402 LOGIN, UID, SHELL, LAST, FIRST, MIDDLE, STATUS,
403 MIT_ID, CLASS, COMMENTS, SIGNATURE, SECURE,
404};
405
406static struct valobj auac_valobj[] = {
407 {V_LOCK, 0, USERS, 0, USERS_ID, MR_DEADLOCK},
408 {V_CHAR, 0},
409 {V_CHAR, 3},
410 {V_CHAR, 4},
411 {V_CHAR, 5},
412 {V_CHAR, 7},
413 {V_TYPE, 8, CLASS, 0, 0, MR_BAD_CLASS},
414 {V_ID, 9, "strings", "string", "string_id", MR_NO_MATCH},
415};
416
417static struct validate auac_validate = {
418 auac_valobj,
419 8,
420 LOGIN,
421 "login = LEFT('%s',SIZE(login))",
422 1,
423 USERS_ID,
424 0,
425 setup_ausr,
426 followup_ausr,
427};
428
429static struct validate ausr_validate = {
430 auac_valobj,
431 7,
432 LOGIN,
433 "login = LEFT('%s',SIZE(login))",
434 1,
435 USERS_ID,
436 0,
437 setup_ausr,
438 followup_ausr,
439};
440
441static char *rusr_fields[] = {
442 UID, LOGIN, "fs_type"
443 };
444
445static struct valobj rusr_valobj[] = {
446 {V_LOCK, 0, USERS, 0, USERS_ID, MR_DEADLOCK},
447 {V_LOCK, 0, LIST, 0, LIST_ID, MR_DEADLOCK},
448 {V_LOCK, 0, FILESYS, 0, FILSYS_ID, MR_DEADLOCK},
449 {V_LOCK, 0, "nfsphys", 0, "nfsphys_id", MR_DEADLOCK},
450};
451
452static struct validate rusr_validate = {
453 rusr_valobj,
454 4,
455 0,
456 0,
457 0,
458 0,
459 0,
460 register_user,
461 0,
462};
463
464static char *uuac_fields[] = {
465 LOGIN,
466 "newlogin", UID, SHELL, LAST, FIRST, MIDDLE, STATUS,
467 MIT_ID, CLASS, COMMENTS, SIGNATURE, SECURE,
468};
469
470static struct valobj uuac_valobj[] = {
471 {V_LOCK, 0, USERS, 0, USERS_ID, MR_DEADLOCK},
472 {V_ID, 0, USERS, LOGIN, USERS_ID, MR_USER},
473 {V_RENAME, 1, USERS, LOGIN, USERS_ID, MR_NOT_UNIQUE},
474 {V_CHAR, 4},
475 {V_CHAR, 5},
476 {V_CHAR, 6},
477 {V_CHAR, 8},
478 {V_TYPE, 9, CLASS, 0, 0, MR_BAD_CLASS},
479 {V_ID, 10, "strings", "string", "string_id", MR_NO_MATCH},
480};
481
482static struct validate uuac_validate = {
483 uuac_valobj,
484 9,
485 0,
486 0,
487 0,
488 USERS_ID,
489 0,
490 setup_ausr,
491 followup_uuac,
492};
493
494static struct validate uusr_validate = {
495 uuac_valobj,
496 8,
497 0,
498 0,
499 0,
500 USERS_ID,
501 0,
502 setup_ausr,
503 set_modtime_by_id,
504};
505
506static char *uush_fields[] = {
507 LOGIN,
508 SHELL,
509};
510
511static struct validate uush_validate = {
512 VOuser0lock,
513 2,
514 0,
515 0,
516 0,
517 USERS_ID,
518 access_user,
519 0,
520 set_modtime_by_id,
521};
522
523static char *uust_fields[] = {
524 LOGIN,
525 STATUS,
526};
527
528static char *uuss_fields[] = {
529 LOGIN,
530 SECURE,
531};
532
533static struct validate uust_validate = {
534 VOuser0lock,
535 2,
536 0,
537 0,
538 0,
539 USERS_ID,
540 0,
541 0,
542 set_modtime_by_id,
543};
544
545static char *dusr_fields[] = {
546 LOGIN,
547};
548
549static struct validate dusr_validate = {
550 VOuser0lock,
551 2,
552 0,
553 0,
554 0,
555 0,
556 0,
557 setup_dusr,
558 0,
559};
560
561static char *dubu_fields[] = {
562 UID,
563};
564
565static struct valobj dubu_valobj[] = {
566 {V_LOCK, 0, USERS, 0, USERS_ID, MR_DEADLOCK},
567 {V_ID, 0, USERS, UID, USERS_ID, MR_USER}
568};
569
570static struct validate dubu_validate = {
571 dubu_valobj,
572 2,
573 0,
574 0,
575 0,
576 0,
577 0,
578 setup_dusr,
579 0,
580};
581
582static char *gkum_fields[] = { LOGIN, "kerberos",
583 LOGIN, "kerberos" };
584
585static char *akum_fields[] = { LOGIN, "kerberos" };
586
587static struct valobj akum_valobj[] =
588{
589 {V_ID, 0, USERS, LOGIN, USERS_ID, MR_USER},
590 {V_ID, 1, "strings", "string", "string_id", MR_NO_MATCH},
591};
592
593static struct validate akum_validate =
594{
595 akum_valobj,
596 1,
597 USERS_ID,
598 "users_id = %d or string_id = %d",
599 2,
600 USERS_ID,
601 access_user,
602 setup_akum,
603 0
604 };
605
606static struct validate dkum_validate =
607{
608 akum_valobj,
609 2,
610 USERS_ID,
611 "users_id = %d and string_id = %d",
612 2,
613 USERS_ID,
614 access_user,
615 0,
616 0
617 };
618
619static char *gfbl_fields[] = {
620 LOGIN,
621 LOGIN, "fullname", "nickname", "home_addr",
622 "home_phone", "office_addr", "office_phone", "department",
623 "affiliation", MOD1, MOD2, MOD3,
624};
625
626static struct validate gfbl_validate = {
627 VOuser0,
628 1,
629 0,
630 0,
631 0,
632 0,
633 access_user,
634 0,
635 followup_fix_modby,
636};
637
638static char *ufbl_fields[] = {
639 LOGIN,
640 "fullname", "nickname", "home_addr",
641 "home_phone", "office_addr", "office_phone", "department",
642 "affiliation",
643};
644
645static struct validate ufbl_validate = {
646 VOuser0lock,
647 2,
648 0,
649 0,
650 0,
651 0,
652 access_user,
653 0,
654 set_finger_modtime,
655};
656
657static char *gpob_fields[] = {
658 LOGIN,
659 LOGIN, TYPE, "box", MOD1, MOD2, MOD3,
660};
661
662static struct validate gpob_validate = {
663 VOuser0,
664 1,
665 "potype",
666 "potype != 'NONE' and users_id=%d",
667 1,
668 0,
669 access_user,
670 0,
671 followup_gpob,
672};
673
674static char *gpox_fields[] = {
675 LOGIN, TYPE, "box",
676};
677
678static struct validate gpox_validate = {
679 0,
680 0,
681 0,
682 0,
683 0,
684 0,
685 0,
686 0,
687 followup_gpob,
688};
689
690static char *spob_fields[] = {
691 LOGIN, TYPE, "box",
692};
693
694static struct valobj spob_valobj[] = {
695 {V_LOCK, 0, USERS, 0, USERS_ID, MR_DEADLOCK},
696 {V_ID, 0, USERS, LOGIN, USERS_ID, MR_USER},
697 {V_TYPE, 1, "pobox", 0, 0, MR_TYPE},
698};
699
700static struct validate spob_validate = /* SET_POBOX */
701{
702 spob_valobj,
703 3,
704 0,
705 0,
706 0,
707 0,
708 access_user,
709 0,
710 set_pobox,
711};
712
713static struct validate spop_validate = /* SET_POBOX_POP */
714{
715 VOuser0lock,
716 2,
717 0,
718 0,
719 0,
720 0,
721 access_user,
722 setup_spop,
723 set_pobox_modtime,
724};
725
726static struct validate dpob_validate = /* DELETE_POBOX */
727{
728 VOuser0lock,
729 2,
730 0,
731 0,
732 0,
733 0,
734 access_user,
735 setup_dpob,
736 set_pobox_modtime,
737};
738
739static char *gmac_fields[] = {
740 NAME,
741 NAME, TYPE, MOD1, MOD2, MOD3,
742};
743
744static char *amac_fields[] = {
745 NAME, TYPE,
746};
747
748static struct valobj amac_valobj[] = {
749 {V_CHAR, 0},
750 {V_LOCK, 0, MACHINE, 0, MACH_ID, MR_DEADLOCK},
751 {V_TYPE, 1, "mac_type", 0, 0, MR_TYPE},
752};
753
754static struct validate amac_validate = {
755 amac_valobj,
756 3,
757 NAME,
758 "name = uppercase(LEFT('%s',SIZE(name)))",
759 1,
760 MACH_ID,
761 0,
762 prefetch_value,
763 set_uppercase_modtime,
764};
765
766static char *umac_fields[] = {
767 NAME,
768 "newname", TYPE,
769};
770
771static struct valobj umac_valobj[] = {
772 {V_LOCK, 0, MACHINE, 0, MACH_ID, MR_DEADLOCK},
773 {V_ID, 0, MACHINE, NAME, MACH_ID, MR_MACHINE},
774 {V_RENAME, 1, MACHINE, NAME, MACH_ID, MR_NOT_UNIQUE},
775 {V_TYPE, 2, "mac_type", 0, 0, MR_TYPE},
776};
777
778static struct validate umac_validate = {
779 umac_valobj,
780 4,
781 0,
782 0,
783 0,
784 MACH_ID,
785 0,
786 0,
787 set_modtime_by_id,
788};
789
790static char *dmac_fields[] = {
791 NAME,
792};
793
794static struct valobj dmac_valobj[] = {
795 {V_LOCK, 0, MACHINE, 0, MACH_ID, MR_DEADLOCK},
796 {V_ID, 0, MACHINE, NAME, MACH_ID, MR_MACHINE},
797};
798
799static struct validate dmac_validate = {
800 dmac_valobj,
801 2,
802 0,
803 0,
804 0,
805 0,
806 0,
807 setup_dmac,
808 0,
809};
810
811static char *gclu_fields[] = {
812 NAME,
813 NAME, DESC, LOCATION, MOD1, MOD2, MOD3,
814};
815
816static char *aclu_fields[] = {
817 NAME, DESC, LOCATION,
818};
819
820static struct valobj aclu_valobj[] = {
821 {V_LOCK, 0, CLUSTER, 0, CLU_ID, MR_DEADLOCK},
822 {V_CHAR, 0}
823};
824
825static struct validate aclu_validate =
826{
827 aclu_valobj,
828 2,
829 NAME,
830 "name = LEFT('%s',SIZE(name))",
831 1,
832 CLU_ID,
833 0,
834 prefetch_value,
835 set_modtime,
836};
837
838static char *uclu_fields[] = {
839 NAME,
840 "newname", DESC, LOCATION,
841};
842
843static struct valobj uclu_valobj[] = {
844 {V_LOCK, 0, CLUSTER, 0, CLU_ID, MR_DEADLOCK},
845 {V_ID, 0, CLUSTER, NAME, CLU_ID, MR_CLUSTER},
846 {V_RENAME, 1, CLUSTER, NAME, CLU_ID, MR_NOT_UNIQUE},
847};
848
849static struct validate uclu_validate = {
850 uclu_valobj,
851 3,
852 0,
853 0,
854 0,
855 CLU_ID,
856 0,
857 0,
858 set_modtime_by_id,
859};
860
861static char *dclu_fields[] = {
862 NAME,
863};
864
865static struct validate dclu_validate = {
866 VOclu0,
867 1,
868 0,
869 0,
870 0,
871 0,
872 0,
873 setup_dclu,
874 0,
875};
876
877static char *gmcm_fields[] = {
878 MACHINE, CLUSTER,
879 MACHINE, CLUSTER,
880};
881
882static struct valobj gmcm_valobj[] =
883{
884 {V_UPWILD, 0},
885 {V_WILD, 1},
886 {V_SORT, 0},
887 {V_SORT, 1},
888};
889
890static struct validate gmcm_validate = { gmcm_valobj, 4 };
891
892static struct valobj amtc_valobj[] = /* ADD_MACHINE_TO_CLUSTER */
893{ /* DELETE_MACHINE_FROM_CLUSTER */
894 {V_ID, 0, MACHINE, NAME, MACH_ID, MR_MACHINE},
895 {V_ID, 1, CLUSTER, NAME, CLU_ID, MR_CLUSTER},
896};
897
898static struct validate amtc_validate = /* for amtc and dmfc */
899{
900 amtc_valobj,
901 2,
902 MACH_ID,
903 "mach_id = %d and clu_id = %d",
904 2,
905 0,
906 0,
907 0,
908 set_mach_modtime_by_id,
909};
910
911static char *gcld_fields[] = {
912 CLUSTER, "serv_label",
913 CLUSTER, "serv_label", "serv_cluster",
914};
915
916static char *acld_fields[] = {
917 CLUSTER, "serv_label", "serv_cluster",
918};
919
920static struct valobj acld_valobj[] =
921{
922 {V_ID, 0, CLUSTER, NAME, CLU_ID, MR_CLUSTER},
923 {V_CHAR, 1},
924 {V_CHAR, 2},
925};
926
927static struct validate acld_validate =
928{
929 acld_valobj,
930 3,
931 CLU_ID,
932 "clu_id = %d AND serv_label = '%s' AND serv_cluster = LEFT('%s',SIZE(serv_cluster))",
933 3,
934 0,
935 0,
936 0,
937 set_cluster_modtime_by_id,
938};
939
940static struct valobj dcld_valobj[] =
941{
942 {V_ID, 0, CLUSTER, NAME, CLU_ID, MR_CLUSTER},
943 {V_CHAR, 2},
944};
945
946static struct validate dcld_validate =
947{
948 dcld_valobj,
949 2,
950 CLU_ID,
951 "clu_id = %d AND serv_label = '%s' AND serv_cluster = '%s'",
952 3,
953 0,
954 0,
955 0,
956 set_cluster_modtime_by_id,
957};
958
959static char *gsin_fields[] = {
960 SERVICE,
961 SERVICE, "update_int", "target_file", "script", "dfgen", "dfcheck",
962 TYPE, "enable", "inprogress", "harderror", "errmsg",
963 ACE_TYPE, ACE_NAME, MOD1, MOD2, MOD3,
964};
965
966static struct valobj gsin_valobj[] =
967{
968 { V_UPWILD, 0 },
969};
970
971static struct validate gsin_validate =
972{
973 gsin_valobj,
974 1,
975 0,
976 0,
977 0,
978 0,
979 access_service,
980 0,
981 followup_glin,
982};
983
984static char *qgsv_fields[] = {
985 "enable", "inprogress", "harderror",
986 "service",
987};
988
989static struct valobj qgsv_valobj[] = {
990 {V_TYPE, 0, "boolean", 0, 0, MR_TYPE},
991 {V_TYPE, 1, "boolean", 0, 0, MR_TYPE},
992 {V_TYPE, 2, "boolean", 0, 0, MR_TYPE},
993};
994
995static struct validate qgsv_validate = {
996 qgsv_valobj,
997 3,
998 0,
999 0,
1000 0,
1001 0,
1002 0,
1003 0,
1004 qualified_get_server,
1005};
1006
1007static char *asin_fields[] = {
1008 SERVICE, "update_int", "target_file", "script", TYPE, "enable",
1009 ACE_TYPE, ACE_NAME,
1010};
1011
1012static struct valobj asin_valobj[] = {
1013 {V_LOCK, 0, MACHINE, 0, MACH_ID, MR_DEADLOCK},
1014 {V_CHAR, 0},
1015 {V_TYPE, 4, "service", 0, 0, MR_TYPE},
1016 {V_TYPE, 6, ACE_TYPE, 0, 0, MR_ACE},
1017 {V_TYPEDATA, 7, 0, 0, 0, MR_ACE},
1018};
1019
1020static struct validate asin_validate = /* for asin, usin */
1021{
1022 asin_valobj,
1023 5,
1024 NAME,
1025 "name = uppercase(LEFT('%s',SIZE(name)))",
1026 1,
1027 0,
1028 0,
1029 0,
1030 set_uppercase_modtime,
1031};
1032
1033static struct validate rsve_validate = {
1034 asin_valobj,
1035 1,
1036 NAME,
1037 "name = uppercase('%s')",
1038 1,
1039 0,
1040 access_service,
1041 0,
1042 set_uppercase_modtime,
1043};
1044
1045static char *ssif_fields[] = {
1046 SERVICE, "dfgen", "dfcheck", "inprogress", "harderror", "errmsg",
1047};
1048
1049static struct validate ssif_validate = {
1050 asin_valobj,
1051 1,
1052 NAME,
1053 "name = uppercase('%s')",
1054 1,
1055 0,
1056 0,
1057 0,
1058 0,
1059};
1060
1061static char *dsin_fields[] = {
1062 SERVICE,
1063};
1064
1065static struct validate dsin_validate = {
1066 asin_valobj,
1067 1,
1068 NAME,
1069 "name = uppercase('%s')",
1070 1,
1071 0,
1072 0,
1073 setup_dsin,
1074 0,
1075};
1076
1077static char *gshi_fields[] = {
1078 SERVICE, MACHINE,
1079 SERVICE, MACHINE, "enable", "override", "success", "inprogress",
1080 "hosterror", "hosterrormsg", "ltt", "lts", "value1", "value2",
1081 "value3", MOD1, MOD2, MOD3,
1082};
1083
1084static struct valobj gshi_valobj[] = {
1085 { V_UPWILD, 0 },
1086 { V_UPWILD, 1 },
1087};
1088
1089static struct validate gshi_validate = {
1090 gshi_valobj,
1091 2,
1092 0,
1093 0,
1094 0,
1095 0,
1096 access_service,
1097 0,
1098 followup_fix_modby,
1099};
1100
1101static char *qgsh_fields[] = {
1102 "service", "enable", "override", "success", "inprogress", "hosterror",
1103 "service", MACHINE,
1104};
1105
1106static struct valobj qgsh_valobj[] = {
1107 {V_TYPE, 1, "boolean", 0, 0, MR_TYPE},
1108 {V_TYPE, 2, "boolean", 0, 0, MR_TYPE},
1109 {V_TYPE, 3, "boolean", 0, 0, MR_TYPE},
1110 {V_TYPE, 4, "boolean", 0, 0, MR_TYPE},
1111 {V_TYPE, 5, "boolean", 0, 0, MR_TYPE},
1112};
1113
1114static struct validate qgsh_validate = {
1115 qgsh_valobj,
1116 5,
1117 0,
1118 0,
1119 0,
1120 0,
1121 0,
1122 0,
1123 qualified_get_serverhost,
1124};
1125
1126static char *ashi_fields[] = {
1127 SERVICE, MACHINE, "enable", "value1", "value2", "value3",
1128};
1129
1130static struct valobj ashi_valobj[] = {
1131 {V_LOCK, 0, MACHINE, 0, MACH_ID, MR_DEADLOCK},
1132 {V_NAME, 0, "servers", NAME, 0, MR_SERVICE},
1133 {V_ID, 1, MACHINE, NAME, MACH_ID, MR_MACHINE},
1134};
1135
1136static struct validate ashi_validate = /* ashi & ushi */
1137{
1138 ashi_valobj,
1139 3,
1140 SERVICE,
1141 "service = uppercase(LEFT('%s',SIZE(service))) AND mach_id = %d",
1142 2,
1143 0,
1144 access_service,
1145 0,
1146 set_serverhost_modtime,
1147};
1148
1149static struct validate rshe_validate =
1150{
1151 ashi_valobj,
1152 3,
1153 SERVICE,
1154 "service = uppercase('%s') AND mach_id = %d",
1155 2,
1156 0,
1157 access_service,
1158 0,
1159 set_serverhost_modtime,
1160};
1161
1162static struct validate ssho_validate =
1163{
1164 ashi_valobj,
1165 3,
1166 SERVICE,
1167 "service = uppercase('%s') AND mach_id = %d",
1168 2,
1169 0,
1170 access_service,
1171 0,
1172 trigger_dcm,
1173};
1174
1175static char *sshi_fields[] = {
1176 "service", MACHINE, "override", "success", "inprogress",
1177 "hosterror", "errmsg", "ltt", "lts",
1178};
1179
1180static struct valobj sshi_valobj[] = {
1181 {V_NAME, 0, "servers", NAME, 0, MR_SERVICE},
1182 {V_ID, 1, MACHINE, NAME, MACH_ID, MR_MACHINE}, /** Was this ok to add? */
1183};
1184
1185static struct validate sshi_validate =
1186{
1187 sshi_valobj,
1188 2,
1189 0,
1190 0,
1191 0,
1192 0,
1193 0,
1194 setup_sshi,
1195 0,
1196};
1197
1198static char *dshi_fields[] = {
1199 SERVICE, MACHINE,
1200};
1201
1202static struct validate dshi_validate =
1203{
1204 ashi_valobj,
1205 3,
1206 SERVICE,
1207 "service = uppercase('%s') AND mach_id = %d",
1208 2,
1209 0,
1210 access_service,
1211 setup_dshi,
1212 0,
1213};
1214
1215static char *gsha_fields[] = {
1216 MACHINE,
1217 MACHINE, ACE_TYPE, ACE_NAME, MOD1, MOD2, MOD3,
1218};
1219
1220static struct validate gsha_validate =
1221{
1222 VOupwild0,
1223 1,
1224 0,
1225 0,
1226 0,
1227 0,
1228 0,
1229 0,
1230 followup_gsha,
1231};
1232
1233static char *asha_fields[] = {
1234 MACHINE, ACE_TYPE, ACE_NAME,
1235};
1236
1237static struct valobj asha_valobj[] = {
1238 {V_ID, 0, MACHINE, NAME, MACH_ID, MR_MACHINE},
1239 {V_TYPE, 1, ACE_TYPE, 0, 0, MR_ACE},
1240 {V_TYPEDATA, 2, 0, 0, 0, MR_ACE},
1241};
1242
1243static struct validate asha_validate =
1244{
1245 asha_valobj,
1246 3,
1247 MACH_ID,
1248 "mach_id = %d",
1249 1,
1250 MACH_ID,
1251 0,
1252 0,
1253 set_modtime_by_id,
1254};
1255
1256static char *gslo_fields[] = {
1257 "server",
1258 "server", MACHINE,
1259};
1260
1261static char *gfsl_fields[] = {
1262 LABEL,
1263 LABEL, TYPE, MACHINE, NAME, "mount", "access", COMMENTS, "owner", "owners",
1264 "create", "lockertype", MOD1, MOD2, MOD3,
1265};
1266
1267static char *gfsm_fields[] = {
1268 MACHINE,
1269 LABEL, TYPE, MACHINE, NAME, "mount", "access", COMMENTS, "owner", "owners",
1270 "create", "lockertype", MOD1, MOD2, MOD3,
1271};
1272
1273static struct validate gfsm_validate = {
1274 VOmach0,
1275 1,
1276 0,
1277 0,
1278 0,
1279 0,
1280 0,
1281 0,
1282 followup_fix_modby,
1283};
1284
1285static char *gfsn_fields[] = {
1286 MACHINE, "parition",
1287 LABEL, TYPE, MACHINE, NAME, "mount", "access", COMMENTS, "owner", "owners",
1288 "create", "lockertype", MOD1, MOD2, MOD3,
1289};
1290
1291static struct valobj gfsn_valobj[] =
1292{
1293 {V_ID, 0, MACHINE, NAME, MACH_ID, MR_MACHINE},
1294 {V_WILD, 1},
1295};
1296
1297static struct validate gfsn_validate = {
1298 gfsn_valobj,
1299 2,
1300 0,
1301 0,
1302 0,
1303 0,
1304 0,
1305 0,
1306 followup_fix_modby,
1307};
1308
1309static char *gfsp_fields[] = {
1310 "path",
1311 LABEL, TYPE, MACHINE, NAME, "mount", "access", COMMENTS, "owner", "owners",
1312 "create", "lockertype", MOD1, MOD2, MOD3,
1313};
1314
1315static char *gfsg_fields[] = {
1316 LIST,
1317 LABEL, TYPE, MACHINE, NAME, "mount", "access", COMMENTS, "owner", "owners",
1318 "create", "lockertype", MOD1, MOD2, MOD3,
1319};
1320
1321static struct validate gfsg_validate = {
1322 VOlist0,
1323 1,
1324 0,
1325 0,
1326 0,
1327 0,
1328 access_list,
1329 0,
1330 followup_fix_modby,
1331};
1332
1333static char *afil_fields[] = {
1334 LABEL, TYPE, MACHINE, NAME, "mount", "access", COMMENTS, "owner", "owners",
1335 "create", "lockertype",
1336};
1337
1338static struct valobj afil_valobj[] = {
1339 {V_CHAR, 0},
1340 {V_LOCK, 0, FILESYS, 0, FILSYS_ID, MR_DEADLOCK},
1341 {V_TYPE, 1, FILESYS, 0, 0, MR_FSTYPE},
1342 {V_ID, 2, MACHINE, NAME, MACH_ID, MR_MACHINE},
1343 {V_CHAR, 3},
1344 {V_ID, 7, USERS, LOGIN, USERS_ID, MR_USER},
1345 {V_ID, 8, LIST, NAME, LIST_ID, MR_LIST},
1346 {V_TYPE, 10, "lockertype", 0, 0, MR_TYPE}
1347};
1348
1349static struct validate afil_validate = {
1350 afil_valobj,
1351 8,
1352 LABEL,
1353 "label = LEFT('%s',SIZE(label))",
1354 1,
1355 FILSYS_ID,
1356 0,
1357 setup_afil,
1358 set_filesys_modtime,
1359};
1360
1361static char *ufil_fields[] = {
1362 LABEL, "newlabel", TYPE, MACHINE, NAME, "mount", "access", COMMENTS,
1363 "owner", "owners", "create", "lockertype",
1364};
1365
1366static struct valobj ufil_valobj[] = {
1367 {V_LOCK, 0, FILESYS, 0, FILSYS_ID, MR_DEADLOCK},
1368 {V_ID, 0, FILESYS, LABEL, FILSYS_ID, MR_FILESYS},
1369 {V_RENAME, 1, FILESYS, LABEL, FILSYS_ID, MR_NOT_UNIQUE},
1370 {V_TYPE, 2, FILESYS, 0, 0, MR_FSTYPE},
1371 {V_ID, 3, MACHINE, NAME, MACH_ID, MR_MACHINE},
1372 {V_CHAR, 4},
1373 {V_ID, 8, USERS, LOGIN, USERS_ID, MR_USER},
1374 {V_ID, 9, LIST, NAME, LIST_ID, MR_LIST},
1375 {V_TYPE, 11, "lockertype", 0, 0, MR_TYPE}
1376};
1377
1378static struct validate ufil_validate = {
1379 ufil_valobj,
1380 9,
1381 LABEL,
1382 "filsys_id = %d",
1383 1,
1384 FILSYS_ID,
1385 0,
1386 setup_ufil,
1387 set_filesys_modtime,
1388};
1389
1390static char *dfil_fields[] = {
1391 LABEL,
1392};
1393
1394static struct valobj dfil_valobj[] = {
1395 {V_LOCK, 0, FILESYS, 0, FILSYS_ID, MR_DEADLOCK},
1396 {V_ID, 0, FILESYS, LABEL, FILSYS_ID, MR_FILESYS},
1397};
1398
1399static struct validate dfil_validate = {
1400 dfil_valobj,
1401 2,
1402 "label",
1403 "filsys_id = %d",
1404 1,
1405 0,
1406 0,
1407 setup_dfil,
1408 0,
1409};
1410
1411static char *gfgm_fields[] = {
1412 "fsgroup", FILESYS, "sortkey"
1413 };
1414
1415static struct valobj gfgm_valobj[] = {
1416 {V_ID, 0, FILESYS, LABEL, FILSYS_ID, MR_FILESYS},
1417 {V_SORT, 1},
1418 {V_SORT, 0},
1419};
1420
1421static struct validate gfgm_validate = {
1422 gfgm_valobj,
1423 3,
1424 0,
1425 0,
1426 0,
1427 0,
1428 0,
1429 0,
1430 0,
1431};
1432
1433static struct valobj aftg_valobj[] = {
1434 {V_LOCK, 0, FILESYS, 0, FILSYS_ID, MR_DEADLOCK},
1435 {V_ID, 0, FILESYS, LABEL, FILSYS_ID, MR_FILESYS},
1436 {V_ID, 1, FILESYS, LABEL, FILSYS_ID, MR_FILESYS},
1437};
1438
1439static struct validate aftg_validate = {
1440 aftg_valobj,
1441 3,
1442 "group_id",
1443 "group_id = %d and filsys_id = %d",
1444 2,
1445 0,
1446 0,
1447 0,
1448 0,
1449};
1450
1451static char *ganf_fields[] = {
1452 MACHINE, DIR, DEVICE, STATUS, "allocated", "size", MOD1, MOD2, MOD3,
1453};
1454
1455static char *gnfp_fields[] = {
1456 MACHINE, DIR,
1457 MACHINE, DIR, DEVICE, STATUS, "allocated", "size", MOD1, MOD2, MOD3,
1458};
1459
1460static struct valobj gnfp_valobj[] = {
1461 {V_ID, 0, MACHINE, NAME, MACH_ID, MR_MACHINE},
1462 {V_WILD, 1},
1463};
1464
1465static struct validate gnfp_validate = {
1466 gnfp_valobj,
1467 2,
1468 0,
1469 0,
1470 0,
1471 0,
1472 0,
1473 0,
1474 followup_fix_modby,
1475};
1476
1477static struct valobj anfp_valobj[] = {
1478 {V_ID, 0, MACHINE, NAME, MACH_ID, MR_MACHINE},
1479 {V_CHAR, 1},
1480};
1481
1482static struct validate anfp_validate = {
1483 anfp_valobj,
1484 2,
1485 DIR,
1486 "mach_id = %d and dir = LEFT('%s',SIZE(dir))",
1487 2,
1488 "nfsphys_id",
1489 0,
1490 prefetch_value,
1491 set_nfsphys_modtime,
1492};
1493
1494static struct validate unfp_validate = {
1495 anfp_valobj,
1496 2,
1497 DIR,
1498 "mach_id = %d and dir = '%s'",
1499 2,
1500 "nfsphys_id",
1501 0,
1502 0,
1503 set_nfsphys_modtime,
1504};
1505
1506static char *ajnf_fields[] = {
1507 MACHINE, DIR, "adjustment",
1508};
1509
1510static char *dnfp_fields[] = {
1511 MACHINE, DIR,
1512};
1513
1514static struct validate dnfp_validate = {
1515 VOmach0,
1516 1,
1517 DIR,
1518 "mach_id = %d and dir = '%s'",
1519 2,
1520 "nfsphys_id",
1521 0,
1522 setup_dnfp,
1523 set_nfsphys_modtime,
1524};
1525
1526static char *gqot_fields[] = {
1527 FILESYS, TYPE, NAME,
1528 FILESYS, TYPE, NAME, QUOTA, DIR, MACHINE, MOD1, MOD2, MOD3,
1529};
1530
1531static struct valobj gqot_valobj[] = {
1532 {V_TYPE, 1, QUOTA_TYPE, 0, 0, MR_TYPE},
1533 {V_TYPEDATA, 2, 0, 0, 0, MR_ACE},
1534 {V_SORT, 0, 0, 0, 0, 0},
1535};
1536
1537static struct validate gqot_validate = {
1538 gqot_valobj,
1539 3,
1540 0,
1541 0,
1542 0,
1543 0,
1544 0,
1545 0,
1546 followup_gqot,
1547};
1548
1549static char *gqbf_fields[] = {
1550 FILESYS,
1551 FILESYS, TYPE, NAME, QUOTA, DIR, MACHINE, MOD1, MOD2, MOD3,
1552};
1553
1554static struct validate gqbf_validate = {
1555 VOsort0,
1556 1,
1557 0,
1558 0,
1559 0,
1560 0,
1561 access_filesys,
1562 0,
1563 followup_gqot,
1564};
1565
1566static char *aqot_fields[] = {
1567 FILESYS, TYPE, NAME, QUOTA,
1568};
1569
1570static struct valobj aqot_valobj[] = {
1571 {V_LOCK, 0, FILESYS, 0, FILSYS_ID, MR_DEADLOCK},
1572 {V_ID, 0, FILESYS, LABEL, FILSYS_ID, MR_FILESYS},
1573 {V_TYPE, 1, QUOTA_TYPE, 0, 0, MR_TYPE},
1574 {V_TYPEDATA, 2, 0, 0, 0, MR_ACE},
1575};
1576
1577static struct validate aqot_validate = {
1578 aqot_valobj,
1579 4,
1580 FILSYS_ID,
1581 "filsys_id = %d and type = '%s' and entity_id = %d",
1582 3,
1583 0,
1584 0,
1585 prefetch_filesys,
1586 followup_aqot,
1587};
1588
1589static struct validate uqot_validate = {
1590 aqot_valobj,
1591 4,
1592 FILSYS_ID,
1593 "filsys_id = %d AND type = '%s' AND entity_id = %d",
1594 3,
1595 0,
1596 0,
1597 setup_dqot,
1598 followup_aqot,
1599};
1600
1601static struct validate dqot_validate = {
1602 aqot_valobj,
1603 4,
1604 FILSYS_ID,
1605 "filsys_id = %d AND type = '%s' AND entity_id = %d",
1606 3,
1607 0,
1608 0,
1609 setup_dqot,
1610 0,
1611};
1612
1613static char *gnfq_fields[] = {
1614 FILESYS, LOGIN,
1615 FILESYS, LOGIN, QUOTA, DIR, MACHINE, MOD1, MOD2, MOD3,
1616};
1617
1618static struct validate gnfq_validate = {
1619 VOwild0sort,
1620 2,
1621 0,
1622 0,
1623 0,
1624 0,
1625 access_filesys,
1626 0,
1627 followup_gqot,
1628};
1629
1630static char *gnqp_fields[] = {
1631 MACHINE, DIR,
1632 FILESYS, LOGIN, QUOTA, DIR, MACHINE, MOD1, MOD2, MOD3,
1633};
1634
1635static struct valobj gnqp_valobj[] = {
1636 {V_ID, 0, MACHINE, NAME, MACH_ID, MR_MACHINE},
1637 {V_WILD, 1},
1638};
1639
1640static struct validate gnqp_validate = { gnqp_valobj, 2, };
1641
1642static char *anfq_fields[] = {
1643 FILESYS, LOGIN, QUOTA,
1644};
1645
1646static struct validate anfq_validate = {
1647 VOfilsys0user1,
1648 3,
1649 FILSYS_ID,
1650 "filsys_id = %d AND type = 'USER' AND entity_id = %d",
1651 2,
1652 0,
1653 0,
1654 prefetch_filesys,
1655 followup_aqot,
1656};
1657
1658static struct validate unfq_validate = {
1659 VOfilsys0user1,
1660 3,
1661 FILSYS_ID,
1662 "filsys_id = %d AND type = 'USER' AND entity_id = %d",
1663 2,
1664 0,
1665 0,
1666 setup_dqot,
1667 followup_aqot,
1668};
1669
1670static struct validate dnfq_validate = {
1671 VOfilsys0user1,
1672 3,
1673 FILSYS_ID,
1674 "filsys_id = %d AND entity_id = %d",
1675 2,
1676 0,
1677 0,
1678 setup_dqot,
1679 0,
1680};
1681
1682static char *glin_fields[] = {
1683 NAME,
1684 NAME, "active", "publicflg", "hidden", "maillist", "grouplist", "gid",
1685 ACE_TYPE, ACE_NAME, DESC, MOD1, MOD2, MOD3,
1686};
1687
1688static struct validate glin_validate = {
1689 0,
1690 0,
1691 0,
1692 0,
1693 0,
1694 0,
1695 access_vis_list_by_name,
1696 0,
1697 get_list_info,
1698};
1699
1700static char *alis_fields[] = {
1701 NAME, "active", "publicflg", "hidden", "maillist", "grouplist", "gid",
1702 ACE_TYPE, ACE_NAME, DESC,
1703};
1704
1705static struct valobj alis_valobj[] = {
1706 {V_LOCK, 0, LIST, 0, LIST_ID, MR_DEADLOCK},
1707 {V_CHAR, 0},
1708 {V_TYPE, 7, ACE_TYPE, 0, 0, MR_ACE},
1709 {V_TYPEDATA, 8, 0, 0, LIST_ID, MR_ACE},
1710};
1711
1712static struct validate alis_validate = {
1713 alis_valobj,
1714 4,
1715 NAME,
1716 "name = LEFT('%s',SIZE(name))",
1717 1,
1718 LIST_ID,
1719 0,
1720 setup_alis,
1721 set_modtime,
1722};
1723
1724static char *ulis_fields[] = {
1725 NAME,
1726 "newname", "active", "publicflg", "hidden", "maillist", "grouplist", "gid",
1727 ACE_TYPE, ACE_NAME, DESC,
1728};
1729
1730static struct valobj ulis_valobj[] = {
1731 {V_LOCK, 0, LIST, 0, LIST_ID, MR_DEADLOCK},
1732 {V_ID, 0, LIST, NAME, LIST_ID, MR_LIST},
1733 {V_RENAME, 1, LIST, NAME, LIST_ID, MR_NOT_UNIQUE},
1734 {V_TYPE, 8, ACE_TYPE, 0, 0, MR_ACE},
1735 {V_TYPEDATA, 9, 0, 0, LIST_ID, MR_ACE},
1736};
1737
1738static struct validate ulis_validate = {
1739 ulis_valobj,
1740 5,
1741 NAME,
1742 "list_id = %d",
1743 1,
1744 LIST_ID,
1745 access_list,
1746 setup_alis,
1747 set_modtime_by_id,
1748};
1749
1750static char *dlis_fields[] = {
1751 NAME,
1752};
1753
1754static struct validate dlis_validate = {
1755 VOlist0,
1756 1,
1757 NAME,
1758 "list_id = %d",
1759 1,
1760 0,
1761 access_list,
1762 setup_dlis,
1763 0,
1764};
1765
1766static char *amtl_fields[] = {
1767 "list_name", "member_type", "member_name",
1768};
1769
1770static struct valobj amtl_valobj[] = {
1771 {V_LOCK, 0, LIST, 0, LIST_ID, MR_DEADLOCK},
1772 {V_ID, 0, LIST, NAME, LIST_ID, MR_LIST},
1773 {V_TYPE, 1, "member", 0, 0, MR_TYPE},
1774 {V_TYPEDATA, 2, 0, 0, 0, MR_NO_MATCH},
1775};
1776
1777static struct validate amtl_validate =
1778{
1779 amtl_valobj,
1780 4,
1781 0,
1782 0,
1783 0,
1784 0,
1785 access_list,
1786 0,
1787 add_member_to_list,
1788};
1789
1790static struct validate dmfl_validate =
1791{
1792 amtl_valobj,
1793 4,
1794 0,
1795 0,
1796 0,
1797 0,
1798 access_list,
1799 0,
1800 delete_member_from_list,
1801};
1802
1803static char *gaus_fields[] = {
1804 ACE_TYPE, ACE_NAME,
1805 "use_type", "use_name",
1806};
1807
1808static struct valobj gaus_valobj[] = {
1809 {V_TYPE, 0, "gaus", 0, 0, MR_TYPE},
1810 {V_TYPEDATA, 1, 0, 0, 0, MR_NO_MATCH},
1811};
1812
1813static struct validate gaus_validate = {
1814 gaus_valobj,
1815 2,
1816 0,
1817 0,
1818 0,
1819 0,
1820 access_member,
1821 0,
1822 get_ace_use,
1823};
1824
1825static char *qgli_fields[] = {
1826 "active", "publicflg", "hidden", "maillist", "grouplist",
1827 "list",
1828};
1829
1830static struct valobj qgli_valobj[] = {
1831 {V_TYPE, 0, "boolean", 0, 0, MR_TYPE},
1832 {V_TYPE, 1, "boolean", 0, 0, MR_TYPE},
1833 {V_TYPE, 2, "boolean", 0, 0, MR_TYPE},
1834 {V_TYPE, 3, "boolean", 0, 0, MR_TYPE},
1835 {V_TYPE, 4, "boolean", 0, 0, MR_TYPE},
1836};
1837
1838static struct validate qgli_validate = {
1839 qgli_valobj,
1840 5,
1841 0,
1842 0,
1843 0,
1844 0,
1845 access_qgli,
1846 0,
1847 qualified_get_lists,
1848};
1849
1850static char *gmol_fields[] = {
1851 "list_name",
1852 "member_type", "member_name",
1853};
1854
1855static struct validate gmol_validate = {
1856 VOlist0,
1857 1,
1858 0,
1859 0,
1860 0,
1861 0,
1862 access_visible_list,
1863 0,
1864 get_members_of_list,
1865};
1866
1867static struct validate geml_validate = {
1868 VOlist0,
1869 1,
1870 0,
1871 0,
1872 0,
1873 0,
1874 access_visible_list,
1875 0,
1876 get_end_members_of_list,
1877};
1878
1879static char *glom_fields[] = {
1880 "member_type", "member_name",
1881 "list_name", "active", "publicflg", "hidden", "maillist", "grouplist",
1882};
1883
1884static struct valobj glom_valobj[] = {
1885 {V_TYPE, 0, "rmember", 0, 0, MR_TYPE},
1886 {V_TYPEDATA, 1, 0, 0, 0, MR_NO_MATCH},
1887 {V_SORT, 0},
1888};
1889
1890static struct validate glom_validate = {
1891 glom_valobj,
1892 3,
1893 0,
1894 0,
1895 0,
1896 0,
1897 access_member,
1898 0,
1899 get_lists_of_member,
1900};
1901
1902static char *cmol_fields[] = {
1903 "list_name",
1904 "count",
1905};
1906
1907static struct validate cmol_validate = {
1908 VOlist0,
1909 1,
1910 0,
1911 0,
1912 0,
1913 0,
1914 access_visible_list,
1915 0,
1916 count_members_of_list,
1917};
1918
1919static char *gzcl_fields[] = {
1920 CLASS,
1921 CLASS, "xmt_type", "xmt_name", "sub_type", "sub_name",
1922 "iws_type", "iws_name", "iui_type", "iui_name", MOD1, MOD2, MOD3,
1923};
1924
1925static struct validate gzcl_validate = {
1926 VOwild0sort,
1927 2,
1928 0,
1929 0,
1930 0,
1931 0,
1932 0,
1933 0,
1934 followup_gzcl,
1935};
1936
1937static char *azcl_fields[] = {
1938 CLASS, "xmt_type", "xmt_name", "sub_type", "sub_name",
1939 "iws_type", "iws_name", "iui_type", "iui_name",
1940};
1941
1942static struct valobj azcl_valobj[] = {
1943 {V_CHAR, 0},
1944 {V_TYPE, 1, ACE_TYPE, 0, 0, MR_ACE},
1945 {V_TYPEDATA, 2, 0, 0, LIST_ID, MR_ACE},
1946 {V_TYPE, 3, ACE_TYPE, 0, 0, MR_ACE},
1947 {V_TYPEDATA, 4, 0, 0, LIST_ID, MR_ACE},
1948 {V_TYPE, 5, ACE_TYPE, 0, 0, MR_ACE},
1949 {V_TYPEDATA, 6, 0, 0, LIST_ID, MR_ACE},
1950 {V_TYPE, 7, ACE_TYPE, 0, 0, MR_ACE},
1951 {V_TYPEDATA, 8, 0, 0, LIST_ID, MR_ACE},
1952};
1953
1954static struct validate azcl_validate = {
1955 azcl_valobj,
1956 9,
1957 CLASS,
1958 "class = LEFT('%s',SIZE(class))",
1959 1,
1960 0,
1961 0,
1962 0,
1963 set_zephyr_modtime,
1964};
1965
1966static char *uzcl_fields[] = {
1967 CLASS, "newclass", "xmt_type", "xmt_name", "sub_type", "sub_name",
1968 "iws_type", "iws_name", "iui_type", "iui_name",
1969};
1970
1971static struct valobj uzcl_valobj[] = {
1972 {V_RENAME, 1, "zephyr", CLASS, 0, MR_NOT_UNIQUE},
1973 {V_TYPE, 2, ACE_TYPE, 0, 0, MR_ACE},
1974 {V_TYPEDATA, 3, 0, 0, LIST_ID, MR_ACE},
1975 {V_TYPE, 4, ACE_TYPE, 0, 0, MR_ACE},
1976 {V_TYPEDATA, 5, 0, 0, LIST_ID, MR_ACE},
1977 {V_TYPE, 6, ACE_TYPE, 0, 0, MR_ACE},
1978 {V_TYPEDATA, 7, 0, 0, LIST_ID, MR_ACE},
1979 {V_TYPE, 8, ACE_TYPE, 0, 0, MR_ACE},
1980 {V_TYPEDATA, 9, 0, 0, LIST_ID, MR_ACE},
1981};
1982
1983static struct validate uzcl_validate = {
1984 uzcl_valobj,
1985 9,
1986 CLASS,
1987 "class = '%s'",
1988 1,
1989 0,
1990 0,
1991 0,
1992 set_zephyr_modtime,
1993};
1994
1995static struct validate dzcl_validate = {
1996 0,
1997 0,
1998 CLASS,
1999 "class = '%s'",
2000 1,
2001 0,
2002 0,
2003 0,
2004 0,
2005};
2006
2007static char *gsvc_fields[] = {
2008 SERVICE,
2009 SERVICE, "protocol", "port", DESC, MOD1, MOD2, MOD3,
2010};
2011
2012static char *asvc_fields[] = {
2013 SERVICE, "protocol", "port", DESC,
2014};
2015
2016static struct validate asvc_validate = {
2017 VOchar0,
2018 1,
2019 NAME,
2020 "name = LEFT('%s',SIZE(name))",
2021 1,
2022 0,
2023 0,
2024 0,
2025 set_modtime,
2026};
2027
2028static char *gpce_fields[] = {
2029 "printer",
2030 "printer", "spooling_host", "spool_directory", "rprinter",
2031 "quotaserver", "authenticate", "price", COMMENTS,
2032 MOD1, MOD2, MOD3,
2033};
2034
2035static struct validate gpce_validate = {
2036 VOwild0sort,
2037 2,
2038 0,
2039 0,
2040 0,
2041 0,
2042 0,
2043 0,
2044 followup_gpce,
2045};
2046
2047static char *apce_fields[] = {
2048 "printer", "spooling_host", "spool_directory", "rprinter",
2049 "quotaserver", "authenticate", "price", COMMENTS,
2050 MOD1, MOD2, MOD3,
2051};
2052
2053static struct valobj apce_valobj[] = {
2054 {V_CHAR, 0},
2055 {V_ID, 1, MACHINE, NAME, MACH_ID, MR_MACHINE},
2056 {V_ID, 4, MACHINE, NAME, MACH_ID, MR_MACHINE},
2057};
2058
2059static struct validate apce_validate = {
2060 apce_valobj,
2061 3,
2062 NAME,
2063 "name = LEFT('%s',SIZE(name))",
2064 1,
2065 0,
2066 0,
2067 0,
2068 set_modtime,
2069};
2070
2071static struct validate dpce_validate = {
2072 0,
2073 0,
2074 NAME,
2075 "name = '%s'",
2076 1,
2077 0,
2078 0,
2079 0,
2080 0,
2081};
2082
2083static char *gpcp_fields[] = {
2084 "printer",
2085 "printer", "spooling_host", "spool_directory", "rprinter", COMMENTS,
2086 MOD1, MOD2, MOD3,
2087};
2088
2089static char *gpdm_fields[] = {
2090 NAME,
2091 NAME, "rpcnum", "host", MOD1, MOD2, MOD3,
2092};
2093
2094static char *apdm_fields[] = {
2095 NAME, "rpcnum", "host"
2096 };
2097
2098static struct valobj apdm_valobj[] = {
2099 {V_CHAR, 0},
2100 {V_ID, 2, MACHINE, NAME, MACH_ID, MR_MACHINE},
2101};
2102
2103static struct validate apdm_validate = {
2104 apdm_valobj,
2105 2,
2106 NAME,
2107 "name = LEFT('%s',SIZE(name))",
2108 1,
2109 0,
2110 0,
2111 0,
2112 set_modtime,
2113};
2114
2115static struct validate dpdm_validate = {
2116 0,
2117 0,
2118 NAME,
2119 "name = '%s'",
2120 1,
2121 0,
2122 0,
2123 0,
2124 0,
2125};
2126
2127static char *gali_fields[] = {
2128 NAME, TYPE, "trans",
2129 NAME, TYPE, "trans",
2130};
2131
2132static char *aali_fields[] = {
2133 NAME, TYPE, "trans",
2134};
2135
2136static struct valobj aali_valobj[] = {
2137 {V_CHAR, 0},
2138 {V_TYPE, 1, "alias", 0, 0, MR_TYPE},
2139 {V_CHAR, 2},
2140};
2141
2142static struct validate aali_validate = {
2143 aali_valobj,
2144 3,
2145 "trans",
2146 "name = LEFT('%s',SIZE(name)) and type = '%s' and trans = LEFT('%s',SIZE(trans))",
2147 3,
2148 0,
2149 0,
2150 0,
2151 0,
2152};
2153
2154static struct validate dali_validate = /* DELETE_ALIAS */
2155{
2156 0,
2157 0,
2158 "trans",
2159 "name = '%s' and type = '%s' and trans = '%s'",
2160 3,
2161 0,
2162 0,
2163 0,
2164 0,
2165};
2166
2167static char *gval_fields[] = {
2168 NAME, "value",
2169};
2170
2171static struct valobj gval_valobj[] = {
2172 {V_NAME, 0, "numvalues", NAME, 0, MR_NO_MATCH},
2173};
2174
2175static struct validate gval_validate = {
2176 gval_valobj,
2177 1,
2178 0,
2179 0,
2180 0,
2181 0,
2182 0,
2183 0,
2184 0,
2185};
2186
2187static char *aval_fields[] = {
2188 NAME, "value",
2189};
2190
2191static struct validate aval_validate = /* for aval, uval, and dval */
2192{
2193 VOchar0,
2194 1,
2195 NAME,
2196 "name = LEFT('%s',SIZE(name))", /* LEFT() only needed for aval */
2197 1,
2198 0,
2199 0,
2200 0,
2201 0,
2202};
2203
2204static char *dval_fields[] = {
2205 NAME,
2206};
2207
2208static char *gats_fields[] = {
2209 "table_name", "appends", "updates", "deletes", MOD1, MOD2, MOD3,
2210};
2211
2212
2213\f
2214/* Generalized Query Definitions */
2215
2216/* Note: For any query which uses prefetch_value, the vcnt should be
2217 * one less than the number of %-format specifiers in the tlist.
2218 */
2219
2220struct query Queries2[] = {
2221 {
2222 /* Q_GALO - GET_ALL_LOGINS */
2223 "get_all_logins",
2224 "galo",
2225 RETRIEVE,
2226 "u",
2227 USERS,
2228 "CHAR(u.login), CHAR(u.uid), u.shell, CHAR(u.last), CHAR(u.first), u.middle FROM users u",
2229 galo_fields,
2230 6,
2231 "u.users_id != 0",
2232 0,
2233 &VDsort0,
2234 },
2235
2236 {
2237 /* Q_GAAL - GET_ALL_ACTIVE_LOGINS */
2238 "get_all_active_logins",
2239 "gaal",
2240 RETRIEVE,
2241 "u",
2242 USERS,
2243 "CHAR(u.login), CHAR(u.uid), u.shell, CHAR(u.last), CHAR(u.first), u.middle FROM users u",
2244 galo_fields,
2245 6,
2246 "u.status = 1",
2247 0,
2248 &VDsort0,
2249 },
2250
2251 {
2252 /* Q_GUAL - GET_USER_ACCOUNT_BY_LOGIN */
2253 "get_user_account_by_login",
2254 "gual",
2255 RETRIEVE,
2256 "u",
2257 USERS,
2258 "CHAR(u.login), CHAR(u.uid), u.shell, CHAR(u.last), CHAR(u.first), u.middle, CHAR(u.status), CHAR(u.clearid), u.type, str.string, CHAR(u.signature), CHAR(u.secure), CHAR(u.modtime), CHAR(u.modby), u.modwith FROM users u, strings str",
2259 gual_fields,
2260 15,
2261 "u.login LIKE '%s' ESCAPE '*' AND u.users_id != 0 AND u.comment = str.string_id",
2262 1,
2263 &gubl_validate,
2264 },
2265
2266 {
2267 /* Q_GUAU - GET_USER_ACCOUNT_BY_UID */
2268 "get_user_account_by_uid",
2269 "guau",
2270 RETRIEVE,
2271 "u",
2272 USERS,
2273 "CHAR(u.login), CHAR(u.uid), u.shell, CHAR(u.last), CHAR(u.first), u.middle, CHAR(u.status), CHAR(u.clearid), u.type, str.string, CHAR(u.signature), CHAR(u.secure), CHAR(u.modtime), CHAR(u.modby), u.modwith FROM users u, strings str",
2274 guau_fields,
2275 15,
2276 "u.uid = %s AND u.users_id != 0 AND u.comment = str.string_id",
2277 1,
2278 &gubu_validate,
2279 },
2280
2281 {
2282 /* Q_GUAN - GET_USER_ACCOUNT_BY_NAME */
2283 "get_user_account_by_name",
2284 "guan",
2285 RETRIEVE,
2286 "u",
2287 USERS,
2288 "CHAR(u.login), CHAR(u.uid), u.shell, CHAR(u.last), CHAR(u.first), u.middle, CHAR(u.status), CHAR(u.clearid), u.type, str.string, CHAR(u.signature), CHAR(u.secure), CHAR(u.modtime), CHAR(u.modby), u.modwith FROM users u, strings str",
2289 guan_fields,
2290 15,
2291 "u.first LIKE '%s' ESCAPE '*' AND u.last LIKE '%s' ESCAPE '*' AND u.users_id != 0 and u.comment = str.string_id",
2292 2,
2293 &VDwild2sortf,
2294 },
2295
2296 {
2297 /* Q_GUAC - GET_USER_ACCOUNT_BY_CLASS */
2298 "get_user_account_by_class",
2299 "guac",
2300 RETRIEVE,
2301 "u",
2302 USERS,
2303 "CHAR(u.login), CHAR(u.uid), u.shell, CHAR(u.last), CHAR(u.first), u.middle, CHAR(u.status), CHAR(u.clearid), u.type, str.string, CHAR(u.signature), CHAR(u.secure), CHAR(u.modtime), CHAR(u.modby), u.modwith FROM users u, strings str",
2304 guac_fields,
2305 15,
2306 "u.type = uppercase('%s') AND u.users_id != 0 AND u.comment = str.string_id",
2307 1,
2308 &VDsortf,
2309 },
2310
2311 {
2312 /* Q_GUAM - GET_USER_ACCOUNT_BY_MITID */
2313 "get_user_account_by_id",
2314 "guai",
2315 RETRIEVE,
2316 "u",
2317 USERS,
2318 "CHAR(u.login), CHAR(u.uid), u.shell, CHAR(u.last), CHAR(u.first), u.middle, CHAR(u.status), CHAR(u.clearid), u.type, str.string, CHAR(u.signature), CHAR(u.secure), CHAR(u.modtime), CHAR(u.modby), u.modwith FROM users u, strings str",
2319 guam_fields,
2320 15,
2321 "u.clearid LIKE '%s' ESCAPE '*' AND u.users_id != 0 AND u.comment = str.string_id",
2322 1,
2323 &VDwildsortf,
2324 },
2325
2326 {
2327 /* Q_GUBL - GET_USER_BY_LOGIN */
2328 "get_user_by_login",
2329 "gubl",
2330 RETRIEVE,
2331 "u",
2332 USERS,
2333 "CHAR(u.login), CHAR(u.uid), u.shell, CHAR(u.last), CHAR(u.first), u.middle, CHAR(u.status), CHAR(u.clearid), u.type, CHAR(u.modtime), CHAR(u.modby), u.modwith FROM users u",
2334 gubl_fields,
2335 12,
2336 "u.login LIKE '%s' ESCAPE '*' AND u.users_id != 0",
2337 1,
2338 &gubl_validate,
2339 },
2340
2341 {
2342 /* Q_GUBU - GET_USER_BY_UID */
2343 "get_user_by_uid",
2344 "gubu",
2345 RETRIEVE,
2346 "u",
2347 USERS,
2348 "CHAR(u.login), CHAR(u.uid), u.shell, CHAR(u.last), CHAR(u.first), u.middle, CHAR(u.status), CHAR(u.clearid), u.type, CHAR(u.modtime), CHAR(u.modby), u.modwith FROM users u",
2349 gubu_fields,
2350 12,
2351 "u.uid = %s AND u.users_id != 0",
2352 1,
2353 &gubu_validate,
2354 },
2355
2356 {
2357 /* Q_GUBN - GET_USER_BY_NAME */
2358 "get_user_by_name",
2359 "gubn",
2360 RETRIEVE,
2361 "u",
2362 USERS,
2363 "CHAR(u.login), CHAR(u.uid), u.shell, CHAR(u.last), CHAR(u.first), u.middle, CHAR(u.status), CHAR(u.clearid), u.type, CHAR(u.modtime), CHAR(u.modby), u.modwith FROM users u",
2364 gubn_fields,
2365 12,
2366 "u.first LIKE '%s' ESCAPE '*' AND u.last LIKE '%s' ESCAPE '*' AND u.users_id != 0",
2367 2,
2368 &gubn_validate,
2369 },
2370
2371 {
2372 /* Q_GUBC - GET_USER_BY_CLASS */
2373 "get_user_by_class",
2374 "gubc",
2375 RETRIEVE,
2376 "u",
2377 USERS,
2378 "CHAR(u.login), CHAR(u.uid), u.shell, CHAR(u.last), CHAR(u.first), u.middle, CHAR(u.status), CHAR(u.clearid), u.type, CHAR(u.modtime), CHAR(u.modby), u.modwith FROM users u",
2379 gubc_fields,
2380 12,
2381 "u.type = uppercase('%s') AND u.users_id != 0",
2382 1,
2383 &VDsortf,
2384 },
2385
2386 {
2387 /* Q_GUBM - GET_USER_BY_MITID */
2388 "get_user_by_mitid",
2389 "gubm",
2390 RETRIEVE,
2391 "u",
2392 USERS,
2393 "CHAR(u.login), CHAR(u.uid), u.shell, CHAR(u.last), CHAR(u.first), u.middle, CHAR(u.status), CHAR(u.clearid), u.type, CHAR(u.modtime), CHAR(u.modby), u.modwith FROM users u",
2394 gubm_fields,
2395 12,
2396 "u.clearid LIKE '%s' ESCAPE '*' AND u.users_id != 0",
2397 1,
2398 &VDwildsortf,
2399 },
2400
2401 {
2402 /* Q_AUAC - ADD_USER_ACCOUNT */ /* uses prefetch_value() for users_id */
2403 "add_user_account",
2404 "auac",
2405 APPEND,
2406 "u",
2407 USERS,
2408 "INTO users (login, uid, shell, last, first, middle, status, clearid, type, comment, signature, secure, users_id) VALUES ('%s', %s, '%s', '%s', '%s', '%s', %s, '%s', '%s', %d, '%s', %s, %s)",
2409 auac_fields,
2410 12,
2411 (char *)0,
2412 0,
2413 &auac_validate,
2414 },
2415
2416 {
2417 /* Q_AUSR - ADD_USER */ /* uses prefetch_value() for users_id */
2418 "add_user",
2419 "ausr",
2420 APPEND,
2421 "u",
2422 USERS,
2423 "INTO users (login, uid, shell, last, first, middle, status, clearid, type, comment, signature, secure, users_id) VALUES ('%s', %s, '%s', '%s', '%s', '%s', %s, '%s', '%s', 0, '', 0, %s)",
2424 auac_fields,
2425 9,
2426 0,
2427 0,
2428 &ausr_validate,
2429 },
2430
2431 {
2432 /* Q_RUSR - REGISTER_USER */
2433 "register_user",
2434 "rusr",
2435 APPEND,
2436 0,
2437 0,
2438 0,
2439 rusr_fields,
2440 3,
2441 0,
2442 0,
2443 &rusr_validate,
2444 },
2445
2446 {
2447 /* Q_UUAC - UPDATE_USER_ACCOUNT */
2448 "update_user_account",
2449 "uuac",
2450 UPDATE,
2451 "u",
2452 USERS,
2453 "users SET login = '%s', uid = %s, shell = '%s', last = '%s', first = '%s', middle = '%s', status = %s, clearid = '%s', type = '%s', comment = %d, signature = '%s', secure = %s",
2454 uuac_fields,
2455 12,
2456 "users_id = %d",
2457 1,
2458 &uuac_validate,
2459 },
2460
2461 {
2462 /* Q_UUSR - UPDATE_USER */
2463 "update_user",
2464 "uusr",
2465 UPDATE,
2466 "u",
2467 USERS,
2468 "users SET login = '%s', uid = %s, shell = '%s', last = '%s', first = '%s', middle = '%s', status = %s, clearid = '%s', type = '%s'",
2469 uuac_fields,
2470 9,
2471 "users_id = %d",
2472 1,
2473 &uusr_validate,
2474 },
2475
2476 {
2477 /* Q_UUSH - UPDATE_USER_SHELL */
2478 "update_user_shell",
2479 "uush",
2480 UPDATE,
2481 "u",
2482 USERS,
2483 "users SET shell = '%s'",
2484 uush_fields,
2485 1,
2486 "users_id = %d",
2487 1,
2488 &uush_validate,
2489 },
2490
2491 {
2492 /* Q_UUST - UPDATE_USER_STATUS */
2493 "update_user_status",
2494 "uust",
2495 UPDATE,
2496 "u",
2497 USERS,
2498 "users SET status = %s",
2499 uust_fields,
2500 1,
2501 "users_id = %d",
2502 1,
2503 &uust_validate,
2504 },
2505
2506 {
2507 /* Q_UUSS - UPDATE_USER_SECURITY_STATUS */
2508 "update_user_security_status",
2509 "uuss",
2510 UPDATE,
2511 "u",
2512 USERS,
2513 "secure = %s",
2514 uuss_fields,
2515 1,
2516 "users_id = %d",
2517 1,
2518 &uust_validate,
2519 },
2520
2521 {
2522 /* Q_DUSR - DELETE_USER */
2523 "delete_user",
2524 "dusr",
2525 DELETE,
2526 "u",
2527 USERS,
2528 (char *)0,
2529 dusr_fields,
2530 0,
2531 "users_id = %d",
2532 1,
2533 &dusr_validate,
2534 },
2535
2536 {
2537 /* Q_DUBU - DELETE_USER_BY_UID */
2538 "delete_user_by_uid",
2539 "dubu",
2540 DELETE,
2541 "u",
2542 USERS,
2543 (char *)0,
2544 dubu_fields,
2545 0,
2546 "users_id = %d",
2547 1,
2548 &dubu_validate,
2549 },
2550
2551 {
2552 /* Q_GKUM - GET_KERBEROS_USER_MAP */
2553 "get_kerberos_user_map",
2554 "gkum",
2555 RETRIEVE,
2556 "k",
2557 "krbmap",
2558 "CHAR(u.login), CHAR(str.string) FROM krbmap km, users u, strings str",
2559 gkum_fields,
2560 2,
2561 "u.login LIKE '%s' ESCAPE '*' AND str.string LIKE '%s' ESCAPE '*' AND km.users_id = u.users_id AND km.string_id = str.string_id",
2562 2,
2563 &VDwild2sort2,
2564 },
2565
2566 {
2567 /* Q_AKUM - ADD_KERBEROS_USER_MAP */
2568 "add_kerberos_user_map",
2569 "akum",
2570 APPEND,
2571 "k",
2572 "krbmap",
2573 "INTO krbmap (users_id, string_id) VALUES (%d, %d)",
2574 akum_fields,
2575 2,
2576 0,
2577 0,
2578 &akum_validate,
2579 },
2580
2581 {
2582 /* Q_DKUM - DELETE_KERBEROS_USER_MAP */
2583 "delete_kerberos_user_map",
2584 "dkum",
2585 DELETE,
2586 "k",
2587 "krbmap",
2588 0,
2589 akum_fields,
2590 0,
2591 "users_id = %d AND string_id = %d",
2592 2,
2593 &dkum_validate,
2594 },
2595
2596 {
2597 /* Q_GFBL - GET_FINGER_BY_LOGIN */
2598 "get_finger_by_login",
2599 "gfbl",
2600 RETRIEVE,
2601 "u",
2602 USERS,
2603 "CHAR(u.login), u.fullname, u.nickname, u.home_addr, u.home_phone, u.office_addr, u.office_phone, u.department, u.affiliation, CHAR(u.fmodtime), CHAR(u.fmodby), u.fmodwith FROM users u",
2604 gfbl_fields,
2605 12,
2606 "u.users_id = %d",
2607 1,
2608 &gfbl_validate,
2609 },
2610
2611 {
2612 /* Q_UFBL - UPDATE_FINGER_BY_LOGIN */
2613 "update_finger_by_login",
2614 "ufbl",
2615 UPDATE,
2616 "u",
2617 USERS,
2618 "users SET fullname= '%s',nickname= '%s',home_addr= '%s',home_phone= '%s',office_addr= '%s',office_phone= '%s',department= '%s',affiliation= '%s'",
2619 ufbl_fields,
2620 8,
2621 "users_id = %d",
2622 1,
2623 &ufbl_validate,
2624 },
2625
2626 {
2627 /* Q_GPOB - GET_POBOX */
2628 "get_pobox",
2629 "gpob",
2630 RETRIEVE,
2631 "u",
2632 USERS,
2633 "CHAR(u.login), u.potype, CHAR(u.pop_id) + ':' + CHAR(u.box_id), CHAR(u.pmodtime), CHAR(u.pmodby), u.pmodwith FROM users u",
2634 gpob_fields,
2635 6,
2636 "u.users_id = %d",
2637 1,
2638 &gpob_validate,
2639 },
2640
2641 {
2642 /* Q_GAPO - GET_ALL_POBOXES */
2643 "get_all_poboxes",
2644 "gapo",
2645 RETRIEVE,
2646 "u",
2647 USERS,
2648 "CHAR(u.login), u.potype, CHAR(u.pop_id) + ':' + CHAR(u.box_id) FROM users u",
2649 gpox_fields,
2650 3,
2651 "u.potype != 'NONE'",
2652 0,
2653 &gpox_validate,
2654 },
2655
2656 {
2657 /* Q_GPOP - GET_POBOXES_POP */
2658 "get_poboxes_pop",
2659 "gpop",
2660 RETRIEVE,
2661 "u",
2662 USERS,
2663 "CHAR(u.login), u.potype, CHAR(u.pop_id) + ':' + CHAR(u.box_id) FROM users u",
2664 gpox_fields,
2665 3,
2666 "u.potype = 'POP'",
2667 0,
2668 &gpox_validate
2669 },
2670
2671 {
2672 /* Q_GPOF - GET_POBOXES_SMTP */
2673 "get_poboxes_smtp",
2674 "gpos",
2675 RETRIEVE,
2676 "u",
2677 USERS,
2678 "CHAR(u.login), u.potype, CHAR(u.pop_id) + ':' + CHAR(u.box_id) FROM users u",
2679 gpox_fields,
2680 3,
2681 "u.potype = 'SMTP'",
2682 0,
2683 &gpox_validate
2684 },
2685
2686 {
2687 /* Q_SPOB - SET_POBOX */
2688 "set_pobox",
2689 "spob",
2690 UPDATE,
2691 0,
2692 USERS,
2693 0,
2694 spob_fields,
2695 3,
2696 (char *)0,
2697 0,
2698 &spob_validate,
2699 },
2700
2701 {
2702 /* Q_SPOP - SET_POBOX_POP */
2703 "set_pobox_pop",
2704 "spop",
2705 UPDATE,
2706 "u",
2707 USERS,
2708 "users SET potype = 'POP'",
2709 spob_fields,
2710 0,
2711 "users_id = %d",
2712 1,
2713 &spop_validate,
2714 },
2715
2716 {
2717 /* Q_DPOB - DELETE_POBOX */
2718 "delete_pobox",
2719 "dpob",
2720 UPDATE,
2721 "u",
2722 USERS,
2723 "users SET potype = 'NONE'",
2724 spob_fields,
2725 0,
2726 "users_id = %d",
2727 1,
2728 &dpob_validate,
2729 },
2730
2731 {
2732 /* Q_GMAC - GET_MACHINE */
2733 "get_machine",
2734 "gmac",
2735 RETRIEVE,
2736 "m",
2737 MACHINE,
2738 "CHAR(m.name), m.type, CHAR(m.modtime), CHAR(m.modby), modwith FROM machine m",
2739 gmac_fields,
2740 5,
2741 "m.name LIKE '%s' ESCAPE '*' AND m.mach_id != 0",
2742 1,
2743 &VDupwildsortf,
2744 },
2745
2746 {
2747 /* Q_AMAC - ADD_MACHINE */ /* uses prefetch_value() for mach_id */
2748 "add_machine",
2749 "amac",
2750 APPEND,
2751 "m",
2752 MACHINE,
2753 "INTO machine (name, type, mach_id) VALUES (uppercase('%s'),'%s',%s)",
2754 amac_fields,
2755 2,
2756 0,
2757 0,
2758 &amac_validate,
2759 },
2760
2761 {
2762 /* Q_UMAC - UPDATE_MACHINE */
2763 "update_machine",
2764 "umac",
2765 UPDATE,
2766 "m",
2767 MACHINE,
2768 "machine SET name = uppercase('%s'), type = '%s'",
2769 umac_fields,
2770 2,
2771 "mach_id = %d",
2772 1,
2773 &umac_validate,
2774 },
2775
2776 {
2777 /* Q_DMAC - DELETE_MACHINE */
2778 "delete_machine",
2779 "dmac",
2780 DELETE,
2781 "m",
2782 MACHINE,
2783 (char *)0,
2784 dmac_fields,
2785 0,
2786 "mach_id = %d",
2787 1,
2788 &dmac_validate,
2789 },
2790
2791 {
2792 /* Q_GCLU - GET_CLUSTER */
2793 "get_cluster",
2794 "gclu",
2795 RETRIEVE,
2796 "c",
2797 CLUSTER,
2798 "CHAR(c.name), c.description, c.location, CHAR(c.modtime), CHAR(c.modby), c.modwith FROM cluster c",
2799 gclu_fields,
2800 6,
2801 "c.name LIKE '%s' ESCAPE '*' AND c.clu_id != 0",
2802 1,
2803 &VDwildsortf,
2804 },
2805
2806 {
2807 /* Q_ACLU - ADD_CLUSTER */ /* uses prefetch_value() for clu_id */
2808 "add_cluster",
2809 "aclu",
2810 APPEND,
2811 "c",
2812 CLUSTER,
2813 "INTO cluster (name, description, location, clu_id) VALUES ('%s','%s','%s',%s)",
2814 aclu_fields,
2815 3,
2816 0,
2817 0,
2818 &aclu_validate,
2819 },
2820
2821 {
2822 /* Q_UCLU - UPDATE_CLUSTER */
2823 "update_cluster",
2824 "uclu",
2825 UPDATE,
2826 "c",
2827 CLUSTER,
2828 "cluster SET name = '%s', description = '%s', location = '%s'",
2829 uclu_fields,
2830 3,
2831 "clu_id = %d",
2832 1,
2833 &uclu_validate,
2834 },
2835
2836 {
2837 /* Q_DCLU - DELETE_CLUSTER */
2838 "delete_cluster",
2839 "dclu",
2840 DELETE,
2841 "c",
2842 CLUSTER,
2843 (char *)0,
2844 dclu_fields,
2845 0,
2846 "clu_id = %d",
2847 1,
2848 &dclu_validate,
2849 },
2850
2851 {
2852 /* Q_GMCM - GET_MACHINE_TO_CLUSTER_MAP */
2853 "get_machine_to_cluster_map",
2854 "gmcm",
2855 RETRIEVE,
2856 "mcm",
2857 "mcmap",
2858 "CHAR(m.name), CHAR(c.name) FROM machine m, cluster c, mcmap mcm",
2859 gmcm_fields,
2860 2,
2861 "m.name LIKE '%s' ESCAPE '*' AND c.name LIKE '%s' ESCAPE '*' AND mcm.clu_id = c.clu_id AND mcm.mach_id = m.mach_id",
2862 2,
2863 &gmcm_validate,
2864 },
2865
2866 {
2867 /* Q_AMTC - ADD_MACHINE_TO_CLUSTER */
2868 "add_machine_to_cluster",
2869 "amtc",
2870 APPEND,
2871 "mcm",
2872 "mcmap",
2873 "INTO mcmap (mach_id, clu_id) VALUES (%d, %d)",
2874 gmcm_fields,
2875 2,
2876 0,
2877 0,
2878 &amtc_validate,
2879 },
2880
2881 {
2882 /* Q_DMFC - DELETE_MACHINE_FROM_CLUSTER */
2883 "delete_machine_from_cluster",
2884 "dmfc",
2885 DELETE,
2886 "mcm",
2887 "mcmap",
2888 0,
2889 gmcm_fields,
2890 0,
2891 "mach_id = %d AND clu_id = %d",
2892 2,
2893 &amtc_validate,
2894 },
2895
2896 {
2897 /* Q_GCLD - GET_CLUSTER_DATA */
2898 "get_cluster_data",
2899 "gcld",
2900 RETRIEVE,
2901 "svc",
2902 "svc",
2903 "CHAR(c.name), CHAR(svc.serv_label), svc.serv_cluster FROM svc svc, cluster c",
2904 gcld_fields,
2905 3,
2906 "c.clu_id = svc.clu_id AND c.name LIKE '%s' ESCAPE '*' AND svc.serv_label LIKE '%s' ESCAPE '*'",
2907 2,
2908 &VDwild2sort2,
2909 },
2910
2911 {
2912 /* Q_ACLD - ADD_CLUSTER_DATA */
2913 "add_cluster_data",
2914 "acld",
2915 APPEND,
2916 "svc",
2917 "svc",
2918 "INTO svc (clu_id, serv_label, serv_cluster) VALUES (%d,'%s','%s')",
2919 acld_fields,
2920 3,
2921 (char *)0,
2922 0,
2923 &acld_validate,
2924 },
2925
2926 {
2927 /* Q_DCLD - DELETE_CLUSTER_DATA */
2928 "delete_cluster_data",
2929 "dcld",
2930 DELETE,
2931 "svc",
2932 "svc",
2933 (char *)0,
2934 acld_fields,
2935 0,
2936 "clu_id = %d AND serv_label = '%s' AND serv_cluster = '%s'",
2937 3,
2938 &dcld_validate,
2939 },
2940
2941 {
2942 /* Q_GSIN - GET_SERVER_INFO */
2943 "get_server_info",
2944 "gsin",
2945 RETRIEVE,
2946 "s",
2947 "servers",
2948 "CHAR(s.name), CHAR(s.update_int), s.target_file, s.script, CHAR(s.dfgen), CHAR(s.dfcheck), s.type, CHAR(s.enable), CHAR(s.inprogress), CHAR(s.harderror), s.errmsg, s.acl_type, CHAR(s.acl_id), CHAR(s.modtime), CHAR(s.modby), s.modwith FROM servers s",
2949 gsin_fields,
2950 16,
2951 "s.name LIKE '%s' ESCAPE '*'",
2952 1,
2953 &gsin_validate,
2954 },
2955
2956 {
2957 /* Q_QGSV - QUALIFIED_GET_SERVER */
2958 "qualified_get_server",
2959 "qgsv",
2960 RETRIEVE,
2961 0,
2962 "servers",
2963 0,
2964 qgsv_fields,
2965 1,
2966 0,
2967 3,
2968 &qgsv_validate,
2969 },
2970
2971 {
2972 /* Q_ASIN - ADD_SERVER_INFO */
2973 "add_server_info",
2974 "asin",
2975 APPEND,
2976 "s",
2977 "servers",
2978 "INTO servers (name, update_int, target_file, script, type, enable, acl_type, acl_id) VALUES (uppercase('%s'),%s,'%s','%s','%s',%s,'%s',%d)",
2979 asin_fields,
2980 8,
2981 (char *)0,
2982 0,
2983 &asin_validate,
2984 },
2985
2986 {
2987 /* Q_USIN - UPDATE_SERVER_INFO */
2988 "update_server_info",
2989 "usin",
2990 UPDATE,
2991 "s",
2992 "servers",
2993 "servers SET update_int = %s, target_file = '%s', script = '%s', type = '%s', enable = %s, acl_type = '%s', acl_id = %d",
2994 asin_fields,
2995 7,
2996 "name = uppercase('%s')",
2997 1,
2998 &asin_validate,
2999 },
3000
3001 {
3002 /* Q_RSVE - RESET_SERVER_ERROR */
3003 "reset_server_error",
3004 "rsve",
3005 UPDATE,
3006 "s",
3007 "servers",
3008 "servers SET harderror = 0, dfcheck = dfgen",
3009 dsin_fields,
3010 0,
3011 "name = uppercase('%s')",
3012 1,
3013 &rsve_validate,
3014 },
3015
3016 {
3017 /* Q_SSIF - SET_SERVER_INTERNAL_FLAGS */
3018 "set_server_internal_flags",
3019 "ssif",
3020 UPDATE,
3021 "s",
3022 "servers",
3023 "servers SET dfgen = %s, dfcheck = %s, inprogress = %s, harderror = %s, errmsg = '%s'",
3024 ssif_fields,
3025 5,
3026 "name = uppercase('%s')",
3027 1,
3028 &ssif_validate,
3029 },
3030
3031 {
3032 /* Q_DSIN - DELETE_SERVER_INFO */
3033 "delete_server_info",
3034 "dsin",
3035 DELETE,
3036 "s",
3037 "servers",
3038 (char *)0,
3039 dsin_fields,
3040 0,
3041 "name = uppercase('%s')",
3042 1,
3043 &dsin_validate,
3044 },
3045
3046 {
3047 /* Q_GSHI - GET_SERVER_HOST_INFO */
3048 "get_server_host_info",
3049 "gshi",
3050 RETRIEVE,
3051 "sh",
3052 "serverhosts",
3053 "CHAR(sh.service), CHAR(m.name), CHAR(sh.enable), CHAR(sh.override), CHAR(sh.success), CHAR(sh.inprogress), CHAR(sh.hosterror), sh.hosterrmsg, CHAR(sh.ltt), CHAR(sh.lts), CHAR(sh.value1), CHAR(sh.value2), sh.value3, CHAR(sh.modtime), CHAR(sh.modby), sh.modwith FROM serverhosts sh, machine m",
3054 gshi_fields,
3055 16,
3056 "sh.service LIKE '%s' ESCAPE '*' AND m.name LIKE '%s' ESCAPE '*' AND m.mach_id = sh.mach_id",
3057 2,
3058 &gshi_validate,
3059 },
3060
3061 {
3062 /* Q_QGSV - QUALIFIED_GET_SERVER_HOST */
3063 "qualified_get_server_host",
3064 "qgsh",
3065 RETRIEVE,
3066 "sh",
3067 "serverhosts",
3068 0,
3069 qgsh_fields,
3070 2,
3071 0,
3072 6,
3073 &qgsh_validate,
3074 },
3075
3076 {
3077 /* Q_ASHI - ADD_SERVER_HOST_INFO */
3078 "add_server_host_info",
3079 "ashi",
3080 APPEND,
3081 "sh",
3082 "serverhosts",
3083 "INTO serverhosts (service, mach_id, enable, value1, value2, value3) VALUES (uppercase('%s'), %d, %s, %s, %s, '%s')",
3084 ashi_fields,
3085 6,
3086 (char *)0,
3087 0,
3088 &ashi_validate,
3089 },
3090
3091 {
3092 /* Q_USHI - UPDATE_SERVER_HOST_INFO */
3093 "update_server_host_info",
3094 "ushi",
3095 UPDATE,
3096 "sh",
3097 "serverhosts",
3098 "serverhosts SET enable = %s, value1 = %s, value2 = %s, value3 = '%s'",
3099 ashi_fields,
3100 4,
3101 "service = uppercase('%s') AND mach_id = %d",
3102 2,
3103 &ashi_validate,
3104 },
3105
3106 {
3107 /* Q_RSHE - RESET_SERVER_HOST_ERROR */
3108 "reset_server_host_error",
3109 "rshe",
3110 UPDATE,
3111 "sh",
3112 "serverhosts",
3113 "serverhosts SET hosterror = 0",
3114 dshi_fields,
3115 0,
3116 "service = uppercase('%s') AND mach_id = %d",
3117 2,
3118 &rshe_validate,
3119 },
3120
3121 {
3122 /* Q_SSHO - SET_SERVER_HOST_OVERRIDE */
3123 "set_server_host_override",
3124 "ssho",
3125 UPDATE,
3126 "sh",
3127 "serverhosts",
3128 "serverhosts SET override = 1",
3129 dshi_fields,
3130 0,
3131 "service = uppercase('%s') AND mach_id = %d",
3132 2,
3133 &ssho_validate,
3134 },
3135
3136 {
3137 /* Q_SSHI - SET_SERVER_HOST_INTERNAL */
3138 "set_server_host_internal",
3139 "sshi",
3140 UPDATE,
3141 "s",
3142 "serverhosts",
3143 "serverhosts SET override = %s, success = %s, inprogress = %s, hosterror = %s, hosterrmsg = '%s', ltt = %s, lts = %s",
3144 sshi_fields,
3145 7,
3146 "service = uppercase('%s') AND mach_id = %d",
3147 2,
3148 &sshi_validate,
3149 },
3150
3151 {
3152 /* Q_DSHI - DELETE_SERVER_HOST_INFO */
3153 "delete_server_host_info",
3154 "dshi",
3155 DELETE,
3156 "sh",
3157 "serverhosts",
3158 (char *)0,
3159 dshi_fields,
3160 0,
3161 "service = uppercase('%s') AND mach_id = %d",
3162 2,
3163 &dshi_validate,
3164 },
3165
3166 {
3167 /* Q_GSHA - GET_SERVER_HOST_ACCESS */
3168 "get_server_host_access",
3169 "gsha",
3170 RETRIEVE,
3171 "ha",
3172 "hostaccess",
3173 "CHAR(m.name), ha.acl_type, CHAR(ha.acl_id), CHAR(ha.modtime), CHAR(ha.modby), ha.modwith FROM hostaccess ha, machine m",
3174 gsha_fields,
3175 6,
3176 "m.name LIKE '%s' ESCAPE '*' AND ha.mach_id = m.mach_id",
3177 1,
3178 &gsha_validate,
3179 },
3180
3181 {
3182 /* Q_ASHA - ADD_SERVER_HOST_ACCESS */
3183 "add_server_host_access",
3184 "asha",
3185 APPEND,
3186 "ha",
3187 "hostaccess",
3188 "INTO hostaccess (mach_id, acl_type, acl_id) VALUES (%d,'%s',%d)",
3189 asha_fields,
3190 3,
3191 0,
3192 0,
3193 &asha_validate,
3194 },
3195
3196 {
3197 /* Q_USHA - UPDATE_SERVER_HOST_ACCESS */
3198 "update_server_host_access",
3199 "usha",
3200 UPDATE,
3201 "ha",
3202 "hostaccess",
3203 "hostaccess SET acl_type = '%s', acl_id = %d",
3204 asha_fields,
3205 2,
3206 "mach_id = %d",
3207 1,
3208 &asha_validate,
3209 },
3210
3211 {
3212 /* Q_DSHA - DELETE_SERVER_HOST_ACCESS */
3213 "delete_server_host_access",
3214 "dsha",
3215 DELETE,
3216 "ha",
3217 "hostaccess",
3218 0,
3219 asha_fields,
3220 0,
3221 "mach_id = %d",
3222 1,
3223 &VDmach,
3224 },
3225
3226 {
3227 /* Q_GSLO - GET_SERVER_LOCATIONS */
3228 "get_server_locations",
3229 "gslo",
3230 RETRIEVE,
3231 "sh",
3232 "serverhosts",
3233 "CHAR(sh.service), CHAR(m.name) FROM serverhosts sh, machine m",
3234 gslo_fields,
3235 2,
3236 "sh.service LIKE '%s' ESCAPE '*' AND sh.mach_id = m.mach_id",
3237 1,
3238 &VDupwild0,
3239 },
3240
3241 {
3242 /* Q_GFSL - GET_FILESYS_BY_LABEL */
3243 "get_filesys_by_label",
3244 "gfsl",
3245 RETRIEVE,
3246 "fs",
3247 FILESYS,
3248 "CHAR(fs.label), fs.type, CHAR(m.name), CHAR(fs.name), fs.mount, fs.access, fs.comments, CHAR(u.login), CHAR(l.name), CHAR(fs.createflg), fs.lockertype, CHAR(fs.modtime), CHAR(fs.modby), fs.modwith FROM filesys fs, machine m, users u, list l",
3249 gfsl_fields,
3250 14,
3251 "fs.label LIKE '%s' ESCAPE '*' AND fs.mach_id = m.mach_id AND fs.owner = u.users_id AND fs.owners = l.list_id",
3252 1,
3253 &VDwildsortf,
3254 },
3255
3256 {
3257 /* Q_GFSM - GET_FILESYS_BY_MACHINE */
3258 "get_filesys_by_machine",
3259 "gfsm",
3260 RETRIEVE,
3261 "fs",
3262 FILESYS,
3263 "CHAR(fs.label), fs.type, CHAR(m.name), CHAR(fs.name), fs.mount, fs.access, fs.comments, CHAR(u.login), CHAR(l.name), CHAR(fs.createflg), fs.lockertype, CHAR(fs.modtime), CHAR(fs.modby), fs.modwith FROM filesys fs, machine m, users u, list l",
3264 gfsm_fields,
3265 14,
3266 "fs.mach_id = %d AND m.mach_id = fs.mach_id AND fs.owner = u.users_id AND fs.owners = l.list_id",
3267 1,
3268 &gfsm_validate,
3269 },
3270
3271 {
3272 /* Q_GFSN - GET_FILESYS_BY_NFSPHYS */
3273 "get_filesys_by_nfsphys",
3274 "gfsn",
3275 RETRIEVE,
3276 "fs",
3277 FILESYS,
3278 "CHAR(fs.label), fs.type, CHAR(m.name), CHAR(fs.name), fs.mount, fs.access, fs.comments, CHAR(u.login), CHAR(l.name), CHAR(fs.createflg), fs.lockertype, CHAR(fs.modtime), CHAR(fs.modby), fs.modwith FROM filesys fs, machine m, users u, list l, nfsphys np",
3279 gfsn_fields,
3280 14,
3281 "fs.mach_id = %d AND m.mach_id = fs.mach_id AND fs.owner = u.users_id AND fs.owners = l.list_id AND np.nfsphys_id = fs.phys_id AND np.dir LIKE '%s' ESCAPE '*' AND fs.type = 'NFS'",
3282 2,
3283 &gfsn_validate,
3284 },
3285
3286 {
3287 /* Q_GFSG - GET_FILESYS_BY_GROUP */
3288 "get_filesys_by_group",
3289 "gfsg",
3290 RETRIEVE,
3291 "fs",
3292 FILESYS,
3293 "CHAR(fs.label), fs.type, CHAR(m.name), CHAR(fs.name), fs.mount, fs.access, fs.comments, CHAR(u.login), CHAR(l.name), CHAR(fs.createflg), fs.lockertype, CHAR(fs.modtime), CHAR(fs.modby), fs.modwith FROM filesys fs, machine m, users u, list l",
3294 gfsg_fields,
3295 14,
3296 "fs.owners = %d AND m.mach_id = fs.mach_id AND fs.owner = u.users_id AND fs.owners = l.list_id",
3297 1,
3298 &gfsg_validate,
3299 },
3300
3301 {
3302 /* Q_GFSP - GET_FILESYS_BY_PATH */
3303 "get_filesys_by_path",
3304 "gfsp",
3305 RETRIEVE,
3306 "fs",
3307 FILESYS,
3308 "CHAR(fs.label), fs.type, CHAR(m.name), CHAR(fs.name), fs.mount, fs.access, fs.comments, CHAR(u.login), CHAR(l.name), CHAR(fs.createflg), fs.lockertype, CHAR(fs.modtime), CHAR(fs.modby), fs.modwith FROM filesys fs, machine m, users u, list l",
3309 gfsp_fields,
3310 14,
3311 "fs.name LIKE '%s' ESCAPE '*' AND m.mach_id = fs.mach_id AND fs.owner = u.users_id AND fs.owners = list_id",
3312 1,
3313 &VDwildsortf,
3314 },
3315
3316 {
3317 /* Q_AFIL - ADD_FILESYS */ /* uses prefetch_value() for filsys_id */
3318 "add_filesys",
3319 "afil",
3320 APPEND,
3321 "fs",
3322 FILESYS,
3323 "INTO filesys (label, type, mach_id, name, mount, access, comments, owner, owners, createflg, lockertype, filsys_id) VALUES ('%s','%s',%d,'%s','%s','%s','%s',%d,%d,%s,'%s',%s)",
3324 afil_fields,
3325 11,
3326 0,
3327 0,
3328 &afil_validate,
3329 },
3330
3331 {
3332 /* Q_UFIL - UPDATE_FILESYS */
3333 "update_filesys",
3334 "ufil",
3335 UPDATE,
3336 "fs",
3337 FILESYS,
3338 "filesys SET label = '%s', type = '%s', mach_id = %d, name = '%s', mount = '%s', access = '%s', comments = '%s', owner = %d, owners = %d, createflg = %s, lockertype = '%s'",
3339 ufil_fields,
3340 11,
3341 "filsys_id = %d",
3342 1,
3343 &ufil_validate,
3344 },
3345
3346 {
3347 /* Q_DFIL - DELETE_FILESYS */
3348 "delete_filesys",
3349 "dfil",
3350 DELETE,
3351 "fs",
3352 FILESYS,
3353 (char *)0,
3354 dfil_fields,
3355 0,
3356 "filsys_id = %d",
3357 1,
3358 &dfil_validate,
3359 },
3360
3361 {
3362 /* Q_GFGM - GET_FSGROUP_MEMBERS */
3363 "get_fsgroup_members",
3364 "gfgm",
3365 RETRIEVE,
3366 "fg",
3367 "fsgroup",
3368 "CHAR(fs.label), fg.key FROM fsgroup fg, filesys fs",
3369 gfgm_fields,
3370 2,
3371 "fg.group_id = %d AND fs.filsys_id = fg.filsys_id",
3372 1,
3373 &gfgm_validate,
3374 },
3375
3376 {
3377 /* Q_AFTG - ADD_FILESYS_TO_FSGROUP */
3378 "add_filesys_to_fsgroup",
3379 "aftg",
3380 APPEND,
3381 "fg",
3382 "fsgroup",
3383 "INTO fsgroup (group_id,filsys_id,key) VALUES (%d, %d, '%s')",
3384 gfgm_fields,
3385 3,
3386 (char *)0,
3387 0,
3388 &aftg_validate,
3389 },
3390
3391 {
3392 /* Q_RFFG - REMOVE_FILESYS_FROM_FSGROUP */
3393 "remove_filesys_from_fsgroup",
3394 "rffg",
3395 DELETE,
3396 "fg",
3397 "fsgroup",
3398 (char *)0,
3399 gfgm_fields,
3400 0,
3401 "group_id = %d AND filsys_id = %d",
3402 2,
3403 &aftg_validate,
3404 },
3405
3406 {
3407 /* Q_GANF - GET_ALL_NFSPHYS */
3408 "get_all_nfsphys",
3409 "ganf",
3410 RETRIEVE,
3411 "np",
3412 "nfsphys",
3413 "CHAR(m.name), CHAR(np.dir), np.device, CHAR(np.status), CHAR(np.allocated), CHAR(np.partsize), CHAR(np.modtime), CHAR(np.modby), np.modwith FROM nfsphys np, machine m",
3414 ganf_fields,
3415 9,
3416 "m.mach_id = np.mach_id",
3417 0,
3418 &VDsortf,
3419 },
3420
3421 {
3422 /* Q_GNFP - GET_NFSPHYS */
3423 "get_nfsphys",
3424 "gnfp",
3425 RETRIEVE,
3426 "np",
3427 "nfsphys",
3428 "CHAR(m.name), CHAR(np.dir), np.device, CHAR(np.status), CHAR(np.allocated), CHAR(np.partsize), CHAR(np.modtime), CHAR(np.modby), np.modwith FROM nfsphys np, machine m",
3429 gnfp_fields,
3430 9,
3431 "np.mach_id = %d AND np.dir LIKE '%s' ESCAPE '*' AND m.mach_id = np.mach_id",
3432 2,
3433 &gnfp_validate,
3434 },
3435
3436 {
3437 /* Q_ANFP - ADD_NFSPHYS */ /* uses prefetch_value() for nfsphys_id */
3438 "add_nfsphys",
3439 "anfp",
3440 APPEND,
3441 "np",
3442 "nfsphys",
3443 "INTO nfsphys (mach_id, dir, device, status, allocated, partsize, nfsphys_id) VALUES (%d, '%s', '%s', %s, %s, %s, %s)",
3444 ganf_fields,
3445 6,
3446 0,
3447 0,
3448 &anfp_validate,
3449 },
3450
3451 {
3452 /* Q_UNFP - UPDATE_NFSPHYS */
3453 "update_nfsphys",
3454 "unfp",
3455 UPDATE,
3456 "np",
3457 "nfsphys",
3458 "nfsphys SET device = '%s', status = '%s', allocated = %s, partsize = %s",
3459 gnfp_fields,
3460 4,
3461 "mach_id = %d AND dir = '%s'",
3462 2,
3463 &unfp_validate,
3464 },
3465
3466 {
3467 /* Q_AJNF - ADJUST_NFSPHYS_ALLOCATION */
3468 "adjust_nfsphys_allocation",
3469 "ajnf",
3470 UPDATE,
3471 "np",
3472 "nfsphys",
3473 "nfsphys SET allocated = allocated + %s",
3474 ajnf_fields,
3475 1,
3476 "mach_id = %d AND dir = '%s'",
3477 2,
3478 &unfp_validate,
3479 },
3480
3481 {
3482 /* Q_DNFP - DELETE_NFSPHYS */
3483 "delete_nfsphys",
3484 "dnfp",
3485 DELETE,
3486 "np",
3487 "nfsphys",
3488 (char *)0,
3489 dnfp_fields,
3490 0,
3491 "mach_id = %d AND dir = '%s'",
3492 2,
3493 &dnfp_validate,
3494 },
3495
3496 {
3497 /* Q_GQOT - GET_QUOTA */
3498 "get_quota",
3499 "gqot",
3500 RETRIEVE,
3501 "q",
3502 QUOTA,
3503 "CHAR(fs.label), q.type, CHAR(q.entity_id), CHAR(q.quota), CHAR(q.phys_id), CHAR(m.name), CHAR(q.modtime), CHAR(q.modby), q.modwith FROM quota q, filesys fs, machine m",
3504 gqot_fields,
3505 9,
3506 "fs.label LIKE '%s' ESCAPE '*' AND q.type = '%s' AND q.entity_id = %d AND fs.filsys_id = q.filsys_id AND m.mach_id = fs.mach_id",
3507 3,
3508 &gqot_validate,
3509 },
3510
3511 {
3512 /* Q_GQBF - GET_QUOTA_BY_FILESYS */
3513 "get_quota_by_filesys",
3514 "gqbf",
3515 RETRIEVE,
3516 "q",
3517 QUOTA,
3518 "CHAR(fs.label), q.type, CHAR(q.entity_id), CHAR(q.quota), CHAR(q.phys_id), CHAR(m.name), CHAR(q.modtime), CHAR(q.modby), q.modwith FROM quota q, filesys fs, machine m",
3519 gqbf_fields,
3520 9,
3521 "fs.label LIKE '%s' ESCAPE '*' AND fs.filsys_id = q.filsys_id AND m.mach_id = fs.mach_id",
3522 1,
3523 &gqbf_validate,
3524 },
3525
3526 {
3527 /* Q_AQOT - ADD_QUOTA */ /* prefetch_filsys() gets last 2 values */
3528 "add_quota",
3529 "aqot",
3530 APPEND,
3531 "q",
3532 QUOTA,
3533 "INTO quota (type, entity_id, quota, filsys_id, phys_id) VALUES ('%s', %d, %s, %s, %s)",
3534 aqot_fields,
3535 3,
3536 (char *)0,
3537 0,
3538 &aqot_validate,
3539 },
3540
3541 {
3542 /* Q_UQOT - UPDATE_QUOTA */
3543 "update_quota",
3544 "uqot",
3545 UPDATE,
3546 "q",
3547 QUOTA,
3548 "quota SET quota = %s",
3549 aqot_fields,
3550 1,
3551 "q.filsys_id = %d AND q.type = '%s' AND q.entity_id = %d",
3552 3,
3553 &uqot_validate,
3554 },
3555
3556 {
3557 /* Q_DQOT - DELETE_QUOTA */
3558 "delete_quota",
3559 "dqot",
3560 DELETE,
3561 "q",
3562 QUOTA,
3563 (char *)0,
3564 aqot_fields,
3565 0,
3566 "q.filsys_id = %d AND q.type = '%s' AND q.entity_id = %d",
3567 3,
3568 &dqot_validate,
3569 },
3570
3571 {
3572 /* Q_GNFQ - GET_NFS_QUOTAS */
3573 "get_nfs_quota",
3574 "gnfq",
3575 RETRIEVE,
3576 "q",
3577 QUOTA,
3578 "CHAR(fs.label), CHAR(u.login), CHAR(q.quota), CHAR(q.phys_id), CHAR(m.name), CHAR(q.modtime), CHAR(q.modby), q.modwith FROM quota q, filesys fs, users u, machine m",
3579 gnfq_fields,
3580 8,
3581 "fs.label LIKE '%s' ESCAPE '*' AND q.type = 'USER' AND q.entity_id = u.users_id AND fs.filsys_id = q.filsys_id AND m.mach_id = fs.mach_id AND u.login = '%s'",
3582 2,
3583 &gnfq_validate,
3584 },
3585
3586 {
3587 /* Q_GNQP - GET_NFS_QUOTAS_BY_PARTITION */
3588 "get_nfs_quotas_by_partition",
3589 "gnqp",
3590 RETRIEVE,
3591 "q",
3592 QUOTA,
3593 "CHAR(fs.label), CHAR(u.login), CHAR(q.quota), CHAR(np.dir), CHAR(m.name) FROM quota q, filesys fs, users u, nfsphys np, machine m",
3594 gnqp_fields,
3595 5,
3596 "np.mach_id = %d AND np.dir LIKE '%s' ESCAPE '*' AND q.phys_id = np.nfsphys_id AND fs.filsys_id = q.filsys_id AND q.type = 'USER' AND u.users_id = q.entity_id AND m.mach_id = np.mach_id",
3597 2,
3598 &gnqp_validate,
3599 },
3600
3601 {
3602 /* Q_ANFQ - ADD_NFS_QUOTA */ /* prefetch_filsys() gets last 2 values */
3603 "add_nfs_quota",
3604 "anfq",
3605 APPEND,
3606 "q",
3607 QUOTA,
3608 "INTO quota (type, entity_id, quota, filsys_id, phys_id) VALUES ('USER', %d, %s, %s, %s)",
3609 anfq_fields,
3610 2,
3611 (char *)0,
3612 0,
3613 &anfq_validate,
3614 },
3615
3616 {
3617 /* Q_UNFQ - UPDATE_NFS_QUOTA */
3618 "update_nfs_quota",
3619 "unfq",
3620 UPDATE,
3621 "q",
3622 QUOTA,
3623 "quota SET quota = %s",
3624 anfq_fields,
3625 1,
3626 "filsys_id = %d AND type = 'USER' AND entity_id = %d",
3627 2,
3628 &unfq_validate,
3629 },
3630
3631 {
3632 /* Q_DNFQ - DELETE_NFS_QUOTA */
3633 "delete_nfs_quota",
3634 "dnfq",
3635 DELETE,
3636 "q",
3637 QUOTA,
3638 (char *)0,
3639 anfq_fields,
3640 0,
3641 "filsys_id = %d AND type = 'USER' AND entity_id = %d",
3642 2,
3643 &dnfq_validate,
3644 },
3645
3646 {
3647 /* Q_GLIN - GET_LIST_INFO */
3648 "get_list_info",
3649 "glin",
3650 RETRIEVE,
3651 0,
3652 LIST,
3653 0,
3654 glin_fields,
3655 13,
3656 0,
3657 1,
3658 &glin_validate,
3659 },
3660
3661 {
3662 /* Q_EXLN - EXPAND_LIST_NAMES */
3663 "expand_list_names",
3664 "exln",
3665 RETRIEVE,
3666 "l",
3667 LIST,
3668 "CHAR(l.name) FROM list l",
3669 glin_fields,
3670 1,
3671 "l.name LIKE '%s' ESCAPE '*' AND l.list_id != 0",
3672 1,
3673 &VDwild0,
3674 },
3675
3676 {
3677 /* Q_ALIS - ADD_LIST */ /* uses prefetch_value() for list_id */
3678 "add_list",
3679 "alis",
3680 APPEND,
3681 "l",
3682 LIST,
3683 "INTO list (name, active, publicflg, hidden, maillist, grouplist, gid, acl_type, acl_id, description, list_id) VALUES ('%s',%s,%s,%s,%s,%s,%s,'%s',%d,'%s',%s)",
3684 alis_fields,
3685 10,
3686 0,
3687 0,
3688 &alis_validate,
3689 },
3690
3691 {
3692 /* Q_ULIS - UPDATE_LIST */
3693 "update_list",
3694 "ulis",
3695 UPDATE,
3696 "l",
3697 LIST,
3698 "list SET name='%s', active=%s, publicflg=%s, hidden=%s, maillist=%s, grouplist=%s, gid=%s, acl_type='%s', acl_id=%d, description='%s'",
3699 ulis_fields,
3700 10,
3701 "list_id = %d",
3702 1,
3703 &ulis_validate,
3704 },
3705
3706 {
3707 /* Q_DLIS - DELETE_LIST */
3708 "delete_list",
3709 "dlis",
3710 DELETE,
3711 "l",
3712 LIST,
3713 (char *)0,
3714 dlis_fields,
3715 0,
3716 "list_id = %d",
3717 1,
3718 &dlis_validate,
3719 },
3720
3721 {
3722 /* Q_AMTL - ADD_MEMBER_TO_LIST */
3723 "add_member_to_list",
3724 "amtl",
3725 APPEND,
3726 0,
3727 "imembers",
3728 0,
3729 amtl_fields,
3730 3,
3731 (char *)0,
3732 0,
3733 &amtl_validate,
3734 },
3735
3736 {
3737 /* Q_DMFL - DELETE_MEMBER_FROM_LIST */
3738 "delete_member_from_list",
3739 "dmfl",
3740 DELETE,
3741 0,
3742 "imembers",
3743 (char *)0,
3744 amtl_fields,
3745 0,
3746 0,
3747 3,
3748 &dmfl_validate,
3749 },
3750
3751 {
3752 /* Q_GAUS - GET_ACE_USE */
3753 "get_ace_use",
3754 "gaus",
3755 RETRIEVE,
3756 0,
3757 0,
3758 0,
3759 gaus_fields,
3760 2,
3761 0,
3762 2,
3763 &gaus_validate,
3764 },
3765
3766 {
3767 /* Q_QGLI - QUALIFIED_GET_LISTS */
3768 "qualified_get_lists",
3769 "qgli",
3770 RETRIEVE,
3771 0,
3772 LIST,
3773 0,
3774 qgli_fields,
3775 1,
3776 0,
3777 5,
3778 &qgli_validate,
3779 },
3780
3781 {
3782 /* Q_GMOL - GET_MEMBERS_OF_LIST */
3783 "get_members_of_list",
3784 "gmol",
3785 RETRIEVE,
3786 (char *)0,
3787 "imembers",
3788 (char *)0,
3789 gmol_fields,
3790 2,
3791 (char *)0,
3792 1,
3793 &gmol_validate,
3794 },
3795
3796 {
3797 /* Q_GEML - GET_END_MEMBERS_OF_LIST */
3798 "get_end_members_of_list",
3799 "geml",
3800 RETRIEVE,
3801 (char *)0,
3802 "imembers",
3803 (char *)0,
3804 gmol_fields,
3805 0,
3806 (char *)0,
3807 1,
3808 &geml_validate,
3809 },
3810
3811 {
3812 /* Q_GLOM - GET_LISTS_OF_MEMBER */
3813 "get_lists_of_member",
3814 "glom",
3815 RETRIEVE,
3816 0,
3817 "imembers",
3818 0,
3819 glom_fields,
3820 6,
3821 0,
3822 2,
3823 &glom_validate,
3824 },
3825
3826 {
3827 /* Q_CMOL - COUNT_MEMBERS_OF_LIST */
3828 "count_members_of_list",
3829 "cmol",
3830 RETRIEVE,
3831 0,
3832 "imembers",
3833 0,
3834 cmol_fields,
3835 1,
3836 0,
3837 1,
3838 &cmol_validate,
3839 },
3840
3841 {
3842 /* Q_GZCL - GET_ZEPHYR_CLASS */
3843 "get_zephyr_class",
3844 "gzcl",
3845 RETRIEVE,
3846 "z",
3847 "zephyr",
3848 "CHAR(z.class), z.xmt_type, CHAR(z.xmt_id), z.sub_type, CHAR(z.sub_id), z.iws_type, CHAR(z.iws_id), z.iui_type, CHAR(z.iui_id), CHAR(z.modtime), CHAR(z.modby), z.modwith FROM zephyr z",
3849 gzcl_fields,
3850 12,
3851 "z.class LIKE '%s' ESCAPE '*'",
3852 1,
3853 &gzcl_validate,
3854 },
3855
3856 {
3857 /* Q_AZCL - ADD_ZEPHYR_CLASS */
3858 "add_zephyr_class",
3859 "azcl",
3860 APPEND,
3861 "z",
3862 "zephyr",
3863 "INTO zephyr (class, xmt_type, xmt_id, sub_type, sub_id, iws_type, iws_id, iui_type, iui_id) VALUES ('%s','%s',%d,'%s',%d,'%s',%d,'%s',%d)",
3864 azcl_fields,
3865 9,
3866 0,
3867 0,
3868 &azcl_validate,
3869 },
3870
3871 {
3872 /* Q_UZCL - UPDATE_ZEPHYR_CLASS */
3873 "update_zephyr_class",
3874 "uzcl",
3875 UPDATE,
3876 "z",
3877 "zephyr",
3878 "zephyr SET class = '%s', xmt_type = '%d', xmt_id = %d, sub_type = '%s', sub_id = %d, iws_type = '%s', iws_id = %d, iui_type = '%s', iui_id = %d",
3879 uzcl_fields,
3880 9,
3881 "class = '%s'",
3882 1,
3883 &uzcl_validate,
3884 },
3885
3886 {
3887 /* Q_DZCL - DELETE_ZEPHYR_CLASS */
3888 "delete_zephyr_class",
3889 "dzcl",
3890 DELETE,
3891 "z",
3892 "zephyr",
3893 0,
3894 uzcl_fields,
3895 0,
3896 "class = '%s'",
3897 1,
3898 &dzcl_validate,
3899 },
3900
3901 {
3902 /* Q_GSVC - GET_SERVICE */
3903 "get_service",
3904 "gsvc",
3905 RETRIEVE,
3906 "ss",
3907 "services",
3908 "CHAR(ss.name), ss.protocol, CHAR(ss.port), ss.description, CHAR(ss.modtime), CHAR(ss.modby), ss.modwith FROM services ss",
3909 gsvc_fields,
3910 7,
3911 "ss.name LIKE '%s' ESCAPE '*'",
3912 1,
3913 &VDwildsortf,
3914 },
3915
3916 {
3917 /* Q_ASVC - ADD_SERVICE */
3918 "add_service",
3919 "asvc",
3920 APPEND,
3921 "ss",
3922 "services",
3923 "INTO services (name, protocol, port, description) VALUES ('%s','%s',%s,'%s')",
3924 asvc_fields,
3925 4,
3926 (char *)0,
3927 0,
3928 &asvc_validate,
3929 },
3930
3931 {
3932 /* Q_DSVC - DELETE_SERVICE */
3933 "delete_service",
3934 "dsvc",
3935 DELETE,
3936 "ss",
3937 "services",
3938 0,
3939 asvc_fields,
3940 0,
3941 "name = '%s'",
3942 1,
3943 &asvc_validate,
3944 },
3945
3946 {
3947 /* Q_GPCE - GET_PRINTCAP_ENTRY */
3948 "get_printcap_entry",
3949 "gpce",
3950 RETRIEVE,
3951 "pc",
3952 "printcap",
3953 "CHAR(pc.name), CHAR(m.name), pc.dir, pc.rp, CHAR(pc.quotaserver), CHAR(pc.auth), CHAR(pc.price), pc.comments, CHAR(pc.modtime), CHAR(pc.modby), pc.modwith FROM printcap pc, machine m",
3954 gpce_fields,
3955 11,
3956 "pc.name LIKE '%s' ESCAPE '*' AND m.mach_id = pc.mach_id",
3957 1,
3958 &gpce_validate,
3959 },
3960
3961 {
3962 /* Q_APCE - ADD_PRINTCAP_ENTRY */
3963 "add_printcap_entry",
3964 "apce",
3965 APPEND,
3966 "pc",
3967 "printcap",
3968 "INTO printcap (name, mach_id, dir, rp, quotaserver, auth, price, comments) VALUES ('%s',%d,'%s','%s',%d,%s,%s,'%s')",
3969 apce_fields,
3970 8,
3971 0,
3972 0,
3973 &apce_validate,
3974 },
3975
3976 {
3977 /* Q_DPCE - DELETE_PRINTCAP_ENTRY */
3978 "delete_printcap_entry",
3979 "dpce",
3980 DELETE,
3981 "pc",
3982 "printcap",
3983 0,
3984 apce_fields,
3985 0,
3986 "name = '%s'",
3987 1,
3988 &dpce_validate,
3989 },
3990
3991 {
3992 /* Q_GPCP - GET_PRINTCAP */
3993 "get_printcap",
3994 "gpcp",
3995 RETRIEVE,
3996 "pc",
3997 "printcap",
3998 "CHAR(pc.name), CHAR(m.name), pc.dir, pc.rp, pc.comments, CHAR(pc.modtime), CHAR(pc.modby), pc.modwith FROM printcap pc, machine m",
3999 gpcp_fields,
4000 8,
4001 "pc.name LIKE '%s' ESCAPE '*' AND m.mach_id = pc.mach_id",
4002 1,
4003 &VDwildsortf,
4004 },
4005
4006 {
4007 /* Q_DPCP - DELETE_PRINTCAP */
4008 "delete_printcap",
4009 "dpcp",
4010 DELETE,
4011 "pc",
4012 "printcap",
4013 0,
4014 apce_fields,
4015 0,
4016 "name = '%s'",
4017 1,
4018 &dpce_validate,
4019 },
4020
4021 {
4022 /* Q_GPDM - GET_PALLADIUM */
4023 "get_palladium",
4024 "gpdm",
4025 RETRIEVE,
4026 "pal",
4027 "palladium",
4028 "CHAR(pal.name), CHAR(pal.ident), CHAR(m.name), CHAR(pal.modtime), CHAR(pal.modby), pal.modwith FROM palladium pal, machine m",
4029 gpdm_fields,
4030 6,
4031 "pal.name LIKE '%s' ESCAPE '*' AND m.mach_id = pal.mach_id",
4032 1,
4033 &VDwildsortf,
4034 },
4035
4036 {
4037 /* Q_APDM - ADD_PALLADIUM */
4038 "add_palladium",
4039 "apdm",
4040 APPEND,
4041 "pal",
4042 "palladium",
4043 "INTO palladium (name, ident, mach_id) VALUES ('%s',%s,%d)",
4044 apdm_fields,
4045 3,
4046 0,
4047 0,
4048 &apdm_validate,
4049 },
4050
4051 {
4052 /* Q_DPDM - DELETE_PALLADIUM */
4053 "delete_palladium",
4054 "dpdm",
4055 DELETE,
4056 "pal",
4057 "palladium",
4058 0,
4059 apdm_fields,
4060 0,
4061 "name = '%s'",
4062 1,
4063 &dpdm_validate,
4064 },
4065
4066 {
4067 /* Q_GALI - GET_ALIAS */
4068 "get_alias",
4069 "gali",
4070 RETRIEVE,
4071 "a",
4072 "alias",
4073 "CHAR(a.name), CHAR(a.type), CHAR(a.trans) FROM alias a",
4074 gali_fields,
4075 3,
4076 "a.name LIKE '%s' ESCAPE '*' AND a.type LIKE '%s' ESCAPE '*' AND a.trans LIKE '%s' ESCAPE '*'",
4077 3,
4078 &VDwild3sort1,
4079 },
4080
4081 {
4082 /* Q_AALI - ADD_ALIAS */
4083 "add_alias",
4084 "aali",
4085 APPEND,
4086 "a",
4087 "alias",
4088 "INTO alias (name, type, trans) VALUES ('%s', '%s', '%s')",
4089 aali_fields,
4090 3,
4091 (char *)0,
4092 0,
4093 &aali_validate,
4094 },
4095
4096 {
4097 /* Q_DALI - DELETE_ALIAS */
4098 "delete_alias",
4099 "dali",
4100 DELETE,
4101 "a",
4102 "alias",
4103 (char *)0,
4104 aali_fields,
4105 0,
4106 "name = '%s' AND type = '%s' AND trans = '%s'",
4107 3,
4108 &dali_validate,
4109 },
4110
4111 {
4112 /* Q_GVAL - GET_VALUE */
4113 "get_value",
4114 "gval",
4115 RETRIEVE,
4116 "val",
4117 "numvalues",
4118 "CHAR(val.value) FROM numvalues val",
4119 gval_fields,
4120 1,
4121 "val.name = '%s'",
4122 1,
4123 &gval_validate,
4124 },
4125
4126 {
4127 /* Q_AVAL - ADD_VALUE */
4128 "add_value",
4129 "aval",
4130 APPEND,
4131 "val",
4132 "numvalues",
4133 "INTO numvalues (name, value) VALUES ('%s', %s)",
4134 aval_fields,
4135 2,
4136 (char *)0,
4137 0,
4138 &aval_validate,
4139 },
4140
4141 {
4142 /* Q_UVAL - UPDATE_VALUE */
4143 "update_value",
4144 "uval",
4145 UPDATE,
4146 "val",
4147 "numvalues",
4148 "numvalues SET value = %s",
4149 aval_fields,
4150 1,
4151 "name = '%s'",
4152 1,
4153 &aval_validate,
4154 },
4155
4156 {
4157 /* Q_DVAL - DELETE_VALUE */
4158 "delete_value",
4159 "dval",
4160 DELETE,
4161 "val",
4162 "numvalues",
4163 (char *)0,
4164 dval_fields,
4165 0,
4166 "name = '%s'",
4167 1,
4168 &aval_validate,
4169 },
4170
4171 {
4172 /* Q_GATS - GET_ALL_TABLE_STATS */
4173 "get_all_table_stats",
4174 "gats",
4175 RETRIEVE,
4176 "tbs",
4177 "tblstats",
4178 "tbs.table_name, CHAR(tbs.appends), CHAR(tbs.updates), CHAR(tbs.deletes), CHAR(tbs.modtime) FROM tblstats tbs",
4179 gats_fields,
4180 5,
4181 (char *)0,
4182 0,
4183 0,
4184 },
4185
4186};
4187
4188int QueryCount2 = (sizeof Queries2 / sizeof (struct query));
This page took 0.138305 seconds and 5 git commands to generate.