summaryrefslogtreecommitdiffstats
path: root/src/util/profile
Commit message (Collapse)AuthorAgeFilesLines
* Remove ChangeLog files from the source tree. From now on, theSam Hartman2006-04-111-1333/+0
| | | | | | | subversion commit log entry needs to include information that would have been in the changelog. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@17893 dc483132-0cff-0310-8789-dd5450dbe970
* Remove .Sanitize and .rconf files, no longer usedKen Raeburn2006-04-111-49/+0
| | | | git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@17888 dc483132-0cff-0310-8789-dd5450dbe970
* * Makefile.in ($(srcdir)/profile_tcl.c): Don't invoke swig automaticallyKen Raeburn2006-04-042-1/+6
| | | | git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@17841 dc483132-0cff-0310-8789-dd5450dbe970
* set DEFS empty in more placesKen Raeburn2006-04-042-0/+5
| | | | git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@17838 dc483132-0cff-0310-8789-dd5450dbe970
* * prof_int.h (SIZEOF_INT, SIZEOF_SHORT, SIZEOF_LONG)[_WIN32]: Don't defineKen Raeburn2006-03-314-19/+17
| | | | | | | | | * 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
* make depend, now with dependency sortingKen Raeburn2006-03-311-25/+25
| | | | git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@17811 dc483132-0cff-0310-8789-dd5450dbe970
* Instead of arbitrary division of headers into include and include/krb5, withKen Raeburn2006-03-111-8/+8
| | | | | | | | | | | | include directives sometimes using krb5/foo.h and sometimes using foo.h, and -I options always given for both directories in both source and build trees, push include/krb5/* up a level and drop the krb5 directory (except, for the moment, the change log). Updated #include directives, -I options, and dependencies accordingly, and deleted one or two bits of old, unused code that was noticed in the process. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@17730 dc483132-0cff-0310-8789-dd5450dbe970
* Add a new recursive target "generated-files-mac", for producing theKen Raeburn2006-03-112-0/+6
| | | | | | | generated files that lxs wants to feed into the Mac build system. (First approximation, may want some fine tuning later.) git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@17728 dc483132-0cff-0310-8789-dd5450dbe970
* Merge from plugin branchKen Raeburn2006-03-072-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | | Add plugin support: - plugin routines in support library (may break windows build!) - plugin support in KDC location code - sample Python-based plugin for KDC location, not built without tweaking sources - changed service location interface to use an enum instead of passing profile string and DNS strings and port numbers - changed pathnames for plugin locations, including kdb back end - remove locate_service from accessor API Also, do build shared libraries for Darwin just like any other UNIX box. Not present yet: - use new plugin interface for kdb back end - Windows support - Mac bundle support (but dlopen support works) - search path for libkrb5 plugins (only one hard-coded directory for now) - sorting of plugin collections for predictable ordering See the various ChangeLogs for specifics. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@17706 dc483132-0cff-0310-8789-dd5450dbe970
* Back out unwanted change to profile_tcl.cSam Hartman2006-01-111-745/+311
| | | | git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@17586 dc483132-0cff-0310-8789-dd5450dbe970
* Remove krb5_callconv from non-exported internal functionSam Hartman2006-01-111-311/+745
| | | | git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@17585 dc483132-0cff-0310-8789-dd5450dbe970
* make dependTom Yu2005-11-291-16/+8
| | | | git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@17505 dc483132-0cff-0310-8789-dd5450dbe970
* Delete setting and testing of STAT_ONCE_PER_SECOND, just always do itKen Raeburn2005-10-213-10/+7
| | | | git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@17449 dc483132-0cff-0310-8789-dd5450dbe970
* Delete .cvsignore files; contents have already been Sam Hartman2005-08-241-7/+0
| | | | | | set on svn:ignore properties. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@17353 dc483132-0cff-0310-8789-dd5450dbe970
* All configure.in scripts: Use K5_AC_INIT instead of AC_INITKen Raeburn2005-08-202-1/+5
| | | | git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@17342 dc483132-0cff-0310-8789-dd5450dbe970
* Update dependenciesKen Raeburn2005-06-211-8/+16
| | | | | | | | | N.B.: The version of gcc used this time ("gcc version 3.4.3 20041212 (Red Hat 3.4.3-9.EL4)") seems to emit some duplicate dependencies -- some header files get listed twice. This is annoying but shouldn't cause any harm.... git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@17256 dc483132-0cff-0310-8789-dd5450dbe970
* * profile.swg (errcode_t* tcl8 argout typemap): Cast return value fromKen Raeburn2005-06-063-20/+27
| | | | | | | | error_message to char* to silence Sun compiler warning. (errcode_t tcl8 out typemap): Likewise. * profile_tcl.c: Regenerated. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@17229 dc483132-0cff-0310-8789-dd5450dbe970
* update dependenciesKen Raeburn2005-04-131-16/+16
| | | | git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@17179 dc483132-0cff-0310-8789-dd5450dbe970
* * configure.in: Don't check for getpwuid_r here.Ken Raeburn2005-03-263-17/+9
| | | | | | | | | * prof_file.c (profile_open_file): Use k5_getpwuid_r. ticket: 2982 status: open git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@17158 dc483132-0cff-0310-8789-dd5450dbe970
* st_mtim.tv_nsec, not tv_usecKen Raeburn2005-03-133-4/+4
| | | | | | | ticket: 2959 status: open git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@17122 dc483132-0cff-0310-8789-dd5450dbe970
* profile library should check high-resolution timestamps if availableKen Raeburn2005-03-134-1/+26
| | | | | | | | | | | | | | | | | | | | | 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
* profile_clear_relation doesn't work, iterator still sees deleted nodesKen Raeburn2005-03-043-0/+50
| | | | | | | | | | | | | | | | The "deleted" flag was being checked when writing out the file, but not when iterating through using the profile handle being used to do the deletions. * prof_tree.c (profile_node_iterator): After checking skip_num counter, also skip over deleted nodes. * prof_test1 (test3): New proc. (top level): Run it. ticket: new target_version: 1.4.1 git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@17111 dc483132-0cff-0310-8789-dd5450dbe970
* possible profile null pointer deref in threaded appKen Raeburn2005-02-234-8/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* * et/error_message.c (com_err_initialize, com_err_terminate): IfKen Raeburn2005-02-092-1/+17
| | | | | | | | | SHOW_INITFINI_FUNCS is defined, print tracing messages. * profile/prof_file.c (profile_library_initializer, profile_library_finalizer): If SHOW_INITFINI_FUNCS is defined, print tracing messages. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@17094 dc483132-0cff-0310-8789-dd5450dbe970
* * prof_file.c (profile_open_file): If mutex creation fails, free storageKen Raeburn2005-01-142-1/+4
| | | | | | | | | directly instead of calling profile_close_file. ticket: 2878 status: open git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@17035 dc483132-0cff-0310-8789-dd5450dbe970
* profile code never destroys its per-file mutexesKen Raeburn2005-01-142-6/+12
| | | | | | | | | | * prof_file.c (profile_free_file_data): Destroy mutex before freeing containing structure. ticket: new target_version: 1.4 git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@17029 dc483132-0cff-0310-8789-dd5450dbe970
* run "make depend"Ken Raeburn2004-12-301-26/+34
| | | | | | | | In most library directories, this just affects where the line breaks are. In most other directories, it's just dropping a trailing blank line. One or two files really do have updated dependencies. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@16987 dc483132-0cff-0310-8789-dd5450dbe970
* insufficient locking in profile re-reading caseKen Raeburn2004-12-152-1/+47
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If profiles are open and iterators in use while the on-disk file is being modified (see tests/threads/prof1.c), the re-reading of the file can cause data to be freed up. The iterator code does no locking and assumes that the profile node tree won't be touched. During our Monday meeting we discussed changing the iterator code to "snapshot" the current state of the file if it were modified, so that a more consistent picture could be returned, essentially by bumping a reference count for the life of the iterator object. The reference count I was thinking of turns out to be used for a different purpose; we'd have to add another layer of indirection, another ref count, and another mutex to accomplish this. There might be a more reasonable way to go about it, but I don't want to tackle it for 1.4 when we're already shipping beta releases. This patch just adds locking to the current iterator code so that the file data can't be replaced while the iterator is being processed. The inconsistent-view issue remains. * prof_tree.c (profile_node_iterator): When the iterator has a current file, lock it, and unlock it before changing it or returning. ticket: new status: resolved target_version: 1.4 tags: pullup git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@16932 dc483132-0cff-0310-8789-dd5450dbe970
* * prof_init.c, profile.hin: added profile_is_modified and ↵Alexandra Ellwood2004-11-043-0/+41
| | | | | | | | profile_is_writable so that callers can check to see if profile_release() will fail before calling it ticket: 2751 git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@16860 dc483132-0cff-0310-8789-dd5450dbe970
* * prof_set.c: profile calls which set values should not fail if file is not ↵Alexandra Ellwood2004-11-042-3/+7
| | | | | | | | writable. You can now write to a different file with profile_flush_to_file() or buffer with profile_flush_to_buffer() ticket: 2750 git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@16858 dc483132-0cff-0310-8789-dd5450dbe970
* call stat less often on krb5.confKen Raeburn2004-10-303-0/+37
| | | | | | | | | | | | | | | | | | | | 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-279-32/+215
| | | | | | | | | | | | | | | | | | | | | * 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
* * prof_file.c (profile_update_file_data): When resetting flags, preserve SHAREDKen Raeburn2004-10-223-25/+75
| | | | | | | | | | flag. (scan_shared_trees_locked, scan_shared_trees_unlocked): Convert to macros, so line numbers reported by assert will be useful. * prof_test1 (test2): Run new test of modifications with other existing open profile handles. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@16834 dc483132-0cff-0310-8789-dd5450dbe970
* * libprofile.exports: Add profile_flush_to_fileKen Raeburn2004-10-192-0/+5
| | | | git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@16830 dc483132-0cff-0310-8789-dd5450dbe970
* Allow profile library caller to write the modified data to a differentKen Raeburn2004-10-188-28/+122
| | | | | | | | | | | | | | | | | | | | 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-155-73/+107
| | | | | | | | | | | | | | | | | | | | 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
* * prof_file.c (profile_library_initializer, profile_library_finalizer): ↵Alexandra Ellwood2004-10-132-0/+10
| | | | | | | | | Added macros to avoid adding error tables on platforms that don't use them (ie: OSX) ticket: 2741 version_fixed: 1.4 git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@16818 dc483132-0cff-0310-8789-dd5450dbe970
* Need prototypes for profile_lock_global and profile_unlock_globalAlexandra Ellwood2004-10-132-0/+8
| | | | | | ticket: new git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@16817 dc483132-0cff-0310-8789-dd5450dbe970
* Fix small memory leak in repeated krb5 context creation and deletion:Ken Raeburn2004-10-133-2/+8
| | | | | | | | * prof_init.c (profile_init): Don't add error table here. * prof_file.c (profile_library_initializer): Add it here. (profile_library_finalizer): Remove it here. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@16815 dc483132-0cff-0310-8789-dd5450dbe970
* * prof_file.c (profile_dereference_data_locked): New function.Ken Raeburn2004-09-284-2/+18
| | | | | | | | (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
* * Makefile.in (check-unix-tcl-ok): Use KRB5_RUN_ENVTom Yu2004-09-263-1/+9
| | | | | | * configure.in: Use KRB5_RUN_FLAGS. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@16791 dc483132-0cff-0310-8789-dd5450dbe970
* * prof_tree.c (struct profile_node): Add new bitfield DELETED.Ken Raeburn2004-09-236-13/+109
| | | | | | | | | | | | | | | | (profile_add_node): Move variable CMP into inner block where it's used. Clear deleted flag. (profile_find_node): Skip deleted nodes. (profile_remove_node): Just set the deleted flag, don't modify the tree. * Makefile.in (profile_tcl.c): Target should be in srcdir. (profile_tcl.o): Depend on profile.h. (DO_TCL): New variable. (check-unix-tcl-, check-unix-tcl-ok): New targets. (check-unix): Depend on one of them, based on DO_TCL. * configure.in: Set and substitute DO_TCL. * prof_test1: New file. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@16784 dc483132-0cff-0310-8789-dd5450dbe970
* regeneratedKen Raeburn2004-09-231-6/+8
| | | | git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@16783 dc483132-0cff-0310-8789-dd5450dbe970
* * profile.swg: Only include tclsh.i if building for Tcl.Ken Raeburn2004-09-232-3/+26
| | | | | | | | | (Tcl_SetResult, my_tcl_setresult): Compile hack only if building for Tcl. (%typemap SWIGTYPE *OUTPUT): Initialization is not specific to the scripting language. Add Python code. (%typemap errcode_t, errcode_t*): Add placeholders for Python support. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@16782 dc483132-0cff-0310-8789-dd5450dbe970
* * prof_file.c (profile_open_file): If an error occurs while updating from theKen Raeburn2004-08-282-0/+8
| | | | | | input file, destroy the mutex only if we're not sharing file data. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@16698 dc483132-0cff-0310-8789-dd5450dbe970
* * prof_parse.c (parse_std_line): Rewrite handling of whitespace in and afterKen Raeburn2004-08-282-6/+20
| | | | | | | | | | | | | | tag, to strip trailing whitespace (per current locale, not just ASCII space characters), and prohibit any internal space characters in tag names. (This is not the patch supplied in the bug report; that patch changed the tag handling to allow spaces in tag names, which we haven't previously allowed. On the other hand, we haven't specifically disallowed internal tabs or other whitespace, either, and this patch does so.) ticket: 2614 git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@16697 dc483132-0cff-0310-8789-dd5450dbe970
* * profile_tcl.c: New file, generated from profile.swg, but checked in to avoidKen Raeburn2004-08-272-0/+2084
| | | | | | requiring swig in order to generate the test program. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@16692 dc483132-0cff-0310-8789-dd5450dbe970
* * profile.swg: New file.Ken Raeburn2004-08-274-4/+266
| | | | | | | | | | | * configure.in: Look for Tcl. * Makefile.in (profile_tcl, profile_tcl.c, profile_tcl.o): New targets, not built by default. (PROG_LIBPATH, PROG_RPATH, LOCALINCLUDES): Add Tcl options. (DEFINES): Define. (clean-unix): Delete profile_tcl. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@16691 dc483132-0cff-0310-8789-dd5450dbe970
* * prof_int.h (struct _prf_data_t): Add a mutex.Ken Raeburn2004-08-275-50/+142
| | | | | | | | | | | | | | * 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
* whitespaceKen Raeburn2004-08-211-10/+10
| | | | git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@16677 dc483132-0cff-0310-8789-dd5450dbe970