6 * Copyright (C) 1987 by the Massachusetts Institute of Technology
9 * Revision 1.2 1987-06-08 03:08:15 wesommer
10 * Reindented; added header.
15 static char *rcsid_qsubs_c = "$Header$";
20 extern struct query Queries[];
21 extern int QueryCount;
23 extern struct s_query S_Queries[];
24 extern int S_QueryCount;
28 get_query_by_name(name)
31 register struct query *q;
37 if (strlen(name) == 4) {
39 if (!strcmp(q->shortname, name)) return(q);
44 if (!strcmp(q->name, name)) return(q);
49 return((struct query *)0);
52 get_input_fields(q, argc, argv)
53 register struct query *q;
58 *argc = q->sargc + q->argc;
59 if (q->type == UPDATE || q->type == APPEND)
63 get_output_fields(q, argc, argv)
64 register struct query *q;
68 if (q->type == RETRIEVE) {
70 *argv = &q->fields[q->sargc + q->argc];
78 get_field(q, argv, name)
79 register struct query *q;
87 if (q->type != RETRIEVE) return((char *)0);
89 if (*name == '*') name++;
90 fp = &q->fields[q->sargc + q->argc];
91 for (i = 0; i < q->vcnt; i++) {
93 if (*field == '*') field++;
94 if (!strcmp(field, name)) return(argv[i]);
99 put_field(q, argv, name, value)
100 register struct query *q;
106 register char *field;
110 n = q->sargc + q->argc;
111 if (q->type == UPDATE || q->type == APPEND) n += q->vcnt;
113 if (*name == '*') name++;
115 for (i = 0; i < n; i++) {
117 if (*field == '*') field++;
118 if (!strcmp(field, name)) {
119 strcpy(argv[i], value);
127 /* Generic Queue Routines */
132 register struct save_queue *sq;
134 sq = (struct save_queue *)malloc(sizeof (struct save_queue));
141 sq_save_data(sq, data)
142 register struct save_queue *sq;
145 register struct save_queue *q;
147 q = (struct save_queue *)malloc(sizeof (struct save_queue));
149 q->q_prev = sq->q_prev;
150 sq->q_prev->q_next = q;
155 sq_get_data(sq, data)
156 register struct save_queue *sq;
157 register char **data;
159 if (sq->q_lastget == (struct save_queue *)0) {
160 sq->q_lastget = sq->q_next;
162 sq->q_lastget = sq->q_lastget->q_next;
165 if (sq->q_lastget == sq) return(0);
166 *data = sq->q_lastget->q_data;
171 register struct save_queue *sq;
173 register struct save_queue *q;
175 for (q = sq->q_next; q != sq; q = sq->q_next) {
176 sq->q_next = q->q_next;
187 * c-continued-statement-offset: 4
189 * c-argdecl-indent: 4