Abstract

Some time after releasing version 1.01 of lxLite (i.e. 1.0.1) (and some time before :-) I wrote some simple command-line utilites which greatly simplified my life. Because apart from lxLite they don`t present nothing interesting, I included them here for you to get them along with lxlite :-)

unLock

unLock is a simple utility which allows to `unlock` application executables which is currently in use. Normally when an executable is loaded by OS/2 its file is open with a deny-write sharing mode. This is done because LX format structure is designed not to swap out unused pages in executables each time when they aren`t needed anymore, but rather to discard them. When discarded page is needed OS/2 simply reads it again from executable.

However, there is still a way to replace executables `on-the-fly` even if they are currently running. There is an so-called `well-known undocumented` function (which in fact means that it won`t be neccesarily supported in future versions of OS/2) which allow to disable sharing protection on such files. Before doing that OS/2 reads entire executable in swap file, then page swapping is done as with usual memory. If you`ll `unlock` many running executables at the same time you can notice an increase in swap file size. So, this is just an temporary work-around, you have better to reboot after doing all neccesary things on former locked files.

The command-line format of unLock is much like lxLite`s, except that it have much less options :-)

/R{+|-}
[R]ecursive (+) file search through subdirectories. unLock will recursively search any directories which is located below the directory of given filemask. If multiple masks are given multiple recursive searchs will be performed.
/P{+|-}
Enable (+) or disable (-) pause before each file. Before each file unLock will ask you whenever you really want to unlock the file.
/V{+|-}
Verbose (show additional information). If verbose option is disabled (/V-) only those messages are left on screen which displays critical messages (i.e. errors), otherwise after each filename unLock shows the result of unlock operation - 'unlocked' or 'sharing violation'. Note that unLock CANNOT unlock files which are locked in some other way than executbles.
/?,/H
Show a short help screen

noEA

As you probably know :-) many (in fact a lot) of files have EAs (extended attributes), but does not need them. In fact the only thing which REALLY needs extended attributes is your Desktop\ directory. All other files can or can not have extended attributes - the only thing that you can lose by removing those attributes is how that file will appear in WPS folder (size and icon). Other type of extended attributes is those used by REXX - any REXX program that you run at least once and which does not have ReadOnly attribute set have some K of extended attributes attached to it. This is the 'pre-compiled' text of the REXX program, so it will run faster with that attributes. However, if you don`t use the REXX script too often, you can remove extended attributes from file then to set the Read-Only attribute.

Note that if you have not too many EAs (say the .TYPE and the .APPTYPE EAs) they will NOT occupy any disk space because of the wise HPFS structure. So to use noEA you MUST know what you`re doing and whenever you needs it (anyway, this is true for any other program :-).

noEA can show a list of extended attribute names for the processed files or remove all of them. The command-line switches are much like in all other utilites:

/R{+|-}
[R]ecursive (+) file search through subdirectories. noEA will recursively search any directories which is located below the directory of given filemask. If multiple masks are given multiple recursive searchs will be performed.
/P{+|-}
Enable (+) or disable (-) pause before each file. noEA will ask for confirmation before each processed file.
/V{+|-}
Verbose (show EAs instead of removing them). When this switch is used noEA will display the EAs attached to processed file and will NOT remove them.
/Y{+|-}
Assume (+) on all queries affirmative responce. When noEA encounters an write-locked file it warns you about this. However, this can be annoying when doing automatical processing (i.e. calling noEA from batch files). You can force noEA to process any files it can by specifying this switch.
/?,/H
Show a short help screen

chCase

Some time ago I was finally bored of the annoying habbit of some programs to write their files in upper case. And not only contents (almost any program which changes config.sys tends to convert it all to upper case when I like it to be in lower case) but filenames also. So i started this little project as a problem-dedicated-and-easy-to-use replacement for REN command.

The main ideology of chCase is to divide filename in some `parts` then to perform some case-conversions on each part apart :-) You can define `part separator` characters using /S"" option. By default chCase uses "." as `part separator`. I.e. filename chcase.is.a.great.prog will be divided into parts 'chcase', 'is', 'a', 'great' and 'prog'. Further you can tell chCase to convert first part to upper-case, second - to lower-case, third - to mixed format (i.e. first letter in uppercase and rest in lowercase) and so on.

The available options are:

/C{F|D}(L|U|M|A)
Convert to [L]ower/[U]pper/[M]ixed/[A]s-is case. You can define multiple `case conversion actions` - first one will be applied on the first `part`; second - on the second `part` and so on. Last `action` will be used for any extra encountered `parts`, so if you`ll define only one option it will be applyed on all filename parts. Some examples:
filename command line resulting filename
mY.Very.lOnG.fIlE.NamE /culam my* MY.very.lOnG.File.Name
just.an.example /cml jus* Just.an.example
leT.iT.bE /cmla let* Let.it.bE
/R{+|-}
[R]ecursive (+) file search through subdirectories. chCase will recursively search any directories which are located below the directory of given filemask. If multiple masks are given multiple recursive searchs will be performed.
/P{+|-}
Enable (+) or disable (-) pause before each file. Before each file chCase will ask you whenever you really want to rename this file. The initial and final filenames are displayed.
/S{%}
Define separator character(s). You can use this switch in the case when you have some files which uses some other separators, for example space or underscore. Note that the /S switch is NOT additive i.e. any /S switch disables the action of precedent. Even "." is cleared by /S switch, so if you for example want to use as separators both "." and space " " you have to define them both in a single /S switch as follows: /S" ."

Just some examples:

filename command line resulting filename
Mary has a Little.Lamb /cm /s" ." mar* Mary Has A Little.Lamb
john_wAs_a_lItTle_lame /cuml /s"_" JOHN_Was_a_little_lame
/V{+|-}
Verbose (show additional information). If you will specify /V- chcase will leave on screen only critical messages such as errors - all others will be cleared immediately after they succeeded.
/?,/H
Show a short help screen

SysIcons

This program can change system pointers. It is mainly an GUI interface to WinSetSystemPointer() function, so don`t expect too much :-) Anyway, it has some advanced features such as editing pointers (using OS/2 Icon Editor) and also allows you to choose the method for storing pointers - you can either store into INI file an reference to an external file (so you must not move or delete them) or to store the pointer image directly (so it will occupy space in INI file, but original files on disk can be deleted after this).

The interface is quite simple; I`ll describe here only some features that you may not understand.

The Icon Filename field displays the full name of pointer file which OS/2 uses at start-up to load currently selected system pointer. If pointer is stored directly into OS2.INI file it will say so.

The "Store icon directly/Use file reference" field lets you choose the method which SysIcons will use to store icon reference into INI file. This will work only for those icons which you have changed AFTER setting this button. If "Store icon directly" button is active, you can load icons and then remove them - they will not be used by OS/2 at start-up.

The "Change" button displays the standard file dialog and lets you choose another icon instead of highlighted.

The "Load Set" button lets you load an entire pointer set instead of loading each file separately. Note that sysIcons use an different from "System Setup->Mouse->Pointers->Load set" method: it uses an plain text file with extension .SET which defines one or more pointer replacements; OS/2`s setup uses hard-coded filenames (i.e. ARROW.PTR will always be the default mouse pointer). The format of .SET file is as follows:


; Everything after an semicolon is ignored
; Use semicolons to include comments into .SET file
ARROW           arrow.ptr       ; This statement defines the file
                                ; containing the default mouse pointer
TEXT            text.ptr        ; -//- the text-editing pointer
WAIT            wait.ptr        ; -//- the WAIT mouse pointer
SIZE                            ; Empty lines resets pointer to default value
                                ; The SIZE pointer is valid only in OS/2 v2.x
MOVE            move.ptr        ; This is mouse pointer when moving a window
SIZENESW        sizenesw.ptr    ; arrow from North-East to South-West
SIZENWSE        sizenwse.ptr    ; North-West to South-East
SIZEWE          sizewe.ptr      ; West to East
SIZENS          sizens.ptr      ; North to South
APPLICATION     applicat.ptr    ; Default icon representing an application
INFORMATION     info.ptr        ; The icon displayed in Information messages
QUESTION        question.ptr    ; The icon displayed in Question messages
ERROR           error.ptr       ; The icon displayed in Error messages
WARNING         warning.ptr     ; The icon displayed in Warning messages
ILLEGAL         illegal.ptr     ; The Illegal Action mouse pointer
DEFFILE         file.ptr        ; The default icon representing a file (?)
DEFFOLDER       folder.ptr      ; The default icon representing a folder (?)
MULTFILE        multfile.ptr    ; Multiple-file selection icon (?)
DEFPROGRAM      program.ptr     ; The default icon representing a program

Along with SysIcons I supplied three sets of system pointers: two of my own design (although some of them I collected from miscelaneous sources) and one of an unknown author (sorry) but that I like most. Hope you like them :-)

The "Edit" button stores pointer into a temporary file (if it is not a file reference) and launches Icon Editor. After Icon Editor ends the file is loaded back into INI file.

The "Undo" button does what you expect :-) But if you moved the highlight bar after change, you cannot undo the change anymore.

The "Default" button does what you expect: it changes pointer to its default shape.

The "Quit" button is the coolest feature of my program: hope you like it :-)


Title page | Introduction | Features | Command-line switches | Configuration file | Error messages | Bugs and limitations | Thanks... | Author info