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 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 :-)
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:
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:
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 |
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 |
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 :-)