Short:    Powerful prg to rename/manipul filenames
Author:   parsec@aljan.com.au (Erik Spåre)
Uploader: parsec@aljan.com.au (Erik Spåre)
Version:  2.3
Type:     util/cli
Requires: OS 2.04 or above

*****************************************************************************
** Case 2.3 - Filename Changer - by Erik Spåre (Parsec/Phuture 303) 980301 **
**        Filematching routines by Anders Vedmar (Axehandle/PC303)         **
*****************************************************************************

Very powerful program that lets you rename multiple files. Features:

    * Recursive pattern matching (no pattern targets all files in current dir)
    * More than 60 recognized extentions.
    * ENV:Caseopts file, where you can, for instance, add more extentions.
    * 5 Different lower/uppercase modes in many variants.
    * 8 extention operations (like add/remove/swap suffix/prefix/extention)
    * 11 string manipulation operations (like remove string, add head/tail)
    * Can handle *all* letters, not only a-z.
    * Direct or indirect renaming mode, won't crash on the ram-disk.
    * 100 percent 68000 assembler.
    * Freeware
    * And more...


An example...               Case -l -t -k -apmod        Case -sp -w -ue

    MOD.OCEAN_LOADER_FIXED  ==> mod.ocean_loader_fixed  ==> Ocean_Loader_Fixed.MOD
    Mod.Green beret         ==> mod.green_beret         ==> Green_Beret.MOD
    mod.CRYSTAL HAMMER      ==> mod.crystal_hammer      ==> Crystal_Hammer.MOD
    DOC1                    ==> mod.doc1                ==> Doc1.MOD
    Hunters_moon            ==> mod.hunters_moon        ==> Hunters_Moon.MOD
    MOD.SleepWalk           ==> mod.sleepwalk           ==> Sleepwalk.MOD
    MOD.(((nebulos)))       ==> mod.nebulos             ==> Nebulos.MOD
    mod.CREAM OF THE EARTH  ==> mod.cream_of_the_earth  ==> Cream_Of_The_Earth.MOD
    MOD.telephone!!!        ==> mod.telephone           ==> Telephone.MOD


Here's a list of all the options...

    The caseing options

       -l        All Lowercase
       -u        All Uppercase
       -w        Each new Word uppercase
       -f        First letter uppercase
       -c        Change cases
       -i        Ignore suffix and/or prefix when caseing
       -I        Don't Ignore suffix and/or prefix when caseing

    The extention operations

       -a        Add specified prefix/suffix/extention
       -r        Remove [specified] prefix/suffix/extention
       -C        Change [given] pref/suff/ext to specified
       -s        Swap prefix and/or suffix
       -E        Ignore default extensions [only accept specified]
       -e        Only accept default extentions [and specified]
       -L        Set new prefix and/or suffix maxlength
       -g        Give priority to prefix or suffix

    The string manipulation operations

       -t        Transform spaces to underlines
       -T        Transform underlines to spaces
       -d        Delete all the spaces [or only specified]
       -D        Delete specified strings
       -C        Change string 1 to string 2
       -k        Keep letters, digits, some more [and specified]
       -K        Keep A-Z, digits, some more [and specified]
       -m        Mutilate chars with ASCI values exceeding 128 to 45-127
       -a        Add head/tail string to filename
       -r        Remove head/tail string from filename
       -v        Vomit files to PC-format

    The remaining options

       -D        Disable env:caseopts file
       -q        Be Quiet (only list errors)
       -n        Neglect the directories
       -b        Use a buffer when renaming (indirect)
       -B        Don't use a buffer when renaming (direct)
       -S        Simulate caseing, don't actually rename anything
       --	 Stop option parsing
       ALL       To recurse into subdirs.
       SHOWINFO  To show a list of all recognized extentions


Changes since version 2.1...

    ** Above mentioned new extentions were actually only added to the doc.
       I forgot to add them in the source. Apart from all those new
       extentions, there's three more: xm, s3m and rexx.

    ** Corrected flaw in the argument parsing. Case wouldn't report a
       syntax error when several source-names were entered. (This is not
       yet allowed)

    ** When in recursive mode, if a directory-name got renamed by Case,
       (so the characters actually changed, not only the cases) any
       files in that directory would not be found. Solved this by
       letting the pattern matching routine pass Case the directory names
       when they were leaved, instead of when they were entered.

    ** Whenever a file in the search path could not be locked for some
       reason, case would abort the whole operation with "can't find file
       or path!" If in the default buffered mode, no files would ever be
       renamed. Now, whenever the filematching routine cannot lock a file,
       Case will look at the name to determine if the user wanted that
       file to be renamed. (If, for instance, the user wanted to uppercase
       all filenames, and this file already was uppercased, there would be
       nothing to worry about.) If he didn't the file will simply be skipped.
       If he did, the fail counter will be incremented and the message "can't
       lock xxx because object is in use" will be displayed.

    ** The -C" option (change string 1 to string 2) was flawed.
       case21 -C"bl",bl bla   would result in  renaming bla to bla. Also:
       case21 -C"bl",bla bla  would not rename bla to blaa, since Case thought
       this had already been done.


Changes since version 2.2...

    ** Fixed flaw: Case -l HIRESDOOM(PPC).PNG resulted in "Can't find file
       or path!". This was because any filespecification that contained
       wildcards (like the paranthesis in this example) was assumed to be
       a searchpattern. Case will now begin by trying to lock the exact
       given pattern, and if it exists it won't enter the match mode but
       only pass this file (or directory). Thanks to Niels de Koning for
       reporting this!

    ** Found bug in AxeMatch! Case -u dirname ALL would make AxeMatch think
       that dirname was a filename! And it would lock the directory dirname
       resided in and start to recursively look for files matching dirname.
       If dirname was in the root of a partition, all files on that partition
       would be examined!

    ** Case -u dirname ALL will now uppercase everything in dirname as well
       as dirname itself. Thanks to Niels de Koning for suggesting this!

    ** Specified filenames not containing wildcards had to be specified
       EXACTLY right. So to uppercase 'fIlE' you had to write Case -u fIlE.
       Fixed this.

    ** Rewrote from scratch the routine that parses the argumentline (except
       the part that interpretates the options). Please report any unexpected
       behaviour!

    ** It's now possible to give several filename/pattern specifications,
       for instance Case -l file1 file2 file3 dir1/#?.txt would uppercase
       the three files file1-3 as well as all files ending with .txt in dir1.

    ** The env:caseopts file can now contain newlines. They will be converted
       to spaces. (And as usual, no spaces are allowed between the comma
       separators.)

    ** Added the option -- which will abort the option parsing. If you
       specify a filepattern that begin with - you need to use this
       to prevent Case from confusing the filepattern with an option.

    ** Added the keyword SHOWINFO. It will list all recognized extentions,
       internal as well as environmental.

    ** Decreased the program size with about 1400 bytes by moving some
       partly uninitialized data into the BSS section and by letting
       AxeMatch access most of its data relative to a5.


Remember:

    "This should be in every man's c-directory"
     /Axehandle.


============================= Archive contents =============================

Original  Packed Ratio    Date     Time    Name
-------- ------- ----- --------- --------  -------------
   16348    9233 43.5% 01-Mar-98 19:22:26 +case
   82065   23639 71.1% 01-Mar-98 19:51:22 +case.doc
   87517   25234 71.1% 01-Mar-98 19:51:22 +case.guide
    7932    3137 60.4% 01-Mar-98 19:51:22 +case.readme
-------- ------- ----- --------- --------
  193862   61243 68.4% 01-Mar-98 21:04:12   4 files
