Commit Graph

49 Commits

Author SHA1 Message Date
Andy McFadden
b42cc8efe9 Fix Linux build
gcc is justifiably annoyed by variable initialization crossed by
a goto.

(issue #51)
2021-09-07 13:36:28 -07:00
Andy McFadden
d39c61255c Work around ProDOS sparse block issue
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)
2021-07-23 18:52:23 -07:00
Andy McFadden
eff69cce86 Fix a few compiler warnings
Mostly uninitialized class members.  Should not cause a change in
behavior.
2021-05-09 18:43:59 -07:00
Andy McFadden
adaeb2c6eb Fix warnings
Added explicit casts and class initializers.  The problems were
identified by the VS2019 compiler.
2021-04-24 13:43:04 -07:00
Andy McFadden
8a6a4ada5c Update to latest build tools (breaks WinXP)
This updates the project to use the VS2019 toolchain (v142).  Note
this breaks WinXP compatibility.

The MFC and VC runtime DLLs have been updated from v120 to v140.

The program version has been updated to v4.1.0-d1.
2021-04-24 11:38:41 -07:00
mlong
8813a5efd9 Fixed typo. 2021-02-28 12:28:27 -06:00
mlong
dcefd2d2b6 Fixed a couple of stupid copy/paste errors 2021-02-27 18:24:28 -06:00
mlong
db3ca0a8ca Added file length size option to getRawFileName 2021-02-27 16:51:40 -06:00
mlong
fd4ac77bcf Added raw filename to A2File and children. Handled in RDOS and DOS types, especially. 2021-02-26 18:36:20 -06:00
Andy McFadden
fb25998be5 Fix handling of ProDOS disks with short volume directories
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.
2020-07-23 14:12:16 -07:00
Andy McFadden
640959dad5 Fix 64-bit math error
32-bit * 32-bit = 32-bit, so disk images with partitions whose size
exceeded the capacity of a 32-bit int were coming out wrong.

Updated version to 4.0.3-a1.
2017-10-30 10:17:54 -07:00
Andy McFadden
98f098d421 Half-step toward VS2015 CE
When initially opened in Visual Studio 2015 Community Edition, the
project was updated to use the v140_xp toolset.  When the program
was run under WinXP it complained about a missing runtime DLL.  When
the DLL was provided, it complained about another one (with a
slightly strange name).  So I reverted the tools to v120_xp, i.e.
Visual Studio 2013.  (I don't know if this works because the tools
are included with VS2015, or because I have VS2013 installed and it
managed to find them.)

Whatever the case, it now builds for me with either IDE, and seems
to work fine on Windows XP, but I'd like to figure out why the XP
build isn't working with the v140_xp tools.
2016-01-11 11:33:41 -08:00
Andy McFadden
900b4c7757 Address gcc complaint 2015-01-09 22:28:41 -08:00
Andy McFadden
3d3c19d67f Fixes for Gutenberg, Jr. disks
Also added some observations about the file format.
2015-01-09 22:25:14 -08:00
Andy McFadden
1362c73a7e Gutenberg tweaks
Changed the catalog scan offset so we don't overrun the buffer.

Changed a strcpy() to strncpy().

Added Gutenberg to the list of formats MDC outputs.
2015-01-09 18:24:09 -08:00
Andy McFadden
b97584eeb6 Update Linux build
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.
2015-01-08 18:27:09 -08:00
Andy McFadden
e620d054bb It's not Win9x
Changed the two IsWin9x() functions to always return false.

Eventually we'll want to roll this up, removing the Win9x branch
of the code that called these.
2015-01-08 18:04:09 -08:00
Andy McFadden
b79498da50 Improve filename handling when adding files
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.
2015-01-08 14:16:20 -08:00
Andy McFadden
d94b707489 Use more integers with explicit widths
Updated some structs and a few DiskImg APIs, primarily file type,
aux type, and access flags.
2015-01-04 18:20:59 -08:00
Andy McFadden
84706d7ea4 Update NufxLib snapshot to v3.0.0d2
This integrates the latest NufxLib sources, and updates CiderPress
to work with the API changes.
2015-01-04 11:29:51 -08:00
Andy McFadden
bf33db11ee Update README.md 2014-12-16 14:07:53 -08:00
Andy McFadden
9a7283fa49 Fix build complaint
For some reason there was a "minimum version" with no "subsystem".
I'm not really sure what this is all about, but all the other
projects have this value, and it seems happier now.
2014-12-15 22:00:26 -08:00
Andy McFadden
8e53955045 Quick experiment
The Gutenberg_Jr1_f1.dsk image wasn't recognized, so I fiddled with
the code a bit.  Still doesn't look quite right, and I don't really
know anything about Gutenberg disks, so I'm leaving the new version
disabled for the moment.
2014-12-12 21:39:35 -08:00
Andy McFadden
c8f8018721 Separate and expand the DiskImg docs
Move DiskImg info out of the main README, and expand upon it.
2014-12-12 14:17:22 -08:00
Andy McFadden
29e64011e1 Don't use %zd format
Visual Studio still doesn't support it.
2014-12-11 17:34:25 -08:00
Andy McFadden
8e910b23ca gcc/linux updates
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.
2014-12-11 16:36:40 -08:00
Andy McFadden
be8d3a4911 WinXP compatibility update
This changes the Platform Toolset configuration from "Visual Studio
2013 (v120)" to "Visual Studio 2013 - Windows XP (v120_xp)".  Without
this change, executables built by VS2013 will not run on WinXP.

To actually run on WinXP, we also need to install the redistributable
msvcr120.dll and mfc120u.dll, both of which are fairly large.  The
installation package has more than doubled in size.

At some point we may want to drop WinXP support -- Microsoft declared
end-of-life on April 8 2014 -- but if the only penalty is a 2MB increase
in installer size, we might as well keep supporting WinXP users.
2014-12-10 11:57:41 -08:00
Andy McFadden
2f136fd5ab Fix some static analyzer quibbles 2014-12-02 17:55:19 -08:00
Andy McFadden
aa3145856c Use types with explicit sizes
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.
2014-11-24 15:57:25 -08:00
Andy McFadden
edb7c13120 Fix diskimg OpenImage
The OpenImage method had an overload that took void*.  This turns out
to be a bad idea, because void* matches any pointer type that didn't
match something else.  So the WCHAR* filenames were going to the "open
from buffer" method rather than the "open from file" variant.

A less important issue is whether open-from-buffer should take a const
or non-const pointer.  If the "readOnly" boolean flag is not set, then
the contents can be altered and const is inappropriate.  The best course
seems to be to drop the boolean flag as an argument, and just have two
different methods.
2014-11-23 10:34:57 -08:00
Andy McFadden
d8223dbcfd Relocate method comments
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.
2014-11-21 22:33:39 -08:00
Andy McFadden
8f61f84585 Use types with explicit sizes
Much of what the "reformat" code does involves processing data that is
8, 16, or 32 bits.  We want to use size-specific types from stdint.h
(e.g. uint16_t) rather than "unsigned short".

This was a quick pass to replace the various "unsigned" declarations.
More can be done here and elsewhere.
2014-11-20 18:10:18 -08:00
Andy McFadden
d60a6dbcfa Fix some issues identified by static analyzer
Includes "printf format" annotation on debug log function.
2014-11-19 14:54:24 -08:00
Andy McFadden
3f9561f2d5 Define _CRT_SECURE_NO_WARNINGS and _CRT_NONSTDC_NO_DEPRECATE
There's probably some value in using the "secure" versions of the
various string functions, but I don't want to deal with it right
now.  We won't use them for the stuff that builds under Linux
anyway (diskimg, nufxlib).

This largely eliminates warnings from VC++.
2014-11-18 14:55:13 -08:00
Andy McFadden
9a67e7b1d3 Minor fixes
Fix release build.

Eliminate a few warnings.
2014-11-18 14:30:51 -08:00
Andy McFadden
f6647b9978 Convert WSMG to LOG
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.
2014-11-18 14:16:35 -08:00
Andy McFadden
bf5e2bce50 Change "nil" to "NULL" 2014-11-17 21:37:36 -08:00
Andy McFadden
d21ba553ab Added new logging macros
Visual Studio figured out variadic macros around 2005, so we can
finally replace the explicit-arg-count debug log macros.

Also, fixed some include guards.

Also, bumped version to 4.0.0d1.
2014-11-17 18:07:07 -08:00
Andy McFadden
51b5f00f5c Large set of changes to restore CiderPress build.
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.
2014-11-16 21:01:53 -08:00
Andy McFadden
63b9996009 Normalize indentation and EOL
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.
2014-11-03 16:26:53 -08:00
Andy McFadden
b11f10dddf Visual Studio 2013 update
This updates the project files for Visual Studio 2013, and removes
the old Visual Studio 6 (1998) project files.  The update tool had
a number of complaints (see UpgradeLog.htm) that may need to be
addressed.

Also, replaced .cvsignore with .gitignore.

Visual Studio reports 1886 build errors, nearly all of them due to
the switch from MBCS to Unicode.  The former is no longer
supported "out of the box", and its use is discouraged, so we're
going to bite the bullet and use wide characters in the UI.
2014-11-03 14:05:07 -08:00
David Schmidt
0d0bfde65a Select the correct memory copy routine from the C runtime... 2009-02-28 20:43:32 +00:00
David Schmidt
abd3515424 Adding read capability for Gutenberg word processor formatted disks 2009-01-04 22:23:04 +00:00
David Schmidt
1d091e3bf5 Ignoring the locally-produced build log 2009-01-04 16:59:53 +00:00
Andy McFadden
e390a98ab8 Make gcc happy.
Remove carriage returns from linux makefiles.
Remove vestigal dependency info from libhfs makefile.
2009-01-03 19:08:48 +00:00
Andy McFadden
732cd85ce5 CP/M: added support for Microsoft Softcard "data only" disks.
CP/M: correctly identify 3.x disks
Updated some copyright notices.
2009-01-03 19:02:13 +00:00
David Schmidt
b5d96e53fa Ignore intermediate build artifacts 2008-12-16 02:55:16 +00:00
David Schmidt
535a38c4e1 Ignore intermediate build artifacts 2008-12-16 02:48:27 +00:00
Andy McFadden
0d7d1b67e0 initial import 2007-03-27 17:47:10 +00:00