From: Alexandra Ellwood Date: Thu, 4 Nov 2004 19:34:24 +0000 (+0000) Subject: pullup from trunk X-Git-Tag: krb5-1.4.3-beta1~172 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=9d28fe99b7d87ef789627fc827cf53324644e2c6;p=krb5.git pullup from trunk ticket: 2751 version_fixed: 1.4 git-svn-id: svn://anonsvn.mit.edu/krb5/branches/krb5-1-4@16861 dc483132-0cff-0310-8789-dd5450dbe970 --- diff --git a/src/util/profile/ChangeLog b/src/util/profile/ChangeLog index f475a8476..b736e5d08 100644 --- a/src/util/profile/ChangeLog +++ b/src/util/profile/ChangeLog @@ -1,3 +1,9 @@ +2004-11-04 Alexandra Ellwood + + * prof_init.c, profile.hin: added profile_is_modified + and profile_is_writable so that callers can check to see + if profile_release() will fail before calling it. + 2004-11-04 Alexandra Ellwood * prof_set.c: profile calls which set values should not fail diff --git a/src/util/profile/prof_init.c b/src/util/profile/prof_init.c index 02d61ee1f..0be2a0e53 100644 --- a/src/util/profile/prof_init.c +++ b/src/util/profile/prof_init.c @@ -120,6 +120,36 @@ profile_init_path(const_profile_filespec_list_t filepath, return retval; } +errcode_t KRB5_CALLCONV +profile_is_writable(profile_t profile, int *writable) +{ + if (!profile || profile->magic != PROF_MAGIC_PROFILE) + return PROF_MAGIC_PROFILE; + + if (!writable) + return EINVAL; + + if (profile->first_file) + *writable = (profile->first_file->data->flags & PROFILE_FILE_RW); + + return 0; +} + +errcode_t KRB5_CALLCONV +profile_is_modified(profile_t profile, int *modified) +{ + if (!profile || profile->magic != PROF_MAGIC_PROFILE) + return PROF_MAGIC_PROFILE; + + if (!modified) + return EINVAL; + + if (profile->first_file) + *modified = (profile->first_file->data->flags & PROFILE_FILE_DIRTY); + + return 0; +} + errcode_t KRB5_CALLCONV profile_flush(profile_t profile) { diff --git a/src/util/profile/profile.hin b/src/util/profile/profile.hin index ec822ca8b..10abe725a 100644 --- a/src/util/profile/profile.hin +++ b/src/util/profile/profile.hin @@ -54,6 +54,11 @@ long KRB5_CALLCONV profile_flush_to_buffer void KRB5_CALLCONV profile_free_buffer (profile_t profile, char *buf); +long KRB5_CALLCONV profile_is_writable + (profile_t profile, int *writable); +long KRB5_CALLCONV profile_is_modified + (profile_t profile, int *modified); + void KRB5_CALLCONV profile_abandon (profile_t profile);