Reorganize commands into separate modules - ods2.c was way too big.
This reduces it from around 3000 LOC to less than 1K LOC.
Reorder I/O so PHYVIRT mediates all physical access.
Fix memory leaks of device structures.
Reorganize Files-11 vs. internal structures.
Allow more granular control of DEBUG from the makefile.
Show VOLUME handles free space and tries to match geometry from SCB to known disk types.
Fix many compilation warnings.
Add code to allow dumping disk data for debug.
Automatically generate descrip.mms from dependencies.
Correctly handle directory default version limit; previously confused with file version limit.
Teach help to sort tables for presentation; manually keeping them sorted is problematic,
and code maintenance prefers functional groupings.
Add the ability to initialize a Files-11 volume. (Not quite complete.)
Add dependency generation to makefiles. Excludes system headers so
makedepends isn't required to build.
Simplify makefiles to use more recipes.
Teach makefiles to list all sources and headers so it's easier to keep git and MSVC up-to-date.
Add support for accessing images of disks with interleave/skew/offsets (e.g. RX02).
Add VHD support, including ability to create a snapshot with mount/write.
Teach RMS to handle NOSPAN variable length records correctly.
Fix RMS GET handling of variable length records with VFC that span block boundaries.
Fix delete file (a day-one incomplete). Still some cases to validate.
Purge cache of modified blocks at rundown and at the end of each command.
Do not allow deletion of reserved files.
Move revision history to version.h
Correct various permissions in git.
This makes libvhd run on windows, with some minor tweaks on Unix.
The latter make it possible to capture errors on a terminal rather than syslog.
A bug was fixed where an error code wasn't properly negated on return.
The 'absolute path" code now writes an absolute path.
Many compiler warnings were dealt with; this code now compiles cleanly under
MSVC as well as linux (gcc).
The approach was to do as much mechanical substitution as possible to avoid
introducing new bugs - even where some re-engineering would be profitable.
These comprise the vhd library from the XEN project. They are a subset of the XEN tools.
From http://www.openfoundry.org/svn/xenids/xen-4.0.0/tools/blktap2/
This commit is the baseline as found in XEN. Subsequent commits will fix compile issues
and allow compilation under Windows.
The API will remain compatible with the shared library, which can also be used. (With
these headers.)
Show version includes the other configuration info, including READLINE and ASPI.
Fix a memory leak in Unix show devices.
Start using valgrind. Add VLD support for Windows.
Fix memory leaks in main command processing.
add command line arguments to history if USEing_READLINE
Add atexit() and rundown support to dismount volumes at exit.
Update makefiles for READLINE - some versions require you to link with termcap or ncurses as well.
Fix memory leak in set default (including implicit set default on mount)
Free WCCFILE on search NAM$M_SYNCHK as VMS does. Also release when returning RMS$_NMF.
Add nam$l_rlf field to NAM
Implement show devices for VMS.
When reusing a WCB for large file, ensure that the file header pointer is valid.
Add show cwd so it's easy to find out default for local files.
Add set cwd
Add spawn cmd so it's easy to inspect copied files.
Handle condition codes properly.
Finish sysmsg.
Add standard macros to stsdef.h
Deal with strerror on windows.
1) Check for the alternate HOM block LBN
2) Continue search on checksum or consistency failure
3) Validate all fields in the ODS-2 specification
4) Compute BOTH checksums.
5) Mask checksum result to 16 bits, always.
Also, call phyio_done on errors mounting physical devices.
Many style/formatting edits.
Bug fixes.
Reverted some previous changes temporarily while reviewing new code.
Merged Baker's "virtual device" in a simpler form. ODS2 will assign a sensible
drive name when mounting /image (== /virtual). If a specific drive name
is desired, mount /image drivename=filespec.
Files can be quoted, or use set qualifier_style unix if slashes are a problem.
Note that mount on the command line allows tab completion.
Moved "statistics" command into show.
Coded support for import/binary (fixed records, 512 bytes).
Converted fgets to fgetline
Added show devices for Unix (limited by standard APIs)
Got rid of separate ODS2-Image build.
Various errors in DEBUG code.
List parser for devices and labels used unchecked fixed-size arrays.
Make dynamic, and deal with ", "
Add some paranoia checks to diskio. Fix memory leak under WIN32.
In phynt, write in the right direction (from Larry Baker notes)
Use the VMS-style messages for all errors,warnings.
Allow selection of full message or just text in getmsg()
Use dynamic buffer for command input (except VMS).
Simplify command input and pre-processing.
Mount command improvements:
If labels are specified, make sure they match the volumes
Make sure number of devices specified matches hom block's volset count.
Verify that all volumes claim to belong to the same volume set
Verify that volumes are mounted in RVN order, and that labels match VOLSET.SYS
When a volume set is mounted, announce its name.
Improve cleanup on mount failure (more to do)
Remove obsolete/unused header.h
Dismount command lost drive parameter in previous commit.
Under windows, limit confusion by assigning pseudo-drive letters for images more
carefully. Avoid letters used by Windows.
Dir /detail wasn't reporting rab$b_fsz correctly.
qualifier list keyword syntax error now reported correctly.
Include Windows release .exes in git.
Improve conditional compilation in compat.
Parse & provide help for /qualifier=value /qualifier=(keyword,keyword...)
Use for for dir/date and dir/size
Allow multiple dates for dir. e.g.
dir/date=(created,expired,backup,modified)
Specify size options consistent with VMS:
dir/size=(used,alloc)
Ignore \r in indirect command files under non-windows
Fix various compiler warnings.
Fix bug causing double free when a file isn't found.
Fix bug using uninitialized variable parsing null filename.
Fix bug causing crash when format 3 retrieval pointer encountered.
Add support for readline (command line editing and history on Unix)
Untangle NT I/O so it builds without the direct access SCSI API & works.
Report errors as text messages everywhere.
Add MSVC project files.
Implement most of dir/full
Partially implement XABITM
Add help to command tables.
Allow choice of VMS qualifiers or Unix options.
mount /write // /dev/cdrom
or
mount -write /dev/cdrom
Parse quoted strings as command parameters.
Mount /write "/dev/cdrom"
search [*...]*.txt "My words for you"
Resolve command, parameter & qualifier ambiguity from tables.
Consolidate the various makefiles into a common file with very small
platform-specific wrappers. This simplifies maintenance.
Add diskio module to allow easy access to .iso images and simulator files.
Removes requirement for loop device or equivalent. Builds as a separate
executable.
Writes to the ODS2 volumes are broken.
This patch:
Corrects some symbol conflicts
Raises the optimization level
uses '//' to stop parsing qualifiers to allow copying to unix directories
allows '$" to separate multiple commands on the command line
I scraped the patch off the website, de-htmlized it, and applied it.
Note: I'm not updating the .exes!
This version was on the VMS FREEWARE disk at some point.
It shipped with the included .exes, though modern windows systems certainly don't support the
direct access to SCSI DLL that's used.
1) The readme is out-of-date, and unreadable on github
2) Some tools have their own directories, some don't
3) Many tools have neither readme nor descriptions.
4) Some files are misplaced
This reorganizes so that each tool has its own directory, even if it only has a single file
(Hint: If you use a tool, please add/update READMEs)
The master README is complete, and readable on github
The tools are in alphabetical order within category. There are some cases where this probably isn't the right thing to do, e.g. where there are separate tools that do "to" and "from" conversions.
Each tool has at least a 1-line description in the master readme
This commit does not change any tool.