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