Viet-Tam Luu [Mon, 4 Dec 2017 21:54:19 +0000 (13:54 -0800)]
Better handling of UTF-8 paths (#87)
* Better handling of UTF-8 paths
Remove gpsbabel calls to qPrintable which destroys non-ANSI path names on Windows. Replace with QString::toUtf8() and modify low-level file handling code to use _wfopen() and other wide-char functions on Windows to support non-ASCII paths. (I did an experiment to convince myself that fopen() doesn't do UTF-8, and that _wfopen() correctly creates a file with a non-ASCII filename starting from a UTF-8 name.) Add ufopen() function as a UTF-8 wrapper for fopen(). Change inifile_init() filename argument type to QString.
Leave serial port paths alone ("if your serial port path has non-ANSI characters, you're going to have a bad time").
* Fix valgrind mismatched free/malloc error.
* Correctly encode output paths in native locale on non-Windows
On Mac/Linux, convert output file path from internal UTF-8 to local encoding (which may be UTF-8 or something else) when creating the file. Fixes test_encoding failure.
* Support Unicode paths for .gz files on Windows
Use zlib's Windows-specific gzopen_w() to support Unicode paths.
* Convert UTF-8 to local encoding when opening gzip file on non-Windows
This should fix the test_encoding failure on Travis-CI.
Also, change Windows side to manually allocating wchar_t array; although a bit less elegant, it's very localized and avoids introducing a whole new dependency on std::wstring.
* Use explicit char* to QString conversion in qPrintable
The implicit conversion works, but I prefer the an explicit one (if only as a reminder that we should convert all internal strings to QString).
* Add comment to QString-to-wchar_t[] conversion
... since it may not be immediately obvious what that line of code does.
* Fix merge conflict resolution error
* Fix merge conflict (again)
* Revert shape.cc
* Update gbfile.cc
* Update mkt_logger.cc to use QString tempfile paths.
* Change ufopen() to take QString filename argument.
Where converting from char*, use an explicit QString::fromUtf8() conversion rather than the implicit QString(const char*) constructor.
* Use QFile::exists() and QFile::open() rather than ufopen() to verify a file exists and can be opened.
* Remove redundant call to QFile::exists(). Trivial include cleanup in main.cc.
GPSBabel [Mon, 4 Dec 2017 08:17:12 +0000 (02:17 -0600)]
Merge pull request #124 from tsteven4/appveyor
Appveyor for misc internal builds (debug /opt, 32/64, mscvc/gcc, etc) and start adding features to allow a full release withing Amveor, hopefully in lliest tientethan it takes my VM down download and register the mandatory 4GB of updates! Hooray kl
Viet-Tam Luu [Fri, 1 Dec 2017 00:53:58 +0000 (16:53 -0800)]
Support Unicode environment variables.
Create ugetenv() OS-abstraction to return a QString environment variable value. Use it in place of getenv() in most places. Update inifile.cc routines to use QString to support Unicode paths for the gpsbabel.ini file, also greatly streamlining the code.
Viet-Tam Luu [Mon, 27 Nov 2017 23:32:52 +0000 (15:32 -0800)]
Fix KML writer crash bug
When Google Earth uses gpsbabel to import KML in "live" USB mode, kml_wr_position_init() is called before kml_wr_init() resulting in deferencing an uninitialized "writer" pointer. The solution is just to remove the setAutoFormatting(false) call; there's no real need for it as it doesn't measurably impact performance. Also remove other calls to remove nice formatting on timestamps (addressing a FIXME comment), and update the golden test data to match.
tsteven4 [Thu, 23 Nov 2017 00:39:37 +0000 (17:39 -0700)]
cleanup support for shape files.
memory leaks, memory corruption, and other bugs fixed.
on write the required .dbf file is now created.
test added.
document updated.
Robert Lipe [Mon, 13 Nov 2017 06:44:20 +0000 (00:44 -0600)]
A bunch of busywork to satisfy hyperactive warnings from newer compilers. Part 1. Explictly initialize every member of a struct, Don't use C-style functions that take no args, don't name method arguments that aren't used, etc.