]> andersk Git - moira.git/blame - regtape/vote.dc
sync'ing files for RCS->CVS migration
[moira.git] / regtape / vote.dc
CommitLineData
2f791b66 1/* $Header$
2 */
3
4#include <stdio.h>
5#include <strings.h>
6#include <ctype.h>
7#include <sys/time.h>
8#include <moira.h>
9#include <moira_site.h>
10EXEC SQL INCLUDE sqlca;
11
12
13struct entry {
14 char *line;
b7a336e2 15 char id[19];
2f791b66 16 char login[9];
17};
18
19char *whoami;
20int debug;
21
22
23main(argc, argv)
24int argc;
25char **argv;
26{
27 FILE *in;
28 struct entry *e, *get_next_entry();
29 int i, wait = 0;
30 char buf[BUFSIZ], *file = NULL, *p, *p1;
31
32 debug = 0;
33 whoami = rindex(argv[0], '/');
34 if (whoami)
35 whoami++;
36 else
37 whoami = argv[0];
38
39 for (i = 1; i < argc; i++) {
40 if (!strcmp(argv[i], "-w"))
41 wait++;
42 else if (!strcmp(argv[i], "-D"))
43 setenv("ING_SET", "set printqry");
44 else if (!strcmp(argv[i], "-d"))
45 debug = 1;
46 else if (file != NULL)
47 fprintf(stderr, "Usage: %s [-w] [-D] [-n] inputfile\n", whoami);
48 else
49 file = argv[i];
50 }
51
52 in = fopen(file, "r");
53 if (in == NULL) {
54 fprintf(stderr, "Unable to open %s for input\n", file);
55 exit(1);
56 }
57
58 setlinebuf(stdout);
59 setlinebuf(stderr);
60
61 EXEC SQL CONNECT moira;
62 if (sqlca.sqlcode != 0) {
63 com_err(whoami, 0, "ingres error %d", sqlca.sqlcode);
64 exit(1);
65 }
66
67 while (e = get_next_entry(in)) {
68 i = process_entry(e);
69 EXEC SQL COMMIT WORK;
70 if (i == 0) {
b7a336e2 71 p = &(e->line[0]);
2f791b66 72 for (p1 = e->login; *p1; p1++)
73 *p++ = *p1;
b7a336e2 74 for (; p < &(e->line[10]); p++)
2f791b66 75 *p = ' ';
76 fputs(e->line, stdout);
77 }
78 if (wait) {
79 printf("Next");
80 fflush(stdout);
81 gets(buf);
82 }
83 }
84
85 exit(0);
86}
87
88
89
90struct entry *get_next_entry(in)
91FILE *in;
92{
93 static struct entry e;
94 static char buf[BUFSIZ];
95
96 if (fgets(buf, sizeof(buf), in) == NULL)
97 return((struct entry *)NULL);
98
99 e.line = &buf[0];
b7a336e2 100 strncpy(e.id, &buf[0], 9);
101 e.id[9] = 0;
102 e.login[0] = 0;
2f791b66 103 return(&e);
104}
105
106
107process_entry(e)
108struct entry *e;
109{
2f791b66 110 EXEC SQL BEGIN DECLARE SECTION;
b7a336e2 111 char *id, *login;
2f791b66 112 EXEC SQL END DECLARE SECTION;
113
b7a336e2 114 id = e->id;
2f791b66 115 login = e->login;
2f791b66 116 EXEC SQL REPEATED SELECT login INTO :login FROM users
b7a336e2 117 WHERE clearid = :id;
2f791b66 118 if (sqlca.sqlcode != 0) {
b7a336e2 119 fprintf(stderr, "Error %d on %s\n", sqlca.sqlcode, e->line);
120 return(-1);
2f791b66 121 }
122 strncpy(e->login, login, 8);
123 e->login[8] = 0;
124 if (debug)
125 printf("Got username %s\n", login);
126 return(0);
127}
This page took 0.153095 seconds and 5 git commands to generate.