Feedback Search Top Backward Forward

Under the Scope

Written by Brad Scharf



Under the Scope

Welcome to the Utility Review column. This is a new column that will review freeware, shareware and commercially available applications intended to aid the development process and initially will be targeted towards beginning OS/2 programmers.

The column will feature one or two utilities each month. I will try to let the reader know in advance which tools will be featured. Also, there will be an index at the end of every column that will include program names and descriptions, which issue of EDM/2 featured the program review and in future issues I will try to let the reader know where the utilities can be found and at what cost.

By the way, if you have any comments or suggestions regarding this column please let me know. If the column is to be a success it will be through the feedback of its readers. Likewise, if you know of a utility that would be beneficial to other programmers please mention it and I'll do what I can to ensure that readers are made aware of it.

This Issue

'After a few false starts I managed to find a tool that (as far as I know) doesn't have a new version due by the time you read this!'

But that was last month, when I introduced the beginning of the 4-part series on Guidelines 3.1. Well, now Guidelines 3.2 is available and I'm waiting for the software to arrive. Until I get an opportunity to look at the upgrade, the Guidelines articles will be delayed. With any luck I should have the new version in time for next months column. I doubt that there will be any big changes to the interface but it will be easier to review one product than to try and find all the differences between two versions and then inform you of those differences.

Instead, this month I'll look at two more products that are available as shareware. The first article will review a programmers editor, "Mr Ed". Following this will be a review of another INI editor, UniMaint. Actually, UniMaint is much more than an INI editor but could prove invaluable to programmers, especially those who lean towards WPS programming.

As always, I hope you enjoy this months reviews and if you have any comments or suggestions I'll be glad to hear from you.

Mr. Ed 1.04

Figure 1: Mr. Ed.

Mr. Ed is not a horse (of course). What it is, is a 32-bit PM programmers editor. Lacking some features of high-end editors, it is still more than adequate for many of us and very configurable. Suitable for simple text editing, it contains many features that make it especially-well suited for editing C/C++ code. For a program as small as this (246K), it is quite powerful.

While this is a pretty good editor overall, all is not well. One thing I didn't really care for was the layout of some of the pull-down menus. Mr. Ed also uses a non-standard file dialog but in this case it isn't such a bad thing and we'll see why shortly. Before going too far, I should mention that I'm not familiar with other programming editors and what I perceive to be shortcomings may actually be standard features in this category of tool. If this is the case then I'm certain I'll be told!

Menus, for the most part, are well laid out. Items are not buried in multiple levels of cascaded menus and most menu items are just where they are expected to be. This is not the case with the 'Edit' and 'Block' menus though. The edit menu contains very few edit functions! From here one can undo operations (expected), expand and generate tabs (not expected), sort text (not expected) and perform several operations on lines or words. The unexpected features are things I might have expected in a menu for 'special' operations or as options in the editor settings notebook. I also noticed that while the column setting for word-wrap is selected from the 'Edit' menu, word-wrap itself is enabled or disabled from the 'Options' menu, so the configuration of word-wrap calls for two completely separate operations rather than one. Most of the editing functions are actually found in the menu of 'block' operations. In addition to the standard block mark/unmark/move/copy operations, it is from the 'block' menu that some common tasks are carried out from such as copy, paste and cut.

Figure 2: Block Pull-Down Menu.

As mentioned, Mr. Ed does not utilize a standard file dialog. The custom dialog that is used is adequate, though, and allows for selecting multiple files at one time. The file dialog also features filename completion, using the up and down arrows to find the next/previous or first occurrence of whatever characters are entered into the filename entry field. In addition, the user can filter filenames from a customable list. Unfortunately I was not able to determine the maximum number of files that can be opened at the same time, or if there was a limit to the size of a single file.

Figure 3: File Dialog.

One of the key features that differentiates a programming editor from a regular text editor is the ability to run tools from within the editor itself. Mr. Ed offers this ability through the 'Tool Manager'. This is a dialog that allows for the addition and modification of external programs that will be run. The behavior of these external utilities is absolutely configurable, as all parameters must be passed to the program.

Figure 4: Tool Manager Dialog.

Mr. Ed supplies some common parameters, such as %W for 'Warning Keyword', %F for filename etc., but anything that must be passed to the program on a command line must also be entered manually when adding items to the Tool Managers Parameter List for each program as there is no built-in compiler support. The nice thing here is that the command line arguments only need to be entered once, rather than every time you run the program from the command prompt. In addition, users can add any tools they wish to regardless of whether or not support is built-in.

Figure 5: Tool Modification Dialog.

When tools are run, output that would would normally be directed to 'stdout' is now directed to the 'Run' window, which also shows all parameters that were passed to the program in the title bar. One complaint I have about this particular window is that when messages extend beyond the width of the window, they can't be scrolled into view! The vertical scroll works fine, however, so at the very least you'll be able to see a portion of all those warning and error messages. [smile]

Figure 6: Run Tool Window.

It is possible to have have more than one file open at a time. When this is the case, the user can select how the windows are to be organized. Valid choices include tiled, cascaded, side-by-side or maximized. The editor also supports syntax highlighting, the colours for which are completely configurable. In fact, most features that this editors provides may be customized, from presentation parameters to accelerator keys.

Most settings are changed from the settings notebook, but some can be set 'on-the-fly'. An example is menu item accelerator keys. These can be set by holding the 'CTRL' key while selecting the menu item, which opens a dialog that allows the addition/modification/removal of a hot-key sequence for that item. This was found to be a nice feature as it allows some customization to take place without too great an interruption in the editing process.

Figure 7: Settings Notebook.

Another useful feature is the macro recorder. Macros can be created by starting the recorder, typing the stuff you want the macro to contain (such as text and cursor positioning) and then giving the macro a name and, if desired, an accelerator key. This method of creating macros allows the user to see how the macro will appear as it is being created.

A few other features worth noting are keyword help, the ability to jump to a function and bookmarks. The toolbar may also be customized, both in terms of content and position, or it can be removed completely. For the most part, almost everything can be customized. Most settings can be made through the settings notebook and many others by editing an ASCII configuration file. It is well documented and I had no difficulty learning how to use this program. Considering that this is version 1.04, notable problems were quite few and I look forward to seeing how it evolves in future versions.

Registration of this $25 (US) shareware program buys entitles the user to a lifetime licence on all future upgrades. The URL for Mr. Ed 1.04 is (326 KB)


Overall, Mr. Ed is a pretty good little editor, although not as versatile or powerful as some high-end programming editors. As many or as few external utilities can be added as desired and virtually everything can be easily configured to meet user preferences.

Despite a few complaints, mainly regarding the location of some menu items, this program is easy to use. The online help is quite thorough and should be able to provide assistance for any tasks that the user is not able to decipher intuitively.

Even with the limitations that are expected in a small binary versus a large one, Mr. Ed should be able to handle the requirements of most beginning and intermediate level programmers. In fact, for those who don't mind working from the command line on occasion, this utility could probably end up being the only editor ever required.

UniMaint 4.0

Figure 8: UniMaint 4.0.

UniMaint is much more than an INI editor. It is a complete system for backing-up, editing and restoring INI files, WPS settings, Desktops and Extended Attributes and uninstalling applications.

Before discussing the aspects of UniMaint that are of primary interest to programmers there are many other features that make this utility useful for overall system maintenance. A few of these are:

  • Displaying and modifying object settings such as DOS and WIN-OS/2 settings.
  • Setting object styles, such as folder sort, drag/drop, icon position and size etc..
  • Setting program executable information.
  • Comparing INI file contents at various levels of comparison and viewing uncommon entries.
  • Repairing WPS entries and file/directory entries.
  • Finding invalid entries.
  • Creating application INI files for migration to other machines (ie: across a network).
  • and much more that is beyond the scope of this column.

From a programmer's point of view this program can be used for as much or as little as needed. If it is only required for viewing, adding or modifying INI files that your programs have altered, it does this quite well. If it's used to check Extended Attributes that your program may have modified, it also does that well. If your programs are written for the WPS, then many of the features of UniMaint will become apparent, if not indispensable.

Programmers who will probably use most of the features of UniMaint are those involved in WPS applications. While not a WPS program by any means, programs written for the Work Place Shell do a number of things to the system as a whole. (All you pro's, please bear with me! The following is based only on my own limited experience and 'haphazard' approach to programming.) At the very least, a WPS program will:

  • modify system INI files.
  • register new classes.
  • add complexity to an (already) incredibly complex environment.
  • require lots of system rebooting during to register or deregister classes.
  • corrupt the Desktop and INI files, directory structures etc. [grin]

UniMaint addresses each of these problems and does so quite well, once the user overcomes the complexity of the program. The 'complexity' in this case is unavoidable in this case because of the nature of the program. Since it is intended to deal with a complicated system the program itself must be as well, although much has been done to make it as easy to use as possible. There is a very wide variety of defaults that may be set by the user that will persist across multiple sessions of UniMaint. Once it is known what is desired much of the operation can be left to the utility. The problem is knowing what the defaults should be!

The key to knowing how defaults should be set lies in an understanding of the INI files, the WPS, EAs, etc. Safe use of this application demands an understanding of things that go beyond most users' knowledge (programmers or not). This first hurdle is countered by a selection of text files that describe the problems and solutions to messing around with system files. The information is also available through the context-sensitive online help, which is very extensive. Having become familiar with the details provided, the user is now in a better position to safely use UniMaint to its full potential.

After installing UniMaint (from the installation utility provided), there will be a folder on the desktop with seven more folders and a program object. The program object (UniMaint) starts UniMaint itself with no parameters. This will provide the user with all features of the program from one interface (see the graphic at the beginning of this article). For those unfamiliar or uncomfortable with this, the other folders can be opened instead and will allow the use of more specialized features of UniMaint by category. Although viewing or actual editing of INI files themselves must be done by starting the UniMaint program object, everything else can be done using objects in the other folders. The other folders include tools that are specific to :

  • Getting Started
  • Preferences and Settings
  • Work Place Shell
  • INI files (backup, copy etc)
  • Extended Attributes
  • Uninstalling
  • Desktop Backup and Restore

The "Getting Started" folder provides a background on INI files, EAs, the Uninstall process and information on how and why the Desktop is vulnerable, as well as a few other topics of interest. Once familiar with the information provided here, users will be able to use UniMaint with a fair degree of confidence.

Having become familiar with the information given, it is time to set UniMaint preferences. This will allow the user to select which files must never be deleted during uninstall, select EA and backup defaults, such as logging files, whether to include hidden or system files, if files should be overwritten, set directories for saving backups, setting the number of backup generations etc.. The behavior of progress dialogs and confirmations can also be set from here.

If you're programming for the WPS, backing up and restoring will be a couple of the most common tasks that UniMaint will be used for. This will be necessary to ensure the integrity of your system overall, as one small error in your application programming can result in a lost Desktop. Other methods exist that will aid the recovery process, such as using MAKEINI (a last resort) or using the "Archive" feature of the Desktop if you run Warp. This built-in recovery method pales when compared to UniMaint. There is no 3-most- recent-saves limitation in this program. The user has the option of determining how many backups to maintain, whether it be 10, 20 or more. In addition, these backups are not made every time you reboot. Rather, they are made on-demand so once you have your preferred Desktop backed-up, it will not eventually be bumped off the list as a result of subsequent reboots. Backups may also be fully described as part of the backup process. When the time comes to restore, the archive can be selected based on a user-defined description and not something as uninformative like a date, which doesn't really say much. Several trial runs on my own system went flawlessly. I can't say much else except that it works (on my system) like it's supposed to!

Another primary use that programmers will have for UniMaint is the "Uninstall" feature. Dragging an object to the 'Uninstall' window starts the process of gathering information about that object and others that may or may not be related to it. Having located all possible matches, a list is presented from which items may be selected for inclusion or omission from the uninstall process. Having accomplished this, another list is displayed. This second window contains the names of all files that may contain references to the object(s) being deleted, such as INI files, CONFIG.SYS etc.. From here it is possible to select which files are to be checked for references and whether or not those references should be deleted if found. Another part of the uninstall process involves deregistering object classes and deleting files and directories. To help protect against accidental deletion of important (or otherwise) files, the user may select files and directories that are to be ignored as part of the file deletion process. This is set in the "Uninstall Defaults" and need not be performed every time this feature is used. Once all of the appropriate selections are made, classes will be deregistered, files and directories removed and references removed from configuration and INI files. If set to do so (in default settings), the Desktop may be reset to complete deregistration. Easy. Worth noting here is that UniMaint does not require itself to be installed prior to the programs destined for removal. Uninstallation is not based on a history-list of previous installations but upon a thorough examination of the current setup.

Several "Uninstall" operations on my PC detected only one problem, but it is minor and by no means serious. When removing references from CONFIG.SYS, the CR/LF was stripped between the LIBPATH, PATH and DPATH lines, resulting in one long statement. The system booted fine and the Desktop appeared as expected but obviously things didn't work as they should have. Simply editing the CONFIG.SYS file to reinsert the CR/LFs and rebooting was all that was required and no other problems have surfaced.

The last key feature I'll look at is the INI editing capabilities of UniMaint. If used for nothing else, this program makes a really nice INI editor! Three information areas in the editor provide a list of application names, a key field area which shows all keys associated with the currently selected application and a data area which shows data (in hex and ASCII) associated with the currently selected key. If an application is to be deleted from an INI file, deleting the name in the application window also deletes all the associated keys and data. Keys and data may also be deleted, added or modified individually through the appropriate window. Editing INI files in this manner is fast and since all information is visible at one time there is no doubt about what is being done on what.

Well, I could go on (and on), and there are still many more uses to the programmer. However, I think I've covered the major ones and will leave it at that for now. The fact of the matter is that in order to know this program well enough to cover everything, nothing else would get done. Its capabilities are many, time is short, and I just got some new software in the mail. [grin]

UniMaint 4.0 is available from

SofTouch Systems, Inc.
Workstation Division
1300 S Meridian, Suite 600
Oko, OK 73108, USA
Ph: (405) 947-8085
Fax: (405) 632-6537

An earlier (demo) version is available from the internet. The URL is (934 KB)


An outstanding tool. This tool is indispensible for programming and non-programming environments alike. UniMaint can virtually eliminate the need for reinstalling the O/S, speeds up the deregistration process and helps protect important system information. Despite one detectable bug (loss of CR/LF when removing CONFIG.SYS entries) I have to give this utility a high score. It's overall value far outweighs the CR/LF problem, which was, at most, a minor inconvenience.