9 #include <moira_site.h>
10 EXEC SQL INCLUDE sqlca;
31 struct entry *e, *get_next_entry();
33 char buf[BUFSIZ], *file = NULL, *p, *p1;
36 whoami = rindex(argv[0], '/');
42 for (i = 1; i < argc; i++) {
43 if (!strcmp(argv[i], "-w"))
45 else if (!strcmp(argv[i], "-D"))
46 setenv("ING_SET", "set printqry");
47 else if (!strcmp(argv[i], "-d"))
49 else if (file != NULL)
50 fprintf(stderr, "Usage: %s [-w] [-D] [-n] inputfile\n", whoami);
55 in = fopen(file, "r");
57 fprintf(stderr, "Unable to open %s for input\n", file);
64 EXEC SQL CONNECT moira;
65 if (sqlca.sqlcode != 0) {
66 com_err(whoami, 0, "ingres error %d", sqlca.sqlcode);
70 while (e = get_next_entry(in)) {
75 for (p1 = e->login; *p1; p1++)
77 for (; p < &(e->line[54]); p++)
79 fputs(e->line, stdout);
93 struct entry *get_next_entry(in)
96 static struct entry e;
97 static char buf[BUFSIZ];
99 if (fgets(buf, sizeof(buf), in) == NULL)
100 return((struct entry *)NULL);
103 strncpy(e.last, &buf[4], 18);
105 strncpy(e.first, &buf[22], 13);
107 strncpy(e.middle, &buf[35], 10);
118 static int nyear = 0;
119 EXEC SQL BEGIN DECLARE SECTION;
120 char *last, *first, *middle, *login, class[10];
121 EXEC SQL END DECLARE SECTION;
127 gettimeofday(&tv, NULL);
128 tm = localtime(&tv.tv_sec);
136 LookForJrAndIII(e->last, &dummy, &dummy, &dummy, &dummy, &dummy, &dummy);
137 LookForJrAndIII(e->first, &dummy, &dummy, &dummy, &dummy, &dummy, &dummy);
148 printf("Got last: %s, first %s, middle %s, class %c\n",
149 last, first, middle, e->class);
150 EXEC SQL REPEATED SELECT login INTO :login FROM users
151 WHERE last = :last and first = :first and middle = :middle and
153 if (sqlca.sqlcode != 0) {
154 if (sqlca.sqlcode == 100) {
155 EXEC SQL REPEATED SELECT login INTO :login FROM users
156 WHERE last = :last and first = :first and status != 3;
157 if (sqlca.sqlcode != 0) {
158 fprintf(stderr, "User %s %s not found.\n", strtrim(e->first),
162 } else if (sqlca.sqlcode == -40100) {
163 sprintf(class, "%d", nyear + 4 - e->class - '0' + 1900);
164 EXEC SQL REPEATED SELECT login INTO :login FROM users
165 WHERE last = :last and first = :first and middle = :middle
166 and type = :class and status != 3;
167 if (sqlca.sqlcode != 0) {
168 fprintf(stderr, "Could not match class on %s %s %c (Error %d)\n",
169 strtrim(e->first), strtrim(e->last), e->class, sqlca.sqlcode);
173 fprintf(stderr, "Error %d on %s\n", sqlca.sqlcode, e->line);
177 strncpy(e->login, login, 8);
180 printf("Got username %s\n", login);