* Renamed the RD_RLM2_CLIENT_TCP_PORT define to RD_PAD_CLIENT_TCP_PORT.
* Renamed the RD_RLM_SOURCE_UNIX_ADDRESS define to
RD_PAD_SOURCE_UNIX_ADDRESS.
* Added a RD_PYPAD_SCRIPT_DIR define.
* Added an 'RDNotification::PypadType' value to the
'RDNotification::Type' enumeration.
* Added 'PypadOwner=' and 'PypadGroup=' directives to the
'[Identity]' section of rd.conf(5).
* Added an rdpadengined(8) service.
* Added a 'PYPAD_INSTANCES.IS_RUNNING' field to the database.
* Added a 'PYPAD_INSTANCES.EXIT_CODE' field to the database.
* Added a 'PYPAD_INSTANCES.ERROR_TEXT' field to the database.
* Incremented the database version to 304.
* Added a '--metadata-cart=' switch to the 'audio_convert_test'
test harness.
* Added an 'audio_metadata_test' test harness.
* Modified ID3 tag reading/writing to use TagLib.
* Consolidated the implementation of the 'RDProfile' class into
two files.
* Added an rdselect_helper(1) SETUID helper program.
* Removed the SETUID bit from rdselect(1).
* Changed column headings to lower-case in rdairplay(1).
* Changed column headings to lower-case in rdlibrary(1).
* Changed column headings to lower-case in rdcatch(1).
* Changed column headings to lower-case in rdlogmanager(1).
* Implemented application of the 'Purge Logs' setting when creating
logs manually.
* Changed the wording of the 'Purge Logs' and 'Purge ELR Data'
control in the Edit Service dialog in rdadmin(1).
* Added 'RDLog::create()' and 'RDLog::remove()' static methods.
* Added a 'USER_SERVICE_PERMS' table to the database.
* Incremented the database version to 272.
* Added a 'Service Permissions' button to the Edit User dialog in
rdadmin(1).
* Added a 'GROUPS.DEFAULT_CUT_LIFE' field to the database.
* Incremented the database version to 269.
* Added 'RDGroup::defaultCutLife()' and 'RDGroup::setDefaultCutLife()'
methods.
* Added a 'Set End Date/Time' control to the 'Edit Group' dialog in
RDAdmin(1).
* Added static 'RDSvc::create()' and 'RDSvc::remove()' methods.
* Implemented 'CreateService=' and 'NewServiceTemplate=' parameters
in the [Provisioning] section of rd.conf(5).
* Added a [Provisioning] section to rd.conf(5).
* Moved code to create new hosts to the 'RDStation::create()' method.
* Moved code to delete hosts to the 'RDStation::remove()' method.
* Implemented 'CreateHost=' and 'NewHostTemplate=' parameters
in the [Provisioning] section of rd.conf(5).
* Added support for cart/cut rendering to the 'Render Log' dialog
in rdlogedit(1).
* Added a length check when rendering to cart/cut in
'lib/rdrenderer.cpp'.
* Fixed a bug in 'lib/rdcart.cpp' that caused the 'Import' web API call
to return 404 when importing with 'CREATE' set to '1' and unique titles
enabled in the database.
* Added a 'CUTS.SHA1_HASH' field to the database.
* Incremented the database version to 261.
* Added a 'Sha1' column to the Cut List in 'rdlibrary/audio_cart.cpp'.
* Added 'RDCut::sha1Hash()' and 'RDCut::setSha1Hash()' methods in
'lib/rdcut.cpp' and 'lib/rdcut.h'.
* Added a '--rehash=' directive to rddbcheck(8).
* Added a 'Rehash' Web API call.
* Added an 'RDRehash' class in 'lib/rdrehash.cpp' and 'lib/rdrehash.h'.
* Added rdxml_parse_test(1) in 'tests/'.
* Added a RDCart::readXml()' method in 'lib/rdcart.cpp' and
'lib/rdcart.h'.
* Fixed a typo in the 'averageSegueLength' field in the 'RDCart::xml()'
method in 'lib/rdcart.cpp'.
* Removed the 'validity' field from the output of the 'RDCart::xml()'
method in 'lib/rdcart.cpp'.
* Removed the 'validity' and 'localCounter' fields from the output
of the 'RDCut::xml()' method in 'lib/rdcut.cpp'.
* Added a 'Cut Log' report in 'lib/export_cutlog.cpp'.
* Added 'DESCRIPTION' and 'OUTCUE' fields to the '_SRT' table
schema.
* Incremented the database version to 255.