README.md
This is an improved version of SRD, dated 3-DEC-1980.
From: Phil Stephensen-Payne,
c/o Systime Ltd.,
Concourse Computer Centre,
432 Dewsbury Road,
LEEDS LS11 7DF,
England.
This version is intended to combine all the versions of SRD I know of
(Ray van Tassle's, Bob Turkelson's and my own) into one (easily
tailorable) unit, which can then hopefully be used as a base for
future modifications. The changes from 'standard SRD' fall into
three categories, as follows:-
1. Those made by:-
Ray Van Tassle
Motorola
1301 E. Algonquin Rd.
Room 4135
Schaumburg, Ill.
It has been sporadically updated over the last year and a half, so
long that I forgot what it's original base was. I think it was
the version distributed with our IAS V 2.0 system.
The original SRD had a massive number of bugs, the worst one was
probably that it would loose files on a Write-back (but mostly only
on very large directories) !!!!!!!
This version has had all the bugs I could find fixed, plus a lot of
enhancements.
Some of the key things are:
Write-back works properly, and it also re-tries if it gets an I/O
error on the write.
It will dynamically expand it's core buffer (via EXTSK$
directive) if the directory won't fit.
If the entire directory won't fit, it will do it in chunks, each
of which is sorted properly; along with a warning message.
A trailer line for each directory is given, showing the number of
files in the UFD, and the number of files selected. If a
switch that causes the file header to be read is specified
(/MI, /FU, or a date switch), the number of blocks
used/allocated is also given.
A "nolist" switch is added, so you can get the above trailer
info, without getting a list of the individual files (very
handy for scanning an entire disk).
The user write-up has been re-written.
On date select, the "before" and "after" dates can now both be
specified.
The format of the output has been slightly modified so that a
simple TECO macro can make a PIP command file to copy (or
whatever) the selected files. Two macros to do just that are
also on this tape, in my UFD for TECO macros. To use them, do:
SRD XXX.CMD=????
TEC XXX.CMD
*EISTRIP$$
*EIGET$$
* (any other edit you may want to do)
*EX$$
2. Those made by:
BOB TURKELSON
NASA/GODDARD SPACE FLIGHT CENTER
CODE 934
GREENBELT, MARYLAND 20771
(301) 344-8864
Dave Parker, Henry Tumblin
Duke University Medical Center
Box 3181
Durham, NC 27710
(919) 684-6804
Support for /CO/LO/MU switches (to select contiguous, locked, or
multi-header files).
Support selection of files created between two dates when both
/BE and /AF are used in the same command line.
Yes/No/Quit/Go responses for selective delete (obtained from
another version of SRD).
Support /OV:[n] switch to select obsolete versions of files,
which are those files which would be deleted if the /PU:[n]
switch were used, and those which would not be selected if the
/SV:[n] switch were specified. This provides a convenient
method for users to see their obsolete files, and for system
managers to determine which users are not regularly purging
their files.
Fixes for a few bugs (including the one reported in the October
1979 Multi-Tasker).
Remove the requirement that a period must be included in the /SE:
switch file specification, even if the file searched for has
the null type.
If the conditional symbol WILD$ is defined in SRDPRE.MAC, treat
the file specification string given in the command line as if
it has wild card matching after the name and type fields
given, unless /DE, /SD, or /PU is specified (but never if the
file specification appears in an /SE: or /SD: switch). A
previous version of SRD treated any file specification in this
manner, even if it appeared in the /SE: switch. Thus there was
no method of obtaining only *.CM files, if any *.CMD files
existed, or only TALL.* files if any TALLER.* files existed.
The version from the New Orleans tape corrected this problem.
However, to list all files beginning with OMSI, one must
specify >SRD /SE:OMSI* rather than simply >SRD OMSI . In order
to make SRD easier to use in our most common situation,
without removing its new capability, we chose to make this
modification. If any files are to be deleted, we always
require the stricter syntax, to help insure that no file is
deleted just because its name may be similar to those being
deleted.
Support for the /ID switch to identify which version of SRD is
being used. Current version is V5.0.
Support for the /BF switch which displays how much buffer space
is available for use by SRD to read in the directory file.
The code for reading the directory file into memory has been
modified to read in as much of the directory as possible into
memory, compress the directory, then if there is still more to
read, attempt to continue reading it in. This seems to work on
directories which are large but not logically dense.
The dynamic checkpoint allocation does not seem to be working
properly and SRD should not be built with this feature until
it is resolved.
3. Those made by me:-
Phil Stephensen-Payne,
c/o Systime Ltd.,
Concourse Computer Centre,
432 Dewsbury Road,
LEEDS LS11 7DF,
England.
a. Modify SRD.CMD (as developed in 2) to contain all the code for
building SRD, thus removing SRDASM.CMD.
b. Set up initial values of switch masks from Task Builder GBLDEF
statements (and add code to SRD.CMD to set them up), thus
allowing users to configure various aspects of SRD defaults
(e.g. inclusion/exclusion of [0,0]) as they wish.
c. Replace the conditionalised code under WILD$ (from 2) with a
pair of switches /WI and /WD. If /WI is set (by specification
or task builder parameter) then FRED implies FRED* (and so
on). In addition the switch /WD indicates whether such
wild-carding is valid for delete operations. Note that if /WI
is not specified then FRED will still imply FRED.*, but FRED.
will look only for files with a null extension.
d. /BF switch (in 2) renamed to /SI (size) to avoid conflict with
date switches.
e. /DA, /AF and /BE modified to handle inclusion of time and/or
date.
f. Date handling extended to cover:-
/AE = After or on a given date/time.
/AF = After (but not on) a given date/time.
/BE = Before or on a given date/time.
/BF = Before (but not on) a given date/time.
/DA = On a given date/time.
g. Added /HE to provide help.
h. Added /AT to determine whether or not output device should be
attached if a terminal.
i. Added /M2 to allow a different flavour of 'Middle-Sized
Listing' (as developed in 1). If /M2 is not set (by
specification or TKB) then the format is as defined by Ray van
Tassle viz:-
Filename Creation Date/Time Revision Date/Time
If it is set, the format is one I prefer, viz:-
Filename Filesize CLM flags File ID Creation Date/Time
j. Added a /00 switch to specify whether [0,0] should be included
in [*,*] searches.
k. Added a /SY switch to specify whether system accounts ([0,*]
to [10,*]) should be included in [*,*] searches.
l. Modified output so that if /RD (Revision Date selection) is
specified with a date selection or /MI/M2 the date output is
the revision Date instead of the Creation Date.
m. Combined the methods of 1 and 2 for coping with big
directories, so that now SRD will read the directory a bit at
a time (if necessary), compressing as we go (as in 2) and if
there is still insufficient room, will do it in chunks (as in
1). As far as I can tell the method works, but I have been
unable to test it properly as I cannot now create a directory
too big for it to handle (I gave up after about 1600 files -
if you have more than that in one directory you've probably
got problems anyway!).
n. Updated the version to 6.0.
For full details on this version of SRD consult SRD.DOC.