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