summaryrefslogtreecommitdiffstats
path: root/src/util/profile/prof_int.h
Commit message (Collapse)AuthorAgeFilesLines
* Include autoconf.h before system headersGreg Hudson2014-07-081-4/+4
| | | | | | | | | Include autoconf.h (either directly or via proxy) before system headers, so that feature test macros defined there can affect the system namespace. Where include order was changed, eliminate some redundant or unnecessary includes. ticket: 7961
* Eliminate internal fixed-width type wrappersGreg Hudson2014-02-261-1/+1
| | | | | Directly use stdint.h names for integer types in preference to the various internal names we have made up for them.
* Assume mutex locking cannot failGreg Hudson2013-05-141-2/+2
| | | | | | | | | | | | Locking and unlocking a non-recursive mutex is a simple memory operation and should not fail on any reasonable platform with correct usage. A pthread mutex can return EDEADLK on lock or EPERM on unlock, or EINVAL if the mutex is uninitialized, but all of these conditions would reflect serious bugs in the calling code. Change the k5_mutex_lock and k5_mutex_unlock wrappers to return void and adjust all call sites. Propagate this change through k5_cc_mutex_lock and k5_cc_mutex_unlock as well.
* Add support for loadable profile modulesGreg Hudson2011-07-201-6/+17
| | | | | | ticket: 6929 git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@25025 dc483132-0cff-0310-8789-dd5450dbe970
* Add libprofile support for vtable-backed profilesGreg Hudson2011-07-201-2/+5
| | | | | | ticket: 6929 git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@25024 dc483132-0cff-0310-8789-dd5450dbe970
* The "comment" field of prf_data_t was never actually set nor used, soKen Raeburn2009-12-281-1/+0
| | | | | | delete it and all references. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@23524 dc483132-0cff-0310-8789-dd5450dbe970
* make mark-cstyleTom Yu2009-10-311-5/+5
| | | | | | make reindent git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@23100 dc483132-0cff-0310-8789-dd5450dbe970
* reduce some mutex performance problems in profile libraryKen Raeburn2009-06-181-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In profile_node_iterator we unlock a mutex in order to call profile_update_file_data, which wants to lock that mutex itself, and then when it returns we re-lock the mutex. (We don't use recursive mutexes, and I would continue to argue that we shouldn't.) On the Mac, when running multiple threads, it appears that this results in very poor peformance, and much system and user CPU time is spent working with the locks. (Linux doesn't seem to suffer as much.) So: Split profile_update_file_data into a locking wrapper, and an inner routine that does the real work but requires that the lock be held on entry. Call the latter from profile_node_iterator *without* unlocking first, and only unlock if there's an error. This doesn't move any significant amount of work into the locking region; it pretty much just joins locking regions that were disjoint for no good reason. On my tests on an 8-core Mac, in a test program running gss_init_sec_context in a loop in 6 threads, this brought CPU usage per call down by 40%, and improved wall-clock time even more. Single-threaded performance improved very slightly, probably in the noise. Linux showed modest improvement (5% or less) in CPU usage in a 3-thread test on a 4-core system. Similar tests with gss_accept_sec_context showed similar contention around the profile-library mutexes, but I haven't analyzed the performance changes there from this patch. More work is needed, but this will help. ticket: 6515 tags: pullup target_version: 1.7.1 version_reported: 1.7 git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@22418 dc483132-0cff-0310-8789-dd5450dbe970
* Profile library should not call rw_access earlier than neededAlexandra Ellwood2008-05-271-3/+9
| | | | | | | | | | Call rw_access lazily so we only call access just before we need to write to the file to avoid calling access as often. Deprecated bit in profile structures to track writability. ticket: new git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@20341 dc483132-0cff-0310-8789-dd5450dbe970
* Fix krb5_get_profile to create a new profile duplicating the list ofKen Raeburn2006-06-241-0/+2
| | | | | | | | | | | | | | | | files from the one in the provided context, instead of constructing and checking the file list from scratch. Uses a new function in the profile library, not put into the public API yet. * util/profile/prof_init.c (profile_copy): New function. * util/profile/prof_int.h (profile_copy): Declare it. * lib/krb5/os/Makefile.in (LOCALINCLUDES): Look in the profile source dir. * lib/krb5/os/init_os_ctx.c (krb5_get_profile): Replace all the previous code with a call to profile_copy. ticket: 3925 git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@18209 dc483132-0cff-0310-8789-dd5450dbe970
* * prof_int.h (SIZEOF_INT, SIZEOF_SHORT, SIZEOF_LONG)[_WIN32]: Don't defineKen Raeburn2006-03-311-6/+0
| | | | | | | | | * configure.in: Don't test sizes of types. * prof_init.c: Include stdint.h and inttypes.h if available. (prof_int32): Always define as int32_t. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@17815 dc483132-0cff-0310-8789-dd5450dbe970
* Delete setting and testing of STAT_ONCE_PER_SECOND, just always do itKen Raeburn2005-10-211-4/+0
| | | | git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@17449 dc483132-0cff-0310-8789-dd5450dbe970
* profile library should check high-resolution timestamps if availableKen Raeburn2005-03-131-0/+1
| | | | | | | | | | | | | | | | | | | | | With the current profile code, it's possible for a file to be read when partially written, with the writing of the new file contents being completed within the same 1-second clock value, causing the profile code not to re-read the contents. Using a higher-resolution timestamp, available on many systems now, should help reduce that window. (Checking file sizes should also, consider doing that separately.) * configure.in: Check struct stat for fields st_mtimensec, st_mtimespec.tv_nsec, and st_mtim.tv_usec. * prof_file.c (profile_update_file_data): If one of them is found, use it as the fractional part of the timestamp. Do re-read the file if the fractional parts don't match. * prof_int.h (struct _prf_data_t): Add new field frac_ts. ticket: new status: open git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@17121 dc483132-0cff-0310-8789-dd5450dbe970
* possible profile null pointer deref in threaded appKen Raeburn2005-02-231-3/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | There seems to be a problem with a null pointer popping up when profile_node_iterator reads ...->data->root to start walking through the contents. Don't have a lot of details, but I've got some patches that might tighten things up a little. * prof_tree.c (profile_node_iterator): Check that the root node pointer is not null; raise assertion failure if it is. * prof_int.h: Include k5-platform.h. (struct _prf_data_t): Reorder fields, and insert some padding. * prof_file.c (scan_shared_trees_locked): Check that the "root" field isn't null. (profile_open_file): Update the in-memory file contents after updating the refcount instead of before. (profile_update_file_data): If the root node in the file data is null, always do the update. Check that it's not null before returning a success indication. (profile_dereference_data_locked): Scan linked list of file data objects for sanity check, before and after. (profile_dereference_data_locked): Don't do it here. ticket: new status: open git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@17106 dc483132-0cff-0310-8789-dd5450dbe970
* call stat less often on krb5.confKen Raeburn2004-10-301-0/+5
| | | | | | | | | | | | | | | | | | | | Changes suggested by lxs to reduce stat frequency to once per second. In parallel loops creating and destroying krb5 contexts on Mac OS X, this seems to improve performance by 10%, though it's hard to be sure because the times are variable. * prof_int.h (STAT_ONCE_PER_SECOND): Define. (struct _prf_data_t) [STAT_ONCE_PER_SECOND]: New field LAST_STAT. * prof_file.c (scan_shared_trees_locked, scan_shared_trees_unlocked): Redefine to do nothing for now. (profile_update_file_data) [STAT_ONCE_PER_SECOND]: If the current time is the same time as the last stat of the file, just return; otherwise, save away the current time. ticket: new status: open git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@16847 dc483132-0cff-0310-8789-dd5450dbe970
* Permit exporting profile file data into a bufferKen Raeburn2004-10-271-0/+6
| | | | | | | | | | | | | | | | | | | | | * prof_file.c (profile_flush_file_data_to_buffer): New function. * profi_init.c (profile_flush_to_buffer, profile_free_buffer): New functions. * prof_parse.c (output_quoted_string): Use a callback instead of stdio calls. (dump_profile): Renamed from dump_profile_to_file. Use a callback instead of stdio calls. (dump_profile_to_file_cb): New function. (profile_write_tree_file): Updated to new internal interface. (struct prof_buf): New type. (add_data_to_buffer, dump_profile_to_buffer_cb, profile_write_tree_to_buffer): New functions. * prof_int.h (profile_write_tree_to_buffer, profile_flush_file_data_to_buffer): Declare. * profile.hin (profile_flush_to_buffer, profile_free_buffer): Declare. * libprofile.exports: Export profile_flush_to_buffer and profile_free_buffer. * profile.swg (profile_flush_to_buffer): Declare. * profile_tcl.c: Regenerated. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@16838 dc483132-0cff-0310-8789-dd5450dbe970
* Allow profile library caller to write the modified data to a differentKen Raeburn2004-10-181-0/+4
| | | | | | | | | | | | | | | | | | | | file than was originally read. * prof_file.c (write_data_to_file): New function, split out from profile_flush_file_data. Add argument can_create indicating whether the old file should already exist or not. (profile_flush_file_data): Call it. (profile_flush_file_data_to_file): New function. * prof_int.h (profile_flush_file_data_to_file): Declare it. (profile_flush_file_to_file): New macro. * prof_init.c (profile_flush_to_file): New function. * profile.hin (profile_flush_to_file): Declare. * profile.swg (profile_flush_to_file): Declare. * profile_tcl.c: Regenerated. * prof_test1: Use profile_flush_to_file instead of profile_flush, and reload from the new filename. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@16825 dc483132-0cff-0310-8789-dd5450dbe970
* * prof_file.c, prof_int.h, prof_set.c: Remove support for non-SHARE_TREE_DATAKen Raeburn2004-10-151-11/+8
| | | | | | | | | | | | | | | | | | | | case. * prof_int.h (struct _prf_data_t): Change filespec to a trailing char array. Add a length field for the filespec. (profile_make_prf_data): Declare. (profile_lock_global, profile_unlock_global): Prototypes need argument lists. * prof_file.c: Include stddef.h. (scan_shared_trees_locked, scan_shared_trees_unlocked): New functions. (r_access, rw_access): Now take const_profile_filespec_t arg. (profile_make_prf_data): New function. (profile_open_file): Scan trees at beginning and end. Use profile_make_prf_data to allocate and initialize storage. (profile_dereference_data, profile_free_file_data): Scan trees. (profile_ser_size, profile_ser_externalize): Filespec is never null. * prof_set.c (rw_setup): Use profile_make_prf_data to allocate and initialize storage. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@16822 dc483132-0cff-0310-8789-dd5450dbe970
* Need prototypes for profile_lock_global and profile_unlock_globalAlexandra Ellwood2004-10-131-0/+3
| | | | | | ticket: new git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@16817 dc483132-0cff-0310-8789-dd5450dbe970
* * prof_file.c (profile_dereference_data_locked): New function.Ken Raeburn2004-09-281-0/+1
| | | | | | | | (profile_dereference_data): Call it. * prof_set.c (rw_setup): Likewise. * prof_int.h (profile_dereference_data_locked): Declare it. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@16792 dc483132-0cff-0310-8789-dd5450dbe970
* * prof_int.h (struct _prf_data_t): Add a mutex.Ken Raeburn2004-08-271-0/+8
| | | | | | | | | | | | | | * prof_file.c (profile_open_file): Initialize data mutex. (profile_update_file_data, profile_flush_file_data): Lock it while manipulating file data. (profile_lock_global, profile_unlock_global): New functions. * prof_set.c (rw_setup): Acquire global lock while checking flags and adjusting ref count. (profile_update_relation, profile_rename_section, profile_add_relation): Lock data mutex while manipulating profile data. * prof_tree.c (profile_node_iterator): Do more magic number tests. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@16689 dc483132-0cff-0310-8789-dd5450dbe970
* Delete preprocessor tests for macintosh, __MWERKS__, applec, and THINK_C, allKen Raeburn2004-06-221-1/+1
| | | | | | | part of the pre-Mac OS X support. (Except the bits in the Yarrow code, where it was part of the upstream source.) git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@16506 dc483132-0cff-0310-8789-dd5450dbe970
* Added support for library initialization and finalization, and verificationKen Raeburn2004-04-241-13/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | that the initializer completed successfully. Delay initialization on POSIX until the first "verification" call. Currently specific to a few platforms, but should still build on others without thread support enabled. Use it to finish creating (if necessary) and destroy mutexes, and free some other storage "permanently" allocated by libraries (currently, libkrb5 cache/keytab type registries only). Change initialization of static mutexes to a two-step operation, a static "partial" initializer and a "finish_init" routine called from a thread-safe environment like library initialization is assumed to be. POSIX will use the former, Windows will use the latter, and the debug support will check that *both* have been used. Added init/fini functions to com_err, profile, krb5, and gssapi libraries. (The profile library one may need to be removed later.) The existing ones, not thread-safe, are still around. Use weak symbol support if available to figure out if the pthread library has been linked in, and avoid calling certain routines if the C library stubs are known not to exist or work. Stub declarations for thread-specific data. Minor bugfixes, whitespace changes. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@16268 dc483132-0cff-0310-8789-dd5450dbe970
* Change profile code over to new thread macros, and enable data sharing alwaysKen Raeburn2004-03-141-18/+3
| | | | | | | | | | | | | | | * prof_int.h: Include k5-thread.h. Don't include sys/types.h and pthread.h. (SHARE_TREE_DATA): Always define. (USE_PTHREADS): Don't define. (prof_mutex_lock, prof_mutex_unlock): Deleted. (struct global_shared_profile_data): Change mutex to use k5_mutex_t instead of pthread_mutex_t. (g_shared_trees_mutex): Don't conditionalize on USE_PTHREADS. * prof_file.c (krb5int_profile_shared_data): Initialize mutex. (profile_open_file, profile_dereference_data): Use new mutex macros. Check return status when locking. Fix a potential memory leak in an error case. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@16163 dc483132-0cff-0310-8789-dd5450dbe970
* prof-int.h should include pthread.h when USE_PTHREADS is definedAlexandra Ellwood2004-01-301-0/+6
| | | | | | ticket: 2180 git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@15985 dc483132-0cff-0310-8789-dd5450dbe970
* * profile.hin, prof_file.c (profile_flush_file_data): Stop copying the ↵Alexandra Ellwood2003-03-061-5/+2
| | | | | | resource fork. We stopped writing resources to the krb5 configuration in KfM 4.5.x. In KfM 5.0 will no longer read preferences from the resource fork so we can destroy it on copy. * prof-int.h: No longer include MoreFiles. Removed framework style includes for Kerberos headers. * prof_FSp_glue.c, prof_init.c, profile.hin: Moved Mac FSSpec-based functions into a separate file so they will only be built with KfM. These functions will be exported but not in the headers because they are deprecated git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@15239 dc483132-0cff-0310-8789-dd5450dbe970
* * prof_int.h (SHARE_TREE_DATA): Define only on MacKen Raeburn2003-01-131-2/+1
| | | | git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@15118 dc483132-0cff-0310-8789-dd5450dbe970
* Support \r as additional line separator on Mac OS XKen Raeburn2003-01-091-3/+1
| | | | | | | | | | | | * prof_parse.c (profile_parse_file) [PROFILE_SUPPORTS_FOREIGN_NEWLINES]: Look for \r and treat it as a line break. * prof_int.h: Don't include prof_err.h. (PROFILE_SUPPORTS_FOREIGN_NEWLINES) [macintosh]: Define new macro. ticket: 1237 status: open git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@15100 dc483132-0cff-0310-8789-dd5450dbe970
* Merge some Mac-specific changes from meeroh's branch:Ken Raeburn2002-12-311-9/+0
| | | | | | | | | | | | | | | | | | | | | | | | * profile.hin: Don't test MACINTOSH any more. On Mac OS X, include TargetConditionals.h, set some pragmas, define COPY_RESOURCE_FORK, and error out if TARGET_RT_MAC_CFM is defined; don't set the old m68k CFM pragmas. Always use PROFILE_USES_PATHS code, don't test or define it. (FSp_profile_init, FSp_profile_init_path): Declare, on Mac OS X. * prof_int.h (NO_SYS_TYPES_H, NO_SYS_STAT_H) [macintosh]: Don't define these. * prof_file.c: Always inclued sys/types.h and sys/stat.h. (GetMacOSTempFilespec): Deleted. (profile_flush_file_data) [COPY_RESOURCE_FORK]: Copy Mac resource fork from old file to new before renaming. (rw_access, profile_update_file_data, profile_flush_file_data, profile_free_file_data): Assume PROFILE_USES_PATHS, don't test. * prof_init.c (profile_ser_size, profile_ser_externalize, profile_ser_internalize): Likewise. (FSp_profile_init, FSp_profile_init_path): Define, on MacOS X. * profile.exp: Add FSp_* functions. * prof_file.c (r_access): New function. (profile_open_file): Use it. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@15073 dc483132-0cff-0310-8789-dd5450dbe970
* * prof_int.h: Define USE_PTHREADS and include pthread.h if on MacOS X.Ken Raeburn2002-12-211-1/+18
| | | | | | | | | | | | | | (struct global_shared_profile_data) [USE_PTHREADS]: Add a mutex. (g_shared_trees_mutex) [USE_PTHREADS]: New macro, references the global mutex. (prof_mutex_lock, prof_mutex_unlock) [SHARE_TREE_DATA]: Define to use pthread functions or do nothing. (profile_free_file_data): Delete declaration. (profile_dereference_data): Declare. * prof_file.c (profile_free_file_data): Now static. (profile_open_file, profile_dereference_data) [SHARE_TREE_DATA]: Grab lock while manipulating global data list or its contents. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@15061 dc483132-0cff-0310-8789-dd5450dbe970
* Merge in data tree sharing, minus locking support, plus a bugfix or twoKen Raeburn2002-12-201-0/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | * prof_int.h (SHARE_TREE_DATA): Define. (struct _prf_file_t) [SHARE_TREE_DATA]: Make data field a pointer rather than an array. (struct global_shared_profile_data): New type, for profile library global data. (krb5int_profile_shared_data): Declare new variable. (g_shared_trees): New macro, refers to a field in the global data. (PROFILE_FILE_SHARED): New flag macro. * prof_file.c (krb5int_profile_shared_data): Initialize here. (profile_open_file) [SHARE_TREE_DATA]: Scan g_shared_trees for an entry with the same filename. If found, increment its reference count, update it, and return it; otherwise, allocate a new one, and add it to the list after filling it in. (profile_dereference_data): New function. Decrement reference count if SHARE_TREE_DATA, and free the data if appropriate. (profile_free_file): Call profile_dereference_data. (profile_free_file_data) [SHARE_TREE_DATA]: If the SHARED flag is set, remove it from the g_shared_trees list before freeing. Free up the allocated space. * prof_set.c (rw_setup) [SHARE_TREE_DATA]: If the object's data is shared, copy it into a new data structure not in the global shared list, and dereference the old one. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@15060 dc483132-0cff-0310-8789-dd5450dbe970
* Checkpoint first step of merge.Ken Raeburn2002-12-071-9/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Moved per-file data into a separate object from the profile handle. Dropped some old MacOS 9 code. * prof_int.h: Include Mac OS X versions of header files if appropriate. Only include prof_err.h if profile.h doesn't define ERROR_TABLE_BASE_prof. (struct _prf_data_t): Move most of contents of _prf_file_t here. Add reference count. (prf_data_t): New typedef. (struct _prf_file_t): Include an array of one _prf_data_t structure. * prof_file.c (profile_open_file): Fill in "data" field. Drop some old Mac specific code. (profile_flush_file_data): Renamed from profile_flush_file, now takes prf_data_t argument. (profile_flush_file_data): Likewise. (profile_free_file): Now calls profile_free_file_data. (profile_free_file_data): New function, with most of old profile_free_file code. * prof_init.c (profile_init_path): Removed old Mac version. (profile_ser_size, profile_ser_externalize): Get file data from new "data" field. * prof_set.c (rw_setup, profile_update_relation, profile_clear_relation, profile_rename_section, profile_add_relation): Likewise. * prof_tree.c (profile_node_iterator): Likewise. * test_profile.c (do_batchmode): Likewise. * prof_int.h (profile_flush_file): Now a macro. * prof_err.et (PROF_MAGIC_FILE_DATA): New error code value. ticket: 1237 status: open git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@15037 dc483132-0cff-0310-8789-dd5450dbe970
* Don't conditionalize prototypes; delete macros supporting it. (Maybe overdone;Ken Raeburn2001-10-101-47/+41
| | | | | | don't worry about restoring them when importing new versions of code.) git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@13792 dc483132-0cff-0310-8789-dd5450dbe970
* Danilo also says we can get rid of _MSDOS (Win16) tests, and explicit ↵Ken Raeburn2001-10-061-8/+1
| | | | | | FAR/NEAR specs git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@13786 dc483132-0cff-0310-8789-dd5450dbe970
* * prof_tree.c (struct profile_iterator): Member "names" now points to const.Ken Raeburn2001-07-191-1/+1
| | | | | | | | | | (profile_node_iterator_create): Argument "names" now points to const. (profile_node_iterator): Local variable "cpp" now points to const. * prof_int.h (profile_node_iterator_create): Decl updated. * prof_get.c (profile_get_values): Argument "names" now points to const. * profile.hin (profile_get_values): Decl updated. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@13615 dc483132-0cff-0310-8789-dd5450dbe970
* * prof_int.h: Provide prototypes for profile_ser_size,Ezra Peisach2001-07-021-0/+8
| | | | | | profile_ser_externalize, profile_ser_internalize. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@13546 dc483132-0cff-0310-8789-dd5450dbe970
* Danilo's const_profile_filespec_t and other changes from 1.1 branchKen Raeburn1999-09-011-2/+2
| | | | git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@11766 dc483132-0cff-0310-8789-dd5450dbe970
* * prof_int.h (profile_t): Delete typedef, since Miro changed prof_int.h toKen Raeburn1999-07-211-2/+0
| | | | | | | | include profile.h, which also has the typedef. * prof_file.c, prof_init.c: Fix typos and missed variable and type name changes from Miro's patch. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@11571 dc483132-0cff-0310-8789-dd5450dbe970
* Profile library now uses MacOS native file specifiers on MacOS, and file ↵Miro Jurisic1999-07-211-64/+16
| | | | | | paths on all other OSes git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@11566 dc483132-0cff-0310-8789-dd5450dbe970
* prof_init.c (profile_abandon): New function which frees the profileTheodore Tso1999-04-141-0/+3
| | | | | | | | | | handle and throwing away any changes that might have been made before they are flushed to disk. prof_file.c (profile_close_file): Move functionality of freeing the profile file to the new function profile_free_file(). git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@11355 dc483132-0cff-0310-8789-dd5450dbe970
* test_profile.c: Added ability to test profile set functions, and in aTheodore Tso1999-03-031-0/+7
| | | | | | | | | | | | | | | | | | | | | | batch mode. prof_init.c (profile_flush): Add new public function for flushing changes made to the profile. prof_parse.c (profile_write_tree_file): Add official internal function for flushing out a profile tree to a FILE *. configure.in, prof_file.c (rw_access): Add new function which checks to see whether we have read/write access, and emulate this for losing non-POSIX OS's. prof_file.c (profile_flush_file): Add support for writing modified profile file's. Call profile_flush_file from profile_close_file(). Also fixed minor bugs in prof_tree.c which affected renaming sections and modifying existing relations. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@11237 dc483132-0cff-0310-8789-dd5450dbe970
* prof_tree.c: Add new functions profile_get_node_name,Theodore Tso1999-03-031-12/+59
| | | | | | | | | | | | | | | | | | | | | profile_get_node_value, profile_find_node, profile_remove_node, profile_set_relation_value, profile_rename_node. Rewrite profile_find_node_relation and profile_find_node_subsection in terms of profile_find_node. prof_set.c, Makefile.in: Add a new file which exports the public interfaces for setting profile entries. prof_get.c, prof_init.c, prof_int.h: Add the KRB5_DLLIMP and KRB5_CALLCONV to all of the various profile routines so they can be properly exported via a Windows DLL. prof_int.h: Add definition for the flags in the profile structure. prof_err.et: Add new error codes PROF_SET_SECTION_VALUE, PROF_EINVAL, PROF_READ_ONLY, and PROF_EXISTS. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@11236 dc483132-0cff-0310-8789-dd5450dbe970
* prof_get.c: Add new public profile_iterator functions for iteratingTheodore Tso1998-12-041-2/+11
| | | | | | over values found in the profile file. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@11062 dc483132-0cff-0310-8789-dd5450dbe970
* Makefile.in: Set the myfulldir and mydir variables (which are relativeTheodore Tso1998-11-141-0/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | to buildtop and thisconfigdir, respectively.) configure.in: Build the test script prtest for doing regression test suites of the profile library. prof_err.et (PROF_MAGIC_ITERATOR): Add a new error code for the magic number for the iterator structure. prof_file.c (profile_update_file): Increment the update serial number when the profile file is re-read. prof_tree.c (profile_make_node_final, profile_is_node_final): Add a new attribute for a node, which is whether or not the node is "final". This controls whether or not the next profile file should be searched when looking up a key which matches the section named by the node. (profile_node_iterator_create, profile_node_iterator_free, profile_node_iterator): New functions which take a profile_t and returns all of the names or values for a particular search key. This iterator follows the rules of doing multiple profile file lookups using the "final node" marker to stop searching subsequent profile files. prof_parse.c (parse_std_line): Add support for marking top level sections, subsections, and individual nodes as final, using the '*' character. (dump_profile_to_file): Print finalized sections with the '*' character. prof_get.c: Update routines to use the iterators provided by prof_tree.c. prof_int.c: Add upd_serial member to the prf_file_t structure. Define the symbolic flags used by the profile node iterator. Add function declarations for profile_make_node_final, profile_is_node_final, profile_node_iterator_create, profile_node_iterator_free, profile_node_iterator, and profile_get_value. test_profile.c: Add the query1 command which tests profile_get_value. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@11038 dc483132-0cff-0310-8789-dd5450dbe970
* Makefile.in: Added prof_get.c to the list of files to be compiledTheodore Tso1998-11-031-22/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | profile.hin: Added declarations for profile_free_list(), profile_get_relation_names(), and profile_get_subsection_names(). (These are new public interfaces to the profile library.) prof_int.h: Removed the profile_section_t structure, which was used only by the now-defunct prof_section.c file. Added the internal interfaces for the new public interfaces. Removed unused declarations which were never implemented(profile_get, profile_update). prof_init.c: Moved all of the profile querying functions (profile_get_values(), profile_get_value(), etc.) to prof_get.c. In the process, removed the really bletcherous (and badly implemented) profile_get_first_values(), which did nothing like what the named implied. Also added to prof_get.c new functions profile_get_subsection_names() and profile_get_relation_names(). (profile_ser_internalize): Rewrote error handling to be clearer, and removed a bug where memory was not freed correctly in an error case. (profile_init): If a list of pathnames is passed in, profile_init will now try to open all of them, now that we've defined query fallback semantics in prof_get.c prof_parse.c: Fix lint warning. prof_tree.c (profile_find_node_relation, profile_find_node_subsection): Allow the returned value or subsection field to be NULL (in case the caller isn't interested in getting the returned value or subsection, and only cares about getting the name). (profile_delete_node_relation, profile_delete_interior_node_relation): Removed these functions and replaced it with profile_remove_node(), which takes a boolean argument section_flag. (profile_find_node_name): Removed this function. (This was a Cygnus/Fusion special used by the now removed profile_find_first_values() function.) test_profile.c: Added commands to test the new profile_get_subsection_names() and profile_get_relation_names() interfaces. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@11011 dc483132-0cff-0310-8789-dd5450dbe970
* Replaced preprocessor symbol _MACINTOSH with macintosh, since macintosh is ↵Miro Jurisic1998-07-171-1/+1
| | | | | | the standard symbol defined by all Mac compiler (oh, sure, it doesn't have _. but at least it's always there) git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@10653 dc483132-0cff-0310-8789-dd5450dbe970
* Export profile_get_values() for krb4 library (win16/win32)Richard Basch1997-02-181-21/+21
| | | | git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@9888 dc483132-0cff-0310-8789-dd5450dbe970
* prof_int.h: Include "com_err.h" instead of redeclaring errcode_tRichard Basch1997-02-081-10/+11
| | | | git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@9819 dc483132-0cff-0310-8789-dd5450dbe970
* test_profile.c: Add usage message if not enough argumentsTheodore Tso1996-06-121-1/+8
| | | | | | | | | | | | | | | prof_parse.c (dump_profile_to_file, dump_profile): Dump the profile using the correct line terminator for Windows, Macintosh, etc. prof_parse.c: prof_file.c: Change _WINDOWS to _MSDOS, and add check for _WIN32. prof_int.h: Add size #defines for _WIN32. Handle prototypes correctly for _WIN32. prof_int.h: Added comment to profile state structure git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@8318 dc483132-0cff-0310-8789-dd5450dbe970
* * prof_init.c (profile_init_path): takes a single string entryMark Eichin1995-10-021-0/+3
| | | | | | | | | | | that has pathnames seperated by colons, and splits it into file names for profile_init. No provision for quoting colons in pathnames, but shells don't solve that either. * prof_init.c (profile_init): handle multiple input files by grabbing the first one that doesn't return ENOENT. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@6914 dc483132-0cff-0310-8789-dd5450dbe970