6 * Copyright (C) 1987 by the Massachusetts Institute of Technology
8 * Glue routines to allow the database stuff to be linked in to
9 * a program expecting a library level interface.
12 * Revision 1.4 1987-09-21 15:17:09 wesommer
13 * Also need to initialize pseudo_client.clname.
15 * Revision 1.3 87/08/22 17:31:56 wesommer
16 * Fix a "fall-through".
18 * Revision 1.2 87/07/29 16:03:58 wesommer
19 * Initialize krb_realm.
21 * Revision 1.1 87/07/14 00:41:18 wesommer
27 static char *rcsid_sms_glue_c = "$Header$";
30 #include "sms_server.h"
31 #include <krb.h> /* XXX for error codes */
33 static int already_connected = 0;
35 #define CHECK_CONNECTED { if (!already_connected) return SMS_NOT_CONNECTED; }
37 static client pseudo_client;
38 extern int krb_err_base;
39 extern char *malloc();
45 if (already_connected) return SMS_ALREADY_CONNECTED;
49 bzero((char *)&pseudo_client, sizeof(pseudo_client)); /* XXX */
51 status = sms_open_database();
52 if (!status) already_connected = 1;
60 already_connected = 0;
70 * This routine is rather bogus, as it only fills in who you claim to be.
75 extern char *krb_realm;
79 pw = getpwuid(getuid());
80 if (!pw) return (KDC_PR_UNKNOWN + krb_err_base); /* XXX hack (we
84 strcpy(pseudo_client.kname.name, pw->pw_name);
85 get_krbrlm(pseudo_client.kname.realm, 1);
86 krb_realm = pseudo_client.kname.realm;
88 strcpy(buf, pw->pw_name);
90 strcat(buf, pseudo_client.kname.realm);
91 pseudo_client.clname = malloc(strlen(buf)+1);
92 strcpy(pseudo_client.clname, buf);
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 */
103 return sms_process_query(&pseudo_client, name, argc, argv,
107 int sms_access(name, argc, argv)
108 char *name; /* Query name */
109 int argc; /* Arg count */
110 char **argv; /* Args */
112 return sms_check_access(&pseudo_client, name, argc, argv);
115 int sms_query_internal(argc, argv, callproc, callarg)
121 return sms_process_query(&pseudo_client, argv[0], argc-1, argv+1,
125 int sms_access_internal(argc, argv)
129 return sms_check_access(&pseudo_client, argv[0], argc-1, argv+1);
135 fprintf(stderr, "Sorry, not implemented\n");
142 * c-continued-statement-offset: 4
144 * c-argdecl-indent: 4