* Fixed a bug in the 'RDEscapeString' function that caused corruption
in UTF-8 strings.
* Added a UTF-8 complaint MySQL driver in 'drivers/qt3-mysql-utf/'.
* Added an 'RDEscapeShellString()' function in 'lib/rdescape_string.h'
and 'lib/rdescape_string.cpp'.
* Fixed a bug in 'lib/rduser.cpp' that caused PAM authentication of
accounts with a password containing one or more '$' characters to fail.
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
With MySQL v5.7+ you have to specifically set either a valid date or NULL
otherwise you get SQL errors. In previous versions setting a date to "" implied
NULL, this is no longer the case which causes nice SQL errors all over the
place.
This new RDCheckDateTime is an overloaded function that calls the respective
isValid method of QDate/Time/DateTime and either returns the requested formatted
string or returns NULL as a string.
This can then be used as part of an INSERT/UPDATE without breaking the stricter
NULL interpretation of MySQL v5.7+.
* 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'