]> andersk Git - moira.git/blob - server/mr_glue.c
Added last_time_used field to client structure.
[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.1  1987-07-14 00:41:18  wesommer
13  *      Initial revision
14  *
15  */
16
17 #ifndef lint
18 static char *rcsid_sms_glue_c = "$Header$";
19 #endif lint
20
21 #include "sms_server.h"
22 #include <krb.h>                /* XXX for error codes */
23 #include <pwd.h>
24 static int already_connected = 0;
25
26 #define CHECK_CONNECTED { if (!already_connected) return SMS_NOT_CONNECTED; }
27
28 static client pseudo_client;
29 extern int krb_err_base;
30
31 sms_connect()
32 {
33     register int status;
34
35     if (already_connected) return SMS_ALREADY_CONNECTED;
36
37     init_sms_err_tbl();
38     init_krb_err_tbl();
39     bzero((char *)&pseudo_client, sizeof(pseudo_client)); /* XXX */
40
41     status =  sms_open_database();
42     if (!status) already_connected = 1;
43     return status;
44 }
45
46 sms_disconnect()
47 {
48     CHECK_CONNECTED;
49     sms_close_database();
50     already_connected = 0;
51     return 0;
52 }
53
54 sms_noop()
55 {
56     CHECK_CONNECTED;
57     return 0;
58 }
59 /*
60  * This routine is rather bogus, as it only fills in who you claim to be.
61  */
62 sms_auth()
63 {
64     struct passwd *pw;
65     
66     CHECK_CONNECTED;
67     pw = getpwuid(getuid());
68     if (!pw) return (KDC_PR_UNKNOWN + krb_err_base); /* XXX hack (we 
69                                                     * need an extended 
70                                                     * error code table)
71                                                     */
72     strcpy(pseudo_client.kname.name, pw->pw_name);
73     get_krbrlm(pseudo_client.kname.realm, 1);
74 }
75
76 int sms_query(name, argc, argv, callproc, callarg)
77     char *name;         /* Query name */
78     int argc;           /* Arg count */
79     char **argv;                /* Args */
80     int (*callproc)();  /* Callback procedure */
81     char *callarg;              /* Callback argument */
82 {
83     return sms_process_query(&pseudo_client, name, argc, argv,
84                              callproc, callarg);
85 }
86
87 int sms_access(name, argc, argv)
88     char *name;                 /* Query name */
89     int argc;                   /* Arg count */
90     char **argv;                /* Args */
91 {
92     return sms_check_access(&pseudo_client, name, argc, argv);
93 }
94
95 int sms_query_internal(argc, argv, callproc, callarg)
96     int argc;
97     char **argv;
98     int (*callproc)();
99     char *callarg;
100 {
101     return sms_process_query(&pseudo_client, argv[0], argc-1, argv+1,
102                              callproc, callarg);
103 }
104
105 int sms_access_internal(argc, argv)
106     int argc;
107     char **argv;
108 {
109     return sms_check_access(&pseudo_client, argv[0], argc-1, argv+1);
110 }
111
112 sms_shutdown(why)
113     char *why;
114 {
115     fprintf(stderr, "Sorry, not implemented\n");
116 }
117
118 /*
119  * Local Variables:
120  * mode: c
121  * c-indent-level: 4
122  * c-continued-statement-offset: 4
123  * c-brace-offset: -4
124  * c-argdecl-indent: 4
125  * c-label-offset: -4
126  * End:
127  */
This page took 0.043079 seconds and 5 git commands to generate.