Here  is a list of many of the programs I have written over the years both for my personal use and to help me in my job.
Some are still relevant, some are obsolete or superseded, and some are just experiments or self-teaching exercises.
 
As of 2011, many of the .c programs no longer compile. Despite their copyleft date many were originally written 20 or 30 years ago. I will update them when I need to use them, otherwise they are just here as examples.
 
Not all the programs listed here are antiquated, however. For instance, dijkstra.cpp was written in 2014 while I was investigating Dijkstra's algorithm.
 
 
activate.c VMS: Activate(load) a shareable image containg a given symbol and return the symbol's value.
addcr.c Filter to convert between Unix⁄Windows textfile end-of-line conventions.
Windows prefixes linefeeds with carriage returns, Unix does not.
archive.cmd Use RCS to check in a file, setting the first revision to 1.0.
Creates an RCS subdirectory if necessary.
archive -h displays the following usage text:
Usage:  archive [-k] file file [file...]
        By default, RCS Keyword expansion is performed
        for .c .cpp .h .cmd and .bat files and not for others
        -k  reverses this interpretation
            (-k only applies to initial checkin)
        Notes: 1. The archive is stored in RCS subdirectory,
                  which will be created if necessary
               2. Each file specified invokes ci separately
                  unlike the ci command, there is no opportunity
                  to reuse the previous checkin message.
                  There's always cut-and-paste, though.
argloop.cmd A quickly-written Windows command procedure to demonstrate passing an unspecified number of arguments into a procedure.
attr.cmd A procedure to change the attributes of Windows files. Basically not necessary, the attrib built-in command does the same thing, this is just shorter to type.
attr -h displays the following usage text:
attr changes or displays the attributes of its filename arguments
Usage: attr [+or- attr] file [file...]
awk2c.c A quickly-written Windows program to turn an awk script into an executable file. It does this by simply running the GNU gawk program (which must be present) on the awk script. I don't recall why I wrote this; either it was an experiment or I saw some advantage in having a wrapper for gawk.
base64.cpp A quickly-written program to test base64 encoding⁄decoding.
basename.c A routine to perform the  Unix shell basename(1) function from a C program.
t should compile on Windows, Unix, Mac OSX, Linux, and VMS.
batchprompt.c A windows program to prompt the user, wait a specified time, then return an exit status indicating what the user typed.
I'm not sure why I wrote this, but I do recall using it in Windows command scripts. It may have been because the standard Windows way of doing this does not time out (I think, please correct me if I'm wrong).
bg A unix script to enhance the & operator that runs commands in the background.
It "nice's" the command and presents a few options & doesn't, such as ringing a bell when the command finishes.
Help text for this script is rather sparse (I'll try to change this soon) so you'll have to read it to get an understanding of what it does.
bg.cmd Windows does not have the & operator for running background commands. This script tries to fix that. by starting up a separate command window to run the command. Unlike bg above, the script contains help text; typing bg -h should give you a better idea of what it does.
Currently the script depends on the publicly available messagebox.exe program to notify the user when it is finished. I should probably change it so that if you don't have this program on your system it won't use it. If anyone has some good ideas on how to check for a program's existence (without parsing the PATH which I consider too time-consuming) please let me know.
Maybe I should just run the program and try and suppress any error messages that appear if it doesn't work.
bg -h displays the following usage text:
Usage: bg [--notify] [-k] [-w title] [-h] command
       by default, a dialog box pops (MessageBox.exe) when the command finishes
       --notify suppresses the dialog box
       -k will cause the window to remain (uses cmd ⁄K instead of cmd ⁄C)
       -w specifies alternate title for background window.
            note: arguments of the form -w a=b are parsed incorrectly
       -h will print this message and terminate.
       MessageBox.exe should be located on the executable PATH
       If not present on the system, it can be downloaded
       and extracted from http:⁄⁄www.optimumx.com⁄download⁄MessageBox.zip
       MessageBox.exe procedure worked well on Windows XP, but on Windows 7
       I had to change its permission to allow everyone to execute it.
bgc.cmd Windows: Prompts the user for commands, builds a .cmd file of those commands, and then runs that .cmd file in the "background" and logs the output by calling bg log2 -o -t with the generated .cmd file as an argument
bgc -h displays the following usage text:
Usage: bgc [-h]
       -h: prints this text and exits
            any other options specified are passed to log2
bgl.cmd Windows: Invokes the command procedure combination bg log2 -o -t %* to run a command in the background and log the output.
bgc -h displays the following usage text:
Usage: bgl [-h] command
       -h: prints this text and exits
            any other options specified are passed to log2
bigint.cpp A C++ routine to demonstrate the use of large, arbitrarily-sized integervalues.
binsort.c Generic routines to manage binary sorted lists.
bitmap.hpp Bitmap class used by showprimes.cpp.
bj.c Teach and play blackjack according to basic strategy (or a user-specified strategy). It can be run in automatic mode to test the effectiveness of a particular strategy. Compiles on all OS's and architecture I've used.
bkspc.c Remove backspace and DEL characters from files.
bldfilt A quickly-written short unix shell script to build programs in my filter package. Much of the code is specific to my computing environment but is easily modifiable if you decide to use it. It's contains only one executable line long and there is no documentation. Figuring it out is left as the proverbial exercise for the reader.
boxc.c Create a boxed comment from plain text (on stdout). This is particularly useful if it can be invoked from inside a text editor on a highlighted range of lines. Most of the programs on this web site used boxc.
boxc writes boxed comments on stdout
boxc -h displays the following usage text:
Usage: boxc [-a -d[12] -+ -- -= -x -⁄ -u -l# -t# -h -? ⁄?]  [file]
           -a       delimit comment boxes with asterisks (default)
           -d,-d1 doxygen style
           -d2     another doxygen style
           -+       delimit comment boxes with plus signs
           --        delimit comment boxes with minus signs
           -=       delimit comment blocks with equal signs at top and bottom
           -x       delimit comment with minus signs top and bottom, plus on sides
           -⁄        (minus-slash) create C++ comments (not a box)
           -u       attempt to remove boxed comment delimiters
           -l#       if needed, pad comment text to # characters (ignored if -⁄,-d)
           -t#      assume tab size is # (default 8)
           ⁄?        as the first argument, -h, or -? display this message
           Tab characters are expanded inside comment blocks
           Trailing white space is stripped
           Leading white space is preserved
           Tabs are used in leading white space if tabs were present in the input
           stdin is used if file is omitted or is "-"

Click here for more information.
bytorder.c Determines, on the host machine, the order of bytes within a multi-byte value (little- or big-endian).
chpr.cmd Personal utility (windows) (windows) to change the DOS box prompt string.
chrsplit.c A simple implementation of the Unix⁄Linux split command, it splits a large file into smaller chunks. Not as versatile as the Unix⁄Linux command but simple and cross-platform. Unlike Unix⁄Linux split, it splits the file on a character, not line, basis.
ci0.cmd Personal utility (windows) to check the first version of a file into RCS with version number 1.0. (The RCS default is 1.1)
cktask.cmd Personal utility (windows) to run the Windows tasklist command. Entering "cktask" without an argument prints this help text:

cktask -h displays the following usage text:
Usage: cktask process_name [FO_option]
       is equivalent to tasklist ⁄FI imagemane eq process_name.exe
       type tasklist ⁄? for more information
cktree.cmd Personal utility (windows) to run the Cygwin "find" command (called cygfind on my system so as not to conflict with the Windows "find" command) searching for non-directory files and running a command on those files. Typing cktree -h displays this help text:
cktree -h displays the following usage text:
cktree [cmd] [dir], cmd default=cksum, dir default=.
scans files in tree using cygfind
cl1.cmd Personal utility (windows) to compile a C file using Microsoft Visual C++. Typing cl1 -h displays this help text:
Entering cl1 -h prints
Usage: cl1 [-h -x] [cl_qualifiers] file
compiles a C file using Microsoft Visual C++
        -h  display this message and terminate
        -x  run executable file after compiling
cl1.cmd: $Revision: 1.1 $
cmd2exe.cmd Obsolete windows utility I used to use to convert .cmd files into .exe files. .Exe files run in more contexts than .cmd files.
copyp.cmd Personal utiliity (windows) to copy files to the current directory, first prompting for confirmation.
crelnm.c VMS C routine to create a VMS logical name.
crypto.c A program I dashed off some time ago to generate cryptograms for a relative in the hospital who liked solving them.
csrcs.c An alias program (see mkalias.c) for the CSRCS command.
csrcsdiff.cmd Personal utility (windows) to compare the files in the current directory with those stored in a CSRCS repository.
ctab.c A C program to convert tabs to spaces or vice-versa. It is described more fully here.
cvttime.c Utility routines to convert Unix-like date and time character strings to numbers.
Uses skipws.c.
d.cmd Personal utility (windows) to replace with Windows cd command. Among other things is replaces ⁄ with \ in directory names. See also pd.cmd.
d -h displays the following usage text:
d is a front end for the cd command that replaces ⁄ with \ in directory names
Usage: d [-mk] [-s] [-] [-h] [directory_arg]
       -mk dir keyword will generate cd%keyword%.cmd to cd to dir
       -f will display the cd*.cmd files created by "d -mk"
       -sym SYMBOL will set SYMBOL to a directory
        e.g.
            cd "c:\Documents and Settings"
            d -sym ABC
            sets ABC="C:\Deleted\C\Documents and Settings"
            (if directory_arg is omitted  current directory is used)
       -  terminates the option specifications,
          allowing -mk, , -s, etc. to be specified as directory_arg
       -h, -help, or --help will display this information
d also changes the window title to be the current directory
Without any arguments, d will display the current directory
Unlike the cd command, d will also change the current driveNotes: Type cd ⁄? for help with the cd command
Note that d.cmd and pd.cmd are nearly identical. The first is a front end for cd and the second for pushd.
dayofwk.c C utility program to determine the day of the week corresponding to a given date (needs more documentation).
Uses cvttime.c.

Example:
C:\User>dayofwk
Today is Thu Feb 20 19:39:16 2014
C:\User>dayofwk Feb 19
Today is Thu Feb 20 19:39:42 2014, Feb 19 was a Wednesday
C:\User>dayofwk 100
Today is Thu Feb 20 19:40:24 2014, 100 days from now is Sat May 31 20:40:24 2014
C:\User>dayofwk -4
Today is Thu Feb 20 19:40:28 2014, 4 days ago was Sun Feb 16 19:40:28 2014
C:\User>dayofwk Mar 2 1988
Today is Thu Feb 20 19:43:47 2014, Mar 2 1988 was a Wednesday
define.c C program to define a user-mode VMS logical name.
dellnm.c C program to delete a user-mode VMS logical name.
delsymbol.c C program to delete a VMS DCL symbol.
desklink.cmd Personal utility (windows) to usin Cygwin to create a file link on Windows.
desklink -h displays the following usage text:
Usage: desklink [base_file] [link_name]
To exit this procedure without creating the link, type . at any prompt
dijkstra.cpp A program to demonstrate Edsger Dijkstra's shortest path algorithm. It is described more fully here.
dircomp Personal utility (Unix shell script) to compare two directory trees.
dircomp.cmd Personal utility (Windows - uses Cygwin diff command) to compare two directory trees.
dircomp -h displays the following usage text:
Usage: dircomp [-e -a -h]  dir_tree_1 dir_tree_2
Compares files in dir_tree_1 to files in dir_tree_2
If -a is specified only files in dir_tree_1 are compared to dir_tree_2
If -e is specified only files in dir_tree_1 with extensions
  .c, .h, .cpp, .mak, .bat, .template, and .jam are compared to dir_tre
Otherwise all files are compared using diff --recursive
If -h is specified this message is displayed
dirtree.c Old DOS program to display a directory tree (no longer needed.
dumpb.cmd Personal utility (windows) to run the Microsoft Visual Studio dumpbin command using my Visual Studio environment.
dumpdir.c C program to display contents of a directory (old).
duplines Personal utility (Unix shell script) to duplicate lines in a text file.
eb.c C program to invoke an editor making a sequence of backup files (similar to VMS file versions).
editback.c C program to invoke an editor making a sequence of backup files (similar to VMS file versions).
edunix.c C program to execute Unix ed scripts produced by the Unix diff -e command.
eg.cmd Personal utility (windows) to search (see Unix grep) files for a text string and then edit those files
Entering eg -h prints
Usage: eg [-c -s] string [files ...] edits files containing string
           -c  use literal search string (findstr ⁄C:string)
           -s  DO NOT search subdirectories when matching files (no ⁄S)
etext.c VMS: Retrieve the message corresponding to a numeric message⁄error code. Calls system routine LIB$SYS_GETMSG
exe2asc.c A C program to convert a binary file to ascii by converting each 4 bit nibble to one of the 16 ascii characters starting at '0'.
expandargv.c VMS: Expands an argv argument based on VMS wild card characters.
fibonacci.cpp A C++ program to demonstrate iterative and recursive ways of calculating a fibonacci number.
filespec.c VMS: A routine to translate partial vms file specifications to the complete vms file specification.
filter.c The principal routine used when processing filter written according to my scheme described here.
This routine parses a command line, assuming all arguments are filenames. It then reopens stdin as that file and calls a routine whose name has been passed to it. If not filename arguments are used, or if the special filename - (a single hyphen) is used, the original stdin is passed to the filter routine.

Note that options should already have been parsed out of the command line (see parseopt.c).
findx Personal utility (unix script) to act like the unix where command. Finds all the executable version of its program name argument that are on the execution PATH.
findx.c A C version of findx (finds commands on PATH) written for windows. Similar to the unix where command.
freespace.c VMS: C program that finds the amount of free space on a vms disk.
gcc1.cmd Unix script to run the gcc compiler, generating a -o option. The .c extension on its filename argument is optional.
gcd.cpp A program to calculate the greatest common divisor of two numbers using the Euclidean algorithm.
genback.c Q&D program to generate batch file to copy files to successive disks.
genlinks.cmd Personal utility (windows) to generate windows symbolic links to programs and batch files I use.
genlinks -h displays the following usage text:
genlinks Generates symbolic links to
   a) programs hidden by windows programs with the same name
   b) synonyms for some command procedures
genobj.c VMS: A program to generate a stub VAX⁄VMS object file used in a run-time linking scheme I wrote.
genprimes.py A Python script to generate prime numbers
genref.c VMS: A program to generate a stub VAX⁄VMS object file with a reference to an external symbol.
getaux.c A Q&D program to read lines from the windows AUX port.
getcomment.c A Q&D program to extract comments from a C source file.
getfillm.c VMS: get open file limit for a given process or processes.
getimmed.c An old attempt to write a platform-independent routine that would return each keystroke as it is typed, not waiting for the line-terminating key.
getjpi.c VMS: A program to call the vms getjpi system service.
getkbnow.c VMS: like getimmed.c, a vms-specific program to return keystrokes as they are typed. Copied and modified from DECUS source code.
getopt.c A modified version of the AT&T public domain getopt() function.
getpid.c VMS: get the process id (PID) associated with a particular process name.
getredir.c VMS: Copied and modified from DECUS: a routine to implement the Unix file redirection characters < and > on VMS. This has been rendered unecessary in later versions of VMS by the VMS pipe command.
getsyi.c VMS: get the information returned by LIB$GETSYI.
getsymbol.c VMS: get values of DCL symbols
getuid.c Calls the unix getuid routine and displays the result.
graycode.c A (Q&D) quick and dirty program I threw together to enumerate gray codes.
Gray codes are an alternative way of binary encoding integers.
In traditional position, a 1 bit represents a power of 2,
i.e. 111 is 1 * 2**2 + 1 * 2**1  + 1 * 2**0 (7), 1000 is 1 * 2**3 (8)
8 has a different bit value from 7 in each of the first four bit positions.

In gray code notation, each integer differs from the preceeding integer by only one bit.
hanoi.c The classic tower of Hanoi puzzle solution.
hd.c Hexadecimal Dump filter program
Usage: hd [-cxbvs#l#h] [files...]
Display files in hexadecimal format.The information displayed is
. the offset from the beginning of the file (address)
. the hex value for each byte
. and the ascii value of the byte (if printable)
The default format of the display depends on the architecture of  the  host
machine.
For little-endian machines (e.g. vax) where lower  addresses  contain  less
significant portions of multiple byte values, the display format is:
        hexbyte <...< hexbyte address ascii
For big-endian machines (e.g. 68000) where  lower  addresses  contain  more
significant portions of multiple byte values, the display format is:
        address hexbyte >...> hexbyte ascii
A single '-' means that the original standard input should be displayed.
Options :
        -c     display ascii value of each char above hex value
        -x     reverse "natural" display order
        -b     addresses displayed are relative to starting position
        -v     verbose: individual byte values are displayed one per line
        -s     start of position # in file (# is decimal or 0xhex)
        -l     stop after # bytes have been displayed (# is decimal or 0xhex)
        -h     display this message and terminate
Option letters are case-insensitive, e.g. -l and -L are equivalent.
hdx.c  
ifcomment.c A Q & D program to indent and add identifying comments to #if, #else and #endif directives (except within comments)
imglibsym.c VMS: find the module name in sys$library:imagelib.olb associated with a key.
indcomment.c Uniformly indent trailing comments in a file.
instr.c Scan a string for the occurrence of a substring.
isascii.c A Q & D (quick and dirty) C program to scan a file looking for non-ascii characters. Written with the filter package described here. It was coded to compile on Unix, VMS, and Windows without change.
isascii2.c Another version if isascii.c.
isatty.c A quick and dirty program to add the function of isatty() to shell scripts.
isdir.c A quick and dirty program to check if its argument is a directory.
IterateBinaryTree.cpp A program to iterate over a binary tree, described here.
justify.c A public domain progrqam by Tom Almy that I modified. It adds appropriate spacing to right-justify a block of text.
jx.cmd Run (and possible compile) a java file.
jx -h displays the following usage text:
Usage: jx [-r] class_name[.java,.class] [arg [arg...]]
kbin.c VMS: A program to read from the terminal one byte at a time, without echo.
kbinr.c Another version of kbin.c
killx.cmd A windows command file (aka batch script),
killx runs the windows taskkill command
Specifying killx with no arguments displays the following usage text:
killx kills a process
Usage: killx [-p] process
       -p process is a PID (otherwise process is a image name)
knuthdiv.cpp An implementation of Donald Knuth's division algorithm as described in his "Art of Computer Programming",
2nd edition, Volume 2, page 257.
knuthmult.cpp An implementation of Donald Knuth's multiplication algorithm as described in his "Art of Computer Programming",
2nd edition, Volume 2, page 253.
letter.c
A Q&D program to write a letter, optionally with my signature.
libsym.c VMS: find the module name in an (object or image library) associated with a key
lineno.c  
lines.c  
link.c VMS: links a shareable image from object file
linklist.c general routines to maintain a linked list
listx.cmd A  windows command file (aka batch script),
listx runs the windows tasklist command
Specifying listx with no arguments displays the following usage text:
Usage: listx [-p -a] process
       -p process is a PID (otherwise process is a image name)
       -a list all processes (process argument is ignored)
loadobj.c VMS : links and activates an object file as a shareable image and modifies data structures to so indicate.
loadsym.c VMS: creates a shareable image to resolve symbol names
activates the shareable image and stores values of symbol names
modifies data structures to so indicate
log2.cmd A windows command file (aka batch script),
log2 runs a command and captures the screen output in a file
log2 -h displays the following usage text:
Usage: log2 [-o -a -t -h] [-l log_file] command
       -o  overwrites log_file, if it exists
       -a  appends to log_file, if it exists
             if both -o and -a are specified, the rightmost takes precedence
       -t  runs baretail.exe to monitor log_file
       -l  specifies log_file in which to save output
           if not specified, log_file name is generated from command
       -h  prints this text
            baretail.exe can be downloaded from http:⁄⁄www.baremetalsoft.com⁄
lowername.cmd Personal utility (windows) to change the names of files to all lower case characters.
lowername -h displays the following usage text:
lowername converts upper case file names to lower case
lownames.c A Q&D program to generate a Unix script that renames all the arguments, presumed to be unix filenames, to lower case.
lslink.cmd  
m.c A quick and dirty "more" front end that allows filenames to be specified, written when more only worked on stdin.
makegen.c VMS: A standalone program that generates object module data structures for genobj.c and genref.c. Should be rerun if the  format of an object file changes.
makelinks.cmd  
makeopt.c VMS: generate a link options file from the data structure.
maketags.cmd maketags -h displays the following usage text:
Usage: maketags directory
       creates a tags file of the tree rooted at directory
makeworkcmd.cmd This procedure is currently disabled - it used to make a zip file of all my .cmd utilities.
matchwild.c VMS: A Q&D (quick and dirty) program to match regular expressions.
maxmin.c VMS: A C program to call the vms library maximum or minimum routine for an arbitrary set of numeric values specified on the command line.
median.c Q&D program to calculate medians. It should compile without change on VMS, Unix, and Windows.
mkalias.c Windows: create an alias for a Windows command.
Compiling and then running mkalias -h displays the following usage text:
Usage: mkalias [-x[mg] exe] [-e -s -w -d -h] aliased_command [aliased_args]
This  program generates another C program which, when compiled, will run
the specified program. It  is  considered  to  be  an  "alias"  for  the
specified program.
When the alias program is run it will, in turn, invoke the program being
aliased, passing along any command line arguments (with two  exceptions,
see below).
It is useful for generating programs for situations such as:
1. The aliased program is to be run from the Windows Command prompt, but
   it  is  not on the execution PATH. Using this utility to generate and
   compile an alias program, and then putting the alias program  on  the
   path  will  have the same effect. Additionally, if the "real" program
   being aliased is updated, the generated  program  will  automatically
   invoke the updated version.
2. The aliased program is on the execution PATH but it has the same name
   as  another  program  which appears earlier on the PATH. In that case
   this utility can be used to compile and generate  a  program  with  a
   different  name  (avoiding  a name conflict) that is an alias for the
   "real" program desired.
3. A replacement for a  DOSKEY macro is needed.
Options:
-xm executable_name   The  program  is generated and compiled. After the
-xg executable_name   executable is  compiled  the  generated source and
-x  executable_mame   intermediate files are deleted.
                      -x, -xm invoke the  Microsoft Visual C++ compiler,
                      and -xg invokes the Gnu gcc compiler.
                      If  multiple  -x  are specified, the rightmost one
                      has precedence.                      To  keep  the  source  code omit the -x option and
                      capture  the  output  using  the  ">"  redirection
                      operator.-w                    Wait for aliased program to finish       (⁄DWAIT).                      Creating  an  alias for console-based programs can
                      lead to confusion. By default, the generated alias
                      program  will  probably  finish hefore the program
                      being aliased, so the command prompt will probably
                      be  displayed  before  the output from the aliased
                      program. Specify -w to avoid this.\line -d                    Compile the program with debugging enabled.-h                    Display this message.The  mechanism  described  above is similar to the unix exec() family of
functions  and  the  Windows  spawn()  family  of  funtions.  These  are
esentially  equivalent  to the -x and -x,-w invocations of this program,
but they produce larger executable modules.  To  use  these  mechanisms,
specify:
-e                    Use execvp                          (⁄DUSE_EXEC).
-s                    Use spawnvp                         (⁄DUSE_SPAWN).
Specifying both -e and -w is equivalent to specifying -s.
Two special command line arguments are added,
If either is specified, the aliased command is not invoked.
--alias               Display information about the alias itself.
--mkalias             Display the command used to create the alias.
If one of the these is a legitimate argument for the aliased_command, it
is suggested that this program be used to generate a C file (see above).
That  file  can then be modified to use different keywords. The modified
file can then be compiled to generate the alias command executable file.
mkalias.c A Q&D program to dump a file's contents in hexadecimal.
mkdirtree.c A Q&D program to act like the mkdir -p command, creating an entire directory-subdirectory path in one command.
mkhtml.c A filter program that converts a file into an html list. Indentation in the file indicates the list nesting level.
Compiling and then running mkalias -h displays the following usage text:
Usage: mkhtml [-hpduotgi] [-b#] [files...]
Create an HTML list from an indented text file.
The indentation level indicates the nesting level.
This program will also prepare a file for simple HTML display
using the <PRE> and <⁄PRE> tags (see the -p option).
Most lines are considered to be list items.  However,  if a line consists
of a single dash (and white space) all subsequent lines until the next
single dash are considered to be a note (or dictionary list definition)
definition associated with the preceeding list item.
By default, list items are rendered in boldface.
The "-b" option can be used to specify which indentation levels will not be
so rendered.
The "-d" option will deconvert from HTML (as generated by this program)
to tab-indented format (it does not check for errors, though).
By default, the first line of the file is considered to be the page header,
not part of a definition. If the "-g" option is specified, a header line is
generated; the header being a note of when the page was generated.
When creating an HTML file, the indentation size is determined as follows:
when the first line is read that is more indented than its predecessor,
that indentation difference is the indentation size.
When de-converting an HTML list into an indented file, each indent level is
represented by a single tab character.Tabstops are considered to occur every 8 character positions.
Blank lines are discarded, except inside a definition.Options :
        -h      Display this message and terminates
        -p      Create an unformatted HTML page using <PRE> and <⁄PRE>
        -u      Create an HTML unordered list (default)
        -o      Create an HTML ordered list
        -t      Create an HTML dictionary list
        -b#     indent levels greater that # are not rendered in boldface
        -d      DeConvert from HTML into a tab-delimited file
        -g      Generate a page header (current date)
        -i      Do not preserve indentation (not yet implemented)The  "files"  argument  indicates the names of files to be converted. If no
files are specified or if the filename is a single '-', standard  input  is
converted.Converted   output is  always  written to  single  standard  output  stream
(which may be redirected to a file).On specifying options:
    Option  letters  are case-insensitive,  e.g. -h and -H are equivalent.
    Options must  occur before  filename  arguments  and start  with a dash
    ('-')  immediately followed by an  option character.    For options that take values  (example: -t#),  the value may optionally
    be separated from the option letter by white space.
mkrcsdir.cmd Personal utility to make a Windows soft link to a central RCS deposit. It has a minor error, evident when
rcsdir -h is type to get the usage text:
mkrcsdir Creates a "soft link" (using the command "ln -s") to an RCS repository
         stored at a location of the user's choosing (default -h)
mktree.c A filter program that converts a file into an treepad version 2 file . Indentation in the file indicates the list nesting level.
Compiling and then running mkalias -h displays the following usage text:
Usage: mktree [-hxu#idz] [files...]
Create a Treepad file from an indented text file. The indentation
level indicates the Treepad nesting level.
Most lines are considered to be Treepad items.  However,  if a
line consists of a single dash ("-") and white space the program
considers all subsequent lines until the next single dash to be a
note associated with the preceeding outline item.
Unless the "-i" option is specified, indentation is preserved in the note.
Indentation is relative to the first line of the note , however, and
leading tabs are converted to spaces.
When creating a treepad file, the indentation size is determined as follows:
when the first line is read that is more indented than its predecessor,
that indentation difference is the indentation size. For example, since tab
characters are considered to occur every 8 characters, if the first line
starts in the first column and the second line starts with a tab character
(and is not a single dash), the indentation size will be 8 in this case.
When de-converting a treepad file into an indented file, each indent level
is represented by a single tab character.
Tabstops are considered to occur every 8 character positions.
Blank lines are discarded, except inside a note.
-#, (# is a number > 0), forces all items indented more than # to be notes.
-0 forces the entire file to be treated as a note, node is the current day
The top level node name will be the file name.
The first level node name under that will be the current date and weekday.
Lines with single dashes ("-") are never copied to the treepad file.
If the first non-blank line of the file is a note delimiter ("-"),
the file is treated as if -0 had been specified
Specifying -u causes -# to be ignored.
The -x option is a quick and dirty way to convert from a treepad file
to Pilot memos suitable for import into the Pilot Thought Manager
outliner application.
To import a treepad file into Thought Manager follow these steps.
1. Run the treepad file through this filter, creating a temporary file,
   e.g. "mktree MyFile.hjt Myfile.tmp".
2. In the Palm Pilot Desktop application import this temporary file into
   the memopad as memos (use the .csv format). If the treepad outline is
   big there may be several memos named Outline, Outline-2, Outline-3, and
   so on, where Outline is the root node name of the treepad w=file.
3. In the Thought Manager application on the Palm Pilot import the first
   of these new memos (the one without -number at the end of its name) as a
   new outline. All the new memos will be combined to create a
   new Thought Manager outline.
This  option will be made obsolete in a forthcoming utility that converts
indented ascii files directly into Thought Manager databases.\line Options :
        -h      Display this message and terminates
        -u      DeConvert from an Treepad file into a tab-delimited file
        -x      DeConvert from an Treepad file into an input file for
                Palm Pilot Thought Manager input format
        -[0-9]+ lines indented greater than the number are considered notes
        -i      Do not preserve indentation (leading white space) in notes
        -d      Second node is current date (implies >1 node zeroes)
        -d#     Second node is current date + or - # days
        -t      Second node is current date and time (implies >1 node zeroes)
        -z      First user node is node level zero (implies >1 node zeroes)
If -d, -t, or -z is specified, two (or more) nodes at level zero will be
produced.  This is not a legitimate treepad file, but it can be conveniently
imported into an existing treepad file.
The  "files"  argument  indicates the names of files to be converted. If no
files are specified or if the filename is a single '-', standard  input  is
converted.
Converted   output is  always  written to  single  standard  output  stream
(which may be redirected to a file).
On specifying options:
    Option  letters  are case-insensitive,  e.g. -h and -H are equivalent.
    Options must  occur before  filename  arguments  and start  with a dash
    ('-')  immediately followed by an  option character.
    For options that take values  (example: -t#),  the value may optionally
    be separated from the option letter by white space.
mkvimalias.cmd Windows: A Q & D program to invoke mkalias for the  purpose of creating aliases to various incarnations of the vim editor. See the description of mkalias above.
mll.c A filter program that measures the length (in characters) of the lines in a file .
Compiling and then running mll -h displays the following usage text:
Usage: mll [-t#m#s#lb3h] [files...]
Measure length of lines in a file.
Options :
        -t#  treats tabstops as occurring every # characters (default=8)
        -m#  information only for files with longest line > # (default=80)
        -s#  indicates lines longer than # (default=80)
        -l   displays longest line and lines longer than -s#
        -b   treats BACKSPACE and DELETE as normal characters
             (otherwise they decrease the char count by one)
        -3   count trigraphs as 3 characters
             trigraph characters are #, [, ], {, }, \, ^,  and ~
        -h   display this message and terminate
Option letters are case-insensitive, e.g. -l and -L are equivalent.
The  "files"  argument  indicates the names of files to be converted. If no
files are specified or if the filename is a single '-', standard  input  is
converted.
Converted   output is  always  written to  single  standard  output  stream
(which may be redirected to a file).On specifying options:
    Option  letters  are case-insensitive,  e.g. -h and -H are equivalent.
    Options must  occur before  filename  arguments  and start  with a dash
    ('-')  immediately followed by an  option character.
    For options that take values  (example: -t#),  the value may optionally
    be separated from the option letter by white space.
mntpcfs.c Unix: A Q&D program to mount a file system named pcfs, used at an old job.
Compiling and then running mntpcfs -h displays the following usage text:
Mount or unmount a dos floppy disk on a Sparcstation.
Requirements (usually already set up on a Sparcstation):
       The disk must already be formatted for dos.
       The ⁄pcfs directory (a mount point) must exist on the Sparcstation.
       ⁄etc⁄fstab must contain the line:
               ⁄dev⁄fd0   ⁄pcfs  pcfs rw,noauto 0 0
After the floppy disk is mounted, it may be accessed as the directory tree
rooted at ⁄pcfs.
Options :
        -m     mount the disk read-write (default)
        -r     mount the disk, readonly
        -u     unmount and eject the disk
        -e     same as -u
        -h     display this message and terminate
mode.c A Q&D program to display the read⁄write mode of a file.
more.c An implementation of the Unix more command.
mortgage.c A program to figure out mortgage payments. I wrote it mostly because I figured out how level-payment mortgage payments are calculated and I wanted to write something to remind myself how it is done.
movc3.c VMS: a wrapper to call the VMS LIB$MOVC3 library routine.
myprintf.c A Q&D prgram to test the vsprintf function.
newmort.c Another version of mortgage.c (see above).
nextargv.c VMS: A routine to use parsing a VMS command line. It expands wild card arguments *, %, and [...] following the VMS conventions.
nlcr.c A Q&D program to convert a file from Windows line endings <CR><LF> to Unix line endings <LF>.
nocr A unix script to convert a file from Windows line endings <CR><LF> to Unix line endings <LF>.
overdue.c A Q&D personal program I wrote to keep track of overdue books.
ow A shell script to run a command on a file, replacing that file with the output of the command.
owsed A shell script to run the sed editor on a file, replacing that file with the sed output.
pascal.cpp A program to calculate any term in pascal's triangle. It is a response to this challenge.
parsemap.c VMS: A program to parse the VMS linker output map for the purpose of extracting information used in run-time linking of object modules.
parseopt.c This file defines the ParseOptions routine to parse command line options.

It is assumed that options appear first on the command line and start with a hyphen (-) followed by a letter or number.

The routine returns both a modified argc, and a pointer to a modified argv, which now points to the first argument after the options.

Unlike the Unix⁄linux routine getopt, this routine does not need to be told what are the valid options. Instead, it is passed a caller defined function that is called with the current state of argc and argv as each option is parsed. It is the responsibility of this called routine to return enough information so that the state of argv after parsing the option can be determined.
pause.c A program to Pause for a specified number of seconds, similar to Unix C function "sleep".
Written because, at the time, I couldn't find such a routine in MicroSoft C.
pclose.c VMS: mimic the unix pclose() routine, used in conjunction with my vms popen routine.
pd.cmd Personal utility (windows) to replace with Windows pushd command. Among other things is replaces ⁄ with \ in directory names. See also d.cmd.
pd -h displays the following usage text:
pd is a front end for the cd command that replaces ⁄ with \ in directory names
Usage: pd [-mk] [-s] [-] [-h] [directory_arg]
       -mk dir keyword will generate pd%keyword%.cmd to push directory_arg
       -f will display the pd*.cmd files created by "pd -mk"
       -l display the directory stack
       -s or -swap will swap the top two stacked directories
       -  terminates the option specifications,
          allowing -mk, , -s, etc. to be specified as directory_arg
       -h, -help, or --help will display this information
pd also changes the window title to be the new current directory
Without any arguments, pd will display the directory stack (like -l)Notes: Type pushd ⁄? for help with the pushd command
Note that d.cmd and pd.cmd are nearly identical. The first is a front end for cd and the second for pushd.
pd2cd.cmd Personal utllity to convert a new version of pd.cmd into d.cmd.
pd2cd -h displays the following usage text:
pd2cd converts all pd*.cmd files to cd*.cmd files
pop.cmd Personal utility to enhance the windows command line popd command
popd -h displays usage text:
pop is a front end for the popd command
pop takes an optional argument, a count of directories to pop
"pop all" will pop all directories on the stack
popen.c VMS: Mimic the unix popen command. Only mimics popen("r"). Used in conjunction with pclose.c.
primefactory.hpp Class to generate prime numbers. Used by showprimes.cpp.
prompt.c VMS : vms-specific prompt the user for input on sys$command
will spawn or attatch to a (possibly named) subprocess if the user types "! [name]"
strips line terminator (\r or \n) from answer
returns length of answer
prps.c A filter program that formats a text file two be printed in 2 columns using Postscript.
Compiling and then running prps -h displays the following usage text:
Usage: prps [-hvswabrxnt#l#] [files...]
Convert a file to a PostScript (tm) program for printing.
Unless specified otherwise, pages are printed in reverse order so that  the
first  text  page  will be the last printed; documents printed on the Apple
LaserWriter(tm) will be correctly collated.
Only 7-bit ascii codes are considered; the high bit is stripped  from   all
characters.
By default, output is paginated at 66 lines per page.  Pagination size can
be  changed  or disabled by   the "-l"  option which takes an optional
numeric argument.  Pagebreaks can also be inserted by by  formfeed
characters in  the  input   file (such   as are  inserted by commonly
available print formatters).
Certain characters are printed specially:
        \r      is a carriage return
        \f      is a form feed
        <DEL>   is a delete character (hex 0x7f)
        ^letter is any other control character (e.g. ^A)
A single  '-' means that the  original standard input  should be converted.
The  file  being  formatted  is  usually  scanned  twice.  The  first  scan
calculates  the maximum page width and page count. The second scan actually
formats the file. An option is available to disable the pre-scan.
Options:
       -h      display this message and terminate
       -o File write output to "File" instead of stdout
       -v      print page vertically (long edge at left,right)
       -s      print page sideways using two columns [default]
       -d      print page duplex, tumble
       -w      print page sideways (long edge at top,bottom)
       -a      First line in file is considered to be a page header (title)
       -b      print the first line of each page (a title?) in a bold font
       -r      reverse order of pages printed
       -x      do not prescan the file to calculate maximum page and width
       -n      calculate # lines per page from pointsize used
       -t#     treat tabstops as occurring every # characters (default=8)
       -l      print # lines per page (no pagination if # missing or <= 0 )
prpsh.c Another version of prps.c
pryde.c A filter program that formats files for printing like the unix command 'pr'.
Compiling and then running pryde -h displays the following usage text:
Usage: pryde [-hbcdefi[#]l[#]opqs[#]t[#]u[#]vw[0]xyz] [-n name] [files...]
David Elins's program for formatting  files for listing, like the Unix "pr"
command.
Page breaks  are  inserted after each 66 lines (the number 66 is changeable
by using an  option).    A  page  break  normally  consists  of a form feed
character (FF).  Another  option  will  cause  carriage  lines  to  be used
instead of FF to fill  the page to 66 lines (the number 66 is changeable by
the same option that turns of FF page breaks.
If the line numbering, indentation,  or tabsize options are specified,  tab
characters are  replaced with  an appropriate  number of  spaces and  lines
containing only white space (tabs and spaces) are truncated.
Each page starts with a title, the date, and the page number.
A single '-' means that the original standard input should be formatted.
The  file  being  formatted  is  usually  scanned  twice.  The  first  scan
calculates  the  maximum  page  number  and  page  width.  The second  scan
actually formats the file.  An option is available to disable the pre-scan.
  Options:
       -b       wrap (split across multiple lines) lines that are too long
                (line width is specified by -w option)
       -c       Print embedded control characters as "^char"
                (<DEL>,tab,newline,formfeed) excepted
       -d       prefix each line with its line number
       -e       print an even number of pages for each file (parity)
       -f       do not print a trailing form feed
                if specified with -e pr -o options, it is assumed a
                trailing form feed will be added (probably by a print
                command), and this assumed form feed is used in calculating
                even or odd page counts for -e or -o
       -i#      indent each line # characters (#=4 if not specified)
       -l#      print # lines per page (no paging if # missing or <= 0 )
       -n name  use 'name' as the file name instead of argument
       -o       print an odd number of pages for each file (parity)
       -p       equivalent to -zqi with no page breaks
       -q       (quiet) do not print a heading at the top of each page
                -q is useful when using other options (e.g. -i to indent)
                without cluttering up the output with title headings
       -s#      use # lines to print each line
                (#=2, double space, if not specified)
       -t#      replace tabs with spaces and treat tabstops as occurring
                every # characters (#=8 if # <=0 or not specified)
       -u#      use empty lines (carriage returns) instead of form feed
                characters to complete each page, and treat # as the
                number of lines per page(#=66 if not specified)
       -v       assume output is for a DEC VT100 when printing 132 columns
                (default output device assumed is a printer)
       -w       include controls strings to print 132 columns wide
       -w0      force output to be printed 80 columns wide
       -x       do not prescan the file to calculate maximum page and width
       -y       do not display current line number at the top of each page
       -z       use presentation font (if -v is not specified)
       -h       display this message and terminate
Option letters are  case-insensitive,  e.g. -l and -L are  equivalent,  but
option arguments are case-sensitive.
psdoc.c A Q&D program I wrote when I was implementing Postscript.
pssplit.c A filter program that truncates long lines.
Compiling and then running pssplit -h displays the following usage text:
Usage: pssplit [-hz#] [-#] [files...]
Truncate lines to be less than equal to a certain length (default=80).
(Tab characters are counted as one character).
Quoted strings (Postscript strings - within parentheses) are never truncated.A single '-' means use original standard input as stdin.
Options :
        -#   use positive # as maximum line length instead of default 80
        -q   use " and ' as string and character quote characters
        -z#  # is buffer size used to measure each line(default=64000)
        -h   display this message and terminateOption letters are case-insensitive, e.g. -l and -L are equivalent.
qsort.c A Q&D implementation of the Unix qsort function.
rcsdiffall.cmd A windows  utility to run rcsdiff on all the files in a subdirectory named RCS.
relabel.cmd Personal utility (windows) to relabel or unlabel a set of RCS files. Entering "relabel" without an argument prints this help text:
Usage: relabel [-u] label [files]
       relabels or unlabels an set of RCS files
       if "files" is omitted all files in the RCS directory are used
       -u     unlabel the file
replline.c Q & D program to replicate lines from stdin on stdout
retroci.cmd A Q&D windows utility to manipulate dates and versions in an RCS repository. Entering "retroci" without an argument prints:
retroci changes the date and checks in the file argument
Usage:  retroci file [checkin_date] [checkin_time]
        The default checkin_date and checkin_time is the file date and time
reverse.c Make last argument the first (for mimicking vms commands under unix).
revlines.cpp Quickly written utility to reverse the order of lines in a text file.
rmi.cmd runs del ⁄p to delete files with confirmation. Analogous to the Unix rm -i command.
rmscanon.c VMS: Convert a file specification from DECshell (Unix) to VMS file specification. It uses the system routine SHELL$TO_VMS.
RMS is the name of the front end of the VMS file system.
rmsdump.c VMS: Incomplete program to display the rms attributes of  a file.
RMS is the name of the front end of the VMS file system.
rmtpclient.c Client for the remote printf facility so printf statements can be printed on another terminal⁄window and not interfere with normal program output. Further documentation is here.
rmtphost.c Server for the remote printf facility so printf statements can be printed on another terminal⁄window and not interfere with normal program output. Further documentation is here.
rmtprint.h Header for the remote printf facility so printf statements can be printed on another terminal⁄window and not interfere with normal program output. The header file is included both in the user's program.Further documentation is here.
rpp.c VMS: a cpp like preprocessor that processes the output listing of a VMS C compilation to produce a C source file with all macros and other pre-processing already done.
ruler.c A Q&D program to display a ruler on the screen. Useful for measuring the length (in characters) of lines in a file.
Compiling and entering ruler -h displays.
Display a rule line showing column positions.
Usage: ruler [linesize [linecount]]
       ruler [--version] [-h] [--help]
Defaults:
  linesize=80
  linecount=1
Options:
  --version display version information
  -h        display this message (and version information)
  --help
sckp.cmd Many of my windows command procedures can be traced by setting the environment variable CKP (check procedure) to an non-blank value. This procedure sets CKP to the argument value, e.g.
sckp on or simply sckp to turn it off.
selfprnt.c The answer to a logical puzzle: How do you write a program that prints its own source code? Further information can be found here.
setdescrip.c VMS: Fill a vms runtime library string descriptor from a C-style string.
setsymbol.c VMS: Calls the runtime library routine LIB$SET_SYMBOLto set a DCL symbol.
showdivisors.py A Python program to show all the divisors of a number.
showhelp.c Utility routine to display "help text" as part of my text filter package described here.
showperfect.py A Python program to show all the 'perfect' numbers below a given number.
A perfect number is a number that is equal to the sum of all its proper divisors, including 1.
showprimes.cpp A program to calculate the prime factorization of a number. Uses bitmap.hpp, primefactory.hpp, and ydebug.hpp.
showstat.c Display output of call to stat() function.
shpr.cmd Currently disabled procedure to change Windows prompt string to last component of current directory path.
sidebyside.c Q & D (quick and dirty) program to print two files side by side.
skipws.c Utility routines to skip over whitespace when parsing a string.
sleep.c Q & D program to sleep (pause) for a specified number of seconds.
sname.cmd Usage: sname arg [arg arg ...] will calculate the Windows short name of arg(s)
       sname -sym SYM arg will SYM=shortname of arg
              e.g sname -sym ABC "c:\Documents and Settings"
              sets ABC=c:\DOCUME~1
spawn.c VMS: call the LIB$SPAWN runtime library routine to create a subprocess
splitdisk.c Split a file into smaller subfiles.
splitline.c Q&D program to split up long lines.
Compiling and entering -h prints:
Usage: splitline [-hz#] [-#] [files...]
Split long lines to be less than equal to a certain length (default=1000).
A single '-' means use original standard input as stdin.
Options :
        -#   use positive # as maximum line length instead of default 1000
        -z#  # is buffer size used to measure each line(default=64000)
        -h   display this message and terminate
Option letters are case-insensitive, e.g. -h and -H are equivalent.
spool.cmd A command procedure to control the Windows spooler.
sqrt.py A Python program to calculate the approximate square root of a number using only addition, subtraction, division, and multiplication, i.e. without using the built-in sqrt function:
Note: it compares the value so calculated to the value returned by the built-in sqrt function.
stackempty.cmd A command procedure to pop all directories from the directory stack.
stringcase.c Utility routines to convert strings to upper or lower case.
They return the number of characters changed.
stringtable.c Manage a table of strings.
strucmp.c Compare strings like strcmp or strncmp, but independent of alphabetic case, i.e. a matches A.
sub.cmd A front end for the Windows subst command.
swr.cmd A windows script to run the "Safely Remove Hardware" utility, in case it is needed but is not running.
system.c VMS: Mimic the Unix system call by spawning a subprocess.
taccess.c A Q&D routine to call the access() function for a file.
tail.c An implementation of the Unix tail utility.
testargv.c  
testgenref.c  
testshell.c VMS : test the vms runtime library routines SHELL$FROM_VMS and SHELL$TO_VMS.
teststat.c Prints statistics about the size of a file, including both <CR> and <LF> characters
tm.c Test how much memory can be returned by malloc().
toprn.cmd toprn will send its filename argument[s] to the device attached to PRN
      filename "-" represents standard input and can be used for pipes
toprn -f will flush the printer by sending a form-feed to PRN
translate.c VMS: calls the LIB$SYS_TRNLOG library routine to translate a logical name.
trnall.c VMS: searches the four logical name tables to find all definitions of a logical name
trnfull.c Similar to trnall.c.
trnlnm.c Similar to translate.c.
truncline.c truncline [-h] [-#] [files...]
truncates lines to be less than equal to a certain length (default=80).
(Tab characters are counted as one character).
Quoted strings (Postscript strings - within parentheses) are never truncated.
A single '-' means use original standard input as stdin.
Options :
        -#   use positive # as maximum line length instead of default 80
        -h   display this message and terminate
Option letters are case-insensitive, e.g. -l and -L are equivalent.
ty.c Sort of like the Unix nl command, it displays a file, optionally numbering each line.
unprotect.cmd Unprotect recurses through directories using changing file attributes to 777. Uses the cygwin chmod utility.
upck.cmd Windows: Runs a command in the background (using start), logs the output, and monitors the log. Uses the cygwin tee utility.
uppername.cmd Personal utility (windows) to change the names of files to all upper case characters.
user.c Repetitively call the vmstrnlnm routine to find a logical name
Searches the four logical name tables until the name is found.
utility.c Utility and some user routines for vms loading and linking to executables while base program is running. Used for dynamically loading references to undefined symbols.
vcvars.cmd Windows: sets the correct environment variables for Microsoft Visual C++.
vmsfindfile.c VMS: Uses SYS$PARSE and SYS$SEARCH to find the complete specification of a partial file name.
vmsload.c VMS: Dynamic linking stub written for an old job in a defunct company.
vstudio.cmd Like vcvars, sets the correct Windows environment variables for Microsoft Visual C++.
wait.c Sleep by executing a null loop for a specified number of times.
wait2.c Another version of wait.c.
wait3.c Another version of wait.c.
wait4.c Another version of wait.c.
wc.c Like the Unix wc command, counts words, lines, and characters in  file.
when.cmd Windows: Searches the command history for a particular string
Entering 'when' without a string displays a brief usage message:
when searches the command history for a particular string
Usage: when string
wmcvsdiff.cmd A Q&D windows procedure to use the public domain winmerge file difference program to look at file modifications recorded by the CVS source control system.
wmrcsdiff.cmd A  Q&D windows procedure to use the public domain winmerge file difference program to look at file modifications recorded by the RCS source control system.
worklog.c A program I wrote some time ago to help keep a journal of my activities. Obsolete now as I use evernote.
x.cmd A windows utility to open a File Explorer window.
Entering 'x -h' displays:

xargloop.cmd A windows batch file to parse command line arguments.
Example:
C:\>xargloop a b c d
FIRST_ARG=<a>
MIDDLE_ARGS=<b c>
LAST_ARG=<d>
CMDLINE_ARGS=<a b c d>
xdel.cmd "Delete" files by moving them to a special directory. Intended to mimic the Windows recycle bin.
Entering xdel -h displays:
Usage: xdel [options] file [file...]
       where options may be one or more of the following:
       -d dir changes the root of the delete repository to dir
       -p acts like del ⁄p and interactively prompts to "delete" files
       -r will display the root of the delete repository
       -l will list some files in the delete repository (see below)
       -ll will list all the files in the delete repository
       -l uses the current delete repository C:\toDelete\...
       -ls is a synonym for -l, -i is a synonym for -p
       -h will display this information
Note: ⁄option is equivalent to -option
xmkalias.cmd A windows utility to open a File Explorer window.
Entering 'x -h' displays:
usage: x [-h -d] [directory ...] opens explorer window(s)
       -d  starts an explorer window in the documents directory,
           C:\Users\David\My Documents
       -h, -help, or --help will display this information
omitting a directory starts an explorer window at the current directory
ydebug.h C debugging macros to print values of variables.
ydebug.hpp C++ debugging macros to print values of variables.
ydecho.c A Q&D version of the Unix echo command that recognizes \-escaped chacters and octal sequences.
ydedir.c A Q&D program to list files and sizes
ydeglue.c An archive program (like zip or tar) that concatenates many files into one. I mostly used it as a learning experience; for archiving zip and tar and the like work better.
ydemkcmd.c Echoes command line arguments, 1 per line. Optionally preceed each argument with a fixed string.
Example (after compiling):
C:\>ydemkcmd 1 2 3 7
1 2 3 7
C:\>ydemkcmd -c foo 1 2 3 7
foo1
foo2
foo3
foo7
ydencode.c A Q&D program to encode⁄decode arbitrary binary files as ascii characters.
After compiling, typing ydencode -h displays:
Usage: ydencode [-deh] [-o outfile] file[s](or-redirected-input)
Convert,deconvert files to printable characters in a  rudimentary  fashion.
Printable  characters  whose  ascii value is greater that a space are used.
Some  zeroes  are  compressed  on  the   output  file   (using   runlength
compression).  Output is also broken into uniform size lines so it  can  be
easily processed by split and other unix filters.
On encode, the basic operation is to work on 3  input  binary  bytes  at  a
time.   In most cases, the 3 input binary bytes are converted into 4 output
ascii bytes, breaking up the input bytes into 4 groups of 6 bits.
Zeroes, however, are compressed: if the three input bytes are all  zero,  a
special  ascii  character  representing  a binary zero is written out.  The
ascii byte following it represents the count of groups of three zeros.
A 65 member ascii character set is used to encode the  binary  data.   As a
further  compression,  if  the  three  input  bytes  are all from the group
of ascii characters which is not used for encoding,  the  three  bytes  are
written  out without encoding.
A single '-' means use original standard input as stdin.
This program is not too useful on Vms yet because it doesn't understand Rms.
Options (options can appear anywhere on the command line):
        -o filename  output file, if not stdout (required on MS⁄DOS ydecode)
        -e           encode (default)
        -d           decode
        -h           display this message and terminate
Option letters are case-insensitive, e.g. -e and -E are equivalent.  Option
arguments are case-sensitive, except that file names follow the conventions
of the host operating system: they are case-insensitive on VMS and Windows,
but case-sensitive on Unix.
ydencrypt.c A Q&D program written years ago to encrypt⁄decrypt a file in a rudimentary fashion.
After compiling, typing ydencode -h displays:
Usage: ydencrypt [-h] [-k key] [-o outfile] file[s](or-redirected-input);
Encrypt⁄Decrypt files in a somewhat rudimentary fashion.
As on Unix the same algorithm is used to both encrypt and decrypt.
A single '-' means use original standard input as stdin.
This program is not too useful on Vms yet because it doesn't understand Rms.
Options (options can appear anywhere on the command line):
        -o filename   output file, if not stdout (required on MS⁄DOS)
        -k keyvalue   keyvalue is prompted for if not present or too short
        -h            display this message and terminate
Option letters are case-insensitive,  e.g. -h and -H are equivalent.  Option
arguments are case-sensitive,  except that file names follow the conventions
of the host operating system: they are case-insensitive on  VMS and Windows,
but case-sensitive on Unix.
ydenetscape.c A Q&D program written years ago to run the netscape browser after setting some environment variables.
ypwd.c An old experimental program to scan the directory tree ending in the current directory.
As with many of the programs listed here, it no longer compiles on my machine.
Previous  |  Next ]     [ Up  |  First  |  Last ]     (Article 4 of 485)
 
Comments, flames, broken links?
Please send email to maintainer@intricate-simplicity.com