No empty .Rs/.Re
[netbsd-mini2440.git] / crypto / dist / heimdal / lib / krb5 / appdefault.c
blob61b80a2c1b63851ec46c440e0b5b907b684551c8
1 /*
2 * Copyright (c) 2000 - 2001 Kungliga Tekniska Högskolan
3 * (Royal Institute of Technology, Stockholm, Sweden).
4 * All rights reserved.
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
13 * 2. Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in the
15 * documentation and/or other materials provided with the distribution.
17 * 3. Neither the name of the Institute nor the names of its contributors
18 * may be used to endorse or promote products derived from this software
19 * without specific prior written permission.
21 * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
22 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
25 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31 * SUCH DAMAGE.
34 #include "krb5_locl.h"
36 __RCSID("$Heimdal: appdefault.c 14465 2005-01-05 05:40:59Z lukeh $"
37 "$NetBSD$");
39 void KRB5_LIB_FUNCTION
40 krb5_appdefault_boolean(krb5_context context, const char *appname,
41 krb5_const_realm realm, const char *option,
42 krb5_boolean def_val, krb5_boolean *ret_val)
45 if(appname == NULL)
46 appname = getprogname();
48 def_val = krb5_config_get_bool_default(context, NULL, def_val,
49 "libdefaults", option, NULL);
50 if(realm != NULL)
51 def_val = krb5_config_get_bool_default(context, NULL, def_val,
52 "realms", realm, option, NULL);
54 def_val = krb5_config_get_bool_default(context, NULL, def_val,
55 "appdefaults",
56 option,
57 NULL);
58 if(realm != NULL)
59 def_val = krb5_config_get_bool_default(context, NULL, def_val,
60 "appdefaults",
61 realm,
62 option,
63 NULL);
64 if(appname != NULL) {
65 def_val = krb5_config_get_bool_default(context, NULL, def_val,
66 "appdefaults",
67 appname,
68 option,
69 NULL);
70 if(realm != NULL)
71 def_val = krb5_config_get_bool_default(context, NULL, def_val,
72 "appdefaults",
73 appname,
74 realm,
75 option,
76 NULL);
78 *ret_val = def_val;
81 void KRB5_LIB_FUNCTION
82 krb5_appdefault_string(krb5_context context, const char *appname,
83 krb5_const_realm realm, const char *option,
84 const char *def_val, char **ret_val)
86 if(appname == NULL)
87 appname = getprogname();
89 def_val = krb5_config_get_string_default(context, NULL, def_val,
90 "libdefaults", option, NULL);
91 if(realm != NULL)
92 def_val = krb5_config_get_string_default(context, NULL, def_val,
93 "realms", realm, option, NULL);
95 def_val = krb5_config_get_string_default(context, NULL, def_val,
96 "appdefaults",
97 option,
98 NULL);
99 if(realm != NULL)
100 def_val = krb5_config_get_string_default(context, NULL, def_val,
101 "appdefaults",
102 realm,
103 option,
104 NULL);
105 if(appname != NULL) {
106 def_val = krb5_config_get_string_default(context, NULL, def_val,
107 "appdefaults",
108 appname,
109 option,
110 NULL);
111 if(realm != NULL)
112 def_val = krb5_config_get_string_default(context, NULL, def_val,
113 "appdefaults",
114 appname,
115 realm,
116 option,
117 NULL);
119 if(def_val != NULL)
120 *ret_val = strdup(def_val);
121 else
122 *ret_val = NULL;
125 void KRB5_LIB_FUNCTION
126 krb5_appdefault_time(krb5_context context, const char *appname,
127 krb5_const_realm realm, const char *option,
128 time_t def_val, time_t *ret_val)
130 krb5_deltat t;
131 char *val;
133 krb5_appdefault_string(context, appname, realm, option, NULL, &val);
134 if (val == NULL) {
135 *ret_val = def_val;
136 return;
138 if (krb5_string_to_deltat(val, &t))
139 *ret_val = def_val;
140 else
141 *ret_val = t;
142 free(val);