SuperSet 1.1 - DOS Environment Extender Tool User Manual Copyright (c) 1992-1995 by Ross Leidy WHAT IS SUPERSET? SuperSet is a shareware program that replaces the DOS `SET' command. Like the DOS `SET' command, SuperSet allows you to view and modify DOS environment strings. SuperSet, however, contains additional features that make it a superior tool. With SuperSet you can: . Extend the length of any environment variable to any arbitrary length. Beat the normal DOS limit of 127 characters. . Prepend or append to existing environment variables. No more re-typing your entire path just to add one more directory. . Save, Load and Update environment snapshot files. Quick, one-shot way of setting-up your environment in one command. . Replace or delete environment variables. . Modify the parent OR the master environment block. . Prune Novell NetWare network drives in the PATH. . Display all environment strings in an easy-to-read format. . Display environment size and usage information. WHO NEEDS SUPERSET? SuperSet contains features that make it useful to: . Software developers who have a surplus of development tools on their computers. No more choosing which directories to exclude from the PATH. Using SuperSet, now all your tools can be accessible through the PATH. . Network Administrators who are responsible for maintaining multiple, identically-configured computers can use the snapshot feature to setup environments. When a network- based snapshot file is used, changes to that file can effect changes to the PATH of multiple computers. . Anyone who is frustrated by the limited control provided by the DOS `SET' command. SUPERSET FILES Because of varying software distribution methods, the archived filename of SuperSet can vary. The archived filename will be one of SSET11.ZIP, SSET11.ARJ, SSET11.SDN, etc. Regardless of the filename of your copy of the archive, it will expand into the following files: SUPERSET.EXE - SuperSet program SUPERSET.DOC - Manual in Word for Windows 2.0 format SUPERSET.TXT - Manual in ASCII text format SUPERSET.REG - Registration form in ASCII text format README.TXT - Last minute information FILE_ID.DIZ - BBS description file SDN.ID - Software Distribution Network info QUICK START Those who are familiar with the DOS `SET' command will feel right at home with SuperSet. In its simplest form it matches the syntax of the DOS `SET' command. So, for example, just typing: SuperSet displays all of the environment strings. Or, typing SuperSet path=c:\dos;c:\borlandc\bin; sets the PATH variable. To add to the PATH variable without retyping the existing string, use the `/A' switch to append or the `/P' to prepend. For example, SuperSet /A path=c:\123;c:\excel; modifies the PATH variable so that it now has the value: c:\dos;c:\borlandc\bin;c:\123;c:\excel; SuperSet allows you to save and restore environment snapshots. With a snapshot you can restore the entire environment with one command. To save a snapshot of the current environment, type: SuperSet /S By default, this saves the contents of the environment in the file `C:\SUPERSET.ENV'. Later, when you want to restore the environment, simply type: SuperSet /L One deviation from the semantics of the `SET' command is the meaning of commands like: SuperSet path= In this case, SuperSet will display the current value of the PATH variable. A similar DOS `SET' command would have just deleted the PATH variable. SuperSet will not delete an environment variable without the `/D' switch on the command line. So, the command to delete the PATH variable is: SuperSet /D path SuperSet sets the DOS ERRORLEVEL if an error occurs during processing. This allows you to test the success of the specified operation from within batch files. With this brief introduction, you should be able to get started using SuperSet. The next section details the powerful features of SuperSet. If you prefer the hands-on approach and want to start using it right away, then you can refer to the SuperSet help screen that briefly describes the available features _ just type: SuperSet /? SUPERSET FEATURE DETAILS The syntax of SuperSet is: SuperSet [switches] [variable [=] [value] ] The [switches] are: /A - Append to the existing variable value /P - Prepend to the existing variable value /S - Save an environment snapshot to file /U - Update an environment snapshot file /L - Load an environment snapshot from file /D - Delete specified environment variable /K - Delete (kill) the entire environment /E - Move network directories to the end of the PATH variable /N - Remove network directories from the PATH variable /M - Use the master instead of the parent environment /R[:nnn] - Reserves nnn bytes of environment space /Z - Displays environment size information /C - Compressed mode. Displays environment like DOS `SET'. /Q - Quiet mode /? /H - Help and registration information. All switches are case-insensitive (e.g., `/S' is equivalent to `/s'). The [variable] is the environment variable name up to the `='. SuperSet will not allow spaces or tabs to occur within the environment variable name. (This is different than the DOS `SET' command. See the Troubleshooting section for a discussion of this difference.) The [value] is everything that follows the `='. All characters after the `=' are preserved as-is when setting the environment string. The `=` that separates the [variable ]from the [value] is optional. This provides an abbreviated method of specifying environment strings while still allowing the use of the `SET' syntax. Without a `=`, SuperSet considers the first non- whitespace character after [variable] to be the start of [value]. For consistency, all examples in this manual have the `=` specified. Most switches will work in combination with others. In the following descriptions, the switches that are grouped together (e.g., /A and /P) are mutually exclusive; only one of the group may be used on the command line at one time. If more than one switch within a group is specified, only last one on the command line will be processed. The others will be ignored. SuperSet will display the contents of the environment block when invoked with no arguments. The addition of "passive" switches (/Q, /C, and /M) to the command line alters the display slightly, but SuperSet still displays the entire environment block. When using any of the other switches or arguments, SuperSet will display text that reflects the result of the command. /A and /P (Append and Prepend) These switches are used to modify values of existing environment variables by appending (/A) or prepending (/P) strings. These switches provide two major benefits over the DOS `SET' command. 1)You don't have to type out the entire current environment string if all you want to do is add to it. 2)You can create environment variables longer than 127 characters. Multiple invocations of SuperSet using these switches allow you to create a PATH of any length up to the size of your environment block. (Of course, you can extend any environment variable's length, but the PATH variable is one of the most useful) Examples: SuperSet PATH =C:\DOS;C:\UTILS;C:\EPSILON;C:\WINDOWS; SuperSet /A PATH =C:\TOOLS\WATC\BIN;C:\BORC31\BIN; : : Notice the spacing in the preceding examples. SuperSet disregards any whitespace (space or tab) that occurs before the equal sign. Because of this behavior, SuperSet modifies the same variable whether it appears as "PATH =" or "PATH=" on the command line. Conversely, all of the characters that follow the equal sign are preserved. Therefore, in these examples, no spaces appear after the equal sign. /S , /U and /L (Save, Update and Load) These switches are used to save (/S), update (/U) and load (/L) an environment snapshot file. A snapshot is useful after you have configured your environment and it's just right. You can save a snapshot and later restore it to the same exact state. For example, you can setup your entire environment inside AUTOEXEC.BAT with one command! All of the snapshot switches reference the `SUPERSET' environment variable and use the value as the path and filename for the snapshot file. If the variable `SUPERSET' isn't defined (probably most cases), then SuperSet defaults to the file `C:\SUPERSET.ENV'. The contents of snapshot files may be edited and changed. Just be sure to follow these two guidelines when making any modifications to a snapshot file: 1)You can add comment lines by placing a `#' in the first column. The remainder of the line will be ignored. 2)Each variable=value combination must occupy only a single line in the file, no matter how many characters are in the line. When creating a snapshot file (using `/S'), SuperSet will save the entire contents of the environment. The generated file will contain a comment block that indicates that it is a SuperSet snapshot file followed by all of the environment strings. If the save operation would overwrite an existing file, SuperSet will prompt you before overwriting the file. The `/Q' (quiet) switch will override the prompting and will unconditionally overwrite the file. This is useful when running SuperSet from within batch files. When updating a snapshot file (using `/U'), SuperSet will scan the contents of the existing snapshot file and save all the current environment values of the strings it finds. If a variable appears in the snapshot but is not in the current environment, the old value is used in the new snapshot. This feature is convenient when you've just added a new subdirectory to your PATH (using SuperSet, of course) and you want to save that change in a customized snapshot file. When loading a snapshot file (using `/L'), SuperSet will overwrite variables of the same name that already exist in your environment. Variables which exist in your environment, but not in the snapshot file will be left untouched. If you wish to start with a clean slate before loading in a snapshot, you can use the `/K' switch in conjunction with the load command (refer to the `/K' section for more details). Examples: (If the environment variable `SUPERSET' doesn't exist) SuperSet /S (Saves snapshot in C:\SUPERSET.ENV) SuperSet /P PATH=C:\4DOS; (Prepend to the PATH) SuperSet /U (Updates snapshot in C:\SUPERSET.ENV) : : SuperSet /L (Loads snapshot from C:\SUPERSET.ENV) (Define the variable `SUPERSET' and save a snapshot. SuperSet will define the environment variable first and then perform the save operation.) SuperSet /S SUPERSET=D:\ENV\SNAPSHOT.1 (Now that the variable `SUPERSET' is defined) SuperSet /L (Loads snapshot from D:\ENV\SNAPSHOT.1) /D (Delete specified environment variable) SuperSet will not delete any environment variables without this switch. Furthermore, if a variable/value combination is entered, the delete will not be processed. The variable must appear by itself before the variable will be deleted. Examples: SuperSet /D PATH=C:\DOS; (Nothing deleted) SuperSet /D PATH= (PATH deleted) SuperSet /D PATH (PATH deleted) /K (Delete the entire environment) This switch may be useful when loading an environment snapshot file if you want to purge the environment of unwanted strings. It completely eliminates all environment contents. No matter where this switch appears among other switches, the environment clearing will occur first. Examples: (The following are equivalent. Both delete the entire environment and then load the snapshot file.) SuperSet /K /L SuperSet /L /K /E and /N (Manipulation of Novell NetWare drives in the PATH) In a Novell NetWare environment, logging into a file server often results in some network drives being mapped and prepended to the PATH. I found that programs that reside on my local hard disk were often duplicated somewhere on a network drive. When I ran a program, DOS would search the network drives first and find the program there. Even when the program was not located on the network drives, there was additional search time introduced for every command I typed because of the search order. SuperSet helps me get around this problem. The `/E' switch will scan the PATH variable and look for drive entries of the form: :. (drive letter, colon, period) Any matching entries found in the PATH are migrated to the very end of the PATH. At the end of the PATH, network drives won't interfere with the normal operation of the DOS PATH but they will still be accessible. In addition, I found that sometimes I wanted to purge my path of the network drives. The `/N' switch will remove all entries in the PATH that match the above pattern. Examples: (Initially, PATH=X:.;Y:.;Z:.;C:\DOS;) SuperSet /E (Now, PATH=C:\DOS;X:.;Y:.;Z:.;) SuperSet /N (Now, PATH=C:\DOS;) /M (Use the master environment) By default, SuperSet operates on the environment block of the parent application. The `/M' switch forces the use of the master environment block (the one belonging to the command processor that was last invoked). This is useful if modifying the environment from inside makefiles. Normally, SuperSet is invoked from a batch file, and, in that case, the Master and the Parent environments are one and the same. Examples: (Modify the TEMP variable of the master environment) SuperSet /M TEMP=E:\TEMPDIR /R[:nnn] (Reserves nnn bytes of environment space, 256 by default) This is definitely the most esoteric feature of SuperSet. I once found it necessary to invoke SuperSet from within another program (not a batch file) and have SuperSet modify the environment block of that program. This would not be a problem except for the fact that DOS, when preparing to load programs, makes a copy of its own environment block for use by the program and shrinks the block down to eliminate most unused space. So, no matter how much extra space may be available in DOS' environment block, that extra space is purged from the copy. Because of this behavior, there is very little room in the environment block to add variables. By first invoking SuperSet with the `/R' switch at the DOS prompt, SuperSet creates a special environment variable in DOS' environment block. Now, when invoking SuperSet from with another program, that special variable gets copied, along with all other variables, into the environment copy. This provides extra space for SuperSet to use for creating variables from within other programs. You really have to go out of your way to come up with a situation where this feature is required. Modifying the environment block of running programs is a tricky affair. It assumes that the program will refer back to its environment block after it has begun running; it often will not. Examples: SuperSet /R (Reserves 256 bytes by default) SuperSet /R:512 (Reserves 512 bytes) /Z (Size information.) This switch provides some additional information about the state of the environment. SuperSet reports the environment block's location, total block size, used size, and the amount free. It's good to check your environment usage every once in a while to make sure your not too close to the edge. When you've got very little left, it may be time to increase your environment block. (See the Troubleshooting section for instructions on how to do this.) Example: SuperSet /Z (Displays environment size info) /C (Compressed mode. Displays environment like DOS `SET') By default, SuperSet columnizes the display when showing the environment strings. If you want a compacted form similar to the DOS `SET' command, use the `/C' switch. /Q (Quiet mode. No confirmations) Normally, SuperSet displays a brief header and confirmation text that lets you know the results of your command. Sometimes, however, you may just want SuperSet to perform the action without displaying any information. This is particularly true when calling SuperSet from within a batch file (e.g., AUTOEXEC.BAT). The `/Q' switch disables the display of this information. In addition, certain commands may ask for user confirmation (e.g., the Save Snapshot switch). That behavior can sometimes be irritating if invoked from within a batch file, so this switch will bypass those confirmations. Error messages are never suppressed. /? or /H (Help screen) These switches present a brief description of the commands that are available and how to register SuperSet. If either of these switches appear on the command line for SuperSet, all other switches and arguments will be ignored. TROUBLESHOOTING One of the major uses of SuperSet is its ability to extend environment variables to an indefinite length. In order to be able to do this, the master environment block must have enough unused space. The master environment block is created by the command line interpreter (COMMAND.COM, 4DOS.COM, etc.) when it is started. By default, COMMAND.COM creates an environment block that is fairly small (256 bytes). In order to take full advantage of SuperSet's capabilities, you may need to increase this size. Fortunately, it is very easy to do. Your CONFIG.SYS file should have a `SHELL' statement that specifies which command line processor to start. It will look something like this: SHELL = C:\DOS\COMMAND.COM If your file doesn't contain a SHELL line you can add one. The SHELL statement simply tells DOS what command line interpreter to use and where it is located. If you don't have a SHELL statement, DOS will behave as if your SHELL statement is this: SHELL = C:\COMMAND.COM Just add a line like that to the top of your CONFIG.SYS file. If you already had a SHELL statement, the line may contain some additional arguments, too. To increase the environment size, simply add a `/E:nnn' switch to the end of the `SHELL' line (or modify if it's already there). For example, if you need a 1024 byte environment block, the `SHELL' line should now look like this: SHELL = C:\DOS\COMMAND.COM /E:1024 The next time you reboot, COMMAND.COM will create a 1024 byte environment block. You can type `SuperSet /Z' to check the size of the block and the environment usage. Whenever you define variables longer than 127 characters, and you use the DOS `SET' command to display the environment contents, it will probably not display everything properly. Don't worry, your environment is intact. It is simply a deficiency in `SET'; it doesn't expect to encounter those long variables. Just use SuperSet with no arguments to see the contents of your environment. SHAREWARE INFORMATION _______ ____|__ | (R) --| | |------------------- | ____|__ | Association of | | |_| Shareware |__| o | Professionals -----| | |--------------------- |___|___| MEMBER This software is Shareware; it is not free. If, after a trial period of 30 days, you decide that SuperSet has become an indispensable tool, please register it. If, after the trial period, you decide that SuperSet is not right for you, please pass the software along to someone else or destroy it. If there are missing features that, if present, would convince you to buy it, please drop me an email wish-list. I'll see what I can do. This software has NOT been artificially crippled. This is the fully functional version of SuperSet. It can be used indefinitely without any type of registration code. However, by choosing the Shareware avenue of distribution, software authors rely on the professionalism and conscientiousness of users. There is no possible way to ensure compliance, but, if you like and use the product, please register. Registration entitles you to receive: . Free upgrades. All versions released within the first year after registration will be emailed to you immediately upon release. . Free technical support for one year. All bug reports and usage problem reports will be acknowledged in a timely manner and will be remedied as quickly as possible. (See Contacting the Author for details on the best way to report problems.) . Notification of any bugs or incompatibilities as soon as they are discovered. . Advance notice of new product development. Brave souls may wish to participate in beta-testing. To register, simply: . Fill out the registration form (print a copy of SUPERSET.REG), . Enclose $12.95 US per copy (cash, check, or money order drawn on a US bank), and . Mail it to: Ross Leidy 1966 Staunton Road Cleveland Heights, OH 44118 USA Registration is also available on-line through CompuServe. To register SuperSet via CompuServe, login and then simply: . Type `GO SWREG'. DOSCIM and WINCIM users can select `GO' from the `Services' menu or from the button-bar. . Follow the directions for registration. When asked for SuperSet's Registration Database ID, enter 4556. Regardless of the method you choose, your registration will be personally and promptly acknowledged. I'll also let you know of any updates that are available, any bugs that I'm aware of and fixing, and any new products on the horizon. Site licenses are available at a discount. Please contact the author for arrangements. This program is produced by a member of the Association of Shareware Professionals (ASP). ASP wants to make sure that the shareware principle works for you. If you are unable to resolve a shareware-related problem with an ASP member by contacting the member directly, ASP may be able to help. The ASP Ombudsman can help you resolve a dispute or problem with an ASP member, but does not provide technical support for members' products. Please write to the ASP Ombudsman at 545 Grover Road, Muskegon, MI 49442-9427 USA, FAX 616-788-2765 or send a CompuServe message via CompuServe Mail to ASP Ombudsman 70007,3536. CONTACTING THE AUTHOR If you experience any problems with SuperSet, you can send me email at: From the internet: 75122.1275@compuserve.com From CompuServe: 75122,1275 You can also send postal mail too: Ross Leidy 1966 Staunton Road Cleveland Heights, OH 44118 USA I do my best to fix all reported bugs as quickly as possible. Unregistered users are welcome to send in bug reports. If I can fix those bugs, I may be able to win over a few more registered users. Bug reports should contain the version of SuperSet, version of DOS, the nature of the bug, and any other pertinent information. Also, anyone should feel free to drop me email if you have any questions or ideas for enhancements. WHERE TO FIND SUPERSET The best places to find the most current version of SuperSet are: . On the internet in the SimTel Software Repository and its mirror sites such as oak.oakland.edu. The specific directory is SimTel/msdos/envutil. . On CompuServe in the PCUTIL forum, DOS/DOS Utils library. . On any BBS that receives files from the Shareware Distribution Network (SDN) Project. Look for a file in the form: SSETxx.ZIP where the xx is the major/minor version number. For example, SuperSet v1.1 would appear as: SSET11.ZIP Although you may have found SuperSet at a different internet site or BBS, all new versions of SuperSet will be posted to these sites first. VERSION HISTORY 1.1 - Initial public release. Added environment snapshot support. Added `/M' for master environment modification. Added `/C' to mimic DOS `SET' display of environment. Added `/K' for environment deletion. Improved help screen. Cleaned up a few cosmetic bugs. 1.0 - Initial release. This version underwent multiple revisions while being used by the software development team of a computer peripherals company. This version was not released to the general public. ACKNOWLEDGMENTS Many thanks to those who have registered SuperSet and are keeping the Shareware concept a viable one. Thanks to those people who participated in the initial testing of pre-released SuperSet. Special thanks to: . Ted Milbaugh of Green Light Software. Thanks for the ideas for the user manual. . My wife Renee for support, patience, understanding, and great scones. DISTRIBUTION SuperSet may be copied and distributed freely, provided that all the original files are included. All code and documentation must remain intact and unmodified. SuperSet may be included in Shareware CD-ROMs or other Shareware collections, provided that acquiring the collection does not remove the user's obligation to register the software. COPYRIGHT This software is Copyright (c) 1992-1995 by Ross Leidy, all rights reserved. SuperSet is a trademark of Ross Leidy. TRADEMARK REFERENCES MS-DOS and Windows are registered trademarks of Microsoft Corp. CompuServe is a registered trademark of CompuServe, Inc. Novell and NetWare are registered trademarks of Novell, Inc. DISCLAIMER THE AUTHOR DISCLAIMS ALL WARRANTIES RELATING TO THIS SOFTWARE, WHETHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, AND ALL SUCH WARRANTIES ARE EXPRESSLY AND SPECIFICALLY DISCLAIMED. NEITHER THE AUTHOR NOR ANYONE ELSE WHO HAS BEEN INVOLVED IN THE CREATION, PRODUCTION, OR DELIVERY OF THIS SOFTWARE SHALL BE LIABLE FOR ANY INDIRECT, CONSEQUENTIAL, OR INCIDENTAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE SUCH SOFTWARE EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES OR CLAIMS. IN NO EVENT SHALL THE AUTHOR'S LIABILITY FOR ANY DAMAGES EVER EXCEED THE PRICE PAID FOR THE LICENSE TO USE THE SOFTWARE, REGARDLESS OF THE FORM OF THE CLAIM. THE PERSON USING THE SOFTWARE BEARS ALL RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE. Some states do not allow the exclusion of the limit of liability for consequential or incidental damages, so the above limitation may not apply to you. This agreement shall be governed by the laws of the State of Ohio and shall inure to the benefit of Ross Leidy and any successors, administrators, heirs and assigns. Any action or proceeding brought by either party against the other arising out of or related to this agreement shall be brought only in a STATE or FEDERAL COURT of competent jurisdiction located in Cuyahoga County, Ohio. The parties hereby consent to in personam jurisdiction of said courts.