149 Commits

Author SHA1 Message Date
Fred Gleason
108fd8c40c 2017-06-19 Fred Gleason <fredg@paravelsystems.com>
* Added a 'SYSTEM.FIX_DUP_CART_TITLES' field to the database.
	* Incremented the database version to 264.
	* Added 'RDSystem::fixDuplicateCartTitles()' and
	'RDSystem::setFixDuplicateCartTitles()' methods in 'lib/rdsystem.cpp'
	and 'lib/rdsystem.h'.
	* Added an 'Auto-Correct Duplicate Cart Titles' checkbox to the
	'System Settings' dialog in 'rdadmin/edit_settings.cpp' and
	'rdadmin/edit_settings.h'.
	* Modified the 'EditCart' web call to enforce the 'Auto-Correct
	Duplicate Cart Titles' setting.
2017-06-19 13:16:33 -04:00
Fred Gleason
2cc1c403c2 2017-05-17 Fred Gleason <fredg@paravelsystems.com>
* Added a 'Ticket' field to the test harness page at
	'web/test/listsystemsettings.html'.
2017-05-17 15:00:36 -04:00
Fred Gleason
bfcdaa6dfc 2017-05-17 Fred Gleason <fredg@paravelsystems.com>
* Added an 'RDSystem::xml()' method in 'lib/rdsystem.cpp' and
	'lib/rdsystem.h'.
	* Added a 'ListSystemSettings' web API call.
2017-05-17 12:33:49 -04:00
Fred Gleason
39c887018a 2017-05-10 Fred Gleason <fredg@paravelsystems.com>
* Fixed a bug in the 'SaveLog' web API that failed to update the
	last modified datestamp.
2017-05-10 10:48:08 -04:00
Fred Gleason
7cf2b5b2f7 2017-04-20 Fred Gleason <fredg@paravelsystems.com>
* Added a '--enable-rdxport-debug' switch to 'configure.ac'.
2017-04-20 10:26:41 -04:00
Fred Gleason
781f6a7ea9 2017-04-17 Fred Gleason <fredg@paravelsystems.com>
* 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.
2017-04-17 12:54:18 -04:00
Fred Gleason
a0e4b92bbf 2017-04-11 Fred Gleason <fredg@paravelsystems.com>
* Fixed a bug in 'web/rdxport/import.cpp' that caused temporary files
	to be left behind after processing an Import web call.
2017-04-11 09:18:52 -04:00
Fred Gleason
0eda6b79fc 2017-04-06 Fred Gleason <fredg@paravelsystems.com>
* Added an rdauth(1) utility in 'utils/rdauth/'.
	* Fixed a regression in 'lib/rdcart.cpp' that caused the 'Import'
	web API call to fail with an 'unsupported format' error.
2017-04-06 15:26:30 -04:00
Fred Gleason
9eb7c12b1a 2017-04-05 Fred Gleason <fredg@paravelsystems.com>
* Fixed a regression in 'web/rdxport/rdxport.cpp' that broke
	the CreateTicket web API call when connecting from localhost
	or the machines registered IP address.
2017-04-05 15:14:00 -04:00
Fred Gleason
275c08b156 2017-04-03 Fred Gleason <fredg@paravelsystems.com>
* Added a 'USERS.LOCAL_AUTH' field to the database.
	* Added a 'USERS.PAM_SERVICE' field to the database.
	* Added an index on 'STATIONS.IPV4_ADDRESS' to the database.
	* Incremented the database version to 262.
	* Added 'RDUser::localAuthentication()',
	'RDUser::setLocalAuthentication()', 'RDUser::pamService()' and
	'RDUser::setPamService()' methods in 'lib/rduser.cpp' and
	'lib/rduser.h'.
	* Added 'PAM Service' and 'Authenticate This User Locally' controls
	to the Edit User dialog in 'rdadmin/edit_user.cpp' and
	'rdadmin/edit_user.h'.
	* Added a PAM service configuration in 'conf/rivendell.pam'.
2017-04-03 18:15:07 -04:00
Fred Gleason
9cfcfcb5be 2017-04-03 Fred Gleason <fredg@paravelsystems.com>
* Changed all instances of authorization failure in the rdxport service
	to return code 404.
2017-04-03 11:04:39 -04:00
Fred Gleason
11a6609876 2017-03-30 Fred Gleason <fredg@paravelsystems.com>
* Changed the result code of the 'AddCart' service when the cart
	already exists from '403' to '400'.
	* Changed the result code of the 'EditCart' service when attempting
	to set a forced length on a macro cart from '403' to '400'.
	* Changed the result code of the 'EditCart' service when attempting
	to set a forced length outside of the valid range from '403' to '400'.
	* Changed the result code of the 'Export' service when attempting
	to export from a cut with no audio content from '403' to '404'.
	* Changed the '401' result code of the 'EditCart' service to be 403.
	* Changed the '401' result code of the 'DeleteAudio' service to be 403.
	* Changed the '401' result code of the 'Export' service to be 403.
2017-03-30 11:38:18 -04:00
Fred Gleason
5dc6fa92a9 2017-03-29 Fred Gleason <fredg@paravelsystems.com>
* 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'.
2017-03-29 11:09:15 -04:00
Fred Gleason
bc2c441680 2017-03-27 Fred Gleason <fredg@paravelsystems.com>
* Added a 'WEBAPI_AUTHS' table to the database.
	* Added a 'USERS.WEBAPI_AUTH_TIMEOUT' field to the database.
	* Incremented the database version to 260.
	* Added 'RDUser::webapiAuthTimeout()' and
	'RDUser::setWebapiAuthTimeout()' methods in 'lib/rduser.cpp' and
	'lib/rduser.h'.
	* Added a 'WebAPI Timeout' control to the Edit User dialog in
	'rdadmin/edit_user.cpp' and 'rdadmin/edit_user.h'.
	* Implemented a 'CreateTicket' Web API call.
2017-03-27 13:43:42 -04:00
Fred Gleason
5b5800d27f 2017-03-16 Fred Gleason <fredg@paravelsystems.com>
* Fixed a bug in 'lib/rdaudioconvert.cpp' that caused conversions
	from MPEG Layer 3 VBR data to be truncated when no end point
	was specified.
	* Fixed a bug in 'web/rdxport/import.cpp' that caused the
	end marker to be positioned incorrectly when importing MPEG
	Layer 3 VBR files.
2017-03-16 16:11:41 -04:00
Fred Gleason
0a934357c4 2017-03-01 Fred Gleason <fredg@paravelsystems.com>
* Added 'RDCart::xmlSql()' and second 'RDCart::xml()' methods.
	* Refactored the 'RDCart::xml()' method to use a SQL query.
	* Refactored the Cart and Cut web methods in 'web/rdxport/carts.cpp'
	to use SQL queries.
2017-03-01 11:52:14 -05:00
Fred Gleason
db0e842496 2017-02-21 Fred Gleason <fredg@paravelsystems.com>
* Modified 'lib/rdformpost.cpp' to use read-only accessors for
	std::map values.
	* Added a check for valid event IDs for the 'SaveLog' method in
	'web/rdxport/logs.cpp'.
2017-02-21 16:51:25 -05:00
Fred Gleason
79a0efb50d 2017-02-07 Fred Gleason <fredg@paravelsystems.com>
* Fixed a bug in 'web/rdxport/logs.cpp' the caused the 'SaveLog'
	web method to fail.
2017-02-07 08:46:24 -05:00
Fred Gleason
82ec0c73b5 2017-02-02 Fred Gleason <fredg@paravelsystems.com>
* Fixed a bug in 'web/tests/editcut.js' that caused the EditCut
	test harness to fail when using non-localhost URLs.
	* Fixed a bug in 'web/tests/editcart.js' that caused the EditCut
	test harness to fail when using non-localhost URLs.
2017-02-02 12:07:49 -05:00
Fred Gleason
41b3db2408 2017-01-31 Fred Gleason <fredg@paravelsystems.com>
* Added an 'AddLog' method to the Web API.
	* Added an 'DeleteLog' method to the Web API.
	* Added a 'SaveLog' method to the Web API.
	* Added 'eventLength', 'linkEventName', 'linkStartSlop',
	'linkEndSlop', 'linkId', 'linkEmbedded', 'extStartTime',
	'extLength', 'extCartName', 'extData', 'extEventId',
	and 'extAnncType' XML fields to the return of the ListLog web
	API method
2017-01-31 18:01:46 -05:00
Fred Gleason
15f3da11d4 2017-01-18 Fred Gleason <fredg@paravelsystems.com>
* Added a 'LOG_NAME' call parameter to the 'ListLogs' web service.
2017-01-18 07:40:58 -05:00
Fred Gleason
e65f9a9716 2017-01-13 Fred Gleason <fredg@paravelsystems.com>
* Implemented automatic cart/cut creation as part of the 'Import'
	web method.
2017-01-13 19:15:31 -05:00
Fred Gleason
a80aa50e29 2016-11-28 Fred Gleason <fredg@paravelsystems.com>
* Added 'CREATE' and 'GROUP_NAME' call fields to the 'Import' web
	API call in 'web/rdxport/import.cpp'.
2016-11-28 10:02:11 -05:00
Fred Gleason
51cdcfb9be 2016-08-03 Fred Gleason <fredg@paravelsystems.com>
* Fixed a bug in rdlibrary(1) that caused exports to contain incorrect
	marker data in the RDXL file structure.
2016-08-03 12:21:05 -04:00
Fred Gleason
d8636ebb2c 2016-07-13 Fred Gleason <fredg@paravelsystems.com>
* Implemented storage of RDXML data structures within a 'rdxl'
	user defined information frame in ID3 tags 'lib/rdwavefile.cpp' and
	'lib/rdaudio_convert.cpp'.
2016-07-13 10:11:08 -04:00
Fred Gleason
b64b01b148 2016-07-12 Fred Gleason <fredg@paravelsystems.com>
* Implemented storage of RDXML data structures within a 'rdxl' chunk
	in WAV files.
2016-07-12 14:36:17 -04:00
Wayne Merricks
f1175cd2f2 Fixes for invalid NULL sql on date/times
Most files are simple swaps to get rid of extra " as a NULL return will give
invalid SQL if used as follows UPDATE x SET y="NULL";

See github issue 121 for more info.

Extra changes have been made to the following files:
* lib/rdcartslot.cpp
- Added a QDateTime variable to prevent EVENT_DATETIME becoming
  "2016-06-09" "NULL" as it was checked separately for date and time
* lib/rdcut.cpp
- Reworked START_DATETIME and END_DATETIME to save the SQL ifs.  I believe this
  makes it easier to read and understand.
- The >QDate(1900,1,1) and < 8000 is probably not needed but I left it there
  just in case.
* lib/rdescape_string.cpp
- Reworked to add extra " if the date is not NULL see issue 121
* lib/rdfeed.cpp && lib/rdpodcast.cpp
- Had to add a SetRow for QDateTime as with the string conversion the existing
  SetRow would add an extra set of "
* lib/rdsound_panel.cpp && rdairplay/log_traffic.cpp
        && utils/rddgimport/rddgimport.cpp
- Added a QString to contain EVENT_DATETIME to prevent double checks of date
  and time separately (similar to lib/rdcartslot.cpp)
* rdcatchd/rdcatchd.cpp
- Reverted the changes.  The RML here is not touching the DB so is fine, plus
  with the RDCheckDateTime changes you'd have extra " unless it was NULL
* tests/sas_switch_torture.cpp && sas_torture.cpp
- Included missing rdescape_string.h
2016-06-09 00:01:38 +01:00
Wayne Merricks
1bfd555d00 web/rdcastmanager/rdcastmanager.cpp MySQL v5.7+ date/time changes 2016-06-04 23:21:32 +01:00
Fred Gleason
698b475933 2016-05-24 Fred Gleason <fredg@paravelsystems.com>
* Removed all CVS tags.
	* Removed 'const char *name' parameter from all QObject contructors.
2016-05-24 13:13:26 -04:00
Fred Gleason
3b766a5e7d 2016-05-18 Fred Gleason <fredg@paravelsystems.com>
* Added an entry for the Broadcast Tools SRC-16 in
	'docs/SWITCHERS.txt'.
	* Added a 'CUT_EVENTS' table to the database.
	* Added a 'DECK_EVENTS' table to the database.
	* Incremented the database version to 256.
	* Implemented a 'Cut Event' ['CE'] RML.
	* Added a 'Event Carts' section to the Edit Deck dialog in
	'rdadmin/edit_deck.cpp' and 'rdadmin/edit_deck.h'.
2016-05-18 13:43:21 -04:00
Fred Gleason
687a8c6fc8 2016-04-27 Brian McGlynn <brian.mcglynn@geneseemedia.net>
* Added a 'bitRate' field in the return for the AudioInfo web method.
	* Added an rdexport(1) utility in 'utils/rdexport/'.
2016-04-27 19:46:39 -04:00
Fred Gleason
330a602fb5 2016-03-25 Fred Gleason <fredg@paravelsystems.com>
* Changed 'uninstall' to 'uninstall-local' targets in all
	'Makefile.am' files.
2016-03-25 10:30:45 -04:00
Fred Gleason
c5419b2dbe 2016-03-25 Fred Gleason <fredg@paravelsystems.com>
* Fixed a bug in 'web/rdxport/export.cpp' that caused the web 'Export'
	service to return an internal server error if the requested audio
	didn't exist.
2016-03-25 09:56:13 -04:00
Fred Gleason
03cfa9d614 2016-03-24 Fred Gleason <fredg@paravelsystems.com>
* Update web test methods in 'web/tests/'.
	* Added an 'RDSchedCode' class in 'lib/rdschedcode.cpp' and
	'lib/rdschedcode.h'.
	* Implemented the 'ListSchedCodes' web method in
	'web/rdxport/schedcodes.cpp'.
	* Implemented the 'AssignSchedCode' web method in
	'web/rdxport/schedcodes.cpp'.
	* Implemented the 'UnassignSchedCode' web method in
	'web/rdxport/schedcodes.cpp'.
	* Implemented the 'ListCartSchedCodes' web method in
	'web/rdxport/schedcodes.cpp'.
	* Extended 'RDGetWebTime()' and 'RDGetWebDateTime()' functions to
	support XML 'xs' namespace formats.
	* Implemented '*_POINT' fields in the 'EditCut' web method in
	'web/rdxport/carts.cpp'.
	* Modified the 'RDCart::removeSchedCode()' method so as to treat
	scheduler codes in a case-insensitve manner.
	* Modified the return of the 'EditCut' web method to provide a full
	<cutList> record in 'web/rdxport/carts.cpp'.
2016-03-24 13:53:39 -04:00
Fred Gleason
6fbb9a1206 2016-03-24 Fred Gleason <fredg@paravelsystems.com>
* Added 'web/tests/utils.js'.
	* Fixed a bug in 'web/rdxport/carts.cpp' that allowed the EditCart web
	method to set carts to non-existent groups.
2016-03-24 12:15:04 -04:00
Fred Gleason
1b3721f66c 2016-03-24 Fred Gleason <fredg@paravelsystems.com>
* Added a 'Type' control to 'web/tests/listcart.html'.
       * Fixed a bug in 'web/rdxport/carts.cpp' that broke the 'ListCarts'
       API call when no group was specified.
2016-03-24 12:04:25 -04:00
Fred Gleason
c0446ea5f7 Merged 04bd883b65b9922c35216b92b4da52245fdc7f5b from master 2015-09-15 08:06:20 -04:00
Fred Gleason
398408476c 2015-08-30 Fred Gleason <fredg@paravelsystems.com>
* Added PCM24 to 'lib/export_settings_dialog.cpp'.
2015-08-30 08:14:59 -04:00
Fred Gleason
8d70a79387 2015-08-29 Fred Gleason <fredg@paravelsystems.com>
* Added an 'RDAudioConvert::Stage3Pcm24()' method in
	'lib/rdaudioconvert.cpp' and 'lib/rdaudioconvert.h'.
	* Added a 'Format::Pcm24' value to the 'RDSettings::Format'
	enumeration in 'lib/rdsettings.h'.
	* Modified the 'RDAudioConvert' class to support generating PCM24
	output in 'lib/rdaudioconvert.cpp' and 'lib/rdaudioconvert.h'.
	* Modified the 'RDPlayStream' class to support playing PCM24
	data in 'rdhpi/rdplaystream.cpp'.
	* Modified the 'RDRecordStream' class to support capturing PCM24
	data in 'rdhpi/rdrecordstream.cpp'.
	* Added an 'audio_peaks_test' harness in 'tests/audio_peaks_test.cpp'
	and 'tests/audio_peaks_test.h'.
	* Added 'PCM24' to the list of available formats in
	'rdadmin/edit_rdlibrary.cpp' and 'rdadmin/edit_rdlibrary.h'.
	* Added 'PCM24' to the list of available formats in
	'rdadmin/edit_decks.cpp'.
	* Added PCM24 support for file importation in
	'web/rdxport/import.cpp'.
	* Added an 'RDCae::Pcm24' value to the 'RDCae::AudioCoding
	enumeration in 'lib/rdcae.h'.
2015-08-30 07:49:44 -04:00
Fred Gleason
16284179cc Consolidated .gitignore files 2015-05-28 12:05:07 -04:00
Fred Gleason
5935d19ca6 2014-10-09 Fred Gleason <fredg@paravelsystems.com>
* Implemented the 'RDXPORT_COMMAND_AUDIOSTORE' web API call in
	'web/rdxport/audiostore.cpp', 'web/rdxport/rdxport.cpp' and
	'web/rdxport/rdxport.h'.
	* Added an 'RDAudioStore' class in 'lib/rdaudiostore.cpp' and
	'lib/rdaudiostore.h'.
	* Modified the Desk Gauge widget in 'rdlibrary/disk_gauge.cpp'
	and 'rdlibrary/disk_gauge.h' to use the 'RDAudioStore' class
	[fixes GitHub issue #000035].
2014-10-09 19:13:29 -04:00
Alban Peignier
3dfcbe67cb 2014-09-19 Alban Peignier <alban@tryphon.eu>
* Fixed 'web/rdxport/carts.cpp' which tried to create associated group
	during cart creation
2014-09-19 10:06:10 +02:00
Fred Gleason
173fe17013 2014-08-17 Fred Gleason <fredg@paravelsystems.com>
* Fixed a regression in 'web/rdcastmanager/Makefile.am' that caused
	the incorrect executable to be installed for 'rdcastmanager.cgi'.
	* Refactored SQL statements in 'lib/rdweb.cpp'.
2014-08-18 12:27:06 -04:00
Fred Gleason
ad27f32bfd 2014-08-15 Fred Gleason <fredg@paravelsystems.com>
* Modified 'conf/Makefile.am' to install 'rd-bin.conf' in
	$(sysconfdir).
	* Updated 'INSTALL' to include information about the '--sysconfdir'
	flag.
	* Updated 'get_distro.sh' to detect RHEL 7 correctly.
	* Modified the installation script to work on RHEL 7 in
	'rivendell.spec.in'.
2014-08-15 21:45:05 -04:00
Fred Gleason
e0e5d76d6c 2014-08-14 Fred Gleason <fredg@paravelsystems.com>
* Fixed a bug in 'Makefile.am' that broke the 'make install' rule
	when using DESTDIR.
	* Fixed a bug in 'icons/Makefile.am' that broke the 'make install'
	rule when using DESTDIR.
	* Fixed a bug in 'rlm/Makefile.am' that broke the 'make install'
	rule when using DESTDIR.
	* Fixed a bug in 'scripts/Makefile.am' that broke the 'make install'
	rule when using DESTDIR.
	* Fixed a bug in 'xdg/Makefile.am' that broke the 'make install'
	rule when using DESTDIR.
	* Fixed a bug in 'rdselect/Makefile.am' that broke the 'make install'
	rule when using DESTDIR.
	* Fixed a bug in 'web/rdxport/Makefile.am' that broke the
	'make install' rule when using DESTDIR.
	* Fixed a bug in 'configure.ac' that cause an incorrect VERSION
	string to be generated.
2014-08-14 20:13:50 -04:00
Fred Gleason
89b846f7d6 2014-08-14 Fred Gleason <fredg@paravelsystems.com>
* Fixed warnings in 'lib/rdaudioconvert.cpp'.
	* Fixed warnings in 'lib/rdaudioexport.cpp'.
	* Fixed warnings in 'lib/rdaudioimport.cpp'.
	* Fixed warnings in 'lib/rdcart_dialog.cpp'.
	* Fixed warnings in 'lib/rdconf.cpp'.
	* Fixed warnings in 'lib/rdcopyaudio.cpp'.
	* Fixed warnings in 'lib/rdescape_string.cpp'.
	* Fixed warnings in 'lib/rdevent_line.cpp'.
	* Fixed warnings in 'lib/rdfeed.cpp'.
	* Refactored 'RDOneShot' to use int values in 'lib/rdoneshot.cpp'
	and 'lib/rdoneshot.h'.
	* Fixed warnings in 'lib/rdpeaksexport.cpp'.
	* Fixed warnings in 'lib/rdtrimaudio.cpp'.
	* Fixed warnings in 'lib/rdwavefile.cpp'.
	* Fixed warnings in 'rdhpi/rdhpiplaystream.cpp'.
	* Fixed warnings in 'rdhpi/rdhpirecordstream.cpp'.
	* Fixed warnings in 'rdhpi/rdhpisoundcard.cpp'.
	* Fixed warnings in 'pam_rd/pam_rd.cpp'.
	* Fixed warnings in 'rdadmin/edit_rdairplay.cpp'.
	* Fixed warnings in 'rdairplay/list_log.cpp'.
	* Fixed warnings in 'rdairplay/log_play.cpp'.
	* Fixed warnings in 'rdairplay/pie_counter.cpp'.
	* Fixed warnings in 'rdairplay/rlm_host.cpp'.
	* Fixed warnings in 'rdcatchd/rdcatchd.cpp'.
	* Fixed warnings in 'rdlogedit/editlog.cpp'.
	* Fixed warnings in 'rdlogmanager/rdlogmanager.cpp'.
	* Fixed warnings in 'rdrepl/replfactory.h'.
	* Fixed warnings in 'ripcd/acu1p.cpp' and 'ripcd/acu1p.h'.
	* Fixed warnings in 'ripcd/bt16x2.cpp' and 'ripcd/bt16x2.h'.
	* Fixed warnings in 'ripcd/btss164.cpp' and 'ripcd/btss164.h'.
	* Fixed warnings in 'ripcd/btss42.cpp' and 'ripcd/btss42.h'.
	* Fixed warnings in 'ripcd/btss44.cpp' and 'ripcd/btss44.h'.
	* Fixed warnings in 'ripcd/btss82.cpp' and 'ripcd/btss82.h'.
	* Fixed warnings in 'ripcd/btsrc16.cpp' and 'ripcd/btsrc16.h'.
	* Fixed warnings in 'ripcd/btsrc8iii.cpp' and 'ripcd/btsrc8iii.h'.
	* Fixed warnings in 'ripcd/livewire_mcastgpio.cpp'.
	* Fixed warnings in 'ripcd/local_gpio.cpp' and 'ripcd/local_gpio.h'.
	* Fixed warnings in 'ripcd/sas64000gpi.cpp' and 'ripcd/sas64000gpi.h'.
	* Fixed warnings in 'ripcd/vguest.cpp' and 'ripcd/vguest.h'.
	* Fixed warnings in 'utils/rdhpiinfo/rdhpiinfo.cpp'
	* Fixed warnings in 'utils/rdgen/wavlib.cpp'
	* Fixed warnings in 'utils/rdimport/rdimport.cpp'
	* Fixed warnings in 'utils/rdsoftkeys/rdsoftkeys.cpp'
	* Fixed warnings in 'web/rdxport/export.cpp'
2014-08-14 19:08:38 -04:00
Fred Gleason
6532b723b2 2014-08-14 Fred Gleason <fredg@paravelsystems.com>
* Amalgamated INCLUDE Makefile entries into AM_CPPFLAGS.
	* Added '-Wno-portability' to the invocation of 'automake' in
	'autogen.sh'.
2014-08-14 13:20:26 -04:00
Fred Gleason
8c7dd1d861 Added .gitignore files 2014-08-14 12:19:23 -04:00
Fred Gleason
afd67c7af8 Initial import of CVS-v2_8_branch 2014-08-12 15:13:02 -04:00