configure.in: Add SUBDIR rule in so this directory can be included into
authorTheodore Tso <tytso@mit.edu>
Sat, 22 Apr 1995 00:38:43 +0000 (00:38 +0000)
committerTheodore Tso <tytso@mit.edu>
Sat, 22 Apr 1995 00:38:43 +0000 (00:38 +0000)
libkrb5.a

prof_init.c: Modify function interface for profile_get_string and
profile_get_integer to make it simpler to use.

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@5434 dc483132-0cff-0310-8789-dd5450dbe970

src/util/profile/configure.in
src/util/profile/prof_init.c
src/util/profile/profile.h.in

index 364e45edf8884ed61888a36511ac7289517d8c23..51c2595001cd659a2501fec32accef1b1b6066a5 100644 (file)
@@ -6,4 +6,5 @@ AC_PROG_ARCHIVE
 AC_PROG_RANLIB
 ET_RULES
 CopyHeader(profile.h,$(BUILDTOP)/include)
+SubdirLibraryRule([$(OBJS)])
 V5_AC_OUTPUT_MAKEFILE
index f277737067a64a6ea7f32e3cd29685aafdf9126e..19bcc1241b457ba6bb1d8541f8b008cc9e792f32 100644 (file)
@@ -20,6 +20,8 @@ errcode_t profile_init(filenames, ret_profile)
        prf_file_t  new_file, last = 0;
        errcode_t retval;
 
+       initialize_prof_error_table();
+       
        profile = malloc(sizeof(struct _profile_t));
        if (!profile)
                return ENOMEM;
@@ -131,6 +133,10 @@ errcode_t profile_get_values(profile, names, ret_values)
     init_list(&values);
 
     file = profile->first_file;
+    retval = profile_update_file(file);
+    if (retval)
+       goto cleanup;
+    
     section = file->root;
 
     for (cpp = names; cpp[1]; cpp++) {
@@ -175,6 +181,10 @@ static errcode_t profile_get_value(profile, names, ret_value)
        return PROF_BAD_NAMESET;
 
     file = profile->first_file;
+    retval = profile_update_file(file);
+    if (retval)
+       goto cleanup;
+    
     section = file->root;
 
     for (cpp = names; cpp[1]; cpp++) {
@@ -196,37 +206,60 @@ cleanup:
     return retval;
 }
 
-errcode_t profile_get_string(profile, names, def_val, ret_string)
+errcode_t profile_get_string(profile, name, subname, subsubname,
+                            def_val, ret_string)
     profile_t  profile;
-    const char **names;
+    const char *name, *subname, *subsubname;
     const char *def_val;
     char       **ret_string;
 {
     const char *value;
     errcode_t  retval;
+    const char *names[4];
 
-    retval = profile_get_value(profile, names, &value);
-    if (retval == PROF_NO_SECTION || retval == PROF_NO_RELATION)
+    if (profile) {
+       names[0] = name;
+       names[1] = subname;
+       names[2] = subsubname;
+       names[3] = 0;
+       retval = profile_get_value(profile, names, &value);
+       if (retval == PROF_NO_SECTION || retval == PROF_NO_RELATION)
+           value = def_val;
+       else if (retval)
+           return retval;
+    } else
        value = def_val;
-    else if (retval)
-       return retval;
     
-    *ret_string = malloc(strlen(value)+1);
-    if (*ret_string == 0)
-       return ENOMEM;
-    strcpy(*ret_string, value);
+    if (value) {
+       *ret_string = malloc(strlen(value)+1);
+       if (*ret_string == 0)
+           return ENOMEM;
+       strcpy(*ret_string, value);
+    } else
+       *ret_string = 0;
     return 0;
 }
 
-errcode_t profile_get_integer(profile, names, def_val, ret_int)
+errcode_t profile_get_integer(profile, name, subname, subsubname,
+                             def_val, ret_int)
     profile_t  profile;
-    const char **names;
+    const char *name, *subname, *subsubname;
     int                def_val;
     int                *ret_int;
 {
    char        *value;
    errcode_t   retval;
+    const char *names[4];
+
+   if (profile == 0) {
+       *ret_int = def_val;
+       return 0;
+   }
 
+   names[0] = name;
+   names[1] = subname;
+   names[2] = subsubname;
+   names[3] = 0;
    retval = profile_get_value(profile, names, &value);
    if (retval == PROF_NO_SECTION || retval == PROF_NO_RELATION) {
        *ret_int = def_val;
index afa2a3032894252dd1be9ac936d10b8971b5dbf5..3d34d082c4f8cecf6468934b4fe17fb2ed5e7196 100644 (file)
@@ -20,9 +20,11 @@ extern long profile_get_values
        PROTOTYPE ((profile_t profile, const char **names, char ***ret_values));
 
 extern long profile_get_string
-       PROTOTYPE((profile_t profile, const char **names, const char *def_val,
+       PROTOTYPE((profile_t profile, const char *name, const char *subname, 
+                       const char *subsubname, const char *def_val,
                        char **ret_string));
 extern long profile_get_integer
-       PROTOTYPE((profile_t profile, const char **names, int def_val,
+       PROTOTYPE((profile_t profile, const char *name, const char *subname,
+                       const char *subsubname, int def_val,
                        int *ret_default));