]> andersk Git - moira.git/blob - server/queries2.c
fix set_pobox_pop definition
[moira.git] / server / queries2.c
1 /* $Id$
2  *
3  * This file defines the query dispatch table for version 2 of the protocol
4  *
5  * Copyright (C) 1987-1998 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 "mr_server.h"
12 #include "query.h"
13
14 #include "mr_et.h"
15
16 /* VALOBJS
17  * These are commonly used validation objects, defined here so that they
18  * can be shared.
19  */
20
21 static struct valobj VOuser0[] = {
22   {V_ID, 0, USERS_TABLE, "login", "users_id", MR_USER},
23 };
24
25 static struct valobj VOmach0[] = {
26   {V_ID, 0, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
27 };
28
29 static struct valobj VOclu0[] = {
30   {V_ID, 0, CLUSTERS_TABLE, "name", "clu_id", MR_CLUSTER},
31 };
32
33 static struct valobj VOsnet0[] = {
34   {V_ID, 0, SUBNET_TABLE, "name", "snet_id", MR_SUBNET},
35 };
36
37 static struct valobj VOlist0[] = {
38   {V_ID, 0, LIST_TABLE, "name", "list_id", MR_LIST},
39 };
40
41 static struct valobj VOfilesys0[] = {
42   {V_ID, 0, FILESYS_TABLE, "label", "filsys_id", MR_FILESYS},
43 };
44
45 static struct valobj VOnum0[] = {
46   {V_NUM, 0},
47 };
48
49 /* Validations
50  * Commonly used validation records defined here so that they may
51  * be shared.
52  */
53
54 static struct validate VDmach = { VOmach0, 1 };
55
56 static struct validate VDfix_modby = {
57   0,
58   0,
59   0,
60   0,
61   0,
62   0,
63   0,
64   0,
65   followup_fix_modby,
66 };
67
68 /* Query data */
69
70 static char *galo_fields[] = {
71   "login", "unix_uid", "shell", "last", "first", "middle",
72 };
73
74 static char *gual_fields[] = {
75   "login",
76   "login", "unix_uid", "shell", "last", "first", "middle", "status",
77   "clearid", "class", "comments", "signature", "secure",
78   "modtime", "modby", "modwith",
79 };
80
81 static char *gubl_fields[] = {
82   "login",
83   "login", "unix_uid", "shell", "last", "first", "middle", "status",
84   "clearid", "class", "modtime", "modby", "modwith",
85 };
86
87 static struct validate gubl_validate =
88 {
89   0,
90   0,
91   0,
92   0,
93   0,
94   0,
95   access_login,
96   0,
97   followup_guax,
98 };
99
100 static char *guau_fields[] = {
101   "unix_uid",
102   "login", "unix_uid", "shell", "last", "first", "middle", "status",
103   "clearid", "class", "comments", "signature", "secure",
104   "modtime", "modby", "modwith",
105 };
106
107 static char *guan_fields[] = {
108   "first", "last",
109   "login", "unix_uid", "shell", "last", "first", "middle", "status",
110   "clearid", "class", "comments", "signature", "secure",
111   "modtime", "modby", "modwith",
112 };
113
114 static struct validate guan_validate =
115 {
116   0,
117   0,
118   0,
119   0,
120   0,
121   0,
122   0,
123   0,
124   followup_guax,
125 };
126
127 static char *guac_fields[] = {
128   "class",
129   "login", "unix_uid", "shell", "last", "first", "middle", "status",
130   "clearid", "class", "comments", "signature", "secure",
131   "modtime", "modby", "modwith",
132 };
133
134 static char *guam_fields[] = {
135   "clearid",
136   "login", "unix_uid", "shell", "last", "first", "middle", "status",
137   "clearid", "class", "comments", "signature", "secure",
138   "modtime", "modby", "modwith",
139 };
140
141 static char *gubu_fields[] = {
142   "unix_uid",
143   "login", "unix_uid", "shell", "last", "first", "middle", "status",
144   "clearid", "class", "modtime", "modby", "modwith",
145 };
146
147 static struct validate gubu_validate =
148 {
149   VOnum0,
150   1,
151   0,
152   0,
153   0,
154   0,
155   access_login,
156   0,
157   followup_fix_modby,
158 };
159
160 static char *gubn_fields[] = {
161   "first", "last",
162   "login", "unix_uid", "shell", "last", "first", "middle", "status",
163   "clearid", "class", "modtime", "modby", "modwith",
164 };
165
166 static struct validate gubn_validate =
167 {
168   0,
169   0,
170   0,
171   0,
172   0,
173   0,
174   0,
175   0,
176   followup_fix_modby,
177 };
178
179 static char *gubc_fields[] = {
180   "class",
181   "login", "unix_uid", "shell", "last", "first", "middle", "status",
182   "clearid", "class", "modtime", "modby", "modwith",
183 };
184
185 static char *gubm_fields[] = {
186   "clearid",
187   "login", "unix_uid", "shell", "last", "first", "middle", "status",
188   "clearid", "class", "modtime", "modby", "modwith",
189 };
190
191 static char *auac_fields[] = {
192   "login", "unix_uid", "shell", "last", "first", "middle", "status",
193   "clearid", "class", "comments", "signature", "secure",
194 };
195
196 static struct valobj auac_valobj[] = {
197   {V_CHAR, 0, USERS_TABLE, "login"},
198   {V_NUM, 1},
199   {V_CHAR, 2, USERS_TABLE, "shell"},
200   {V_CHAR, 3, USERS_TABLE, "last"},
201   {V_CHAR, 4, USERS_TABLE, "first"},
202   {V_CHAR, 5, USERS_TABLE, "middle"},
203   {V_NUM, 6},
204   {V_CHAR, 7, USERS_TABLE, "clearid"},
205   {V_TYPE, 8, 0, "class", 0, MR_BAD_CLASS},
206   {V_ID, 9, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
207   {V_NUM, 11},
208 };
209
210 static struct validate auac_validate = {
211   auac_valobj,
212   11,
213   "login",
214   "login = '%s'",
215   1,
216   "users_id",
217   0,
218   setup_ausr,
219   followup_ausr,
220 };
221
222 static struct validate ausr_validate = {
223   auac_valobj,
224   9,
225   "login",
226   "login = '%s'",
227   1,
228   "users_id",
229   0,
230   setup_ausr,
231   followup_ausr,
232 };
233
234 static char *rusr_fields[] = {
235   "unix_uid", "login", "pobox_type"
236 };
237
238 static struct valobj rusr_valobj[] = {
239   {V_NUM, 0},
240   {V_CHAR, 1, USERS_TABLE, "login"},
241 };
242
243 static struct validate rusr_validate = {
244   rusr_valobj,
245   2,
246   0,
247   0,
248   0,
249   0,
250   0,
251   register_user,
252   0,
253 };
254
255 static char *uuac_fields[] = {
256   "login",
257   "newlogin", "unix_uid", "shell", "last", "first", "middle", "status",
258   "clearid", "class", "comments", "signature", "secure",
259 };
260
261 static struct valobj uuac_valobj[] = {
262   {V_ID, 0, USERS_TABLE, "login", "users_id", MR_USER},
263   {V_RENAME, 1, USERS_TABLE, "login", "users_id", MR_NOT_UNIQUE},
264   {V_NUM, 2},
265   {V_CHAR, 3, USERS_TABLE, "shell"},
266   {V_CHAR, 4, USERS_TABLE, "first"},
267   {V_CHAR, 5, USERS_TABLE, "last"},
268   {V_CHAR, 6, USERS_TABLE, "middle"},
269   {V_NUM, 7},
270   {V_CHAR, 8, USERS_TABLE, "clearid"},
271   {V_TYPE, 9, 0, "class", 0, MR_BAD_CLASS},
272   {V_ID, 10, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
273   {V_NUM, 12},
274 };
275
276 static struct validate uuac_validate = {
277   uuac_valobj,
278   12,
279   0,
280   0,
281   0,
282   "users_id",
283   0,
284   setup_ausr,
285   followup_uuac,
286 };
287
288 static struct validate uusr_validate = {
289   uuac_valobj,
290   11,
291   0,
292   0,
293   0,
294   "users_id",
295   0,
296   setup_ausr,
297   set_modtime_by_id,
298 };
299
300 static char *uush_fields[] = {
301   "login",
302   "shell",
303 };
304
305 static struct valobj uush_valobj[] = {
306   {V_ID, 0, USERS_TABLE, "login", "users_id", MR_USER},
307   {V_CHAR, 1, USERS_TABLE, "shell"},
308 };
309
310 static struct validate uush_validate = {
311   uush_valobj,
312   2,
313   0,
314   0,
315   0,
316   "users_id",
317   access_user,
318   0,
319   set_finger_modtime,
320 };
321
322 static char *uust_fields[] = {
323   "login",
324   "status",
325 };
326
327 static char *uuss_fields[] = {
328   "login",
329   "secure",
330 };
331
332 static struct valobj uust_valobj[] = {
333   {V_ID, 0, USERS_TABLE, "login", "users_id", MR_USER},
334   {V_NUM, 1},
335   {V_NUM, 2},
336 };
337
338 static struct validate uust_validate = {
339   uust_valobj,
340   2,
341   0,
342   0,
343   0,
344   "users_id",
345   0,
346   0,
347   set_modtime_by_id,
348 };
349
350 static char *dusr_fields[] = {
351   "login",
352 };
353
354 static struct validate dusr_validate = {
355   VOuser0,
356   1,
357   0,
358   0,
359   0,
360   0,
361   0,
362   setup_dusr,
363   0,
364 };
365
366 static char *gkum_fields[] = { "login", "kerberos",
367                                    "login", "kerberos" };
368
369 static char *akum_fields[] = { "login", "kerberos" };
370
371 static struct valobj akum_valobj[] =
372 {
373   {V_ID, 0, USERS_TABLE, "login", "users_id", MR_USER},
374   {V_ID, 1, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
375 };
376
377 static struct validate akum_validate =
378 {
379   akum_valobj,
380   2,
381   "users_id",
382   "users_id = %d or string_id = %d",
383   2,
384   "users_id",
385   access_user,
386   0,
387   0,
388 };
389
390 static struct validate dkum_validate =
391 {
392   akum_valobj,
393   2,
394   "users_id",
395   "users_id = %d and string_id = %d",
396   2,
397   "users_id",
398   access_user,
399   0,
400   0,
401 };
402
403 static char *gfbl_fields[] = {
404   "login",
405   "login", "fullname", "nickname", "home_addr",
406   "home_phone", "office_addr", "office_phone", "department",
407   "affiliation", "modtime", "modby", "modwith",
408 };
409
410 static struct validate gfbl_validate = {
411   VOuser0,
412   1,
413   0,
414   0,
415   0,
416   0,
417   access_user,
418   0,
419   followup_fix_modby,
420 };
421
422 static char *ufbl_fields[] = {
423   "login",
424   "fullname", "nickname", "home_addr",
425   "home_phone", "office_addr", "office_phone", "department",
426   "affiliation",
427 };
428
429 static struct valobj ufbl_valobj[] = {
430   {V_ID, 0, USERS_TABLE, "login", "users_id", MR_USER},
431   {V_LEN, 1, USERS_TABLE, "fullname"},
432   {V_LEN, 2, USERS_TABLE, "nickname"},
433   {V_LEN, 3, USERS_TABLE, "home_addr"},
434   {V_LEN, 4, USERS_TABLE, "home_phone"},
435   {V_LEN, 5, USERS_TABLE, "office_addr"},
436   {V_LEN, 6, USERS_TABLE, "office_phone"},
437   {V_LEN, 7, USERS_TABLE, "department"},
438   {V_LEN, 8, USERS_TABLE, "affiliation"},
439 };
440
441 static struct validate ufbl_validate = {
442   ufbl_valobj,
443   9,
444   0,
445   0,
446   0,
447   0,
448   access_user,
449   0,
450   set_finger_modtime,
451 };
452
453 static char *gpob_fields[] = {
454   "login",
455   "login", "type", "box", "address", "modtime", "modby", "modwith",
456 };
457
458 static struct validate gpob_validate = {
459   VOuser0,
460   1,
461   "potype",
462   "potype != 'NONE' and users_id = %d",
463   1,
464   0,
465   access_user,
466   0,
467   followup_gpob,
468 };
469
470 static char *gpox_fields[] = {
471   "login", "type", "box",
472 };
473
474 static struct validate gpox_validate = {
475   0,
476   0,
477   0,
478   0,
479   0,
480   0,
481   0,
482   0,
483   followup_gpob,
484 };
485
486 static char *spob_fields[] = {
487   "login", "type", "box",
488 };
489
490 static struct valobj spob_valobj[] = {
491   {V_ID, 0, USERS_TABLE, "login", "users_id", MR_USER},
492   {V_TYPE, 1, 0, "pobox", 0, MR_TYPE},
493 };
494
495 static struct validate spob_validate =  /* SET_POBOX */
496 {
497   spob_valobj,
498   2,
499   0,
500   0,
501   0,
502   0,
503   access_spob,
504   0,
505   set_pobox,
506 };
507
508 static struct validate spop_validate =  /* SET_POBOX_POP */
509 {
510   VOuser0,
511   1,
512   0,
513   0,
514   0,
515   0,
516   access_user,
517   0,
518   set_pobox_pop,
519 };
520
521 static struct validate dpob_validate =  /* DELETE_POBOX */
522 {
523   VOuser0,
524   1,
525   0,
526   0,
527   0,
528   0,
529   access_user,
530   setup_dpob,
531   set_pobox_modtime,
532 };
533
534 static char *gmac_fields[] = {
535   "name",
536   "name", "type", "modtime", "modby", "modwith",
537 };
538
539 static char *ghst_fields[] = {
540   "name", "address", "location", "network",
541   "name", "vendor", "model", "os", "location", "contact", "use",
542   "status", "status_change", "network", "address", "ace_type",
543   "ace_name", "admin_comment", "ops_comment", "created", "creator",
544   "inuse", "modtime", "modby", "modwith",
545 };
546
547 static struct validate ghst_validate = {
548   0,
549   0,
550   0,
551   0,
552   0,
553   0,
554   access_host,
555   0,
556   followup_ghst,
557 };
558
559 static char *ghha_fields[] = {
560   "name",
561   "hwaddr",
562 };
563
564 static char *ahst_fields[] = {
565   "name", "vendor", "model", "os", "location", "contact", "use",
566   "status", "subnet", "address", "ace_type", "ace_name",
567   "admin_comment", "ops_comment",
568 };
569
570 static struct valobj ahst_valobj[] = {
571   {V_CHAR, 0, MACHINE_TABLE, "name"},
572   {V_CHAR, 1, MACHINE_TABLE, "vendor"},
573   {V_CHAR, 2, MACHINE_TABLE, "model"},
574   {V_CHAR, 3, MACHINE_TABLE, "os"},
575   {V_CHAR, 4, MACHINE_TABLE, "location"},
576   {V_CHAR, 5, MACHINE_TABLE, "contact"},
577   {V_NUM, 6},
578   {V_NUM, 7},
579   {V_ID, 8, SUBNET_TABLE, "name", "snet_id", MR_SUBNET},
580   {V_TYPE, 10, 0, "ace_type", 0, MR_ACE},
581   {V_TYPEDATA, 11, 0, 0, 0, MR_ACE},
582   {V_ID, 12, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
583   {V_ID, 13, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
584 };
585
586 static struct validate ahst_validate = {
587   ahst_valobj,
588   13,
589   "name",
590   "name = UPPER('%s')",
591   1,
592   "mach_id",
593   access_host,
594   setup_ahst,
595   set_uppercase_modtime,
596 };
597
598 static char *uhst_fields[] = {
599   "name",
600   "newname", "vendor", "model", "os", "location", "contact", "use",
601   "status", "subnet", "address", "ace_type", "ace_name",
602   "admin_comment", "ops_comment",
603 };
604
605 static struct valobj uhst_valobj[] = {
606   {V_CHAR, 0, MACHINE_TABLE, "name"},
607   {V_ID, 0, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
608   {V_RENAME, 1, MACHINE_TABLE, "name", "mach_id", MR_NOT_UNIQUE},
609   {V_CHAR, 2, MACHINE_TABLE, "vendor"},
610   {V_CHAR, 3, MACHINE_TABLE, "model"},
611   {V_CHAR, 4, MACHINE_TABLE, "os"},
612   {V_CHAR, 5, MACHINE_TABLE, "location"},
613   {V_CHAR, 6, MACHINE_TABLE, "contact"},
614   {V_NUM, 7},
615   {V_NUM, 8},
616   {V_ID, 9, SUBNET_TABLE, "name", "snet_id", MR_SUBNET},
617   {V_TYPE, 11, 0, "ace_type", 0, MR_ACE},
618   {V_TYPEDATA, 12, 0, 0, 0, MR_ACE},
619   {V_ID, 13, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
620   {V_ID, 14, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
621 };
622
623 static struct validate uhst_validate = {
624   uhst_valobj,
625   15,
626   0,
627   0,
628   0,
629   "mach_id",
630   access_host,
631   setup_ahst,
632   set_modtime_by_id,
633 };
634
635 static char *uhha_fields[] = {
636   "name",
637   "hwaddr"
638 };
639
640 static struct valobj uhha_valobj[] = {
641   {V_ID, 0, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
642   {V_CHAR, 1, MACHINE_TABLE, "hwaddr"},
643 };
644
645 static struct validate uhha_validate = {
646   uhha_valobj,
647   2,
648   0,
649   0,
650   0,
651   "mach_id",
652   0,
653   setup_uhha,
654   set_modtime_by_id,
655 };
656
657 static char *dhst_fields[] = {
658   "name",
659 };
660
661 static struct validate dhst_validate = {
662   VOmach0,
663   1,
664   0,
665   0,
666   0,
667   0,
668   0,
669   setup_dmac,
670   0,
671 };
672
673 static char *ghal_fields[] = {
674   "alias", "canonical_hostname",
675   "alias", "canonical_hostname"
676 };
677
678 static struct validate ghal_validate = {
679   0,
680   0,
681   0,
682   0,
683   0,
684   0,
685   access_ahal,
686   0,
687   0,
688 };
689
690 static struct valobj ahal_valobj[] = {
691   {V_CHAR, 0, HOSTALIAS_TABLE, "name"},
692   {V_ID, 1, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
693 };
694
695 static struct validate ahal_validate = {
696   ahal_valobj,
697   2,
698   "name",
699   "name = UPPER('%s')",
700   1,
701   "mach_id",
702   access_ahal,
703   setup_ahal,
704   0,
705 };
706
707 static struct valobj dhal_valobj[] = {
708   {V_ID, 1, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
709 };
710
711 static struct validate dhal_validate = {
712   dhal_valobj,
713   1,
714   "name",
715   "name = UPPER('%s') AND mach_id = %d",
716   2,
717   "mach_id",
718   access_ahal,
719   0,
720   0,
721 };
722
723 static char *gsnt_fields[] = {
724   "name",
725   "name", "description", "address", "mask", "low", "high", "prefix",
726   "ace_type", "ace_name", "modtime", "modby", "modwith"
727 };
728
729 static struct validate gsnt_validate = {
730   0,
731   0,
732   0,
733   0,
734   0,
735   0,
736   access_snt,
737   0,
738   followup_gsnt,
739 };
740
741 static char *asnt_fields[] = {
742   "name", "description", "address", "mask", "low", "high", "prefix",
743   "ace_type", "ace_name",
744 };
745
746 static struct valobj asnt_valobj[] = {
747   {V_CHAR, 0, SUBNET_TABLE, "name"},
748   {V_LEN, 1, SUBNET_TABLE, "description"},
749   {V_NUM, 2},
750   {V_NUM, 3},
751   {V_NUM, 4},
752   {V_NUM, 5},
753   {V_LEN, 6, SUBNET_TABLE, "prefix"},
754   {V_TYPE, 7, 0, "ace_type", 0, MR_ACE},
755   {V_TYPEDATA, 8, 0, 0, 0, MR_ACE},
756 };
757
758 static struct validate asnt_validate =
759 {
760   asnt_valobj,
761   9,
762   "name",
763   "name = UPPER('%s')",
764   1,
765   "snet_id",
766   0,
767   prefetch_value,
768   set_uppercase_modtime,
769 };
770
771 static char *usnt_fields[] = {
772   "name",
773   "newname", "description", "address", "mask", "low", "high", "prefix",
774   "ace_type", "ace_name",
775 };
776
777 static struct valobj usnt_valobj[] = {
778   {V_ID, 0, SUBNET_TABLE, "name", "snet_id", MR_NO_MATCH},
779   {V_RENAME, 1, SUBNET_TABLE, "name", "snet_id", MR_NOT_UNIQUE},
780   {V_LEN, 2, SUBNET_TABLE, "description"},
781   {V_NUM, 3},
782   {V_NUM, 4},
783   {V_NUM, 5},
784   {V_NUM, 6},
785   {V_LEN, 7, SUBNET_TABLE, "prefix"},
786   {V_TYPE, 8, 0, "ace_type", 0, MR_ACE},
787   {V_TYPEDATA, 9, 0, 0, 0, MR_ACE},
788 };
789
790 static struct validate usnt_validate =
791 {
792   usnt_valobj,
793   10,
794   "name",
795   "snet_id = %d",
796   1,
797   "snet_id",
798   0,
799   0,
800   set_modtime_by_id,
801 };
802
803 static char *dsnt_fields[] = {
804   "name",
805 };
806
807 static struct validate dsnt_validate = {
808   VOsnet0,
809   1,
810   0,
811   0,
812   0,
813   0,
814   0,
815   setup_dsnt,
816   0,
817 };
818
819 static char *gclu_fields[] = {
820   "name",
821   "name", "description", "location", "modtime", "modby", "modwith",
822 };
823
824 static char *aclu_fields[] = {
825   "name", "description", "location",
826 };
827
828 static struct valobj aclu_valobj[] = {
829   {V_CHAR, 0, CLUSTERS_TABLE, "name"},
830   {V_LEN, 1, CLUSTERS_TABLE, "description"},
831   {V_LEN, 2, CLUSTERS_TABLE, "location"},
832 };
833
834 static struct validate aclu_validate =
835 {
836   aclu_valobj,
837   3,
838   "name",
839   "name = '%s'",
840   1,
841   "clu_id",
842   0,
843   prefetch_value,
844   set_modtime,
845 };
846
847 static char *uclu_fields[] = {
848   "name",
849   "newname", "description", "location",
850 };
851
852 static struct valobj uclu_valobj[] = {
853   {V_ID, 0, CLUSTERS_TABLE, "name", "clu_id", MR_CLUSTER},
854   {V_RENAME, 1, CLUSTERS_TABLE, "name", "clu_id", MR_NOT_UNIQUE},
855   {V_LEN, 2, CLUSTERS_TABLE, "description"},
856   {V_LEN, 3, CLUSTERS_TABLE, "location"},
857 };
858
859 static struct validate uclu_validate = {
860   uclu_valobj,
861   4,
862   0,
863   0,
864   0,
865   "clu_id",
866   0,
867   0,
868   set_modtime_by_id,
869 };
870
871 static char *dclu_fields[] = {
872   "name",
873 };
874
875 static struct validate dclu_validate = {
876   VOclu0,
877   1,
878   0,
879   0,
880   0,
881   0,
882   0,
883   setup_dclu,
884   0,
885 };
886
887 static char *gmcm_fields[] = {
888   "machine", "cluster",
889   "machine", "cluster",
890 };
891
892 static struct valobj amtc_valobj[] =    /* ADD_MACHINE_TO_CLUSTER */
893 {                                       /* DELETE_MACHINE_FROM_CLUSTER */
894   {V_ID, 0, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
895   {V_ID, 1, CLUSTERS_TABLE, "name", "clu_id", MR_CLUSTER},
896 };
897
898 static 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
911 static char *gcld_fields[] = {
912   "cluster", "serv_label",
913   "cluster", "serv_label", "serv_cluster",
914 };
915
916 static char *acld_fields[] = {
917   "cluster", "serv_label", "serv_cluster",
918 };
919
920 static struct valobj acld_valobj[] =
921 {
922   {V_ID, 0, CLUSTERS_TABLE, "name", "clu_id", MR_CLUSTER},
923   {V_CHAR, 1, SVC_TABLE, "serv_label"},
924   {V_CHAR, 2, SVC_TABLE, "serv_cluster"}
925 };
926
927 static struct validate acld_validate =
928 {
929   acld_valobj,
930   3,
931   "clu_id",
932   "clu_id = %d AND serv_label = '%s' AND serv_cluster = '%s'",
933   3,
934   0,
935   0,
936   0,
937   set_cluster_modtime_by_id,
938 };
939
940 static struct validate dcld_validate =
941 {
942   VOclu0,
943   1,
944   "clu_id",
945   "clu_id = %d AND serv_label = '%s' AND serv_cluster = '%s'",
946   3,
947   0,
948   0,
949   0,
950   set_cluster_modtime_by_id,
951 };
952
953 static char *glin_fields[] = {
954   "name",
955   "name", "active", "publicflg", "hidden", "maillist", "grouplist", "gid",
956   "ace_type", "ace_name", "description", "modtime", "modby", "modwith",
957 };
958
959 static struct validate glin_validate = {
960   0,
961   0,
962   0,
963   0,
964   0,
965   0,
966   access_vis_list_by_name,
967   0,
968   followup_glin,
969 };
970
971 static char *alis_fields[] = {
972   "name", "active", "publicflg", "hidden", "maillist", "grouplist", "gid",
973   "ace_type", "ace_name", "description",
974 };
975
976 static struct valobj alis_valobj[] = {
977   {V_CHAR, 0, LIST_TABLE, "name"},
978   {V_NUM, 1},
979   {V_NUM, 2},
980   {V_NUM, 3},
981   {V_NUM, 4},
982   {V_NUM, 5},
983   {V_NUM, 6},
984   {V_TYPE, 7, 0, "ace_type", 0, MR_ACE},
985   {V_TYPEDATA, 8, 0, 0, "list_id", MR_ACE},
986   {V_LEN, 9, LIST_TABLE, "description"},
987 };
988
989 static struct validate alis_validate = {
990   alis_valobj,
991   10,
992   "name",
993   "name = '%s'",
994   1,
995   "list_id",
996   0,
997   setup_alis,
998   set_modtime,
999 };
1000
1001 static char *ulis_fields[] = {
1002   "name",
1003   "newname", "active", "publicflg", "hidden", "maillist", "grouplist", "gid",
1004   "ace_type", "ace_name", "description",
1005 };
1006
1007 static struct valobj ulis_valobj[] = {
1008   {V_ID, 0, LIST_TABLE, "name", "list_id", MR_LIST},
1009   {V_RENAME, 1, LIST_TABLE, "name", "list_id", MR_NOT_UNIQUE},
1010   {V_NUM, 2},
1011   {V_NUM, 3},
1012   {V_NUM, 4},
1013   {V_NUM, 5},
1014   {V_NUM, 6},
1015   {V_NUM, 7},
1016   {V_TYPE, 8, 0, "ace_type", 0, MR_ACE},
1017   {V_TYPEDATA, 9, 0, 0, "list_id", MR_ACE},
1018   {V_LEN, 10, LIST_TABLE, "description"},
1019 };
1020
1021 static struct validate ulis_validate = {
1022   ulis_valobj,
1023   11,
1024   "name",
1025   "list_id = %d",
1026   1,
1027   "list_id",
1028   access_list,
1029   setup_alis,
1030   set_modtime_by_id,
1031 };
1032
1033 static char *dlis_fields[] = {
1034   "name",
1035 };
1036
1037 static struct validate dlis_validate = {
1038   VOlist0,
1039   1,
1040   "name",
1041   "list_id = %d",
1042   1,
1043   0,
1044   access_list,
1045   setup_dlis,
1046   0,
1047 };
1048
1049 static char *amtl_fields[] = {
1050   "list_name", "member_type", "member_name",
1051 };
1052
1053 static char *atml_fields[] = {
1054   "list_name", "member_type", "member_name", "tag",
1055 };
1056
1057 static struct valobj amtl_valobj[] = {
1058   {V_ID, 0, LIST_TABLE, "name", "list_id", MR_LIST},
1059   {V_TYPE, 1, 0, "member", 0, MR_TYPE},
1060   {V_TYPEDATA, 2, 0, 0, 0, MR_NO_MATCH},
1061   {V_ID, 3, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
1062 };
1063
1064 static struct validate amtl_validate =
1065 {
1066   amtl_valobj,
1067   3,
1068   0,
1069   0,
1070   0,
1071   0,
1072   access_list,
1073   0,
1074   add_member_to_list,
1075 };
1076
1077 static struct validate atml_validate =
1078 {
1079   amtl_valobj,
1080   4,
1081   0,
1082   0,
1083   0,
1084   0,
1085   access_list,
1086   0,
1087   add_member_to_list,
1088 };
1089
1090 static struct validate tmol_validate =
1091 {
1092   amtl_valobj,
1093   4,
1094   "tag",
1095   "list_id = %d AND member_type = '%s' AND member_id = %d",
1096   3,
1097   0,
1098   access_list,
1099   0,
1100   0,
1101 };
1102
1103 static struct validate dmfl_validate =
1104 {
1105   amtl_valobj,
1106   3,
1107   0,
1108   0,
1109   0,
1110   0,
1111   access_list,
1112   0,
1113   delete_member_from_list,
1114 };
1115
1116 static char *gaus_fields[] = {
1117   "ace_type", "ace_name",
1118   "use_type", "use_name",
1119 };
1120
1121 static struct valobj gaus_valobj[] = {
1122   {V_TYPE, 0, 0, "gaus", 0, MR_TYPE},
1123   {V_TYPEDATA, 1, 0, 0, 0, MR_NO_MATCH},
1124 };
1125
1126 static struct validate gaus_validate = {
1127   gaus_valobj,
1128   2,
1129   0,
1130   0,
1131   0,
1132   0,
1133   access_member,
1134   0,
1135   get_ace_use,
1136 };
1137
1138 static char *qgli_fields[] = {
1139   "active", "publicflg", "hidden", "maillist", "grouplist",
1140   "list",
1141 };
1142
1143 static struct valobj qgli_valobj[] = {
1144   {V_TYPE, 0, 0, "boolean", 0, MR_TYPE},
1145   {V_TYPE, 1, 0, "boolean", 0, MR_TYPE},
1146   {V_TYPE, 2, 0, "boolean", 0, MR_TYPE},
1147   {V_TYPE, 3, 0, "boolean", 0, MR_TYPE},
1148   {V_TYPE, 4, 0, "boolean", 0, MR_TYPE},
1149 };
1150
1151 static struct validate qgli_validate = {
1152   qgli_valobj,
1153   5,
1154   0,
1155   0,
1156   0,
1157   0,
1158   access_qgli,
1159   0,
1160   qualified_get_lists,
1161 };
1162
1163 static char *gmol_fields[] = {
1164   "list_name",
1165   "member_type", "member_name",
1166 };
1167
1168 static char *gtml_fields[] = {
1169   "list_name",
1170   "member_type", "member_name", "tag",
1171 };
1172
1173 static struct validate gmol_validate = {
1174   VOlist0,
1175   1,
1176   0,
1177   0,
1178   0,
1179   0,
1180   access_visible_list,
1181   0,
1182   get_members_of_list,
1183 };
1184
1185 static char *glom_fields[] = {
1186   "member_type", "member_name",
1187   "list_name", "active", "publicflg", "hidden", "maillist", "grouplist",
1188 };
1189
1190 static struct valobj glom_valobj[] = {
1191   {V_TYPE, 0, 0, "rmember", 0, MR_TYPE},
1192   {V_TYPEDATA, 1, 0, 0, 0, MR_NO_MATCH},
1193 };
1194
1195 static struct validate glom_validate = {
1196   glom_valobj,
1197   2,
1198   0,
1199   0,
1200   0,
1201   0,
1202   access_member,
1203   0,
1204   get_lists_of_member,
1205 };
1206
1207 static char *cmol_fields[] = {
1208   "list_name",
1209   "count",
1210 };
1211
1212 static struct validate cmol_validate = {
1213   VOlist0,
1214   1,
1215   0,
1216   0,
1217   0,
1218   0,
1219   access_visible_list,
1220   0,
1221   count_members_of_list,
1222 };
1223
1224 static char *gsin_fields[] = {
1225   "service",
1226   "service", "update_int", "target_file", "script", "dfgen", "dfcheck",
1227   "type", "enable", "inprogress", "harderror", "errmsg",
1228   "ace_type", "ace_name", "modtime", "modby", "modwith",
1229 };
1230
1231 static struct validate gsin_validate =
1232 {
1233   0,
1234   0,
1235   0,
1236   0,
1237   0,
1238   0,
1239   access_service,
1240   0,
1241   followup_glin,
1242 };
1243
1244 static char *qgsv_fields[] = {
1245   "enable", "inprogress", "harderror",
1246   "service",
1247 };
1248
1249 static struct valobj qgsv_valobj[] = {
1250   {V_TYPE, 0, 0, "boolean", 0, MR_TYPE},
1251   {V_TYPE, 1, 0, "boolean", 0, MR_TYPE},
1252   {V_TYPE, 2, 0, "boolean", 0, MR_TYPE},
1253 };
1254
1255 static struct validate qgsv_validate = {
1256   qgsv_valobj,
1257   3,
1258   0,
1259   0,
1260   0,
1261   0,
1262   0,
1263   0,
1264   qualified_get_server,
1265 };
1266
1267 static char *asin_fields[] = {
1268   "service", "update_int", "target_file", "script", "type", "enable",
1269   "ace_type", "ace_name",
1270 };
1271
1272 static struct valobj asin_valobj[] = {
1273   {V_CHAR, 0, SERVERS_TABLE, "name"},
1274   {V_NUM, 1},
1275   {V_LEN, 2, SERVERS_TABLE, "target_file"},
1276   {V_LEN, 3, SERVERS_TABLE, "script"},
1277   {V_TYPE, 4, 0, "service", 0, MR_TYPE},
1278   {V_NUM, 5},
1279   {V_TYPE, 6, 0, "ace_type", 0, MR_ACE},
1280   {V_TYPEDATA, 7, 0, 0, 0, MR_ACE},
1281 };
1282
1283 static struct validate asin_validate =  /* for asin, usin */
1284 {
1285   asin_valobj,
1286   8,
1287   "name",
1288   "name = UPPER('%s')",
1289   1,
1290   0,
1291   0,
1292   0,
1293   set_uppercase_modtime,
1294 };
1295
1296 static struct validate rsve_validate = {
1297   asin_valobj,
1298   1,
1299   "name",
1300   "name = UPPER('%s')",
1301   1,
1302   0,
1303   access_service,
1304   0,
1305   set_uppercase_modtime,
1306 };
1307
1308 static char *ssif_fields[] = {
1309   "service", "dfgen", "dfcheck", "inprogress", "harderror", "errmsg",
1310 };
1311
1312 static struct valobj ssif_valobj[] = {
1313   {V_NAME, 0, SERVERS_TABLE, "name", 0, MR_SERVICE},
1314   {V_NUM, 1},
1315   {V_NUM, 2},
1316   {V_NUM, 3},
1317   {V_NUM, 4},
1318   {V_LEN, 5, SERVERS_TABLE, "errmsg"},
1319 };
1320
1321 static struct validate ssif_validate = {
1322   ssif_valobj,
1323   6,
1324   "name",
1325   "name = UPPER('%s')",
1326   1,
1327   0,
1328   0,
1329   0,
1330   0,
1331 };
1332
1333 static char *dsin_fields[] = {
1334   "service",
1335 };
1336
1337 static struct validate dsin_validate = {
1338   asin_valobj,
1339   1,
1340   "name",
1341   "name = UPPER('%s')",
1342   1,
1343   0,
1344   0,
1345   setup_dsin,
1346   0,
1347 };
1348
1349 static char *gshi_fields[] = {
1350   "service", "machine",
1351   "service", "machine", "enable", "override", "success", "inprogress",
1352   "hosterror", "hosterrormsg", "ltt", "lts", "value1", "value2",
1353   "value3", "modtime", "modby", "modwith",
1354 };
1355
1356 static struct validate gshi_validate = {
1357   0,
1358   0,
1359   0,
1360   0,
1361   0,
1362   0,
1363   access_service,
1364   0,
1365   followup_fix_modby,
1366 };
1367
1368 static char *qgsh_fields[] = {
1369   "service", "enable", "override", "success", "inprogress", "hosterror",
1370   "service", "machine",
1371 };
1372
1373 static struct valobj qgsh_valobj[] = {
1374   {V_TYPE, 1, 0, "boolean", 0, MR_TYPE},
1375   {V_TYPE, 2, 0, "boolean", 0, MR_TYPE},
1376   {V_TYPE, 3, 0, "boolean", 0, MR_TYPE},
1377   {V_TYPE, 4, 0, "boolean", 0, MR_TYPE},
1378   {V_TYPE, 5, 0, "boolean", 0, MR_TYPE},
1379 };
1380
1381 static struct validate qgsh_validate = {
1382   qgsh_valobj,
1383   5,
1384   0,
1385   0,
1386   0,
1387   0,
1388   0,
1389   0,
1390   qualified_get_serverhost,
1391 };
1392
1393 static char *ashi_fields[] = {
1394   "service", "machine", "enable", "value1", "value2", "value3",
1395 };
1396
1397 static struct valobj ashi_valobj[] = {
1398   {V_NAME, 0, SERVERS_TABLE, "name", 0, MR_SERVICE},
1399   {V_ID, 1, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
1400   {V_NUM, 2},
1401   {V_NUM, 3},
1402   {V_NUM, 4},
1403   {V_LEN, 5, SERVERHOSTS_TABLE, "value3"},
1404 };
1405
1406 static struct validate ashi_validate = /* ashi & ushi */
1407 {
1408   ashi_valobj,
1409   6,
1410   "service",
1411   "service = UPPER('%s') AND mach_id = %d",
1412   2,
1413   0,
1414   access_service,
1415   0,
1416   set_serverhost_modtime,
1417 };
1418
1419 static struct validate rshe_validate =
1420 {
1421   ashi_valobj,
1422   2,
1423   "service",
1424   "service = UPPER('%s') AND mach_id = %d",
1425   2,
1426   0,
1427   access_service,
1428   0,
1429   set_serverhost_modtime,
1430 };
1431
1432 static struct validate ssho_validate =
1433 {
1434   ashi_valobj,
1435   2,
1436   "service",
1437   "service = UPPER('%s') AND mach_id = %d",
1438   2,
1439   0,
1440   access_service,
1441   0,
1442   trigger_dcm,
1443 };
1444
1445 static char *sshi_fields[] = {
1446   "service", "machine", "override", "success", "inprogress",
1447   "hosterror", "errmsg", "ltt", "lts",
1448 };
1449
1450 static struct valobj sshi_valobj[] = {
1451   {V_NAME, 0, SERVERS_TABLE, "name", 0, MR_SERVICE},
1452   {V_ID, 1, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
1453   {V_NUM, 2},
1454   {V_NUM, 3},
1455   {V_NUM, 4},
1456   {V_NUM, 5},
1457   {V_LEN, 6, SERVERHOSTS_TABLE, "hosterrmsg"},
1458   {V_NUM, 7},
1459   {V_NUM, 8},
1460 };
1461
1462 static struct validate sshi_validate =
1463 {
1464   sshi_valobj,
1465   9,
1466   0,
1467   0,
1468   0,
1469   0,
1470   0,
1471   0,
1472   0,
1473 };
1474
1475 static char *dshi_fields[] = {
1476   "service", "machine",
1477 };
1478
1479 static struct validate dshi_validate =
1480 {
1481   ashi_valobj,
1482   2,
1483   "service",
1484   "service = UPPER('%s') AND mach_id = %d",
1485   2,
1486   0,
1487   access_service,
1488   setup_dshi,
1489   0,
1490 };
1491
1492 static char *gslo_fields[] = {
1493   "server",
1494   "server", "machine",
1495 };
1496
1497 static char *gfsl_fields[] = {
1498   "label",
1499   "label", "type", "machine", "name", "mount", "access", "comments",
1500   "owner", "owners", "create", "lockertype", "modtime", "modby", "modwith",
1501 };
1502
1503 static struct validate gfsl_validate = {
1504   0,
1505   0,
1506   0,
1507   0,
1508   0,
1509   0,
1510   access_filesys,
1511   0,
1512   followup_fix_modby,
1513 };
1514
1515 static char *gfsm_fields[] = {
1516   "machine",
1517   "label", "type", "machine", "name", "mount", "access", "comments",
1518   "owner", "owners", "create", "lockertype", "modtime", "modby", "modwith",
1519 };
1520
1521 static struct validate gfsm_validate = {
1522   VOmach0,
1523   1,
1524   0,
1525   0,
1526   0,
1527   0,
1528   0,
1529   0,
1530   followup_fix_modby,
1531 };
1532
1533 static char *gfsn_fields[] = {
1534   "machine", "partition",
1535   "label", "type", "machine", "name", "mount", "access", "comments",
1536   "owner", "owners", "create", "lockertype", "modtime", "modby", "modwith",
1537 };
1538
1539 static struct validate gfsn_validate = {
1540   VOmach0,
1541   1,
1542   0,
1543   0,
1544   0,
1545   0,
1546   0,
1547   0,
1548   followup_fix_modby,
1549 };
1550
1551 static char *gfsp_fields[] = {
1552   "path",
1553   "label", "type", "machine", "name", "mount", "access", "comments",
1554   "owner", "owners", "create", "lockertype", "modtime", "modby", "modwith",
1555 };
1556
1557 static char *gfsg_fields[] = {
1558   "list",
1559   "label", "type", "machine", "name", "mount", "access", "comments",
1560   "owner", "owners", "create", "lockertype", "modtime", "modby", "modwith",
1561 };
1562
1563 static struct validate gfsg_validate = {
1564   VOlist0,
1565   1,
1566   0,
1567   0,
1568   0,
1569   0,
1570   access_list,
1571   0,
1572   followup_fix_modby,
1573 };
1574
1575 static char *afil_fields[] = {
1576   "label", "type", "machine", "name", "mount", "access", "comments",
1577   "owner", "owners", "create", "lockertype",
1578 };
1579
1580 static struct valobj afil_valobj[] = {
1581   {V_CHAR, 0, FILESYS_TABLE, "label"},
1582   {V_TYPE, 1, 0, "filesys", 0, MR_FSTYPE},
1583   {V_ID, 2, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
1584   {V_CHAR, 3, FILESYS_TABLE, "name"},
1585   {V_LEN, 4, FILESYS_TABLE, "mount"},
1586   {V_LEN, 5, FILESYS_TABLE, "rwaccess"},
1587   {V_LEN, 6, FILESYS_TABLE, "comments"},
1588   {V_ID, 7, USERS_TABLE, "login", "users_id", MR_USER},
1589   {V_ID, 8, LIST_TABLE, "name", "list_id", MR_LIST},
1590   {V_NUM, 9},
1591   {V_TYPE, 10, 0, "lockertype", 0, MR_TYPE},
1592 };
1593
1594 static struct validate afil_validate = {
1595   afil_valobj,
1596   11,
1597   "label",
1598   "label = '%s'",
1599   1,
1600   "filsys_id",
1601   0,
1602   setup_afil,
1603   set_filesys_modtime,
1604 };
1605
1606 static char *ufil_fields[] = {
1607   "label", "newlabel", "type", "machine", "name", "mount", "access",
1608   "comments", "owner", "owners", "create", "lockertype",
1609 };
1610
1611 static struct valobj ufil_valobj[] = {
1612   {V_ID, 0, FILESYS_TABLE, "label", "filsys_id", MR_FILESYS},
1613   {V_RENAME, 1, FILESYS_TABLE, "label", "filsys_id", MR_NOT_UNIQUE},
1614   {V_TYPE, 2, 0, "filesys", 0, MR_FSTYPE},
1615   {V_ID, 3, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
1616   {V_CHAR, 4, FILESYS_TABLE, "name"},
1617   {V_LEN, 5, FILESYS_TABLE, "mount"},
1618   {V_LEN, 6, FILESYS_TABLE, "rwaccess"},
1619   {V_LEN, 7, FILESYS_TABLE, "comments"},
1620   {V_ID, 8, USERS_TABLE, "login", "users_id", MR_USER},
1621   {V_ID, 9, LIST_TABLE, "name", "list_id", MR_LIST},
1622   {V_NUM, 10},
1623   {V_TYPE, 11, 0, "lockertype", 0, MR_TYPE},
1624 };
1625
1626 static struct validate ufil_validate = {
1627   ufil_valobj,
1628   12,
1629   "label",
1630   "filsys_id = %d",
1631   1,
1632   "filsys_id",
1633   0,
1634   setup_ufil,
1635   set_filesys_modtime,
1636 };
1637
1638 static char *dfil_fields[] = {
1639   "label",
1640 };
1641
1642 static struct validate dfil_validate = {
1643   VOfilesys0,
1644   1,
1645   "label",
1646   "filsys_id = %d",
1647   1,
1648   0,
1649   0,
1650   setup_dfil,
1651   0,
1652 };
1653
1654 static char *gfgm_fields[] = {
1655   "fsgroup", "filesys", "sortkey"
1656 };
1657
1658 static struct validate gfgm_validate = {
1659   VOfilesys0,
1660   1,
1661   0,
1662   0,
1663   0,
1664   0,
1665   0,
1666   0,
1667   0,
1668 };
1669
1670 static struct valobj aftg_valobj[] = {
1671   {V_ID, 0, FILESYS_TABLE, "label", "filsys_id", MR_FILESYS},
1672   {V_ID, 1, FILESYS_TABLE, "label", "filsys_id", MR_FILESYS},
1673 };
1674
1675 static struct validate aftg_validate = {
1676   aftg_valobj,
1677   2,
1678   "group_id",
1679   "group_id = %d and filsys_id = %d",
1680   2,
1681   0,
1682   0,
1683   0,
1684   0,
1685 };
1686
1687 static char *ganf_fields[] = {
1688   "machine", "dir", "device", "status", "allocated", "size",
1689   "modtime", "modby", "modwith",
1690 };
1691
1692 static char *gnfp_fields[] = {
1693   "machine", "dir",
1694   "machine", "dir", "device", "status", "allocated", "size",
1695   "modtime", "modby", "modwith",
1696 };
1697
1698 static struct validate gnfp_validate = {
1699   VOmach0,
1700   1,
1701   0,
1702   0,
1703   0,
1704   0,
1705   0,
1706   0,
1707   followup_fix_modby,
1708 };
1709
1710 static struct valobj anfp_valobj[] = {
1711   {V_ID, 0, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
1712   {V_CHAR, 1, NFSPHYS_TABLE, "dir"},
1713   {V_LEN, 2, NFSPHYS_TABLE, "device"},
1714   {V_NUM, 3},
1715   {V_NUM, 4},
1716   {V_NUM, 5},
1717 };
1718
1719 static struct validate anfp_validate = {
1720   anfp_valobj,
1721   6,
1722   "dir",
1723   "mach_id = %d and dir = '%s'",
1724   2,
1725   "nfsphys_id",
1726   0,
1727   prefetch_value,
1728   set_nfsphys_modtime,
1729 };
1730
1731 static struct validate unfp_validate = {
1732   anfp_valobj,
1733   6,
1734   "dir",
1735   "mach_id = %d and dir = '%s'",
1736   2,
1737   "nfsphys_id",
1738   0,
1739   0,
1740   set_nfsphys_modtime,
1741 };
1742
1743 static char *ajnf_fields[] = {
1744   "machine", "dir", "adjustment",
1745 };
1746
1747 static struct valobj ajnf_valobj[] = {
1748   {V_ID, 0, MACHINE_TABLE, NAME, "mach_id", MR_MACHINE},
1749   {V_CHAR, 1, NFSPHYS_TABLE, "dir"},
1750   {V_NUM, 2},
1751 };
1752
1753 static struct validate ajnf_validate = {
1754   ajnf_valobj,
1755   3,
1756   "dir",
1757   "mach_id = %d and dir = '%s'",
1758   2,
1759   "nfsphys_id",
1760   0,
1761   0,
1762   set_nfsphys_modtime,
1763 };
1764
1765 static char *dnfp_fields[] = {
1766   "machine", "dir",
1767 };
1768
1769 static struct validate dnfp_validate = {
1770   anfp_valobj,
1771   2,
1772   "dir",
1773   "mach_id = %d and dir = '%s'",
1774   2,
1775   "nfsphys_id",
1776   0,
1777   setup_dnfp,
1778   set_nfsphys_modtime,
1779 };
1780
1781 static char *gqot_fields[] = {
1782   "filesys", "type", "name",
1783   "filesys", "type", "name", "quota", "dir", "machine",
1784   "modtime", "modby", "modwith",
1785 };
1786
1787 static struct valobj gqot_valobj[] = {
1788   {V_TYPE, 1, 0, "quota_type", 0, MR_TYPE},
1789   {V_TYPEDATA, 2, 0, 0, 0, MR_ACE},
1790 };
1791
1792 static struct validate gqot_validate = {
1793   gqot_valobj,
1794   2,
1795   0,
1796   0,
1797   0,
1798   0,
1799   0,
1800   0,
1801   followup_gqot,
1802 };
1803
1804 static char *gqbf_fields[] = {
1805   "filesys",
1806   "filesys", "type", "name", "quota", "dir", "machine",
1807   "modtime", "modby", "modwith",
1808 };
1809
1810 static struct validate gqbf_validate = {
1811   0,
1812   0,
1813   0,
1814   0,
1815   0,
1816   0,
1817   access_filesys,
1818   0,
1819   followup_gqot,
1820 };
1821
1822 static char *aqot_fields[] = {
1823   "filesys", "type", "name", "quota",
1824 };
1825
1826 static struct valobj aqot_valobj[] = {
1827   {V_ID, 0, FILESYS_TABLE, "label", "filsys_id", MR_FILESYS},
1828   {V_TYPE, 1, 0, "quota_type", 0, MR_TYPE},
1829   {V_TYPEDATA, 2, 0, 0, 0, MR_ACE},
1830   {V_NUM, 3},
1831 };
1832
1833 static struct validate aqot_validate = {
1834   aqot_valobj,
1835   4,
1836   "filsys_id",
1837   "filsys_id = %d and type = '%s' and entity_id = %d",
1838   3,
1839   0,
1840   0,
1841   prefetch_filesys,
1842   followup_aqot,
1843 };
1844
1845 static struct validate uqot_validate = {
1846   aqot_valobj,
1847   4,
1848   "filsys_id",
1849   "filsys_id = %d AND type = '%s' AND entity_id = %d",
1850   3,
1851   0,
1852   0,
1853   setup_dqot,
1854   followup_aqot,
1855 };
1856
1857 static struct validate dqot_validate = {
1858   aqot_valobj,
1859   3,
1860   "filsys_id",
1861   "filsys_id = %d AND type = '%s' AND entity_id = %d",
1862   3,
1863   0,
1864   0,
1865   setup_dqot,
1866   followup_dqot,
1867 };
1868
1869 static char *gnfq_fields[] = {
1870   "filesys", "login",
1871   "filesys", "login", "quota", "dir", "machine",
1872   "modtime", "modby", "modwith",
1873 };
1874
1875 static struct validate gnfq_validate = {
1876   0,
1877   0,
1878   0,
1879   0,
1880   0,
1881   0,
1882   access_filesys,
1883   0,
1884   followup_gqot,
1885 };
1886
1887 static char *gnqp_fields[] = {
1888   "machine", "dir",
1889   "filesys", "login", "quota", "dir", "machine",
1890   "modtime", "modby", "modwith",
1891 };
1892
1893 static char *anfq_fields[] = {
1894   "filesys", "login", "quota",
1895 };
1896
1897 static struct valobj anfq_valobj[] = {
1898   {V_ID, 0, FILESYS_TABLE, "label", "filsys_id", MR_FILESYS},
1899   {V_ID, 1, USERS_TABLE, "login", "users_id", MR_USER},
1900   {V_NUM, 2},
1901 };
1902
1903 static struct validate anfq_validate = {
1904   anfq_valobj,
1905   3,
1906   "filsys_id",
1907   "filsys_id = %d AND type = 'USER' AND entity_id = %d",
1908   2,
1909   0, /* object ? */
1910   0,
1911   prefetch_filesys,
1912   followup_aqot,
1913 };
1914
1915 static struct validate unfq_validate = {
1916   anfq_valobj,
1917   3,
1918   "filsys_id",
1919   "filsys_id = %d AND type = 'USER' AND entity_id = %d",
1920   2,
1921   0,
1922   0,
1923   setup_dqot,
1924   followup_aqot,
1925 };
1926
1927 static struct validate dnfq_validate = {
1928   anfq_valobj,
1929   3,
1930   "filsys_id",
1931   "filsys_id = %d AND entity_id = %d",
1932   2,
1933   0,
1934   0,
1935   setup_dqot,
1936   followup_dqot,
1937 };
1938
1939 static char *gzcl_fields[] = {
1940   "class",
1941   "class", "xmt_type", "xmt_name", "sub_type", "sub_name",
1942   "iws_type", "iws_name", "iui_type", "iui_name",
1943   "modtime", "modby", "modwith",
1944 };
1945
1946 static struct validate gzcl_validate = {
1947   0,
1948   0,
1949   0,
1950   0,
1951   0,
1952   0,
1953   0,
1954   0,
1955   followup_gzcl,
1956 };
1957
1958 static char *azcl_fields[] = {
1959   "class", "xmt_type", "xmt_name", "sub_type", "sub_name",
1960   "iws_type", "iws_name", "iui_type", "iui_name",
1961 };
1962
1963 static struct valobj azcl_valobj[] = {
1964   {V_CHAR, 0, ZEPHYR_TABLE, "class"},
1965   {V_TYPE, 1, 0, "zace_type", 0, MR_ACE},
1966   {V_TYPEDATA, 2, 0, 0, "list_id", MR_ACE},
1967   {V_TYPE, 3, 0, "zace_type", 0, MR_ACE},
1968   {V_TYPEDATA, 4, 0, 0, "list_id", MR_ACE},
1969   {V_TYPE, 5, 0, "zace_type", 0, MR_ACE},
1970   {V_TYPEDATA, 6, 0, 0, "list_id", MR_ACE},
1971   {V_TYPE, 7, 0, "zace_type", 0, MR_ACE},
1972   {V_TYPEDATA, 8, 0, 0, "list_id", MR_ACE},
1973 };
1974
1975 static struct validate azcl_validate = {
1976   azcl_valobj,
1977   9,
1978   "class",
1979   "class = '%s'",
1980   1,
1981   0,
1982   0,
1983   0,
1984   set_zephyr_modtime,
1985 };
1986
1987 static char *uzcl_fields[] = {
1988   "class", "newclass", "xmt_type", "xmt_name", "sub_type", "sub_name",
1989   "iws_type", "iws_name", "iui_type", "iui_name",
1990 };
1991
1992 static struct valobj uzcl_valobj[] = {
1993   {V_NAME, 0, ZEPHYR_TABLE, "class", 0, MR_BAD_CLASS},
1994   {V_RENAME, 1, ZEPHYR_TABLE, "class", 0, MR_NOT_UNIQUE},
1995   {V_TYPE, 2, 0, "zace_type", 0, MR_ACE},
1996   {V_TYPEDATA, 3, 0, 0, "list_id", MR_ACE},
1997   {V_TYPE, 4, 0, "zace_type", 0, MR_ACE},
1998   {V_TYPEDATA, 5, 0, 0, "list_id", MR_ACE},
1999   {V_TYPE, 6, 0, "zace_type", 0, MR_ACE},
2000   {V_TYPEDATA, 7, 0, 0, "list_id", MR_ACE},
2001   {V_TYPE, 8, 0, "zace_type", 0, MR_ACE},
2002   {V_TYPEDATA, 9, 0, 0, "list_id", MR_ACE},
2003 };
2004
2005 static struct validate uzcl_validate = {
2006   uzcl_valobj,
2007   10,
2008   "class",
2009   "class = '%s'",
2010   1,
2011   0,
2012   0,
2013   0,
2014   set_zephyr_modtime,
2015 };
2016
2017 static struct validate dzcl_validate = {
2018   0,
2019   0,
2020   "class",
2021   "class = '%s'",
2022   1,
2023   0,
2024   0,
2025   0,
2026   0,
2027 };
2028
2029 static char *gsha_fields[] = {
2030   "machine",
2031   "machine", "ace_type", "ace_name", "modtime", "modby", "modwith",
2032 };
2033
2034 static struct validate gsha_validate =
2035 {
2036   0,
2037   0,
2038   0,
2039   0,
2040   0,
2041   0,
2042   0,
2043   0,
2044   followup_gsha,
2045 };
2046
2047 static char *asha_fields[] = {
2048   "machine", "ace_type", "ace_name",
2049 };
2050
2051 static struct valobj asha_valobj[] = {
2052   {V_ID, 0, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
2053   {V_TYPE, 1, 0, "ace_type", 0, MR_ACE},
2054   {V_TYPEDATA, 2, 0, 0, 0, MR_ACE},
2055 };
2056
2057 static struct validate asha_validate =
2058 {
2059   asha_valobj,
2060   3,
2061   "mach_id",
2062   "mach_id = %d",
2063   1,
2064   "mach_id",
2065   0,
2066   0,
2067   set_modtime_by_id,
2068 };
2069
2070 static char *gacl_fields[] = {
2071   "machine", "target",
2072   "machine", "target", "kind", "list",
2073 };
2074
2075 static char *aacl_fields[] = {
2076   "machine", "target", "kind", "list",
2077 };
2078
2079 static char *dacl_fields[] = {
2080   "machine", "target",
2081 };
2082
2083 static struct valobj aacl_valobj[] = {
2084   {V_ID, 0, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
2085   {V_CHAR, 1, ACL_TABLE, "target"},
2086   {V_TYPE, 2, 0, "acl_kind", 0, MR_TYPE},
2087   {V_ID, 3, LIST_TABLE, "name", "list_id", MR_LIST},
2088 };
2089
2090 static struct validate gacl_validate =
2091 {
2092   aacl_valobj,
2093   1,
2094   NULL,
2095   NULL,
2096   0,
2097   "mach_id",
2098   /* access_acl */ 0,
2099   0,
2100   0,
2101 };
2102
2103 static struct validate aacl_validate =
2104 {
2105   aacl_valobj,
2106   4,
2107   "mach_id",
2108   "mach_id = %d AND target = '%s'",
2109   2,
2110   "mach_id",
2111   /* access_acl */ 0,
2112   0,
2113   0,
2114 };
2115
2116 static char *gsvc_fields[] = {
2117   "service",
2118   "service", "protocol", "port", "description", "modtime", "modby", "modwith",
2119 };
2120
2121 static char *asvc_fields[] = {
2122   "service", "protocol", "port", "description",
2123 };
2124
2125 static struct valobj asvc_valobj[] = {
2126   {V_CHAR, 0, SERVICES_TABLE, "name"},
2127   {V_CHAR, 1, SERVICES_TABLE, "protocol"},
2128   {V_NUM, 2},
2129   {V_CHAR, 3, SERVICES_TABLE, "description"},
2130 };
2131
2132 static struct validate asvc_validate = {
2133   asvc_valobj,
2134   4,
2135   "name",
2136   "name = '%s'",
2137   1,
2138   0,
2139   0,
2140   0,
2141   set_modtime,
2142 };
2143
2144 static char *gprn_fields[] = {
2145   "name",
2146   "name", "type", "hwtype", "duplexname", "hostname",
2147   "loghost", "rm", "rp", "rq", "ka", "pc", "ac", "lpc_acl",
2148   "banner", "location", "contact", "modtime", "modby", "modwith"
2149 };
2150
2151 static char *gpbd_fields[] = {
2152   "duplexname",
2153   "name", "type", "hwtype", "duplexname", "hostname",
2154   "loghost", "rm", "rp", "rq", "ka", "pc", "ac", "lpc_acl",
2155   "banner", "location", "contact", "modtime", "modby", "modwith"
2156 };
2157
2158 static char *gpbe_fields[] = {
2159   "hwaddr",
2160   "name", "type", "hwtype", "duplexname", "hostname",
2161   "loghost", "rm", "rp", "rq", "ka", "pc", "ac", "lpc_acl",
2162   "banner", "location", "contact", "modtime", "modby", "modwith"
2163 };
2164
2165 static char *gpbh_fields[] = {
2166   "hostname",
2167   "name", "type", "hwtype", "duplexname", "hostname",
2168   "loghost", "rm", "rp", "rq", "ka", "pc", "ac", "lpc_acl",
2169   "banner", "location", "contact", "modtime", "modby", "modwith"
2170 };
2171
2172 static char *gpbr_fields[] = {
2173   "rm",
2174   "name", "type", "hwtype", "duplexname", "hostname",
2175   "loghost", "rm", "rp", "rq", "ka", "pc", "ac", "lpc_acl",
2176   "banner", "location", "contact", "modtime", "modby", "modwith"
2177 };
2178
2179 static char *gpbl_fields[] = {
2180   "location",
2181   "name", "type", "hwtype", "duplexname", "hostname",
2182   "loghost", "rm", "rp", "rq", "ka", "pc", "ac", "lpc_acl",
2183   "banner", "location", "contact", "modtime", "modby", "modwith"
2184 };
2185
2186 static char *gpbc_fields[] = {
2187   "contact",
2188   "name", "type", "hwtype", "duplexname", "hostname",
2189   "loghost", "rm", "rp", "rq", "ka", "pc", "ac", "lpc_acl",
2190   "banner", "location", "contact", "modtime", "modby", "modwith"
2191 };
2192
2193 static char *aprn_fields[] = {
2194   "printer", "type", "hwtype", "duplexname", "hostname",
2195   "loghost", "rm", "rp", "rq", "ka", "pc", "ac", "lpc_acl",
2196   "banner", "location", "contact",
2197 };
2198
2199 static struct valobj aprn_valobj[] = {
2200   {V_CHAR, 0, PRINTERS_TABLE, "name"},
2201   {V_TYPE, 1, 0, "printertype", 0, MR_TYPE},
2202   {V_TYPE, 2, 0, "printerhwtype", 0, MR_TYPE},
2203   {V_CHAR, 3, PRINTERS_TABLE, "duplexname"},
2204   {V_ID, 4, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
2205   {V_ID, 5, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
2206   {V_ID, 6, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
2207   {V_CHAR, 7, PRINTERS_TABLE, "rp"},
2208   {V_ID, 8, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
2209   {V_NUM, 9},
2210   {V_NUM, 10},
2211   {V_ID, 11, LIST_TABLE, "name", "list_id", MR_LIST},
2212   {V_ID, 12, LIST_TABLE, "name", "list_id", MR_LIST},
2213   {V_NUM, 13},
2214   {V_CHAR, 14, PRINTERS_TABLE, "location"},
2215   {V_CHAR, 15, PRINTERS_TABLE, "contact"},
2216 };
2217
2218 static struct validate aprn_validate = {
2219   aprn_valobj,
2220   16,
2221   "name",
2222   "name = '%s'",
2223   1,
2224   0,
2225   access_printer,
2226   setup_aprn,
2227   set_modtime,
2228 };
2229
2230 static char *uprn_fields[] = {
2231   "printer",
2232   "printer", "type", "hwtype", "duplexname", "hostname",
2233   "loghost", "rm", "rp", "rq", "ka", "pc", "ac", "lpc_acl",
2234   "banner", "location", "contact",
2235 };
2236
2237 static struct valobj uprn_valobj[] = {
2238   {V_CHAR, 0, PRINTERS_TABLE, "name"},
2239   {V_CHAR, 1, PRINTERS_TABLE, "name"},
2240   {V_TYPE, 2, 0, "printertype", 0, MR_TYPE},
2241   {V_TYPE, 3, 0, "printerhwtype", 0, MR_TYPE},
2242   {V_CHAR, 4, PRINTERS_TABLE, "duplexname"},
2243   {V_ID, 5, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
2244   {V_ID, 6, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
2245   {V_ID, 7, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
2246   {V_CHAR, 8, PRINTERS_TABLE, "rp"},
2247   {V_ID, 9, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
2248   {V_NUM, 10},
2249   {V_NUM, 11},
2250   {V_ID, 12, LIST_TABLE, "name", "list_id", MR_LIST},
2251   {V_ID, 13, LIST_TABLE, "name", "list_id", MR_LIST},
2252   {V_NUM, 14},
2253   {V_CHAR, 15, PRINTERS_TABLE, "location"},
2254   {V_CHAR, 16, PRINTERS_TABLE, "contact"},
2255 };
2256
2257 static struct validate uprn_validate = {
2258   uprn_valobj,
2259   16,
2260   "name",
2261   "name = '%s'",
2262   1,
2263   0,
2264   access_printer,
2265   setup_aprn,
2266   set_modtime,
2267 };
2268
2269 static struct validate dprn_validate = {
2270   0,
2271   0,
2272   "name",
2273   "name = '%s'",
2274   1,
2275   0,
2276   access_printer,
2277   0,
2278   0,
2279 };
2280
2281 static char *gpsv_fields[] = {
2282   "host",
2283   "host", "kind", "printer_types", "owner_type", "owner_name",
2284   "lpc_acl", "modtime", "modby", "modwith"
2285 };
2286
2287 static struct valobj gpsv_valobj[] = {
2288   {V_ID, 0, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
2289 };
2290
2291 static struct validate gpsv_validate = {
2292   gpsv_valobj,
2293   1,
2294   0,
2295   0,
2296   0,
2297   0,
2298   0,
2299   0,
2300   followup_gpsv,
2301 };
2302
2303 static char *apsv_fields[] = {
2304   "host", "kind", "printer_types", "owner_type", "owner_name", "lpc_acl"
2305 };
2306
2307 static struct valobj apsv_valobj[] = {
2308   {V_ID, 0, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
2309   {V_TYPE, 1, 0, "lpd_kind", 0, MR_TYPE},
2310   {V_ID, 2, STRINGS_TABLE, "string", "string_id", MR_STRING},
2311   {V_TYPE, 3, 0, "ace_type", 0, MR_ACE},
2312   {V_TYPEDATA, 4, 0, 0, 0, MR_ACE},
2313   {V_ID, 5, LIST_TABLE, "name", "list_id", MR_LIST},
2314 };
2315
2316 static struct validate apsv_validate = {
2317   apsv_valobj,
2318   6,
2319   "mach_id",
2320   "mach_id = %d",
2321   1,
2322   "mach_id",
2323   0,
2324   0,
2325   set_modtime_by_id,
2326 };
2327
2328 static char *dpsv_fields[] = {
2329   "host",
2330 };
2331
2332 static struct validate dpsv_validate = {
2333   gpsv_valobj,
2334   1,
2335   "mach_id",
2336   "mach_id = %d",
2337   1,
2338   0,
2339   0,
2340   setup_dpsv,
2341   0,
2342 };  
2343
2344 static char *gali_fields[] = {
2345   "name", "type", "trans",
2346   "name", "type", "trans",
2347 };
2348
2349 static char *aali_fields[] = {
2350   "name", "type", "trans",
2351 };
2352
2353 static struct valobj aali_valobj[] = {
2354   {V_CHAR, 0, ALIAS_TABLE, "name"},
2355   {V_TYPE, 1, 0, "alias", 0, MR_TYPE},
2356   {V_CHAR, 2, ALIAS_TABLE, "trans"},
2357 };
2358
2359 static struct validate aali_validate = {
2360   aali_valobj,
2361   3,
2362   "trans",
2363   "name = '%s' and type = '%s' and trans = '%s'",
2364   3,
2365   0,
2366   0,
2367   0,
2368   0,
2369 };
2370
2371 static struct validate dali_validate =  /* DELETE_ALIAS */
2372 {
2373   0,
2374   0,
2375   "trans",
2376   "name = '%s' and type = '%s' and trans = '%s'",
2377   3,
2378   0,
2379   0,
2380   0,
2381   0,
2382 };
2383
2384 static char *gval_fields[] = {
2385   "name", "value",
2386 };
2387
2388 static struct valobj gval_valobj[] = {
2389   {V_NAME, 0, NUMVALUES_TABLE, "name", 0, MR_NO_MATCH},
2390 };
2391
2392 static struct validate gval_validate = {
2393   gval_valobj,
2394   1,
2395   0,
2396   0,
2397   0,
2398   0,
2399   0,
2400   0,
2401   0,
2402 };
2403
2404 static char *aval_fields[] = {
2405   "name", "value",
2406 };
2407
2408 static struct valobj aval_valobj[] = {
2409   {V_CHAR, 0, NUMVALUES_TABLE, "name"},
2410   {V_NUM, 1},
2411 };
2412
2413 static struct validate aval_validate =  /* for aval, uval, and dval */
2414 {
2415   aval_valobj,
2416   2,
2417   "name",
2418   "name = '%s'",
2419   1,
2420   0,
2421   0,
2422   0,
2423   0,
2424 };
2425
2426 static char *dval_fields[] = {
2427   "name",
2428 };
2429
2430 static char *gats_fields[] = {
2431   "table_name", "appends", "updates", "deletes",
2432   "modtime", "modby", "modwith",
2433 };
2434
2435 static char *_sdl_fields[] = {
2436   "level",
2437 };
2438
2439 static struct validate _sdl_validate =
2440 {
2441   VOnum0,
2442   1,
2443   NULL,
2444   NULL,
2445   0,
2446   0,
2447   0,
2448   0,
2449   _sdl_followup,
2450 };
2451
2452
2453 \f
2454 /* Generalized Query Definitions */
2455
2456 /* Note: For any query which uses prefetch_value, the vcnt should be
2457  * one less than the number of %-format specifiers in the tlist.
2458  */
2459
2460 struct query Queries2[] = {
2461   {
2462     /* Q_GALO - GET_ALL_LOGINS */
2463     "get_all_logins",
2464     "galo",
2465     RETRIEVE,
2466     "u",
2467     USERS_TABLE,
2468     "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle FROM users u",
2469     galo_fields,
2470     6,
2471     "u.users_id != 0",
2472     0,
2473     "u.login",
2474     0,
2475   },
2476
2477   {
2478     /* Q_GAAL - GET_ALL_ACTIVE_LOGINS */
2479     "get_all_active_logins",
2480     "gaal",
2481     RETRIEVE,
2482     "u",
2483     USERS_TABLE,
2484     "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle FROM users u",
2485     galo_fields,
2486     6,
2487     "u.status = 1",
2488     0,
2489     "u.login",
2490     0,
2491   },
2492
2493   {
2494     /* Q_GUAL - GET_USER_ACCOUNT_BY_LOGIN */
2495     "get_user_account_by_login",
2496     "gual",
2497     RETRIEVE,
2498     "u",
2499     USERS_TABLE,
2500     "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, u.signature, u.secure, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u, strings str",
2501     gual_fields,
2502     15,
2503     "u.login LIKE '%s' AND u.users_id != 0 AND u.comments = str.string_id",
2504     1,
2505     "u.login",
2506     &gubl_validate,
2507   },
2508
2509   {
2510     /* Q_GUAU - GET_USER_ACCOUNT_BY_UID */
2511     "get_user_account_by_uid",
2512     "guau",
2513     RETRIEVE,
2514     "u",
2515     USERS_TABLE,
2516     "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, u.signature, u.secure, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u, strings str",
2517     guau_fields,
2518     15,
2519     "u.unix_uid = %s AND u.users_id != 0 AND u.comments = str.string_id",
2520     1,
2521     "u.login",
2522     &gubu_validate,
2523   },
2524
2525   {
2526     /* Q_GUAN - GET_USER_ACCOUNT_BY_NAME */
2527     "get_user_account_by_name",
2528     "guan",
2529     RETRIEVE,
2530     "u",
2531     USERS_TABLE,
2532     "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, u.signature, u.secure, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u, strings str",
2533     guan_fields,
2534     15,
2535     "u.first LIKE '%s' AND u.last LIKE '%s' AND u.users_id != 0 and u.comments = str.string_id",
2536     2,
2537     "u.login",
2538     &guan_validate,
2539   },
2540
2541   {
2542     /* Q_GUAC - GET_USER_ACCOUNT_BY_CLASS */
2543     "get_user_account_by_class",
2544     "guac",
2545     RETRIEVE,
2546     "u",
2547     USERS_TABLE,
2548     "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, u.signature, u.secure, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u, strings str",
2549     guac_fields,
2550     15,
2551     "u.type = UPPER('%s') AND u.users_id != 0 AND u.comments = str.string_id",
2552     1,
2553     "u.login",
2554     &VDfix_modby,
2555   },
2556
2557   {
2558     /* Q_GUAM - GET_USER_ACCOUNT_BY_MITID */
2559     "get_user_account_by_id",
2560     "guai",
2561     RETRIEVE,
2562     "u",
2563     USERS_TABLE,
2564     "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, u.signature, u.secure, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u, strings str",
2565     guam_fields,
2566     15,
2567     "u.clearid LIKE '%s' AND u.users_id != 0 AND u.comments = str.string_id",
2568     1,
2569     "u.login",
2570     &VDfix_modby,
2571   },
2572
2573   {
2574     /* Q_GUBL - GET_USER_BY_LOGIN */
2575     "get_user_by_login",
2576     "gubl",
2577     RETRIEVE,
2578     "u",
2579     USERS_TABLE,
2580     "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle, u.status, u.clearid, u.type, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u",
2581     gubl_fields,
2582     12,
2583     "u.login LIKE '%s' AND u.users_id != 0",
2584     1,
2585     "u.login",
2586     &gubl_validate,
2587   },
2588
2589   {
2590     /* Q_GUBU - GET_USER_BY_UID */
2591     "get_user_by_uid",
2592     "gubu",
2593     RETRIEVE,
2594     "u",
2595     USERS_TABLE,
2596     "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle, u.status, u.clearid, u.type, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u",
2597     gubu_fields,
2598     12,
2599     "u.unix_uid = %s AND u.users_id != 0",
2600     1,
2601     "u.login",
2602     &gubu_validate,
2603   },
2604
2605   {
2606     /* Q_GUBN - GET_USER_BY_NAME */
2607     "get_user_by_name",
2608     "gubn",
2609     RETRIEVE,
2610     "u",
2611     USERS_TABLE,
2612     "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle, u.status, u.clearid, u.type, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u",
2613     gubn_fields,
2614     12,
2615     "u.first LIKE '%s' AND u.last LIKE '%s' AND u.users_id != 0",
2616     2,
2617     "u.login",
2618     &gubn_validate,
2619   },
2620
2621   {
2622     /* Q_GUBC - GET_USER_BY_CLASS */
2623     "get_user_by_class",
2624     "gubc",
2625     RETRIEVE,
2626     "u",
2627     USERS_TABLE,
2628     "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle, u.status, u.clearid, u.type, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u",
2629     gubc_fields,
2630     12,
2631     "u.type = UPPER('%s') AND u.users_id != 0",
2632     1,
2633     "u.login",
2634     &VDfix_modby,
2635   },
2636
2637   {
2638     /* Q_GUBM - GET_USER_BY_MITID */
2639     "get_user_by_mitid",
2640     "gubm",
2641     RETRIEVE,
2642     "u",
2643     USERS_TABLE,
2644     "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle, u.status, u.clearid, u.type, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u",
2645     gubm_fields,
2646     12,
2647     "u.clearid LIKE '%s' AND u.users_id != 0",
2648     1,
2649     "u.login",
2650     &VDfix_modby,
2651   },
2652
2653   {
2654     /* Q_AUAC - ADD_USER_ACCOUNT */  /* uses prefetch_value() for users_id */
2655     "add_user_account",
2656     "auac",
2657     APPEND,
2658     "u",
2659     USERS_TABLE,
2660     "INTO users (login, unix_uid, shell, last, first, middle, status, clearid, type, comments, signature, secure, users_id) VALUES ('%s', %s, '%s', NVL('%s', CHR(0)), NVL('%s', CHR(0)), NVL('%s', CHR(0)), %s, NVL('%s', CHR(0)), '%s', %d, LENGTH(NVL('%s', CHR(0))), %s, %s)", /* followup_ausr fixes signature field */
2661     auac_fields,
2662     12,
2663     NULL,
2664     0,
2665     NULL,
2666     &auac_validate,
2667   },
2668
2669   {
2670     /* Q_AUSR - ADD_USER */  /* uses prefetch_value() for users_id */
2671     "add_user",
2672     "ausr",
2673     APPEND,
2674     "u",
2675     USERS_TABLE,
2676     "INTO users (login, unix_uid, shell, last, first, middle, status, clearid, type, comments, signature, secure, users_id) VALUES ('%s', %s, '%s', NVL('%s', CHR(0)), NVL('%s', CHR(0)), NVL('%s', CHR(0)), %s, NVL('%s', CHR(0)), '%s', 0, CHR(0), 0, %s)",
2677     auac_fields,
2678     9,
2679     0,
2680     0,
2681     NULL,
2682     &ausr_validate,
2683   },
2684
2685   {
2686     /* Q_RUSR - REGISTER_USER */
2687     "register_user",
2688     "rusr",
2689     APPEND,
2690     0,
2691     0,
2692     0,
2693     rusr_fields,
2694     3,
2695     0,
2696     0,
2697     NULL,
2698     &rusr_validate,
2699   },
2700
2701   {
2702     /* Q_UUAC - UPDATE_USER_ACCOUNT */
2703     "update_user_account",
2704     "uuac",
2705     UPDATE,
2706     "u",
2707     USERS_TABLE,
2708     "users SET login = '%s', unix_uid = %s, shell = '%s', last = NVL('%s', CHR(0)), first = NVL('%s', CHR(0)), middle = NVL('%s', CHR(0)), status = %s, clearid = NVL('%s', CHR(0)), type = '%s', comments = %d, signature = LENGTH(NVL('%s', CHR(0))), secure = %s", /* followup_uuac fixes signature */
2709     uuac_fields,
2710     12,
2711     "users_id = %d",
2712     1,
2713     NULL,
2714     &uuac_validate,
2715   },
2716
2717   {
2718     /* Q_UUSR - UPDATE_USER */
2719     "update_user",
2720     "uusr",
2721     UPDATE,
2722     "u",
2723     USERS_TABLE,
2724     "users SET login = '%s', unix_uid = %s, shell = '%s', last = NVL('%s', CHR(0)), first = NVL('%s', CHR(0)), middle = NVL('%s', CHR(0)), status = %s, clearid = NVL('%s', CHR(0)),  type = '%s'",
2725     uuac_fields,
2726     9,
2727     "users_id = %d",
2728     1,
2729     NULL,
2730     &uusr_validate,
2731   },
2732
2733   {
2734     /* Q_UUSH - UPDATE_USER_SHELL */
2735     "update_user_shell",
2736     "uush",
2737     UPDATE,
2738     "u",
2739     USERS_TABLE,
2740     "users SET shell = '%s'",
2741     uush_fields,
2742     1,
2743     "users_id = %d",
2744     1,
2745     NULL,
2746     &uush_validate,
2747   },
2748
2749   {
2750     /* Q_UUST - UPDATE_USER_STATUS */
2751     "update_user_status",
2752     "uust",
2753     UPDATE,
2754     "u",
2755     USERS_TABLE,
2756     "users SET status = %s",
2757     uust_fields,
2758     1,
2759     "users_id = %d",
2760     1,
2761     NULL,
2762     &uust_validate,
2763   },
2764
2765   {
2766     /* Q_UUSS - UPDATE_USER_SECURITY_STATUS */
2767     "update_user_security_status",
2768     "uuss",
2769     UPDATE,
2770     "u",
2771     USERS_TABLE,
2772     "users SET secure = %s",
2773     uuss_fields,
2774     1,
2775     "users_id = %d",
2776     1,
2777     NULL,
2778     &uust_validate,
2779   },
2780
2781   {
2782     /* Q_DUSR - DELETE_USER */
2783     "delete_user",
2784     "dusr",
2785     DELETE,
2786     "u",
2787     USERS_TABLE,
2788     NULL,
2789     dusr_fields,
2790     0,
2791     "users_id = %d",
2792     1,
2793     NULL,
2794     &dusr_validate,
2795   },
2796
2797   {
2798     /* Q_GKUM - GET_KERBEROS_USER_MAP */
2799     "get_kerberos_user_map",
2800     "gkum",
2801     RETRIEVE,
2802     "k",
2803     KRBMAP_TABLE,
2804     "u.login, str.string FROM krbmap km, users u, strings str",
2805     gkum_fields,
2806     2,
2807     "u.login LIKE '%s' AND str.string LIKE '%s' AND km.users_id = u.users_id AND km.string_id = str.string_id",
2808     2,
2809     "u.login, str.string",
2810     NULL,
2811   },
2812
2813   {
2814     /* Q_AKUM - ADD_KERBEROS_USER_MAP */
2815     "add_kerberos_user_map",
2816     "akum",
2817     APPEND,
2818     "k",
2819     KRBMAP_TABLE,
2820     "INTO krbmap (users_id, string_id) VALUES (%d, %d)",
2821     akum_fields,
2822     2,
2823     0,
2824     0,
2825     NULL,
2826     &akum_validate,
2827   },
2828
2829   {
2830     /* Q_DKUM - DELETE_KERBEROS_USER_MAP */
2831     "delete_kerberos_user_map",
2832     "dkum",
2833     DELETE,
2834     "k",
2835     KRBMAP_TABLE,
2836     0,
2837     akum_fields,
2838     0,
2839     "users_id = %d AND string_id = %d",
2840     2,
2841     NULL,
2842     &dkum_validate,
2843   },
2844
2845   {
2846     /* Q_GFBL - GET_FINGER_BY_LOGIN */
2847     "get_finger_by_login",
2848     "gfbl",
2849     RETRIEVE,
2850     "u",
2851     USERS_TABLE,
2852     "login, fullname, nickname, home_addr, home_phone, office_addr, office_phone, department, affiliation, TO_CHAR(fmodtime, 'DD-mon-YYYY HH24:MI:SS'), fmodby, fmodwith FROM users",
2853     gfbl_fields,
2854     12,
2855     "users_id = %d",
2856     1,
2857     "login",
2858     &gfbl_validate,
2859   },
2860
2861   {
2862     /* Q_UFBL - UPDATE_FINGER_BY_LOGIN */
2863     "update_finger_by_login",
2864     "ufbl",
2865     UPDATE,
2866     "u",
2867     USERS_TABLE,
2868     "users SET fullname= NVL('%s', CHR(0)), nickname= NVL('%s', CHR(0)), home_addr= NVL('%s', CHR(0)), home_phone= NVL('%s', CHR(0)), office_addr= NVL('%s', CHR(0)), office_phone= NVL('%s', CHR(0)), department= NVL('%s', CHR(0)), affiliation= NVL('%s', CHR(0))",
2869     ufbl_fields,
2870     8,
2871     "users_id = %d",
2872     1,
2873     NULL,
2874     &ufbl_validate,
2875   },
2876
2877   {
2878     /* Q_GPOB - GET_POBOX */
2879     "get_pobox",
2880     "gpob",
2881     RETRIEVE,
2882     "u",
2883     USERS_TABLE,
2884     "login, potype, users_id, CHR(0), TO_CHAR(pmodtime, 'DD-mon-YYYY HH24:MI:SS'), pmodby, pmodwith FROM users",
2885     gpob_fields,
2886     7,
2887     "users_id = %d",
2888     1,
2889     "login",
2890     &gpob_validate,
2891   },
2892
2893   {
2894     /* Q_GAPO - GET_ALL_POBOXES */
2895     "get_all_poboxes",
2896     "gapo",
2897     RETRIEVE,
2898     "u",
2899     USERS_TABLE,
2900     "login, potype, pop_id || ':' || box_id FROM users",
2901     gpox_fields,
2902     3,
2903     "potype != 'NONE'",
2904     0,
2905     "login",
2906     &gpox_validate,
2907   },
2908
2909   {
2910     /* Q_GPOP - GET_POBOXES_POP */
2911     "get_poboxes_pop",
2912     "gpop",
2913     RETRIEVE,
2914     "u",
2915     USERS_TABLE,
2916     "login, potype, users_id FROM users",
2917     gpox_fields,
2918     3,
2919     "potype = 'POP'",
2920     0,
2921     "login",
2922     &gpox_validate
2923   },
2924
2925   {
2926     /* Q_GPOF - GET_POBOXES_SMTP */
2927     "get_poboxes_smtp",
2928     "gpos",
2929     RETRIEVE,
2930     "u",
2931     USERS_TABLE,
2932     "login, potype, users_id FROM users",
2933     gpox_fields,
2934     3,
2935     "potype = 'SMTP'",
2936     0,
2937     "login",
2938     &gpox_validate
2939   },
2940
2941   {
2942     /* Q_SPOB - SET_POBOX */
2943     "set_pobox",
2944     "spob",
2945     UPDATE,
2946     0,
2947     USERS_TABLE,
2948     0,
2949     spob_fields,
2950     3,
2951     NULL,
2952     0,
2953     NULL,
2954     &spob_validate,
2955   },
2956
2957   {
2958     /* Q_SPOP - SET_POBOX_POP */
2959     "set_pobox_pop",
2960     "spop",
2961     UPDATE,
2962     0,
2963     USERS_TABLE,
2964     0,
2965     spob_fields,
2966     1,
2967     NULL,
2968     0,
2969     NULL,
2970     &spop_validate,
2971   },
2972
2973   {
2974     /* Q_DPOB - DELETE_POBOX */
2975     "delete_pobox",
2976     "dpob",
2977     UPDATE,
2978     "u",
2979     USERS_TABLE,
2980     "users SET potype = 'NONE'",
2981     spob_fields,
2982     0,
2983     "users_id = %d",
2984     1,
2985     NULL,
2986     &dpob_validate,
2987   },
2988
2989   {
2990     /* Q_GHST - GET_HOST */
2991     "get_host",
2992     "ghst",
2993     RETRIEVE,
2994     "m",
2995     MACHINE_TABLE,
2996     "m.name, m.vendor, m.model, m.os, m.location, m.contact, m.use, m.status, TO_CHAR(m.statuschange, 'DD-mon-YYYY HH24:MI:SS'), s.name, m.address, m.owner_type, m.owner_id, m.acomment, m.ocomment, TO_CHAR(m.created, 'DD-mon-YYYY HH24:MI:SS'), m.creator, TO_CHAR(m.inuse, 'DD-mon-YYYY HH24:MI:SS'), TO_CHAR(m.modtime, 'DD-mon-YYYY HH24:MI:SS'), m.modby, m.modwith FROM machine m, subnet s",
2997     ghst_fields,
2998     21,
2999     "m.name LIKE UPPER('%s') AND m.address LIKE '%s' AND m.location LIKE UPPER('%s') AND s.name LIKE UPPER('%s') AND m.mach_id != 0 AND s.snet_id = m.snet_id",
3000     4,
3001     "m.name",
3002     &ghst_validate,
3003   },
3004
3005   {
3006     /* Q_GHBH - GET_HOST_BY_HWADDR */
3007     "get_host_by_hwaddr",
3008     "ghbh",
3009     RETRIEVE,
3010     "m",
3011     MACHINE_TABLE,
3012     "m.name, m.vendor, m.model, m.os, m.location, m.contact, m.use, m.status, TO_CHAR(m.statuschange, 'DD-mon-YYYY HH24:MI:SS'), s.name, m.address, m.owner_type, m.owner_id, m.acomment, m.ocomment, TO_CHAR(m.created, 'DD-mon-YYYY HH24:MI:SS'), m.creator, TO_CHAR(m.inuse, 'DD-mon-YYYY HH24:MI:SS'), TO_CHAR(m.modtime, 'DD-mon-YYYY HH24:MI:SS'), m.modby, m.modwith FROM machine m, subnet s",
3013     ghst_fields,
3014     21,
3015     "m.hwaddr LIKE LOWER('%s') AND m.mach_id != 0 AND s.snet_id = m.snet_id",
3016     1,
3017     "m.name",
3018     NULL,
3019   },
3020
3021   {
3022     /* Q_GHHA - GET_HOST_HWADDR */
3023     "get_host_hwaddr",
3024     "ghha",
3025     RETRIEVE,
3026     "m",
3027     MACHINE_TABLE,
3028     "m.hwaddr FROM machine m",
3029     ghha_fields,
3030     1,
3031     "m.name LIKE UPPER('%s')",
3032     1,
3033     NULL,
3034     NULL,
3035   },
3036
3037   {
3038     /* Q_AHST - ADD_HOST */ /* uses prefetch_value() for mach_id */
3039     "add_host",
3040     "ahst",
3041     APPEND,
3042     "m",
3043     MACHINE_TABLE,
3044     "INTO machine (name, vendor, model, os, location, contact, use, status, statuschange, snet_id, address, owner_type, owner_id, acomment, ocomment, created, inuse, mach_id, creator) VALUES (UPPER('%s'), NVL(UPPER('%s'), CHR(0)), NVL(UPPER('%s'), CHR(0)), NVL(UPPER('%s'), CHR(0)), NVL(UPPER('%s'), CHR(0)), NVL('%s', CHR(0)), %s, %s, SYSDATE, %d, '%s', '%s', %d, %d, %d, SYSDATE, SYSDATE, %s, %s)",
3045     ahst_fields,
3046     14,
3047     0,
3048     0,
3049     NULL,
3050     &ahst_validate,
3051   },
3052
3053   {
3054     /* Q_UHST - UPDATE_HOST */
3055     "update_host",
3056     "uhst",
3057     UPDATE,
3058     "m",
3059     MACHINE_TABLE,
3060     "machine SET name = NVL(UPPER('%s'), CHR(0)), vendor = NVL(UPPER('%s'), CHR(0)), model = NVL(UPPER('%s'), CHR(0)), os = NVL(UPPER('%s'), CHR(0)), location = NVL(UPPER('%s'), CHR(0)), contact = NVL('%s', CHR(0)), use = %s, status = %s, snet_id = %d, address = '%s', owner_type = '%s', owner_id = %d, acomment = %d, ocomment = %d",
3061     uhst_fields,
3062     14,
3063     "mach_id = %d",
3064     1,
3065     NULL,
3066     &uhst_validate,
3067   },
3068
3069   {
3070     /* Q_UHHA - UPDATE_HOST_HWADDR */
3071     "update_host_hwaddr",
3072     "uhha",
3073     UPDATE,
3074     "m",
3075     MACHINE_TABLE,
3076     "machine SET hwaddr = NVL('%s', CHR(0))",
3077     uhha_fields,
3078     1,
3079     "mach_id = %d",
3080     1,
3081     NULL,
3082     &uhha_validate,
3083   },
3084
3085   {
3086     /* Q_DHST - DELETE_HOST */
3087     "delete_host",
3088     "dhst",
3089     DELETE,
3090     "m",
3091     MACHINE_TABLE,
3092     NULL,
3093     dhst_fields,
3094     0,
3095     "mach_id = %d",
3096     1,
3097     NULL,
3098     &dhst_validate,
3099   },
3100
3101   {
3102     /* Q_GMAC - GET_MACHINE */
3103     "get_machine",
3104     "gmac",
3105     RETRIEVE,
3106     "m",
3107     MACHINE_TABLE,
3108     "name, vendor, TO_CHAR(modtime, 'DD-mon-YYYY HH24:MI:SS'), modby, modwith FROM machine",
3109     gmac_fields,
3110     5,
3111     "name LIKE UPPER('%s') AND mach_id != 0",
3112     1,
3113     "name",
3114     &VDfix_modby,
3115   },
3116
3117   {
3118     /* Q_GHAL - GET_HOSTALIAS */
3119     "get_hostalias",
3120     "ghal",
3121     RETRIEVE,
3122     "a",
3123     HOSTALIAS_TABLE,
3124     "a.name, m.name FROM hostalias a, machine m",
3125     ghal_fields,
3126     2,
3127     "m.mach_id = a.mach_id and a.name LIKE UPPER('%s') AND m.name LIKE UPPER('%s')",
3128     2,
3129     "a.name",
3130     &ghal_validate,
3131   },
3132
3133   {
3134     /* Q_AHAL - ADD_HOSTALIAS */
3135     "add_hostalias",
3136     "ahal",
3137     APPEND,
3138     "a",
3139     HOSTALIAS_TABLE,
3140     "INTO hostalias (name, mach_id) VALUES (UPPER('%s'), %d)",
3141     ghal_fields,
3142     2,
3143     0,
3144     0,
3145     NULL,
3146     &ahal_validate,
3147   },
3148
3149   {
3150     /* Q_DHAL - DELETE_HOSTALIAS */
3151     "delete_hostalias",
3152     "dhal",
3153     DELETE,
3154     "a",
3155     HOSTALIAS_TABLE,
3156     NULL,
3157     ghal_fields,
3158     0,
3159     "name = UPPER('%s') AND mach_id = %d",
3160     2,
3161     NULL,
3162     &dhal_validate,
3163   },
3164
3165   {
3166     /* Q_GSNT - GET_SUBNET */
3167     "get_subnet",
3168     "gsnt",
3169     RETRIEVE,
3170     "s",
3171     SUBNET_TABLE,
3172     "name, description, saddr, mask, low, high, prefix, owner_type, owner_id, TO_CHAR(modtime, 'DD-mon-YYYY HH24:MI:SS'), modby, modwith FROM subnet",
3173     gsnt_fields,
3174     12,
3175     "name LIKE UPPER('%s')",
3176     1,
3177     "name",
3178     &gsnt_validate,
3179   },
3180
3181   {
3182     /* Q_ASNT - ADD_SUBNET */
3183     "add_subnet",
3184     "asnt",
3185     APPEND,
3186     "s",
3187     SUBNET_TABLE,
3188     "INTO subnet (name, description, saddr, mask, low, high, prefix, owner_type, owner_id, snet_id) VALUES (UPPER('%s'), NVL('%s', CHR(0)), %s, %s, %s, %s, NVL('%s', CHR(0)), '%s', %d, %s)",
3189     asnt_fields,
3190     9,
3191     0,
3192     0,
3193     NULL,
3194     &asnt_validate,
3195   },
3196
3197   {
3198     /* Q_USNT - UPDATE_SUBNET */
3199     "update_subnet",
3200     "usnt",
3201     UPDATE,
3202     "s",
3203     SUBNET_TABLE,
3204     "subnet SET name = UPPER('%s'), description = NVL('%s', CHR(0)), saddr = %s, mask = %s, low = %s, high = %s, prefix = NVL('%s', CHR(0)), owner_type = '%s', owner_id = %d",
3205     usnt_fields,
3206     9,
3207     "snet_id = %d",
3208     1,
3209     NULL,
3210     &usnt_validate,
3211   },
3212
3213   {
3214     /* Q_DSNT - DELETE_SUBNET */
3215     "delete_subnet",
3216     "dsnt",
3217     DELETE,
3218     "s",
3219     SUBNET_TABLE,
3220     NULL,
3221     dsnt_fields,
3222     0,
3223     "snet_id = %d",
3224     1,
3225     NULL,
3226     &dsnt_validate,
3227   },
3228
3229   {
3230     /* Q_GCLU - GET_CLUSTER */
3231     "get_cluster",
3232     "gclu",
3233     RETRIEVE,
3234     "c",
3235     CLUSTERS_TABLE,
3236     "name, description, location, TO_CHAR(modtime, 'DD-mon-YYYY HH24:MI:SS'), modby, modwith FROM clusters",
3237     gclu_fields,
3238     6,
3239     "name LIKE '%s' AND clu_id != 0",
3240     1,
3241     "name",
3242     &VDfix_modby,
3243   },
3244
3245   {
3246     /* Q_ACLU - ADD_CLUSTER */ /* uses prefetch_value() for clu_id */
3247     "add_cluster",
3248     "aclu",
3249     APPEND,
3250     "c",
3251     CLUSTERS_TABLE,
3252     "INTO clusters (name, description, location, clu_id) VALUES ('%s', NVL('%s', CHR(0)), NVL('%s', CHR(0)), %s)",
3253     aclu_fields,
3254     3,
3255     0,
3256     0,
3257     NULL,
3258     &aclu_validate,
3259   },
3260
3261   {
3262     /* Q_UCLU - UPDATE_CLUSTER */
3263     "update_cluster",
3264     "uclu",
3265     UPDATE,
3266     "c",
3267     CLUSTERS_TABLE,
3268     "clusters SET name = '%s', description = NVL('%s', CHR(0)), location = NVL('%s', CHR(0))",
3269     uclu_fields,
3270     3,
3271     "clu_id = %d",
3272     1,
3273     NULL,
3274     &uclu_validate,
3275   },
3276
3277   {
3278     /* Q_DCLU - DELETE_CLUSTER */
3279     "delete_cluster",
3280     "dclu",
3281     DELETE,
3282     "c",
3283     CLUSTERS_TABLE,
3284     NULL,
3285     dclu_fields,
3286     0,
3287     "clu_id = %d",
3288     1,
3289     NULL,
3290     &dclu_validate,
3291   },
3292
3293   {
3294     /* Q_GMCM - GET_MACHINE_TO_CLUSTER_MAP */
3295     "get_machine_to_cluster_map",
3296     "gmcm",
3297     RETRIEVE,
3298     "mcm",
3299     MCMAP_TABLE,
3300     "m.name, c.name FROM machine m, clusters c, mcmap mcm",
3301     gmcm_fields,
3302     2,
3303     "m.name LIKE UPPER('%s') AND c.name LIKE '%s' AND mcm.clu_id = c.clu_id AND mcm.mach_id = m.mach_id",
3304     2,
3305     "m.name",
3306     NULL,
3307   },
3308
3309   {
3310     /* Q_AMTC - ADD_MACHINE_TO_CLUSTER */
3311     "add_machine_to_cluster",
3312     "amtc",
3313     APPEND,
3314     "mcm",
3315     MCMAP_TABLE,
3316     "INTO mcmap (mach_id, clu_id) VALUES (%d, %d)",
3317     gmcm_fields,
3318     2,
3319     0,
3320     0,
3321     NULL,
3322     &amtc_validate,
3323   },
3324
3325   {
3326     /* Q_DMFC - DELETE_MACHINE_FROM_CLUSTER */
3327     "delete_machine_from_cluster",
3328     "dmfc",
3329     DELETE,
3330     "mcm",
3331     MCMAP_TABLE,
3332     0,
3333     gmcm_fields,
3334     0,
3335     "mach_id = %d AND clu_id = %d",
3336     2,
3337     NULL,
3338     &amtc_validate,
3339   },
3340
3341   {
3342     /* Q_GCLD - GET_CLUSTER_DATA */
3343     "get_cluster_data",
3344     "gcld",
3345     RETRIEVE,
3346     "svc",
3347     SVC_TABLE,
3348     "c.name, svc.serv_label, svc.serv_cluster FROM svc svc, clusters c",
3349     gcld_fields,
3350     3,
3351     "c.clu_id = svc.clu_id AND c.name LIKE '%s' AND svc.serv_label LIKE '%s'",
3352     2,
3353     "c.name, svc.serv_label",
3354     NULL,
3355   },
3356
3357   {
3358     /* Q_ACLD - ADD_CLUSTER_DATA */
3359     "add_cluster_data",
3360     "acld",
3361     APPEND,
3362     "svc",
3363     SVC_TABLE,
3364     "INTO svc (clu_id, serv_label, serv_cluster) VALUES (%d, '%s', '%s')",
3365     acld_fields,
3366     3,
3367     NULL,
3368     0,
3369     NULL,
3370     &acld_validate,
3371   },
3372
3373   {
3374     /* Q_DCLD - DELETE_CLUSTER_DATA */
3375     "delete_cluster_data",
3376     "dcld",
3377     DELETE,
3378     "svc",
3379     SVC_TABLE,
3380     NULL,
3381     acld_fields,
3382     0,
3383     "clu_id = %d AND serv_label = '%s' AND serv_cluster = '%s'",
3384     3,
3385     NULL,
3386     &dcld_validate,
3387   },
3388
3389   {
3390     /* Q_GLIN - GET_LIST_INFO */
3391     "get_list_info",
3392     "glin",
3393     RETRIEVE,
3394     "l",
3395     LIST_TABLE,
3396     "name, active, publicflg, hidden, maillist, grouplist, gid, acl_type, acl_id, description, TO_CHAR(modtime, 'DD-mon-YYYY HH24:MI:SS'), modby, modwith FROM list",
3397     glin_fields,
3398     13,
3399     "name LIKE '%s'",
3400     1,
3401     "name",
3402     &glin_validate,
3403   },
3404
3405   {
3406     /* Q_EXLN - EXPAND_LIST_NAMES */
3407     "expand_list_names",
3408     "exln",
3409     RETRIEVE,
3410     "l",
3411     LIST_TABLE,
3412     "name FROM list",
3413     glin_fields,
3414     1,
3415     "name LIKE '%s' AND list_id != 0",
3416     1,
3417     "name",
3418     NULL,
3419   },
3420
3421   {
3422     /* Q_ALIS - ADD_LIST */ /* uses prefetch_value() for list_id */
3423     "add_list",
3424     "alis",
3425     APPEND,
3426     "l",
3427     LIST_TABLE,
3428     "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, NVL('%s', CHR(0)), %s)",
3429     alis_fields,
3430     10,
3431     0,
3432     0,
3433     NULL,
3434     &alis_validate,
3435   },
3436
3437   {
3438     /* Q_ULIS - UPDATE_LIST */
3439     "update_list",
3440     "ulis",
3441     UPDATE,
3442     "l",
3443     LIST_TABLE,
3444     "list SET name = '%s', active = %s, publicflg = %s, hidden = %s, maillist = %s, grouplist = %s, gid = %s, acl_type = '%s', acl_id = %d, description = NVL('%s', CHR(0))",
3445     ulis_fields,
3446     10,
3447     "list_id = %d",
3448     1,
3449     NULL,
3450     &ulis_validate,
3451   },
3452
3453   {
3454     /* Q_DLIS - DELETE_LIST */
3455     "delete_list",
3456     "dlis",
3457     DELETE,
3458     "l",
3459     LIST_TABLE,
3460     NULL,
3461     dlis_fields,
3462     0,
3463     "list_id = %d",
3464     1,
3465     NULL,
3466     &dlis_validate,
3467   },
3468
3469   {
3470     /* Q_AMTL - ADD_MEMBER_TO_LIST */
3471     "add_member_to_list",
3472     "amtl",
3473     APPEND,
3474     0,
3475     IMEMBERS_TABLE,
3476     0,
3477     amtl_fields,
3478     3,
3479     NULL,
3480     0,
3481     NULL,
3482     &amtl_validate,
3483   },
3484
3485   {
3486     /* Q_ATML - ADD_TAGGED_MEMBER_TO_LIST */
3487     "add_tagged_member_to_list",
3488     "atml",
3489     APPEND,
3490     0,
3491     IMEMBERS_TABLE,
3492     0,
3493     atml_fields,
3494     4,
3495     NULL,
3496     0,
3497     NULL,
3498     &atml_validate,
3499   },
3500
3501   {
3502     /* Q_TMOL - TAG_MEMBER_OF_LIST */
3503     "tag_member_of_list",
3504     "tmol",
3505     UPDATE,
3506     "im",
3507     IMEMBERS_TABLE,
3508     "imembers SET tag = %d",
3509     atml_fields,
3510     1,
3511     "list_id = %d AND member_type = '%s' and member_id = %d",
3512     3,
3513     NULL,
3514     &tmol_validate,
3515   },
3516
3517   {
3518     /* Q_DMFL - DELETE_MEMBER_FROM_LIST */
3519     "delete_member_from_list",
3520     "dmfl",
3521     DELETE,
3522     0,
3523     IMEMBERS_TABLE,
3524     NULL,
3525     amtl_fields,
3526     0,
3527     0,
3528     3,
3529     NULL,
3530     &dmfl_validate,
3531   },
3532
3533   {
3534     /* Q_GAUS - GET_ACE_USE */
3535     "get_ace_use",
3536     "gaus",
3537     RETRIEVE,
3538     0,
3539     0,
3540     0,
3541     gaus_fields,
3542     2,
3543     0,
3544     2,
3545     NULL,
3546     &gaus_validate,
3547   },
3548
3549   {
3550     /* Q_QGLI - QUALIFIED_GET_LISTS */
3551     "qualified_get_lists",
3552     "qgli",
3553     RETRIEVE,
3554     0,
3555     LIST_TABLE,
3556     0,
3557     qgli_fields,
3558     1,
3559     0,
3560     5,
3561     NULL,
3562     &qgli_validate,
3563   },
3564
3565   {
3566     /* Q_GMOL - GET_MEMBERS_OF_LIST */
3567     "get_members_of_list",
3568     "gmol",
3569     RETRIEVE,
3570     NULL,
3571     IMEMBERS_TABLE,
3572     NULL,
3573     gmol_fields,
3574     2,
3575     NULL,
3576     1,
3577     NULL,
3578     &gmol_validate,
3579   },
3580
3581   {
3582     /* Q_GEML - GET_END_MEMBERS_OF_LIST */
3583     "get_end_members_of_list",
3584     "geml",
3585     RETRIEVE,
3586     NULL,
3587     IMEMBERS_TABLE,
3588     NULL,
3589     gmol_fields,
3590     2,
3591     NULL,
3592     1,
3593     NULL,
3594     &gmol_validate,
3595   },
3596
3597   {
3598     /* Q_GTML - GET_TAGGED_MEMBERS_OF_LIST */
3599     "get_tagged_members_of_list",
3600     "gtml",
3601     RETRIEVE,
3602     NULL,
3603     IMEMBERS_TABLE,
3604     NULL,
3605     gtml_fields,
3606     3,
3607     NULL,
3608     1,
3609     NULL,
3610     &gmol_validate,
3611   },
3612
3613   {
3614     /* Q_GLOM - GET_LISTS_OF_MEMBER */
3615     "get_lists_of_member",
3616     "glom",
3617     RETRIEVE,
3618     0,
3619     IMEMBERS_TABLE,
3620     0,
3621     glom_fields,
3622     6,
3623     0,
3624     2,
3625     NULL,
3626     &glom_validate,
3627   },
3628
3629   {
3630     /* Q_CMOL - COUNT_MEMBERS_OF_LIST */
3631     "count_members_of_list",
3632     "cmol",
3633     RETRIEVE,
3634     0,
3635     IMEMBERS_TABLE,
3636     0,
3637     cmol_fields,
3638     1,
3639     0,
3640     1,
3641     NULL,
3642     &cmol_validate,
3643   },
3644
3645   {
3646     /* Q_GSIN - GET_SERVER_INFO */
3647     "get_server_info",
3648     "gsin",
3649     RETRIEVE,
3650     "s",
3651     SERVERS_TABLE,
3652     "name, update_int, target_file, script, dfgen, dfcheck, type, enable, inprogress, harderror, errmsg, acl_type, acl_id, TO_CHAR(modtime, 'DD-mon-YYYY HH24:MI:SS'), modby, modwith FROM servers",
3653     gsin_fields,
3654     16,
3655     "name LIKE UPPER('%s')",
3656     1,
3657     "name",
3658     &gsin_validate,
3659   },
3660
3661   {
3662     /* Q_QGSV - QUALIFIED_GET_SERVER */
3663     "qualified_get_server",
3664     "qgsv",
3665     RETRIEVE,
3666     0,
3667     SERVERS_TABLE,
3668     0,
3669     qgsv_fields,
3670     1,
3671     0,
3672     3,
3673     NULL,
3674     &qgsv_validate,
3675   },
3676
3677   {
3678     /* Q_ASIN - ADD_SERVER_INFO */
3679     "add_server_info",
3680     "asin",
3681     APPEND,
3682     "s",
3683     SERVERS_TABLE,
3684     "INTO servers (name, update_int, target_file, script, type, enable, acl_type, acl_id) VALUES (UPPER('%s'), %s, '%s', '%s', '%s', %s, '%s', %d)",
3685     asin_fields,
3686     8,
3687     NULL,
3688     0,
3689     NULL,
3690     &asin_validate,
3691   },
3692
3693   {
3694     /* Q_USIN - UPDATE_SERVER_INFO */
3695     "update_server_info",
3696     "usin",
3697     UPDATE,
3698     "s",
3699     SERVERS_TABLE,
3700     "servers SET update_int = %s, target_file = '%s', script = '%s', type = '%s', enable = %s, acl_type = '%s', acl_id = %d",
3701     asin_fields,
3702     7,
3703     "name = UPPER('%s')",
3704     1,
3705     NULL,
3706     &asin_validate,
3707   },
3708
3709   {
3710     /* Q_RSVE - RESET_SERVER_ERROR */
3711     "reset_server_error",
3712     "rsve",
3713     UPDATE,
3714     "s",
3715     SERVERS_TABLE,
3716     "servers SET harderror = 0, dfcheck = dfgen",
3717     dsin_fields,
3718     0,
3719     "name = UPPER('%s')",
3720     1,
3721     NULL,
3722     &rsve_validate,
3723   },
3724
3725   {
3726     /* Q_SSIF - SET_SERVER_INTERNAL_FLAGS */
3727     "set_server_internal_flags",
3728     "ssif",
3729     UPDATE,
3730     "s",
3731     SERVERS_TABLE,
3732     "servers SET dfgen = %s, dfcheck = %s, inprogress = %s, harderror = %s, errmsg = NVL('%s', CHR(0))",
3733     ssif_fields,
3734     5,
3735     "name = UPPER('%s')",
3736     1,
3737     NULL,
3738     &ssif_validate,
3739   },
3740
3741   {
3742     /* Q_DSIN - DELETE_SERVER_INFO */
3743     "delete_server_info",
3744     "dsin",
3745     DELETE,
3746     "s",
3747     SERVERS_TABLE,
3748     NULL,
3749     dsin_fields,
3750     0,
3751     "name = UPPER('%s')",
3752     1,
3753     NULL,
3754     &dsin_validate,
3755   },
3756
3757   {
3758     /* Q_GSHI - GET_SERVER_HOST_INFO */
3759     "get_server_host_info",
3760     "gshi",
3761     RETRIEVE,
3762     "sh",
3763     SERVERHOSTS_TABLE,
3764     "sh.service, m.name, sh.enable, sh.override, sh.success, sh.inprogress, sh.hosterror, sh.hosterrmsg, sh.ltt, sh.lts, sh.value1, sh.value2, sh.value3, TO_CHAR(sh.modtime, 'DD-mon-YYYY HH24:MI:SS'), sh.modby, sh.modwith FROM serverhosts sh, machine m",
3765     gshi_fields,
3766     16,
3767     "sh.service LIKE UPPER('%s') AND m.name LIKE UPPER('%s') AND m.mach_id = sh.mach_id",
3768     2,
3769     "sh.service, m.name",
3770     &gshi_validate,
3771   },
3772
3773   {
3774     /* Q_QGSH - QUALIFIED_GET_SERVER_HOST */
3775     "qualified_get_server_host",
3776     "qgsh",
3777     RETRIEVE,
3778     0,
3779     SERVERHOSTS_TABLE,
3780     0,
3781     qgsh_fields,
3782     2,
3783     0,
3784     6,
3785     NULL,
3786     &qgsh_validate,
3787   },
3788
3789   {
3790     /* Q_ASHI - ADD_SERVER_HOST_INFO */
3791     "add_server_host_info",
3792     "ashi",
3793     APPEND,
3794     "sh",
3795     SERVERHOSTS_TABLE,
3796     "INTO serverhosts (service, mach_id, enable, value1, value2, value3) VALUES (UPPER('%s'), %d, %s, %s, %s, NVL('%s', CHR(0)))",
3797     ashi_fields,
3798     6,
3799     NULL,
3800     0,
3801     NULL,
3802     &ashi_validate,
3803   },
3804
3805   {
3806     /* Q_USHI - UPDATE_SERVER_HOST_INFO */
3807     "update_server_host_info",
3808     "ushi",
3809     UPDATE,
3810     "sh",
3811     SERVERHOSTS_TABLE,
3812     "serverhosts SET enable = %s, value1 = %s, value2 = %s, value3 = NVL('%s', CHR(0))",
3813     ashi_fields,
3814     4,
3815     "service = UPPER('%s') AND mach_id = %d",
3816     2,
3817     NULL,
3818     &ashi_validate,
3819   },
3820
3821   {
3822     /* Q_RSHE - RESET_SERVER_HOST_ERROR */
3823     "reset_server_host_error",
3824     "rshe",
3825     UPDATE,
3826     "sh",
3827     SERVERHOSTS_TABLE,
3828     "serverhosts SET hosterror = 0",
3829     dshi_fields,
3830     0,
3831     "service = UPPER('%s') AND mach_id = %d",
3832     2,
3833     NULL,
3834     &rshe_validate,
3835   },
3836
3837   {
3838     /* Q_SSHO - SET_SERVER_HOST_OVERRIDE */
3839     "set_server_host_override",
3840     "ssho",
3841     UPDATE,
3842     "sh",
3843     SERVERHOSTS_TABLE,
3844     "serverhosts SET override = 1",
3845     dshi_fields,
3846     0,
3847     "service = UPPER('%s') AND mach_id = %d",
3848     2,
3849     NULL,
3850     &ssho_validate,
3851   },
3852
3853   {
3854     /* Q_SSHI - SET_SERVER_HOST_INTERNAL */
3855     "set_server_host_internal",
3856     "sshi",
3857     UPDATE,
3858     "s",
3859     SERVERHOSTS_TABLE,
3860     "serverhosts SET override = %s, success = %s, inprogress = %s, hosterror = %s, hosterrmsg = NVL('%s', CHR(0)), ltt = %s, lts = %s",
3861     sshi_fields,
3862     7,
3863     "service = UPPER('%s') AND mach_id = %d",
3864     2,
3865     NULL,
3866     &sshi_validate,
3867   },
3868
3869   {
3870     /* Q_DSHI - DELETE_SERVER_HOST_INFO */
3871     "delete_server_host_info",
3872     "dshi",
3873     DELETE,
3874     "sh",
3875     SERVERHOSTS_TABLE,
3876     NULL,
3877     dshi_fields,
3878     0,
3879     "service = UPPER('%s') AND mach_id = %d",
3880     2,
3881     NULL,
3882     &dshi_validate,
3883   },
3884
3885   {
3886     /* Q_GSLO - GET_SERVER_LOCATIONS */
3887     "get_server_locations",
3888     "gslo",
3889     RETRIEVE,
3890     "sh",
3891     SERVERHOSTS_TABLE,
3892     "sh.service, m.name FROM serverhosts sh, machine m",
3893     gslo_fields,
3894     2,
3895     "sh.service LIKE UPPER('%s') AND sh.mach_id = m.mach_id",
3896     1,
3897     "sh.service, m.name",
3898     NULL,
3899   },
3900
3901   {
3902     /* Q_GFSL - GET_FILESYS_BY_LABEL */
3903     "get_filesys_by_label",
3904     "gfsl",
3905     RETRIEVE,
3906     "fs",
3907     FILESYS_TABLE,
3908     "fs.label, fs.type, m.name, fs.name, fs.mount, fs.rwaccess, fs.comments, u.login, l.name, fs.createflg, fs.lockertype, TO_CHAR(fs.modtime, 'DD-mon-YYYY HH24:MI:SS'), fs.modby, fs.modwith FROM filesys fs, machine m, users u, list l",
3909     gfsl_fields,
3910     14,
3911     "fs.label LIKE '%s' AND fs.mach_id = m.mach_id AND fs.owner = u.users_id AND fs.owners = l.list_id",
3912     1,
3913     "fs.label",
3914     &gfsl_validate,
3915   },
3916
3917   {
3918     /* Q_GFSM - GET_FILESYS_BY_MACHINE */
3919     "get_filesys_by_machine",
3920     "gfsm",
3921     RETRIEVE,
3922     "fs",
3923     FILESYS_TABLE,
3924     "fs.label, fs.type, m.name, fs.name, fs.mount, fs.rwaccess, fs.comments, u.login, l.name, fs.createflg, fs.lockertype, TO_CHAR(fs.modtime, 'DD-mon-YYYY HH24:MI:SS'), fs.modby, fs.modwith FROM filesys fs, machine m, users u, list l",
3925     gfsm_fields,
3926     14,
3927     "fs.mach_id = %d AND m.mach_id = fs.mach_id AND fs.owner = u.users_id AND fs.owners = l.list_id",
3928     1,
3929     "fs.label",
3930     &gfsm_validate,
3931   },
3932
3933   {
3934     /* Q_GFSN - GET_FILESYS_BY_NFSPHYS */
3935     "get_filesys_by_nfsphys",
3936     "gfsn",
3937     RETRIEVE,
3938     "fs",
3939     FILESYS_TABLE,
3940     "fs.label, fs.type, m.name, fs.name, fs.mount, fs.rwaccess, fs.comments, u.login, l.name, fs.createflg, fs.lockertype, TO_CHAR(fs.modtime, 'DD-mon-YYYY HH24:MI:SS'), fs.modby, fs.modwith FROM filesys fs, machine m, users u, list l, nfsphys np",
3941     gfsn_fields,
3942     14,
3943     "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'",
3944     2,
3945     "fs.label",
3946     &gfsn_validate,
3947   },
3948
3949   {
3950     /* Q_GFSG - GET_FILESYS_BY_GROUP */
3951     "get_filesys_by_group",
3952     "gfsg",
3953     RETRIEVE,
3954     "fs",
3955     FILESYS_TABLE,
3956     "fs.label, fs.type, m.name, fs.name, fs.mount, fs.rwaccess, fs.comments, u.login, l.name, fs.createflg, fs.lockertype, TO_CHAR(fs.modtime, 'DD-mon-YYYY HH24:MI:SS'), fs.modby, fs.modwith FROM filesys fs, machine m, users u, list l",
3957     gfsg_fields,
3958     14,
3959     "fs.owners = %d AND m.mach_id = fs.mach_id AND fs.owner = u.users_id AND fs.owners = l.list_id",
3960     1,
3961     "fs.label",
3962     &gfsg_validate,
3963   },
3964
3965   {
3966     /* Q_GFSP - GET_FILESYS_BY_PATH */
3967     "get_filesys_by_path",
3968     "gfsp",
3969     RETRIEVE,
3970     "fs",
3971     FILESYS_TABLE,
3972     "fs.label, fs.type, m.name, fs.name, fs.mount, fs.rwaccess, fs.comments, u.login, l.name, fs.createflg, fs.lockertype, TO_CHAR(fs.modtime, 'DD-mon-YYYY HH24:MI:SS'), fs.modby, fs.modwith FROM filesys fs, machine m, users u, list l",
3973     gfsp_fields,
3974     14,
3975     "fs.name LIKE '%s' AND m.mach_id = fs.mach_id AND fs.owner = u.users_id AND fs.owners = list_id",
3976     1,
3977     "fs.label",
3978     &VDfix_modby,
3979   },
3980
3981   {
3982     /* Q_AFIL - ADD_FILESYS */ /* uses prefetch_value() for filsys_id */
3983     "add_filesys",
3984     "afil",
3985     APPEND,
3986     "fs",
3987     FILESYS_TABLE,
3988     "INTO filesys (label, type, mach_id, name, mount, rwaccess, comments, owner, owners, createflg, lockertype, filsys_id) VALUES ('%s', '%s', %d, NVL('%s', CHR(0)), NVL('%s', CHR(0)), '%s', NVL('%s', CHR(0)), %d, %d, %s, '%s', %s)",
3989     afil_fields,
3990     11,
3991     0,
3992     0,
3993     NULL,
3994     &afil_validate,
3995   },
3996
3997   {
3998     /* Q_UFIL - UPDATE_FILESYS */
3999     "update_filesys",
4000     "ufil",
4001     UPDATE,
4002     "fs",
4003     FILESYS_TABLE,
4004     "filesys SET label = '%s', type = '%s', mach_id = %d, name = NVL('%s', CHR(0)), mount = NVL('%s', CHR(0)), rwaccess = '%s', comments = NVL('%s', CHR(0)), owner = %d, owners = %d, createflg = %s, lockertype = '%s'",
4005     ufil_fields,
4006     11,
4007     "filsys_id = %d",
4008     1,
4009     NULL,
4010     &ufil_validate,
4011   },
4012
4013   {
4014     /* Q_DFIL - DELETE_FILESYS */
4015     "delete_filesys",
4016     "dfil",
4017     DELETE,
4018     "fs",
4019     FILESYS_TABLE,
4020     NULL,
4021     dfil_fields,
4022     0,
4023     "filsys_id = %d",
4024     1,
4025     NULL,
4026     &dfil_validate,
4027   },
4028
4029   {
4030     /* Q_GFGM - GET_FSGROUP_MEMBERS */
4031     "get_fsgroup_members",
4032     "gfgm",
4033     RETRIEVE,
4034     "fg",
4035     FSGROUP_TABLE,
4036     "fs.label, fg.key FROM fsgroup fg, filesys fs",
4037     gfgm_fields,
4038     2,
4039     "fg.group_id = %d AND fs.filsys_id = fg.filsys_id",
4040     1,
4041     "fs.label, fg.key",
4042     &gfgm_validate,
4043   },
4044
4045   {
4046     /* Q_AFTG - ADD_FILESYS_TO_FSGROUP */
4047     "add_filesys_to_fsgroup",
4048     "aftg",
4049     APPEND,
4050     "fg",
4051     FSGROUP_TABLE,
4052     "INTO fsgroup (group_id, filsys_id, key) VALUES (%d, %d, '%s')",
4053     gfgm_fields,
4054     3,
4055     NULL,
4056     0,
4057     NULL,
4058     &aftg_validate,
4059   },
4060
4061   {
4062     /* Q_RFFG - REMOVE_FILESYS_FROM_FSGROUP */
4063     "remove_filesys_from_fsgroup",
4064     "rffg",
4065     DELETE,
4066     "fg",
4067     FSGROUP_TABLE,
4068     NULL,
4069     gfgm_fields,
4070     0,
4071     "group_id = %d AND filsys_id = %d",
4072     2,
4073     NULL,
4074     &aftg_validate,
4075   },
4076
4077   {
4078     /* Q_GANF - GET_ALL_NFSPHYS */
4079     "get_all_nfsphys",
4080     "ganf",
4081     RETRIEVE,
4082     "np",
4083     NFSPHYS_TABLE,
4084     "m.name, np.dir, np.device, np.status, np.allocated, np.partsize, TO_CHAR(np.modtime, 'DD-mon-YYYY HH24:MI:SS'), np.modby, np.modwith FROM nfsphys np, machine m",
4085     ganf_fields,
4086     9,
4087     "m.mach_id = np.mach_id",
4088     0,
4089     "m.name, np.dir",
4090     &VDfix_modby,
4091   },
4092
4093   {
4094     /* Q_GNFP - GET_NFSPHYS */
4095     "get_nfsphys",
4096     "gnfp",
4097     RETRIEVE,
4098     "np",
4099     NFSPHYS_TABLE,
4100     "m.name, np.dir, np.device, np.status, np.allocated, np.partsize, TO_CHAR(np.modtime, 'DD-mon-YYYY HH24:MI:SS'), np.modby, np.modwith FROM nfsphys np, machine m",
4101     gnfp_fields,
4102     9,
4103     "np.mach_id = %d AND np.dir LIKE '%s' AND m.mach_id = np.mach_id",
4104     2,
4105     "m.name, np.dir",
4106     &gnfp_validate,
4107   },
4108
4109   {
4110     /* Q_ANFP - ADD_NFSPHYS */ /* uses prefetch_value() for nfsphys_id */
4111     "add_nfsphys",
4112     "anfp",
4113     APPEND,
4114     "np",
4115     NFSPHYS_TABLE,
4116     "INTO nfsphys (mach_id, dir, device, status, allocated, partsize, nfsphys_id) VALUES (%d, '%s', NVL('%s', CHR(0)), %s, %s, %s, %s)",
4117     ganf_fields,
4118     6,
4119     0,
4120     0,
4121     NULL,
4122     &anfp_validate,
4123   },
4124
4125   {
4126     /* Q_UNFP - UPDATE_NFSPHYS */
4127     "update_nfsphys",
4128     "unfp",
4129     UPDATE,
4130     "np",
4131     NFSPHYS_TABLE,
4132     "nfsphys SET device = NVL('%s', CHR(0)), status = %s, allocated = %s, partsize = %s",
4133     ganf_fields,
4134     4,
4135     "mach_id = %d AND dir = '%s'",
4136     2,
4137     NULL,
4138     &unfp_validate,
4139   },
4140
4141   {
4142     /* Q_AJNF - ADJUST_NFSPHYS_ALLOCATION */
4143     "adjust_nfsphys_allocation",
4144     "ajnf",
4145     UPDATE,
4146     "np",
4147     NFSPHYS_TABLE,
4148     "nfsphys SET allocated = allocated + %s",
4149     ajnf_fields,
4150     1,
4151     "mach_id = %d AND dir = '%s'",
4152     2,
4153     NULL,
4154     &ajnf_validate,
4155   },
4156
4157   {
4158     /* Q_DNFP - DELETE_NFSPHYS */
4159     "delete_nfsphys",
4160     "dnfp",
4161     DELETE,
4162     "np",
4163     NFSPHYS_TABLE,
4164     NULL,
4165     dnfp_fields,
4166     0,
4167     "mach_id = %d AND dir = '%s'",
4168     2,
4169     NULL,
4170     &dnfp_validate,
4171   },
4172
4173   {
4174     /* Q_GQOT - GET_QUOTA */
4175     "get_quota",
4176     "gqot",
4177     RETRIEVE,
4178     "q",
4179     QUOTA_TABLE,
4180     "fs.label, q.type, q.entity_id, q.quota, q.phys_id, m.name, TO_CHAR(q.modtime, 'DD-mon-YYYY HH24:MI:SS'), q.modby, q.modwith FROM quota q, filesys fs, machine m",
4181     gqot_fields,
4182     9,
4183     "fs.label LIKE '%s' AND q.type = '%s' AND q.entity_id = %d AND fs.filsys_id = q.filsys_id AND m.mach_id = fs.mach_id",
4184     3,
4185     NULL,
4186     &gqot_validate,
4187   },
4188
4189   {
4190     /* Q_GQBF - GET_QUOTA_BY_FILESYS */
4191     "get_quota_by_filesys",
4192     "gqbf",
4193     RETRIEVE,
4194     "q",
4195     QUOTA_TABLE,
4196     "fs.label, q.type, q.entity_id, q.quota, q.phys_id, m.name, TO_CHAR(q.modtime, 'DD-mon-YYYY HH24:MI:SS'), q.modby, q.modwith FROM quota q, filesys fs, machine m",
4197     gqbf_fields,
4198     9,
4199     "fs.label LIKE '%s' AND fs.filsys_id = q.filsys_id AND m.mach_id = fs.mach_id",
4200     1,
4201     "fs.label, q.type",
4202     &gqbf_validate,
4203   },
4204
4205   {
4206     /* Q_AQOT - ADD_QUOTA */ /* prefetch_filsys() gets last 1 value */
4207     "add_quota",
4208     "aqot",
4209     APPEND,
4210     0,
4211     QUOTA_TABLE,
4212     "INTO quota (filsys_id, type, entity_id, quota, phys_id) VALUES ('%s', %d, %d, %s, %s)",
4213     aqot_fields,
4214     4,
4215     NULL,
4216     0,
4217     NULL,
4218     &aqot_validate,
4219   },
4220
4221   {
4222     /* Q_UQOT - UPDATE_QUOTA */
4223     "update_quota",
4224     "uqot",
4225     UPDATE,
4226     0,
4227     QUOTA_TABLE,
4228     "quota SET quota = %s",
4229     aqot_fields,
4230     1,
4231     0,
4232     3,
4233     NULL,
4234     &uqot_validate,
4235   },
4236
4237   {
4238     /* Q_DQOT - DELETE_QUOTA */
4239     "delete_quota",
4240     "dqot",
4241     DELETE,
4242     0,
4243     QUOTA_TABLE,
4244     NULL,
4245     aqot_fields,
4246     0,
4247     0,
4248     3,
4249     NULL,
4250     &dqot_validate,
4251   },
4252
4253   {
4254     /* Q_GNFQ - GET_NFS_QUOTAS */
4255     "get_nfs_quota",
4256     "gnfq",
4257     RETRIEVE,
4258     "q",
4259     QUOTA_TABLE,
4260     "fs.label, u.login, q.quota, q.phys_id, m.name, TO_CHAR(q.modtime, 'DD-mon-YYYY HH24:MI:SS'), q.modby, q.modwith FROM quota q, filesys fs, users u, machine m",
4261     gnfq_fields,
4262     8,
4263     "fs.label LIKE '%s' 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'",
4264     2,
4265     "fs.label, u.login",
4266     &gnfq_validate,
4267   },
4268
4269   {
4270     /* Q_GNQP - GET_NFS_QUOTAS_BY_PARTITION */
4271     "get_nfs_quotas_by_partition",
4272     "gnqp",
4273     RETRIEVE,
4274     "q",
4275     QUOTA_TABLE,
4276     "fs.label, u.login, q.quota, np.dir, m.name FROM quota q, filesys fs, users u, nfsphys np, machine m",
4277     gnqp_fields,
4278     5,
4279     "np.mach_id = %d AND np.dir LIKE '%s' 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",
4280     2,
4281     "fs.label",
4282     NULL,
4283   },
4284
4285   {
4286     /* Q_ANFQ - ADD_NFS_QUOTA */ /* prefetch_filsys() gets last 1 value */
4287     "add_nfs_quota",
4288     "anfq",
4289     APPEND,
4290     0,
4291     QUOTA_TABLE,
4292     "INTO quota (type, filsys_id, entity_id, quota, phys_id ) VALUES ('USER', %d, %d, %s, %s)",
4293     anfq_fields,
4294     3,
4295     NULL,
4296     0,
4297     NULL,
4298     &anfq_validate,
4299   },
4300
4301   {
4302     /* Q_UNFQ - UPDATE_NFS_QUOTA */
4303     "update_nfs_quota",
4304     "unfq",
4305     UPDATE,
4306     0,
4307     QUOTA_TABLE,
4308     "quota SET quota = %s",
4309     anfq_fields,
4310     1,
4311     0,
4312     2,
4313     NULL,
4314     &unfq_validate,
4315   },
4316
4317   {
4318     /* Q_DNFQ - DELETE_NFS_QUOTA */
4319     "delete_nfs_quota",
4320     "dnfq",
4321     DELETE,
4322     0,
4323     QUOTA_TABLE,
4324     NULL,
4325     anfq_fields,
4326     0,
4327     0,
4328     2,
4329     NULL,
4330     &dnfq_validate,
4331   },
4332
4333   {
4334     /* Q_GZCL - GET_ZEPHYR_CLASS */
4335     "get_zephyr_class",
4336     "gzcl",
4337     RETRIEVE,
4338     "z",
4339     ZEPHYR_TABLE,
4340     "class, xmt_type, xmt_id, sub_type, sub_id, iws_type, iws_id, iui_type, iui_id, TO_CHAR(modtime, 'DD-mon-YYYY HH24:MI:SS'), modby, modwith FROM zephyr",
4341     gzcl_fields,
4342     12,
4343     "class LIKE '%s'",
4344     1,
4345     "class",
4346     &gzcl_validate,
4347   },
4348
4349   {
4350     /* Q_AZCL - ADD_ZEPHYR_CLASS */
4351     "add_zephyr_class",
4352     "azcl",
4353     APPEND,
4354     "z",
4355     ZEPHYR_TABLE,
4356     "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)",
4357     azcl_fields,
4358     9,
4359     0,
4360     0,
4361     NULL,
4362     &azcl_validate,
4363   },
4364
4365   {
4366     /* Q_UZCL - UPDATE_ZEPHYR_CLASS */
4367     "update_zephyr_class",
4368     "uzcl",
4369     UPDATE,
4370     "z",
4371     ZEPHYR_TABLE,
4372     "zephyr SET class = '%s', xmt_type = '%s', xmt_id = %d, sub_type = '%s', sub_id = %d, iws_type = '%s', iws_id = %d, iui_type = '%s', iui_id = %d",
4373     uzcl_fields,
4374     9,
4375     "class = '%s'",
4376     1,
4377     NULL,
4378     &uzcl_validate,
4379   },
4380
4381   {
4382     /* Q_DZCL - DELETE_ZEPHYR_CLASS */
4383     "delete_zephyr_class",
4384     "dzcl",
4385     DELETE,
4386     "z",
4387     ZEPHYR_TABLE,
4388     0,
4389     uzcl_fields,
4390     0,
4391     "class = '%s'",
4392     1,
4393     NULL,
4394     &dzcl_validate,
4395   },
4396
4397   {
4398     /* Q_GSHA - GET_SERVER_HOST_ACCESS */
4399     "get_server_host_access",
4400     "gsha",
4401     RETRIEVE,
4402     "ha",
4403     HOSTACCESS_TABLE,
4404     "m.name, ha.acl_type, ha.acl_id, TO_CHAR(ha.modtime, 'DD-mon-YYYY HH24:MI:SS'), ha.modby, ha.modwith FROM hostaccess ha, machine m",
4405     gsha_fields,
4406     6,
4407     "m.name LIKE UPPER('%s') AND ha.mach_id = m.mach_id",
4408     1,
4409     "m.name",
4410     &gsha_validate,
4411   },
4412
4413   {
4414     /* Q_ASHA - ADD_SERVER_HOST_ACCESS */
4415     "add_server_host_access",
4416     "asha",
4417     APPEND,
4418     "ha",
4419     HOSTACCESS_TABLE,
4420     "INTO hostaccess (mach_id, acl_type, acl_id) VALUES (%d, '%s', %d)",
4421     asha_fields,
4422     3,
4423     0,
4424     0,
4425     NULL,
4426     &asha_validate,
4427   },
4428
4429   {
4430     /* Q_USHA - UPDATE_SERVER_HOST_ACCESS */
4431     "update_server_host_access",
4432     "usha",
4433     UPDATE,
4434     "ha",
4435     HOSTACCESS_TABLE,
4436     "hostaccess SET acl_type = '%s', acl_id = %d",
4437     asha_fields,
4438     2,
4439     "mach_id = %d",
4440     1,
4441     NULL,
4442     &asha_validate,
4443   },
4444
4445   {
4446     /* Q_DSHA - DELETE_SERVER_HOST_ACCESS */
4447     "delete_server_host_access",
4448     "dsha",
4449     DELETE,
4450     "ha",
4451     HOSTACCESS_TABLE,
4452     0,
4453     asha_fields,
4454     0,
4455     "mach_id = %d",
4456     1,
4457     NULL,
4458     &VDmach,
4459   },
4460
4461   {
4462     /* Q_GACL - GET_ACL */
4463     "get_acl",
4464     "gacl",
4465     RETRIEVE,
4466     "ac",
4467     ACL_TABLE,
4468     "m.name, ac.target, ac.kind, l.name FROM acl ac, machine m, list l",
4469     gacl_fields,
4470     4,
4471     "m.mach_id = %d AND m.mach_id = ac.mach_id AND ac.target LIKE '%s' AND l.list_id = ac.list_id",
4472     2,
4473     "m.name, ac.target, ac.kind",
4474     &gacl_validate,
4475   },
4476
4477   {
4478     /* Q_AACL - ADD_ACL */
4479     "add_acl",
4480     "aacl",
4481     APPEND,
4482     "ac",
4483     ACL_TABLE,
4484     "INTO acl (mach_id, target, kind, list_id) VALUES (%d, '%s', '%s', %d)",
4485     aacl_fields,
4486     4,
4487     0,
4488     0,
4489     NULL,
4490     &aacl_validate,
4491   },
4492
4493   {
4494     /* Q_DACL - DELETE_ACL */
4495     "delete_acl",
4496     "dacl",
4497     DELETE,
4498     "ac",
4499     ACL_TABLE,
4500     0,
4501     dacl_fields,
4502     0,
4503     "mach_id = %d AND target = '%s'",
4504     2,
4505     NULL,
4506     &gacl_validate,
4507   },
4508
4509   {
4510     /* Q_GSVC - GET_SERVICE */
4511     "get_service",
4512     "gsvc",
4513     RETRIEVE,
4514     "ss",
4515     SERVICES_TABLE,
4516     "name, protocol, port, description, TO_CHAR(modtime, 'DD-mon-YYYY HH24:MI:SS'), modby, modwith FROM services",
4517     gsvc_fields,
4518     7,
4519     "name LIKE '%s'",
4520     1,
4521     "name",
4522     &VDfix_modby,
4523   },
4524
4525   {
4526     /* Q_ASVC - ADD_SERVICE */
4527     "add_service",
4528     "asvc",
4529     APPEND,
4530     "ss",
4531     SERVICES_TABLE,
4532     "INTO services (name, protocol, port, description) VALUES ('%s', '%s', %s, NVL('%s', CHR(0)))",
4533     asvc_fields,
4534     4,
4535     NULL,
4536     0,
4537     NULL,
4538     &asvc_validate,
4539   },
4540
4541   {
4542     /* Q_DSVC - DELETE_SERVICE */
4543     "delete_service",
4544     "dsvc",
4545     DELETE,
4546     "ss",
4547     SERVICES_TABLE,
4548     0,
4549     asvc_fields,
4550     0,
4551     "name = '%s'",
4552     1,
4553     NULL,
4554     &asvc_validate,
4555   },
4556
4557   {
4558     /* Q_GPRN - GET_PRINTER */
4559     "get_printer",
4560     "gprn",
4561     RETRIEVE,
4562     "pr",
4563     PRINTERS_TABLE,
4564     "pr.name, pr.type, pr.hwtype, pr.duplexname, m1.name, m2.name, m3.name, pr.rp, m4.name, pr.ka, pr.pc, l1.name, l2.name, pr.banner, pr.location, pr.contact, TO_CHAR(pr.modtime, 'DD-mon-YYYY HH24:MI:SS'), pr.modby, pr.modwith FROM printers pr, machine m1, machine m2, machine m3, machine m4, list l1, list l2",
4565     gprn_fields,
4566     19,
4567     "pr.name LIKE '%s' AND m1.mach_id = pr.mach_id AND m2.mach_id = pr.loghost AND m3.mach_id = pr.rm AND m4.mach_id = pr.rq AND l1.list_id = pr.ac AND l2.list_id = pr.lpc_acl",
4568     1,
4569     "pr.name",
4570     &VDfix_modby,
4571   },
4572
4573   {
4574     /* Q_GPBD - GET_PRINTER_BY_DUPLEXNAME */
4575     "get_printer_by_duplexname",
4576     "gpbd",
4577     RETRIEVE,
4578     "pr",
4579     PRINTERS_TABLE,
4580     "pr.name, pr.type, pr.hwtype, pr.duplexname, m1.name, m2.name, m3.name, pr.rp, m4.name, pr.ka, pr.pc, l1.name, l2.name, pr.banner, pr.location, pr.contact, TO_CHAR(pr.modtime, 'DD-mon-YYYY HH24:MI:SS'), pr.modby, pr.modwith FROM printers pr, machine m1, machine m2, machine m3, machine m4, list l1, list l2",
4581     gpbd_fields,
4582     19,
4583     "pr.duplexname LIKE '%s' AND m1.mach_id = pr.mach_id AND m2.mach_id = pr.loghost AND m3.mach_id = pr.rm AND m4.mach_id = pr.rq AND l1.list_id = pr.ac AND l2.list_id = pr.lpc_acl",
4584     1,
4585     "pr.name",
4586     &VDfix_modby,
4587   },
4588
4589   {
4590     /* Q_GPBE - GET_PRINTER_BY_ETHERNET */
4591     "get_printer_by_ethernet",
4592     "gpbe",
4593     RETRIEVE,
4594     "pr",
4595     PRINTERS_TABLE,
4596     "pr.name, pr.type, pr.hwtype, pr.duplexname, m1.name, m2.name, m3.name, pr.rp, m4.name, pr.ka, pr.pc, l1.name, l2.name, pr.banner, pr.location, pr.contact, TO_CHAR(pr.modtime, 'DD-mon-YYYY HH24:MI:SS'), pr.modby, pr.modwith FROM printers pr, machine m1, machine m2, machine m3, machine m4, list l1, list l2",
4597     gpbd_fields,
4598     19,
4599     "m1.hwaddr LIKE LOWER('%s') AND m1.mach_id = pr.mach_id AND m2.mach_id = pr.loghost AND m3.mach_id = pr.rm AND m4.mach_id = pr.rq AND l1.list_id = pr.ac AND l2.list_id = pr.lpc_acl",
4600     1,
4601     "pr.name",
4602     &VDfix_modby,
4603   },
4604
4605   {
4606     /* Q_GPBH - GET_PRINTER_BY_HOSTNAME */
4607     "get_printer_by_hostname",
4608     "gpbh",
4609     RETRIEVE,
4610     "pr",
4611     PRINTERS_TABLE,
4612     "pr.name, pr.type, pr.hwtype, pr.duplexname, m1.name, m2.name, m3.name, pr.rp, m4.name, pr.ka, pr.pc, l1.name, l2.name, pr.banner, pr.location, pr.contact, TO_CHAR(pr.modtime, 'DD-mon-YYYY HH24:MI:SS'), pr.modby, pr.modwith FROM printers pr, machine m1, machine m2, machine m3, machine m4, list l1, list l2",
4613     gpbh_fields,
4614     19,
4615     "m1.name LIKE UPPER('%s') AND m1.mach_id = pr.mach_id AND m2.mach_id = pr.loghost AND m3.mach_id = pr.rm AND m4.mach_id = pr.rq AND l1.list_id = pr.ac AND l2.list_id = pr.lpc_acl",
4616     1,
4617     "pr.name",
4618     &VDfix_modby,
4619   },
4620
4621   {
4622     /* Q_GPBR - GET_PRINTER_BY_RM */
4623     "get_printer_by_rm",
4624     "gpbr",
4625     RETRIEVE,
4626     "pr",
4627     PRINTERS_TABLE,
4628     "pr.name, pr.type, pr.hwtype, pr.duplexname, m1.name, m2.name, m3.name, pr.rp, m4.name, pr.ka, pr.pc, l1.name, l2.name, pr.banner, pr.location, pr.contact, TO_CHAR(pr.modtime, 'DD-mon-YYYY HH24:MI:SS'), pr.modby, pr.modwith FROM printers pr, machine m1, machine m2, machine m3, machine m4, list l1, list l2",
4629     gpbr_fields,
4630     19,
4631     "m3.name LIKE UPPER('%s') AND m1.mach_id = pr.mach_id AND m2.mach_id = pr.loghost AND m3.mach_id = pr.rm AND m4.mach_id = pr.rq AND l1.list_id = pr.ac AND l2.list_id = pr.lpc_acl",
4632     1,
4633     "pr.name",
4634     &VDfix_modby,
4635   },
4636
4637   {
4638     /* Q_GPBL - GET_PRINTER_BY_LOCATION */
4639     "get_printer_by_location",
4640     "gpbl",
4641     RETRIEVE,
4642     "pr",
4643     PRINTERS_TABLE,
4644     "pr.name, pr.type, pr.hwtype, pr.duplexname, m1.name, m2.name, m3.name, pr.rp, m4.name, pr.ka, pr.pc, l1.name, l2.name, pr.banner, pr.location, pr.contact, TO_CHAR(pr.modtime, 'DD-mon-YYYY HH24:MI:SS'), pr.modby, pr.modwith FROM printers pr, machine m1, machine m2, machine m3, machine m4, list l1, list l2",
4645     gpbl_fields,
4646     19,
4647     "UPPER(pr.location) LIKE UPPER('%s') AND m1.mach_id = pr.mach_id AND m2.mach_id = pr.loghost AND m3.mach_id = pr.rm AND m4.mach_id = pr.rq AND l1.list_id = pr.ac AND l2.list_id = pr.lpc_acl",
4648     1,
4649     "pr.name",
4650     &VDfix_modby,
4651   },
4652
4653   {
4654     /* Q_GPBC - GET_PRINTER_BY_CONTACT */
4655     "get_printer_by_contact",
4656     "gpbc",
4657     RETRIEVE,
4658     "pr",
4659     PRINTERS_TABLE,
4660     "pr.name, pr.type, pr.hwtype, pr.duplexname, m1.name, m2.name, m3.name, pr.rp, m4.name, pr.ka, pr.pc, l1.name, l2.name, pr.banner, pr.location, pr.contact, TO_CHAR(pr.modtime, 'DD-mon-YYYY HH24:MI:SS'), pr.modby, pr.modwith FROM printers pr, machine m1, machine m2, machine m3, machine m4, list l1, list l2",
4661     gpbc_fields,
4662     19,
4663     "UPPER(pr.contact) LIKE UPPER('%s') AND m1.mach_id = pr.mach_id AND m2.mach_id = pr.loghost AND m3.mach_id = pr.rm AND m4.mach_id = pr.rq AND l1.list_id = pr.ac AND l2.list_id = pr.lpc_acl",
4664     1,
4665     "pr.name",
4666     &VDfix_modby,
4667   },
4668
4669   {
4670     /* Q_APRN - ADD_PRINTER */
4671     "add_printer",
4672     "aprn",
4673     APPEND,
4674     "pr",
4675     PRINTERS_TABLE,
4676     "INTO printers (name, type, hwtype, duplexname, mach_id, loghost, rm, rp, rq, ka, pc, ac, lpc_acl, banner, location, contact) VALUES ('%s', '%s', '%s', NVL('%s', CHR(0)), %d, %d, %d, NVL('%s', CHR(0)), %d, %s, %s, %d, %d, %s, NVL('%s', CHR(0)), NVL('%s', CHR(0)))",
4677     aprn_fields,
4678     16,
4679     0,
4680     0,
4681     NULL,
4682     &aprn_validate,
4683   },
4684
4685   {
4686     /* Q_UPRN - UPDATE_PRINTER */
4687     "update_printer",
4688     "uprn",
4689     UPDATE,
4690     "pr",
4691     PRINTERS_TABLE,
4692     "printers SET name = '%s', type = '%s', hwtype = '%s', duplexname = NVL('%s', CHR(0)), mach_id = %d, loghost = %d, rm = %d, rp = NVL('%s', CHR(0)), rq = %d, ka = %d, pc = %d, ac = %d, lpc_acl = %d, banner = %d, location = NVL('%s', CHR(0)), contact = NVL('%s', CHR(0))",
4693     uprn_fields,
4694     16,
4695     0,
4696     0,
4697     NULL,
4698     &uprn_validate,
4699   },
4700
4701   {
4702     /* Q_DPRN - DELETE_PRINTER */
4703     "delete_printer",
4704     "dprn",
4705     DELETE,
4706     "pr",
4707     PRINTERS_TABLE,
4708     0,
4709     aprn_fields,
4710     0,
4711     "name = '%s'",
4712     1,
4713     NULL,
4714     &dprn_validate,
4715   },
4716
4717   {
4718     /* Q_GPSV - GET_PRINT_SERVER */
4719     "get_print_server",
4720     "gpsv",
4721     RETRIEVE,
4722     "ps",
4723     PRINTSERVERS_TABLE,
4724     "m.name, ps.kind, s.string, ps.owner_type, ps.owner_id, l.name, TO_CHAR(ps.modtime, 'DD-mon-YYYY HH24:MI:SS'), ps.modby, ps.modwith FROM printservers ps, machine m, strings s, list l",
4725     gpsv_fields,
4726     9,
4727     "ps.mach_id = %d AND m.mach_id = ps.mach_id AND s.string_id = ps.printer_types AND l.list_id = ps.lpc_acl",
4728     1,
4729     NULL,
4730     &gpsv_validate,
4731   },
4732
4733   {
4734     /* Q_APSV - ADD_PRINT_SERVER */
4735     "add_print_server",
4736     "apsv",
4737     APPEND,
4738     "ps",
4739     PRINTSERVERS_TABLE,
4740     "INTO printservers (mach_id, kind, printer_types, owner_type, owner_id, lpc_acl) VALUES (%d, '%s', %d, '%s', %d, %d)",
4741     apsv_fields,
4742     6,
4743     0,
4744     0,
4745     NULL,
4746     &apsv_validate,
4747   },
4748
4749   {
4750     /* Q_UPSV - UPDATE_PRINT_SERVER */
4751     "update_print_server",
4752     "upsv",
4753     UPDATE,
4754     "ps",
4755     PRINTSERVERS_TABLE,
4756     "printservers SET kind = '%s', printer_types = %d, owner_type = '%s', owner_id = %d, lpc_acl = %d",
4757     apsv_fields,
4758     5,
4759     "mach_id = %d",
4760     1,
4761     NULL,
4762     &apsv_validate,
4763   },
4764
4765   {
4766     /* Q_DPSV - DELETE_PRINT_SERVER */
4767     "delete_print_server",
4768     "dpsv",
4769     DELETE,
4770     "ps",
4771     PRINTSERVERS_TABLE,
4772     0,
4773     dpsv_fields,
4774     0,
4775     "mach_id = %d",
4776     1,
4777     NULL,
4778     &dpsv_validate,
4779   },
4780
4781   {
4782     /* Q_GALI - GET_ALIAS */
4783     "get_alias",
4784     "gali",
4785     RETRIEVE,
4786     "a",
4787     ALIAS_TABLE,
4788     "name, type, trans FROM alias",
4789     gali_fields,
4790     3,
4791     "name LIKE '%s' AND type LIKE '%s' AND trans LIKE '%s'",
4792     3,
4793     "type, name, trans",
4794     NULL,
4795   },
4796
4797   {
4798     /* Q_AALI - ADD_ALIAS */
4799     "add_alias",
4800     "aali",
4801     APPEND,
4802     "a",
4803     ALIAS_TABLE,
4804     "INTO alias (name, type, trans) VALUES ('%s', '%s', '%s')",
4805     aali_fields,
4806     3,
4807     NULL,
4808     0,
4809     NULL,
4810     &aali_validate,
4811   },
4812
4813   {
4814     /* Q_DALI - DELETE_ALIAS */
4815     "delete_alias",
4816     "dali",
4817     DELETE,
4818     "a",
4819     ALIAS_TABLE,
4820     NULL,
4821     aali_fields,
4822     0,
4823     "name = '%s' AND type = '%s' AND  trans = '%s'",
4824     3,
4825     NULL,
4826     &dali_validate,
4827   },
4828
4829   {
4830     /* Q_GVAL - GET_VALUE */
4831     "get_value",
4832     "gval",
4833     RETRIEVE,
4834     "val",
4835     NUMVALUES_TABLE,
4836     "value FROM numvalues",
4837     gval_fields,
4838     1,
4839     "name = '%s'",
4840     1,
4841     NULL,
4842     &gval_validate,
4843   },
4844
4845   {
4846     /* Q_AVAL - ADD_VALUE */
4847     "add_value",
4848     "aval",
4849     APPEND,
4850     "val",
4851     NUMVALUES_TABLE,
4852     "INTO numvalues (name, value) VALUES ('%s', %s)",
4853     aval_fields,
4854     2,
4855     NULL,
4856     0,
4857     NULL,
4858     &aval_validate,
4859   },
4860
4861   {
4862     /* Q_UVAL - UPDATE_VALUE */
4863     "update_value",
4864     "uval",
4865     UPDATE,
4866     "val",
4867     NUMVALUES_TABLE,
4868     "numvalues SET value = %s",
4869     aval_fields,
4870     1,
4871     "name = '%s'",
4872     1,
4873     NULL,
4874     &aval_validate,
4875   },
4876
4877   {
4878     /* Q_DVAL - DELETE_VALUE */
4879     "delete_value",
4880     "dval",
4881     DELETE,
4882     "val",
4883     NUMVALUES_TABLE,
4884     NULL,
4885     dval_fields,
4886     0,
4887     "name = '%s'",
4888     1,
4889     NULL,
4890     &aval_validate,
4891   },
4892
4893   {
4894     /* Q_GATS - GET_ALL_TABLE_STATS */
4895     "get_all_table_stats",
4896     "gats",
4897     RETRIEVE,
4898     "tbs",
4899     TBLSTATS_TABLE,
4900     "table_name, appends, updates, deletes, TO_CHAR(modtime, 'DD-mon-YYYY HH24:MI:SS') FROM tblstats",
4901     gats_fields,
4902     5,
4903     NULL,
4904     0,
4905     "table_name",
4906     0,
4907   },
4908
4909   {
4910     /* Q__SDL - _SET_DEBUG_LEVEL */
4911     "_set_debug_level",
4912     "_sdl",
4913     UPDATE,
4914     NULL,
4915     0,
4916     NULL,
4917     _sdl_fields,
4918     1,
4919     NULL,
4920     0,
4921     NULL,
4922     &_sdl_validate,
4923   },
4924
4925 };
4926
4927 int QueryCount2 = (sizeof(Queries2) / sizeof(struct query));
This page took 0.430016 seconds and 5 git commands to generate.