The ProDOS code was assuming that the volume directory was 4 blocks
long. Some disks, such as the ProDOS 2.4.2 distribution disk, only
use the first two blocks. CiderPress now scans the volume directory
to determine the actual length.
Fixes issue #32.
Most of this change is a conversion of the old FileDetails struct
into a new LocalFileDetails class. The new class keeps the
members private, and keeps the Unicode and MOR representations of
the string separate.
The NuFX and DiskImg libraries don't support UTF-16 filenames,
so we stil can't add files with non-CP-1252 filenames, but we're
a step closer.
Also, update NufxLib with a couple of fixes from the main project.
Also, fix handling of "%00" when adding files.
Also, mark most of the A2FileDOS fields private. Not sure why
they weren't.
Focusing on the diskimg library this time, which deals with a lot of
filesystem structures that have specific widths.
This is still a bit lax in places, e.g. using "long" for lengths.
Should either specify a bit width or use di_off_t.
Also, added "override" keyword where appropriate.
Also, bumped library version to 5.0.0.
CiderPress and MDC now compile, and execute far enough to open
their respective "about" boxes, but I doubt they'll do much
more than that.
* Switch from MBCS to UNICODE APIs
Microsoft switched to UTF-16 (by way of UCS-2) a long time ago,
and the support for MBCS seems to be getting phased out. So it's
time to switch to wide strings.
This is a bit awkward for CiderPress because it works with disk
and file archives with 8-bit filenames, and I want NufxLib and
DiskImgLib to continue to work on Linux (which has largely taken
the UTF-8 approach to Unicode). The libraries will continue to
work with 8-bit filenames, with CiderPress/MDC doing the
conversion at the appropriate point.
There were a couple of places where strings from a structure
handed back by one of the libraries were used directly in the UI,
or vice-versa, which is a problem because we have nowhere to
store the result of the conversion. These currently have fixed
place-holder "xyzzy" strings.
All UI strings are now wide.
Various format strings now use "%ls" and "%hs" to explicitly
specify wide and narrow. This doesn't play well with gcc, so
only the Windows-specific parts use those.
* Various updates to vcxproj files
The project-file conversion had some cruft that is now largely
gone. The build now has a common output directory for the EXEs
and libraries, avoiding the old post-build copy steps.
* Added zlib 1.2.8 and nufxlib 2.2.2 source snapshots
The old "prebuilts" directory is now gone. The libraries are now
built as part of building the apps.
I added a minimal set of files for zlib, and a full set for nufxlib.
The Linux-specific nufxlib goodies are included for the benefit of
the Linux utilities, which are currently broken (don't build).
* Replace symbols used for include guards
Symbols with a leading "__" are reserved.
This updates all source files to use spaces instead of tabs for
indentation. It also normalizes the end-of-line markers to be
Windows-style CRLF, and ensures that all files end with EOL.
No substantive changes were made; "diff -w" is empty.