== 0.5.2 - 25-Nov-2006
* Fixed a bug in the Daemon class where the service event handling methods
  (most notably service_stop) did not work properly due to thread blocking
  issues.  Many thanks go to Patrick Hurley for the patch.
* Added the Daemon#running? method as helper method for your service_main
  method.
* The 'interactive?' struct member is now just 'interactive'.  This was
  supposed to have been in the last release but was somehow missed.  Sorry.
* Scrapped the old daemon_test.rb file and split it into two new files -
  tdaemon.rb and tdaemon_ctl.rb.  In the process a few bugs were fixed.
* Added a gemspec.
* Documentation and test suite updates.

== 0.5.1 - 18-Jun-2006
* Added the Service.open method.
* The Service.new method now accepts a block, and automatically closes itself
  at the end of the block.
* Fixed in a bug in the Service.create method where setting dependencies
  was not working properly.  Thanks go to Scott Harper for the spot.
* The 'interactive?' struct member is now just 'interactive' since Ruby no
  longer supports question marks in struct member names.  UGH.
* The block for Service#configure_service is no longer optional.
* Replaced ClipSrv with W32Time for most of the test methods in tc_service.rb
  because it had a dependency that is disabled on most systems.
* Added a tweak to the extconf.rb file to help with the test suite.
* Some documentation updates and corrections.

== 0.5.0 - 26-Nov-2005
* Added a service_init hook, and (internally) altered the way the service
  starts.  This was done to deal with services that need to perform any
  initialization in the Daemon itself before the service starts.  Previously
  this would result in the service timing out during startup.
  
  Thanks go to Jamey Cribbs for spotting the problem.
  
* Modified the Daemon example, adding a service_init hook that does about 10
  seconds worth of initialization before finally starting.  See the comments
  in examples\daemon_test.rb for more information.
* Minor test and README changes.

== 0.4.6 - 24-May-2005
* Fixed an initialization bug that could cause Daemons to fail unless the
  win32-service package was the last package require'd.
* Altered the Service.start method.  It now takes any number of arguments
  (after the service and host name).  These arguments are passed to the
  service's Service_Main() function.
* The Service.services method now returns an Array of ServiceStruct's in
  non-block form.
* The Service.start, Service.pause, Service.resume, Service.stop and
  Service.delete methods now return the class (self), not 'true'.
* Added the ability to add or configure the service description in
  Service#create_service or Service#configure, respectively.
* Fixed a bug in the Service.start method where false positives could result.
* Updated the ServiceStatus struct to include pid and service_flags on Win2k
  or later.
* Unicode is now the default setting as far as internal string handling.  It
  will still work fine with 'regular' text.
* Added safe string handling for string input values.
* Added rdoc comments into the C source.
* Made the service.txt and daemon.txt files rdoc friendly.
* Removed the service.rd and daemon.rd files.  If you want html documentation,
  run rdoc over the service.txt and daemon.txt files.
* The dreaded "code cleanup".

== 0.4.5 - 28-Feb-2005
* Fixed an accessor bug in Service#create.  Thanks go to Nathaniel Talbott
  for the spot.
* Eliminated a warning that appeared started in Ruby 1.8.2 regarding Struct
  redefinitions.
* Moved 'examples' directory to toplevel directory.
* Deleted the 'test2.rb' example.  This was supplanted by the 'daemon_test.rb'
  script.
* Renamed the 'test.rb' file to 'services_test.rb'.
* Made this document rdoc friendly.

== 0.4.4 - 27-Aug-2004
* Modified the Service class to use the newer allocation framework.  The
  Daemon class already used this, hence no major version bump.
* Fixed in a bug in the create_service() method with regards to the
  'dependencies' option and null arguments (you no longer need to specify
  an empty array).

== 0.4.3 - 14-Aug-2004
* Fixed the Daemon class by adding back the constants it needed in order to
  run.  I accidentally broke this when I changed the Daemon class from being
  a subclass of Service to being its own class.
* Added a separate test suite for the Daemon class, tc_daemon.rb, to help
  me from making that mistake ever again. :)
* Updated the daemon_test.rb script a bit to report error messages should
  any occur.
* Minor doc updates

== 0.4.2 - 10-Jul-2004
* The Daemon class is no longer a subclass of Service.
* Added the 'pid' and 'service_flags' struct members to the Win32Service
  struct.  These members are only available to folks using Windows 2000 or
  later and who compile with VC++ 7.0 or later (including the .NET SDK).
* The Service.services method now accepts a group name as an optional third
  argument.  Again, you must be using Windows 2000 or later and compile with
  VC++ 7.0 or later (including the .NET SDK).
* The deprecated STR2CSTR() functions were replaced with StringValuePtr().
  This also means that as of this version, win32-service requires Ruby
  1.8.0 or greater.
* Moved the sample programs to doc/examples
* Removed the .html files under /doc.  You can generate that on your own if
  you like.

== 0.4.1 - 14-Mar-2004
* Added the exists? class method and corresponding test suite additions.
* Pushed the ServiceError and DaemonError classes under the Win32 module.
* Normalized tc_service.rb so that it can be run outside of the test directory
  more easily.

== 0.4.0 - 9-Feb-2004
* Changed "worker" method to "service_main" method.
* Added event hooks for stop, pause, resume, etc.  See the documentation for
  further details.  (Thanks Park Heesob)
* Some of the Daemon functions were raising ServiceError.  They have been
  changed to DaemonError.
* Updated the daemon_test.rb file to use the new event hooks.
* Documentation additions and updates.

== 0.3.0 - 31-Jan-2004
* Added a Daemon subclass.  This allows you to run Ruby programs as a service.
  Please see the documentation for more details. (Thanks Park Heesob).  This
  should be considered an ALPHA release.
* The Win32ServiceError class has been renamed to just ServiceError.  I felt
  the "Win32" was redundant, given that it's already under the Win32 module.
* In some cases a bogus error description was being returned because the
  GetLastError() function was being called too late.  This has been fixed.
  (Thanks Park Heesob).
* The explicit garbage collection has been removed because what I thought was
  a memory leak was not, in fact, a memory leak.  In addition, it was hurting
  performance badly.
* The "\r\n" is now automatically stripped from error messages.  This was
  causing slightly garbled error messages.  (Thanks Park Heesob).
* Added explicit closing of the Service Control Manager handle in the
  services() function for those rare cases where it may fail while reading
  service information.
* Made some of the error strings a bit more descriptive.
* Test suite and documentation additions, including a sample daemon program
  in the test directory called "daemon_test.rb".

== 0.2.2 - 15-Jan-2004
* Fixed a mistake in the service_init declaration within Init_service().
* Fixed bug in the service_init function with regards to desired access.
* Modified service_free() function to explicitly set the hSCManager handle
  to NULL and modified the service_close() method to test hSCManager handle
  for NULL value.  This should eliminate accidentally trying to close an
  already closed handle, which may have happened as the result of a free()
  call. (Thanks Park Heesob).
* Added explicit garbage collection in Service.services() method.
* More explicit about closing open HANDLE's when error conditions arise.

== 0.2.1 - 2-Nov-2003
* Made the exported less redundant and less verbose, e.g.
  Service::SERVICE_DISABLED is now just Service::DISABLED.  The same is true
  for the service control constants, i.e. the 'SC_' has been removed.
* Corresponding test suite changes.

== 0.2.0 - 16-Oct-2003
* The constructor has been changed.  It now only takes a machine name and a
  desired access for arguments.  The keyword arguments are now part of the
  create_service method() and only in block form.  See the documentation for
  more details.
* Added a configure_service() and close() instance methods.
* Added several new constants to allow finer control over created and
  configured services.
* Added Win32ServiceError as an exception.  All failures now raise this
  error instead of a vanilla StandardError.
* Moved some common code into the service.h file.

== 0.1.0 - 10-Oct-2003
- Initial release