1 | /* $Id: genwords.pc 3956 2010-01-05 20:56:56Z zacheiss $ |
---|
2 | * |
---|
3 | * Utility program to generate magic words for a given ID |
---|
4 | * |
---|
5 | * Copyright (C) 1998 by the Massachusetts Institute of Technology |
---|
6 | * For copying and distribution information, please see the file |
---|
7 | * <mit-copyright.h>. |
---|
8 | * |
---|
9 | */ |
---|
10 | |
---|
11 | #include <mit-copyright.h> |
---|
12 | #include <moira.h> |
---|
13 | #include <moira_schema.h> |
---|
14 | #include "reg_svr.h" |
---|
15 | |
---|
16 | #include <stdio.h> |
---|
17 | #include <stdlib.h> |
---|
18 | |
---|
19 | EXEC SQL INCLUDE sqlca; |
---|
20 | |
---|
21 | RCSID("$HeadURL: svn+ssh://svn.mit.edu/moira/trunk/moira/reg_svr/genwords.pc $ $Id: genwords.pc 3956 2010-01-05 20:56:56Z zacheiss $"); |
---|
22 | |
---|
23 | int main(int argc, char **argv) |
---|
24 | { |
---|
25 | char *words[6]; |
---|
26 | int verb; |
---|
27 | |
---|
28 | if (argc > 1 && !strcmp(argv[1], "-v")) |
---|
29 | { |
---|
30 | verb++; |
---|
31 | argv++; |
---|
32 | argc--; |
---|
33 | } |
---|
34 | |
---|
35 | if (argc != 2) |
---|
36 | { |
---|
37 | fprintf(stderr, "Usage: genwords [-v] id\n"); |
---|
38 | exit(1); |
---|
39 | } |
---|
40 | |
---|
41 | if (!read_hmac_key()) |
---|
42 | { |
---|
43 | fprintf(stderr, "Couldn't read hmac key\n"); |
---|
44 | exit(1); |
---|
45 | } |
---|
46 | |
---|
47 | getwordlist(argv[1], words); |
---|
48 | if (verb) |
---|
49 | { |
---|
50 | EXEC SQL BEGIN DECLARE SECTION; |
---|
51 | char first[USERS_FIRST_SIZE], middle[USERS_MIDDLE_SIZE]; |
---|
52 | char last[USERS_LAST_SIZE], *id, *database = "moira"; |
---|
53 | EXEC SQL END DECLARE SECTION; |
---|
54 | |
---|
55 | EXEC SQL CONNECT :database IDENTIFIED BY :database; |
---|
56 | |
---|
57 | id = argv[1]; |
---|
58 | EXEC SQL SELECT first, middle, last INTO :first, :middle, :last |
---|
59 | FROM users WHERE clearid = :id; |
---|
60 | if (sqlca.sqlcode) |
---|
61 | { |
---|
62 | sprintf(first, "%d", sqlca.sqlcode); |
---|
63 | *middle = *last = '\0'; |
---|
64 | } |
---|
65 | else |
---|
66 | { |
---|
67 | strtrim(first); |
---|
68 | strtrim(middle); |
---|
69 | strtrim(last); |
---|
70 | } |
---|
71 | |
---|
72 | printf("(%s%s%s %s) (%s) (%s) (%s) (%s) (%s) (%s) (%s) dopage\n", |
---|
73 | first, *middle ? " " : "", middle, last, id, |
---|
74 | words[0], words[1], words[2], words[3], words[4], words[5]); |
---|
75 | } |
---|
76 | else |
---|
77 | { |
---|
78 | printf("%s %s %s %s %s %s\n", words[0], words[1], words[2], |
---|
79 | words[3], words[4], words[5]); |
---|
80 | } |
---|
81 | } |
---|
82 | |
---|
83 | /* used by words.c */ |
---|
84 | void *xmalloc(size_t size) |
---|
85 | { |
---|
86 | /* we won't run out of memory here */ |
---|
87 | return malloc(size); |
---|
88 | } |
---|