It appears that some programs, notably Copy ][+ and the GS/OS FST,
expect that the first block of a sparse file will always be
allocated, even if it's just 512 zeroes. I've only seen this fail
in cases where the first entry in the master index block of a "tree"
file is zero, because the first 128KB are sparse, but rumor has it
that the issue can affect "sapling" files as well.
This changes CiderPress to work the way ProDOS does: always allocate
a block to hold the first 512 bytes of the file. The only exception
to this is a file that is nothing but zeroes (perhaps populated by
creating a file and setting its EOF to something large), which can
be stored as a seedling.
(for issues #15 and #49)
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.
Fix some %ld message in log messages, and update the Linux sample
code to match recent changes in NufxLib and DiskImgLib.
Also, bump MDC version to 3.0.0 to match Windows version.
Many updates to format strings, largely as a result of changing
various "long" variables to uint32_t.
Fixed the diskimg debug macros for gcc, which requires an extra
"##" to remove the "," when there are no arguments. (Apparently
Visual Studio just strips this away for you.)
Stripped out a couple of dead variables spotted by gcc. Return
the actual error in a couple of HFS file functions.
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.
This moves method comments from the .cpp file to the .h file,
where users of the methods can find them. This also makes it
possible for the IDE to show the comments when you mouse-hover over
the method name, though Visual Studio is a bit weak in this regard.
Also, added "override" keywords on overridden methods. Reasonably
current versions of popular compilers seem to support this.
Also, don't have the return type on a separate line in the .cpp file.
The motivation for the practice -- quickly finding a method definition
with "^name" -- is less useful in C++ than C, and modern IDEs provide
more convenient ways to do the same thing.
Also, do some more conversion from unsigned types to uintXX_t.
This commit is primarily for the "app" directory.
Mostly a bulk conversion of debug messages, primarily with sed:
sed -e 's/\(WMSG[0-9]\)\(.*\)\(\\n"\)/LOGI\2"/'
This removes the '\n' from the end of the log messages, and sets
them all to "info" severity.
We want to prefix each line with file/line and/or a timestamp,
so it doesn't make sense to have a partial line, and there's no
value in embedding the '\n' in every string.
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.