import cyrus-sasl-2.1.23
[cyrus-sasl.git] / mac / CommonKClient / mac_kclient / mac_krb_lib1.c
1 /* $Id: mac_krb_lib1.c,v 1.3 2003/02/13 19:55:56 rjs3 Exp $
2  * Copyright (c) 1998-2003 Carnegie Mellon University.  All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  *
8  * 1. Redistributions of source code must retain the above copyright
9  *    notice, this list of conditions and the following disclaimer. 
10  *
11  * 2. Redistributions in binary form must reproduce the above copyright
12  *    notice, this list of conditions and the following disclaimer in
13  *    the documentation and/or other materials provided with the
14  *    distribution.
15  *
16  * 3. The name "Carnegie Mellon University" must not be used to
17  *    endorse or promote products derived from this software without
18  *    prior written permission. For permission or any other legal
19  *    details, please contact  
20  *      Office of Technology Transfer
21  *      Carnegie Mellon University
22  *      5000 Forbes Avenue
23  *      Pittsburgh, PA  15213-3890
24  *      (412) 268-4387, fax: (412) 268-7395
25  *      tech-transfer@andrew.cmu.edu
26  *
27  * 4. Redistributions of any form whatsoever must retain the following
28  *    acknowledgment:
29  *    "This product includes software developed by Computing Services
30  *     at Carnegie Mellon University (http://www.cmu.edu/computing/)."
31  *
32  * CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO
33  * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
34  * AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE
35  * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
36  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
37  * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
38  * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
39  */
40 /*
41  * library to emulate unix kerberos on a macintosh
42  */
43 #include <config.h>
44 #include <krb.h>
45 #include <extra_krb.h>
46 #include <kcglue_krb.h>
47
48 #include <stdlib.h>
49 #include <string.h>
50 #include <ctype.h>
51
52 #ifndef TRUE
53 #define TRUE 1
54 #endif
55 #ifndef FALSE
56 #define FALSE 0
57 #endif
58
59 #include <stdio.h>
60
61 /*
62  * given a hostname return the kerberos realm
63  * NOT thread safe....
64  */
65 char *krb_realmofhost(const char *s)
66 {
67         s=strchr(s,'.');
68         if(s==0)
69                 return "ANDREW.CMU.EDU";
70         return (char *)(s+1);
71 }
72
73 /*
74  * return the default instance to use for a given hostname
75  * NOT thread safe... but then neathoer is the real kerberos one
76  */
77 char *krb_get_phost(const char *alias)
78 {
79 #define MAX_HOST_LEN (512)
80     static char instance[MAX_HOST_LEN];
81     char *dst=instance;
82     int remaining=MAX_HOST_LEN-10;
83     while(remaining-->0) {
84         char ch= *alias++;
85         if(ch==0) break;
86         if(isupper(ch))
87                 ch=tolower(ch);
88         if(ch=='.')
89                 break;
90         *dst++=ch;
91     }
92     *dst=0;
93     return instance;
94 }