]> andersk Git - moira.git/blob - server/mr_glue.c
Moved header file locations
[moira.git] / server / mr_glue.c
1 /*
2  *      $Source$
3  *      $Author$
4  *      $Header$
5  *
6  *      Copyright (C) 1987 by the Massachusetts Institute of Technology
7  *
8  *      Glue routines to allow the database stuff to be linked in to
9  *      a program expecting a library level interface.
10  * 
11  *      $Log$
12  *      Revision 1.4  1987-09-21 15:17:09  wesommer
13  *      Also need to initialize pseudo_client.clname.
14  *
15  * Revision 1.3  87/08/22  17:31:56  wesommer
16  * Fix a "fall-through".
17  * 
18  * Revision 1.2  87/07/29  16:03:58  wesommer
19  * Initialize krb_realm.
20  * 
21  * Revision 1.1  87/07/14  00:41:18  wesommer
22  * Initial revision
23  * 
24  */
25
26 #ifndef lint
27 static char *rcsid_sms_glue_c = "$Header$";
28 #endif lint
29
30 #include "sms_server.h"
31 #include <krb.h>                /* XXX for error codes */
32 #include <pwd.h>
33 static int already_connected = 0;
34
35 #define CHECK_CONNECTED { if (!already_connected) return SMS_NOT_CONNECTED; }
36
37 static client pseudo_client;
38 extern int krb_err_base;
39 extern char *malloc();
40
41 sms_connect()
42 {
43     register int status;
44
45     if (already_connected) return SMS_ALREADY_CONNECTED;
46
47     init_sms_err_tbl();
48     init_krb_err_tbl();
49     bzero((char *)&pseudo_client, sizeof(pseudo_client)); /* XXX */
50
51     status =  sms_open_database();
52     if (!status) already_connected = 1;
53     return status;
54 }
55
56 sms_disconnect()
57 {
58     CHECK_CONNECTED;
59     sms_close_database();
60     already_connected = 0;
61     return 0;
62 }
63
64 sms_noop()
65 {
66     CHECK_CONNECTED;
67     return 0;
68 }
69 /*
70  * This routine is rather bogus, as it only fills in who you claim to be.
71  */
72 sms_auth()
73 {
74     struct passwd *pw;
75     extern char *krb_realm;
76     char buf[1024];
77     
78     CHECK_CONNECTED;
79     pw = getpwuid(getuid());
80     if (!pw) return (KDC_PR_UNKNOWN + krb_err_base); /* XXX hack (we 
81                                                     * need an extended 
82                                                     * error code table)
83                                                     */
84     strcpy(pseudo_client.kname.name, pw->pw_name);
85     get_krbrlm(pseudo_client.kname.realm, 1);
86     krb_realm = pseudo_client.kname.realm;
87
88     strcpy(buf, pw->pw_name);
89     strcat(buf, "@");
90     strcat(buf, pseudo_client.kname.realm);
91     pseudo_client.clname = malloc(strlen(buf)+1);
92     strcpy(pseudo_client.clname, buf);
93     return 0;
94 }
95
96 int sms_query(name, argc, argv, callproc, callarg)
97     char *name;         /* Query name */
98     int argc;           /* Arg count */
99     char **argv;                /* Args */
100     int (*callproc)();  /* Callback procedure */
101     char *callarg;              /* Callback argument */
102 {
103     return sms_process_query(&pseudo_client, name, argc, argv,
104                              callproc, callarg);
105 }
106
107 int sms_access(name, argc, argv)
108     char *name;                 /* Query name */
109     int argc;                   /* Arg count */
110     char **argv;                /* Args */
111 {
112     return sms_check_access(&pseudo_client, name, argc, argv);
113 }
114
115 int sms_query_internal(argc, argv, callproc, callarg)
116     int argc;
117     char **argv;
118     int (*callproc)();
119     char *callarg;
120 {
121     return sms_process_query(&pseudo_client, argv[0], argc-1, argv+1,
122                              callproc, callarg);
123 }
124
125 int sms_access_internal(argc, argv)
126     int argc;
127     char **argv;
128 {
129     return sms_check_access(&pseudo_client, argv[0], argc-1, argv+1);
130 }
131
132 sms_shutdown(why)
133     char *why;
134 {
135     fprintf(stderr, "Sorry, not implemented\n");
136 }
137
138 /*
139  * Local Variables:
140  * mode: c
141  * c-indent-level: 4
142  * c-continued-statement-offset: 4
143  * c-brace-offset: -4
144  * c-argdecl-indent: 4
145  * c-label-offset: -4
146  * End:
147  */
This page took 0.049441 seconds and 5 git commands to generate.