The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
1999-08-24  Leif Hedstrom  <leif@netscape.com>

	* Merged v1.3.x into trunk, tagged it as v1.4, and released it!

1999-08-19  Leif Hedstrom  <leif@netscape.com>

	* Changed internal version numbering again, just called this plain
	v1.4.

	* Entry.pm (FIRSTKEY): Bug fix, we'd crap out if there are no
	attributes in the returned entry.
	(NEXTKEY): Ditto.

1999-08-18  Leif Hedstrom  <leif@netscape.com>

	* Set version number to v1.4! Woohoo! Also tagged it as v1.3.4,
	last "development" release.

1999-08-17  Leif Hedstrom  <leif@netscape.com>

	* Makefile.PL: Fixes for Windows/NT, cleaned out some code etc.
	(MY::postamble): Support for "make html".

	* MANIFEST: Updated with all new files etc.

	* test.pl: Renamed to oldtest.pl, to avoid "make test" to fail.

1999-08-16  Kevin McCarthy  <kmccarth@perldap.org> and Leif Hedstrom

	* API.xs: Cleaned most all the memory allocation changes, we are
	changing it to use the LDAP_OPT_MEMALLOC_FN_PTRS option in the
	C-SDK instead (much cleaner!).
	(perldap_init): New function, set up the memory management
	handlers. This is called when the API module is loaded.
	(perldap_malloc): New function, our memory management method(s).
	(perldap_calloc): Ditto.
	(perldap_realloc): Ditto.
	(perldap_free): Ditto.

1999-08-16  Kevin McCarthy  <kmccarth@perldap.org>

	* API.xs: Cleaned up prototypes, changed strdup() to use a
	Perl'ified version, change a number of free()'s to use Safefree.
	(ldap_value_free_perl): New function, similar to
	ldap_mods_free_perl(), to avoid memory problems (on NT and
	ActivePerl primarily).
	(StrDup): New function, to handle strdup() calls in a safe way.
	(ber_bvfree_perl): Ditto.
	(ber_bvecfree_perl): Ditto.

1999-08-15  Leif Hedstrom  <leif@netscape.com>

	* API.xs (ldap_mods_free_perl): Modified version of
	ldap_mods_free(), which uses Perl native free method instead of
	the things from the LDAP SDK. This fixes some nasty issues with
	Windows/NT and ActiveState Perl. Woohoo!!!

1999-08-14  Leif Hedstrom  <leif@netscape.com> and Kevin McCarthy

	* Entry.pm (setValues): Implemented bug fix for bug id 7131, where
	the "_save_" structures weren't set properly when using setValues().

1999-08-14  Kevin McCarthy  <kmccarth@perldap.org>

	* Conn.pm (update): Rewrote to optimize add/remove vs replace
	operations. Basically, we'll try to do whatever seems to be the
	smallest amount of work for the LDAP server now.

1999-08-13  Leif Hedstrom  <leif@netscape.com>

	* Makefile.PL: Cleaned up code, and added support for linking in
	the missing libraries need for some missing symbols.

1999-08-13  Michelle Wyner  <mwyner@netscape.com>

	* Entry.pm: Updated documentation, and cleaned it up.

	* Conn.pm: Ditto.

1999-08-12  Leif Hedstrom  <leif@netscape.com>

	* Entry.pm (move): Changed name, was rename(), is now move().

1999-08-10  Leif Hedstrom  <leif@netscape.com>

	* Entry.pm (setValues): Renamed, used to be setValue(), which is
	now an alias to setValues().
	(getValues): New method, to get the array of values.
	(STORE): Fixed tests around DN handling, making sure it's not
	treated as an array. I also optimized a couple of tests, since we
	now filter out "DN" earlier in the funtion(s).
	(attrModified): Ditto.
	(attrClean): Ditto.
	(unRemove): Ditto.
	(removeValue): Ditto.
	(addValue): Ditto.

1999-08-08  Leif Hedstrom  <leif@netscape.com> and Kevin McCarthy

	* Entry.pm (setValue): Remove _delete_ flag, if set.

	* Conn.pm (close): Fixed memory leak, moved code from the DESTROY
	method over here.
	(DESTROY): Call the close() method.
	(getErrorCode): We now return LDAP_SUCCESS if there is no LDAP
	connection handle.
	(getErrorString): Ditto.

	* Entry.pm (STORE): Bug fix for large attribute sets.
	(attrModified): Ditto.
	(removeValue): Ditto.
	(addValue): Ditto.
	(EXISTS): Fix for bug 4368, cleaning up the code, and avoid the
	double calls.

1999-08-06  Leif Hedstrom  <leif@netscape.com> and Kevin McCarthy

	* API.xs: Added some more tests around free() statements. These
	are most likely never triggered, but better safe than sorrow (and
	the overhead of testing this is insignificant).

	* Conn.pm (browse): Added this function, to make it easy to browse
	an entry.
	(compare): Compare an attribute value against a DN/entry, without
	having to do the search.

	* Entry.pm (removeValue): Fixed loop bug.
	(addValue): Ditto.
	(hasValue): Ditto.
	(matchValue): Fixed loop bug, and also missing normalization in
	half of the case statement.
	(rename): Added this new method, to rename attributes.
	(copy): Added, to copy attributes.

	* Merged v1.2.3 with v1.3 branch.

1999-08-06  Kevin McCarthy  <kmccarth@perldap.org>

	* Entry.pm (addDNValue): Bug fix, index for norm was wrong.

	* Entry.pm (size): Optimzied for performance.

1999-07-25  Kevin McCarthy  <kmccarth@perldap.org>

        * API.xs: Fixed memory allocation problems in parsing and
        generating the LDAPMods structure.

1999-06-22  Leif Hedstrom  <leif@netscape.com>

        * Conn.pm (add): Fixed bug 3342, thanks to Kevin McCarthy for
        debugging this, and providing a patch. This fixes the problem with
        adding new entries that has binary data.

1999-03-23  Leif Hedstrom  <leif@netscape.com>

	* Changed versioning numbers for all .pm files.

1999-03-22  Leif Hedstrom  <leif@netscape.com>

	* Entry.pm: Removed all _self_obj_ stuff...

	* Conn.pm: Ditto.

	* Conn.pm: Cleanup in use statements, and "use strict".
	(search): Avoid warnings of uninitialized variables.
	(searchURL): Ditto.
	(modifyRDN): Bugfix, we did not update the appropriate DN in the
	self object (very minor...).

	* Entry.pm: Cleanup in use statements, and "use strict".
	(BEGIN): Added this initializer, to use the new LDIF module.
	(STORE): Fixed bug where we would not ignore the internal instance
	variables properly.

	* Utils.pm: Cleanup in all use statements, and "use strict". Also
	enforces the VERSION control feature.

	* Merged v1.2.1 to devel-branch-1_3, and tagged v1.3.1.

1999-03-21  Leif Hedstrom  <leif@netscape.com>

	* Checked in v1.2.1(beta).

1999-03-19  Leif Hedstrom  <leif@netscape.com>

	* Conn.pm (add): Fixed the code so that it will handle hash array,
	as the documentation indicates. (Pointed out by Kevin Burns).
	(add): Code cleanup in the add() method.

1999-03-18  Leif Hedstrom  <leif@netscape.com>

	* Entry.pm: Changed back some of the "my" definitions, to make
	sure arrays are properly reset.
	(setValue): Added the _modified_ flag, from Stephen P. Schaefer
	<stephen@networks.com>.
	(addValue): Bug fix, when calling delete, and then
	addValue(). From Stephen P. Schaefer as well.

	* Conn.pm: Ditto. This fixes the bug where qsearch/printLDIF()
	would print multiple values.

1999-03-12  Leif Hedstrom  <leif@netscape.com>

	* Conn.pm: Changed docs for modifyRDN(), it was wrong...

1999-03-11  Leif Hedstrom  <leif@netscape.com>

	* Entry.pm (new): Added this method, so that "new ...::Entry" will
	work as expected.

1999-03-09  Leif Hedstrom  <leif@netscape.com>

	* Entry.pm: Tons of changes to handling the save/modified/deleted
	attribute values.
	(DESTROY): Added this destructor again, this time it does seem to
	help quite a lot! Whoohoo...

	* Conn.pm (update): Bug fix for bug #2530, keeping sort order for
	attribute values.

1999-03-08  Leif Hedstrom  <leif@netscape.com>

	* Entry.pm (unRemove): Bug fix, this was terribly horked, please
	let's try it to make sure it works...

	* Conn.pm (newEntry): Bug fix, forgot to give it the self_obj
	member value... Sigh.

1999-03-05  Leif Hedstrom  <leif@netscape.com>

	* Entry.pm (DELETE): We now handle the event that someone tries to
	delete an internal attribute.

	* Conn.pm (update): Bug: We forgot to test for existance of
	"_save_" before trying to loop over it.

	* Entry.pm (attrClean): Added this method, to make it easier to
	reset the internal state of en Entry. This is used primarily by
	the Conn.pm package.
	(unRemove): Bug Fix: $selfl changed to $self...

1999-02-28  Leif Hedstrom  <leif@netscape.com>

	* Entry.pm (matchValue): Added support for the normalization,
	which should have been done before... Bug #2854.

	* Conn.pm (printError): Changed to use ldap_err2string instead of
	ldap_perror.

	* Utils.pm (ldapArgs): Changed "root" to "base" in the LD
	structure.
	(userCredentials): Ditto.

	* Conn.pm: Changed documentation to reflect the "base/root"
	change.

1999-01-06  Leif Hedstrom  <leif@netscape.com>

	* Conn.pm (nextEntry): Fixed (tried to fix...) the bug with
	missing attributes. I hope this will work, at a minimum I'm sure
	it won't hurt. The idea is to keep the case on the attribute type
	when requesting the values_len().

1999-01-11  Leif Hedstrom  <leif@netscape.com>

	* API.xs: Added IF statements around all ldap_value_free() calls.

1999-01-05  Leif Hedstrom  <leif@netscape.com>

	* Conn.pm (getRes): Ooops, didn't return the appropriate
	value... :(
	(init): Changed test for LDAP_SUCCESS, to always return 0 or 1.
	(close): Ditto.
	(delete): Ditto.
	(add): Ditto.
	(modifyRDN): Ditto.
	(update): Ditto.
	(simpleAuth): Ditto.

	* Entry.pm (NEXTKEY): Don't return the last $key if it's one that
	should be hidden.

	* Conn.pm (newEntry): New method, to create an empty LDAP::Entry
	object. It is properly "tied" into the appropriate object.

1999-01-04  Leif Hedstrom  <leif@netscape.com>

	* Entry.pm (setDN): Added third optional argument, to enfoce DN
	normalization.
	(getDN): Ditto.
	(hasDNValue): Ditto.
	(matchDNValue): Ditto.

	* Entry.pm (removeValue): Added support for DN normalization
	(optional argument).
	(addValue): Ditto
	(getDN): Ditto.

1998-12-31  Leif Hedstrom  <leif@netscape.com>

	* Entry.pm (DESTROY): Added this method, don't know if it actually
	makes any sense at all... :(

	* Conn.pm (add): Use _oc_order_ to find a list of attributes, to
	avoide calling the TIEHASH methods.
	(update): Ditto.
	(ALL): Clean out some "my" definitions.

	* Entry.pm (unRemove): New function, to undo remove opertaions on
	an attribute.
	(DELETE): Bug-fix, don't undef the attribute, it would prevent us
	from updating it properly in the Conn::update() method.
	(remove): Ditto.

	* Conn.pm (nextEntry): Return $obj instead of blessing the %entry
	(again).

1998-12-25  Leif Hedstrom  <leif@netscape.com>

	* Conn.pm (POD): Changed examples from $conn -> $entry.

1998-12-17  Leif Hedstrom  <leif@netscape.com>

	* Conn.pm (DESTROY): undef the Perl data after doing a
	ldap_msgfree(), bug #1964.
	(search): Ditto.
	(searchURL): Ditto.
	(nextEntry): Changed the order of setting numattr, to make sure
	it's zero if we don't find anything.

1998-12-16  Leif Hedstrom  <leif@netscape.com>

	* Entry.pm (FIRSTKEY): Modified to honor the oc_order.
	(NEXTKEY): Ditto.
	(markModified): Made as an alias for attrModified().

	* Conn.pm (nextEntry): Added code to handle internal counters for
	number of attributes in oc_order. This is used/needed for the
	FIRSTKEY and NEXTKEY methods in the Entry/Tie::Hash object.

	* Entry.pm (isAttr): New method, to make sure an attribute name
	really is a valid LDAP attribute.
	(FIRSTKEY): Now we'll handle each() and keys() properly, whooohoo!
	(NEXTKEY): Ditto.

1998-12-15  Leif Hedstrom  <leif@netscape.com>

	* Entry.pm (isDeleted): Added new method, almost identical to isModified().
	(EXISTS): New method, to implement the EXISTS functionality.

	* API.xs (RET_CPP): Test for NULL pointers, bug #1387.
	(RET_BVPP): Ditto.

	* Utils.pm (ldapArgs): Fixed bug where "-s 0" would not be honored
	(I'm an idiot, OK?).

1998-12-14  Leif Hedstrom  <leif@netscape.com>

	* Conn.pm (getRes): New method, to return the internal result message.
	(getLD): Use defined() around test for existence.

1998-12-11  Leif Hedstrom  <leif@netscape.com>

	* Conn.pm (new): Make sure binddn and bindpasswd are set to the
	empty string unless specified.
	(init): Make sure certdb is defined before trying to use it.
	(setDefaultRebindProc): Added default auth method, unless
	explicitly specified.

	* Utils.pm (askPassword): Added support for Term::ReadKey.
	(askPassword): Moved the eval "use ..." here.
	(userCredentials): Removed verbose print statement.
	(askPassword): Added an optional argument to print a prompt;

	* Conn.pm (setDefaultRebindProc): Added a default "auth" value, if
	not provided in the call.

1998-12-04  Leif Hedstrom  <leif@netscape.com>

	* Makefile.PL: Modified so that "silent" install will actually
	echo what options it's setting.
	It will now croak() if the SDK dir specified doesn't exist.

	* INSTALL: Updated to reflect new v1.1 stuff. Added links to the
	FAQ.

	* README: Ditto. Also changed some of the binary install
	information, which might not be useful anyways...

	* Makefile.PL: Added "filters" to remove .dll and .sl from shared
	libraries when creating link options. I also replaced the code to
	put the valid library extensions into a variable (bug #1344).

	* Makefile.PL: Fixed some crap with the config parsing, and ENV
	handling (for silent installs).

1998-12-03  Leif Hedstrom  <leif@netscape.com>

	* Conn.pm (update): Bug fix, now we empty the hash array before
	examining changed attributes (bug #1385).

	* Makefile.PL: Added the "-nolinenumbers" XSUBS options (bug #1329).

1998-09-26  Leif Hedstrom  <leif@netscape.com>

	* Conn.pm (init): Cleaned out _perror() calls.
	(delete): Added support for calling delete() with an Entry::
	object as paramter.
	(new): Cleaned out some dead code for $ref.

	* Entry.pm (setValue): New method, to avoid having to use Perl
	assignment statements to set an entire attribute value.

1998-09-18  Leif Hedstrom  <leif@netscape.com>

	* Conn.pm (init): Changed call to ldapssl_client_init() to pass a
	0 value as the handle pointer. This avoids a Perl compiler warning.

1998-09-12  Leif Hedstrom  <leif@netscape.com>

	* LDIF.pm (readEntries): Changed tests for empty arguments, to use
	defined().

	* Utils.pm (ldapArgs): Bug fix, we used the wrong option for the
	certificate (-P) when checking to set the LDAP port.
	(normalizeDN): Chagned tests for empty arguments, to use use defined().

	* Entry.pm (STORE): Changed tests for empty arguments, to use
	defined().
	(DELETE): Ditto.
	(attrModified): Ditto.
	(isModified): Ditto.
	(remove): Ditto.
	(removeValue): Ditto.
	(addValue): Ditto.
	(hasValue): Ditto.
	(matchValue): Ditto.
	(setDN): Ditto.
	(size): Ditto.
	(exists): Ditto.

	* Conn.pm (printError): Changed test for $str to see if it's defined.
	(delete): Cleaned up code around $dn.
	(modifyRDN): Cleaned up testes around $dn and $del.

1998-09-11  Leif Hedstrom  <leif@netscape.com>

	* Conn.pm (modifyRDN): We now preserve the case of the DN/RDN, but
	still treat RDNs as CIS when comparing strings.

1998-09-08  Leif Hedstrom  <leif@netscape.com>

	* Conn.pm (setDefaultRebindProc): Bug fix, it had the Ldapc:: crap
	stil in there... :-(.
	(simpleAuth): New method, to do simple authentication rebind.

1998-09-07  Leif Hedstrom  <leif@netscape.com>

	* Makefile.PL: Changed all <> to <STDIN>, to support command line
	arguments for MakeMaker.

1998-09-03  Leif Hedstrom  <leif@netscape.com>

	* Conn.pm (nextEntry): Fixed bug with case sensitivity.

1998-08-18  Leif Hedstrom  <leif@netscape.com>

	* Conn.pm (setDefaultRebindProc): It's back!
	Officially released PerLDAP v1.0.

1998-08-13  Leif Hedstrom  <leif@netscape.com>

	* Makefile.PL: Fixed so that automated installs works.

	* Conn.pm (update): Fixed narly bug with ldap_modify()...

	* All: Cleaned up some hash indexes, to make sure they are
	properly quoted, and there are no conflicts to resolve.
	
	* Entry.pm (STORE): Fixed a bug with attribute names not being
	properly added to _oc_order_.
	(addValue): Ditto, added the same code as for STORE.

1998-08-06  Leif Hedstrom  <leif@netscape.com>

	* Entry.pm (printLDIF): Copied/modified from the Utils.pm library.
	(isModified): Added this function, thought it might be useful.

1998-08-03  Leif Hedstrom  <leif@netscape.com>

	* Conn.pm (modifyRDN): Fixed! It also has an option to take an
	"external" DN as an argument, if supplied.

1998-08-02  Leif Hedstrom  <leif@netscape.com>

	* Conn.pm (getErrorCode): Now takes two optional arguments, to
	return the match string, and extra error string. Note that these
	two arguments are pointers to strings!

	* API.xs(ldap_get_lderrno): Fixed this function, at least it seems
	to work now...

	* Conn.pm (getLD): Added this function, convenient way to get the
	LD from the OO layer.

1998-07-30  Leif Hedstrom  <leif@netscape.com>

	* Conn.pm (modifyRDN): New method, to rename the RDN of the entry.

	* Utils.pm (answer): New function, from LdapUtils.pm.

	* Conn.pm (delete): Fixed references to normalizeDN.

	* Utils.pm (userCredentials): Added this function, to make it easy
	to get credentials when binding as a user.
	(normalizeDN): Fixed bugs, because of calling convention...

	* Conn.pm (getError): Fixed bug with passing read-only argument.

1998-07-29  Leif Hedstrom  <leif@netscape.com>

	* Utils.pm (unixCrypt): Moved from my LdapUtils.pm module.
	Added askPassword to the export tag.

	* Conn.pm (new): Added support for passing a hash array of all the
	parameters, as returned by the ldapArgs() function.

	* Utils.pm (str2Scope): New function, for converting strings
	(subtree) to a numerical scope value (2).
	(askPassword): Ditto, ask for a password, interactively.
	(ldapArgs): Ditto, handle common LDAP command line arguments.

	* Makefile.PL: Minor change, to do regex match on OS version for
	MSWin.

	* Entry.pm: Changed all _XXX hash values to also end with a _,
	hence making it easier to isolate them (/^_.*_$/).

	* Conn.pm (nextEntry): Changed to accept that the attributes are
	now arrays, not pointers to arrays. We still consider them as
	pointers internally though, it's cleaner API.

	* API.pm: Changed to use the native Exporter function to export
	tags into EXPORT_OK.

1998-07-22  Leif Hedstrom  <leif@netscape.com>

	* LDIF.pm (readEntry): Moved from my LdapUtils.pm package.

	* Utils.pm (printEntry): Moved from the ::Connection class, and
	marked it as "obsolete".
	(encodeBase64): Moved from my LdapUtils.pm package.
	(decodeBase64): Ditto.