MirrorManager.guide This is the AmigaGuide® file MirrorManager.guide, produced by Makeinfo-1.55 from the input file MirrorManager.texinfo. MirrorManager.guide This document describes MirrorManager version 1.8, a Shareware Aminet mirror management system for the Amiga. Copyright (C) 1994 by Tobias Ferber and Harald Kunze WARNING: THIS MANUAL IS STILL UNDER DEVELOPMENT. NOT ALL OF THE AVAILABLE FEATURES OF MIRRORMANAGER ARE DESCRIBED HERE. THERE MIGHT BE ALSO OBSOLETE STUFF IN THIS MANUAL! Introduction What (and why) is MirrorManager ? Installation How to install us Configuring Customizing MirrorManager Taking off with MirrorManager Creating a Mirror Guidelines for the initial installment Using the ListView Descrtiption of the ListView items Menu Items MirrorManager's menu structure Controling MirrorManager ARexx Scripts Using (and writing new) ARexx script files ARexx Commands Description of GUI built-in ARexx commands Distribution politics Disclaimer Warranty? No warranty. License License agreement MUI Stuntzi's MUI MagicWB How can I get more of those beautiful icons? Installer Commodore's installer program Index ARexx Scripts Index Alphabetically sorted scriptfile index ARexx Commands Index Overview of built-in ARexx commands in the GUI Master Index Where can I find information about it? MirrorManager.guide/Introduction Introduction ************ MirrorManager is an ARexx based management system for directory trees. It is particularly useful for BBS or Mailbox sysops who use to download from an Aminet (ftp)site. It is however also useful for `normal' users (like e.g. the authors) who simply hesitate to delete new software. Before there was MirrorManager our usual way to archive downloaded files was very simple: We moved them from the incoming directory to a quickly blowing up archive directory which of course lead to confusion and chaos. But there is a much better way to organize a download archive: The local Aminet mirror ... However, the Aminet hierarchy is not fix (in fact it changes quite often) and so keeping the proper Aminet hierarchy manually is obviously a work intensive task. But now MirrorManager is born and MirrorManager handles all this for you! In detail, MirrorManager does the following: * MirrorManager creates the complete Aminet tree in a given directory adding AmigaDOS filenotes to these directories according to those in the Aminet TREE file. * MirrorManager adds filenotes to the files in your incoming directory according to those listed in the Aminet INDEX file. * MirrorManager copies or moves the files in your incoming: path to the location in your local Aminet mirror which is listed in the Aminet INDEX file - or optionally to a directory which is mapped to this location. * MirrorManager examines your local Aminet mirror and reports differences in name, location and comment there and in the Aminet INDEX file. * MirrorManager generates an index file for your local Aminet mirror. MirrorManager is fully ARexx based and everything it does can be controled via ARexx. ARexx commands are discussed in ARexx Commands. See ARexx Scripts, for information about the supplied ARexx script files. You also need to set-up several paths and filenames in order to use MirrorManager. See Installation, Configuring for details. MirrorManager.guide/Installation Installing MirrorManager ************************ MirrorManager is distributed together with the Installer program from Commodore. See Installer, for more information. Simply double-click the Install-MirrorManager icon to install MirrorManager to disk. We spent much time and tried to be extremly careful when writing this Installer script. MirrorManager needs neither assigns nor environment variables so the Installer script will not modify any parts of your system. During the installation procedure a directory MirrorManager will be created and all files will be copied into this directory. No other parts of your disk will be touched unless you do not specify them explicitly. We also included many help texts. Please read them if you are not sure about what's going on! After installing MirrorManager you need to set-up several paths and filenames. See Configuring, for more information. Note: MirrorManager needs MUI. See MUI, for information about how to obtain it. You should also have the actual Aminet INDEX and TREE file to take off with MirrorManager. MirrorManager.guide/Configuring Configuring MirrorManager ************************* MirrorManager comes with the MirrorManager MUI application and several ARexx scripts configuring the GUI. This chapter explains how to configure the MirrorManager GUI application. If you are only interested in the supplied ARexx Shell scripts then you might want to skip this part. MirrorManager Configuration Scripts What are they good for? Using Configure The Installer script "Configure" ToolTypes and Command Line Arguments Controling MirrorManager on Startup There are however also ARexx scripts which can be used from within the Shell and which do not need the MUI application. MirrorManager.guide/MirrorManager Configuration Scripts MirrorManager Configuration Scripts =================================== Before MirrorManager can take off you need to create a configuration script containing the path and filenames of your personal installation. This is quite obvious, since MirrorManager needs to know where to find your local Aminet mirror. A configuration script is an ARexx program which is executed when you select the Project/Load... menu item. Of course these configuration scripts make extensive use of the GUI built-in ARexx command ADD. See MirrorManager ARexx commands, for details. One way to configure MirrorManager is using the GUI's Edit menu. This is however a dull job -- especially if you are configuring MirrorManager from scratch. For this reason I included my personal configuration script MirrorManager.rexx, which contains the most needed features. You will however need to change the path and filenames in MirrorManager.rexx because these are correct for my personal installation only. The prefered way to set-up MirrorManager.rexx for your installation is using the supplied Installer script Configure, which can be found in the MirrorManager/rexx drawer. Configure will ask you interactively for all needed paths and filenames and it offers a short help text on every step. See Using Configure, for more information. Alternatively you can edit MirrorManager.rexx with a text editor like e.g. MEmacs. This can however only be recommended for advanced users because it requires a little bit more knowledge of the MirrorManager interna. See MirrorManager scripts, MirrorManager.rexx for details. MirrorManager.guide/Using Configure Using Configure =============== Coming with MirrorManager is my personal configuration script MirrorManager.rexx. Since this file contains absolute path and filenames which are valid in my environment only, you need to set-up MirrorManager.rexx for your installation before you can use it. The prefered way to to set-up these values is with the aid of the Installer script Configure, which is located in the MirrorManager/rexx drawer. Simply double-click the Configure icon. You will be asked for all needed path and filenames and on every step a short help text will be available. After you satisfied Configure with all requested locations, the CONFIGNAME ToolType in the MirrorManager program icon will be set to rexx/MirrorManager.rexx. This forces MirrorManager to load this configuration script when starting up. Configure will remember your settings. I.e. if you run Configure again, it will prompt with your last selection for each file and pathname. Advanced users may prefer editing MirrorManager.rexx with a text editor like e.g. MEmacs. See MirrorManager scripts, for details. Caution: If any path filename in MirrorManager.rexx has been modified without using the Configure script, then Configure will not prompt with the current default. This is due to the Installer program, which does not support evaluation of code at run-time. Use the supplied Shell script SetConfigureDefaults to copy your assignments from MirrorManager.rexx to Configure (1). ---------- Footnotes ---------- (1) I'm terribly sorry for that unsuffisticating solution, but I have no idea how to solve this problem in a better way. Please contact me if you have a good idea! MirrorManager.guide/ToolTypes and Command Line Arguments ToolTypes and Command Line Arguments ==================================== Unless you did not change the default configuration, MirrorManager will come up with a tutorial demo. To change this you should modify the MirrorManager ToolType value CONFIGNAME. Here is a list of legal ToolTypes: CONFIGICON=... If this ToopType is given, MirrorManager will create a project icon when saving the configuration from within the GUI. For example, CONFIGICON=xtras/def_mm.info will force MirrorManager to use def_mm.info from the xtras/ drawer as the default icon. As you can see in the above example, the path to the project icon can be specified relative to the MirrorManager tool, i.e. relative to PROGDIR:. Absolute pathnames like e.g. env:sys/def_mima.info would be legal as well. Note: MirrorManager tries to be very careful with your project icon. - MirrorManager will adjust the stack size in your project icon to the maximum of the values in the MirrorManager tool icon your default project icon. Note that MirrorManager needs at least 10240 bytes of stack! - MirrorManager will set the icon position of the CONFIGICON to NO_ICON_POSITION. By default, i.e. if no CONFIGICON ToolType is given, no icon will be saved with the configuration. APPSTART=... This ToolType defines the default application startup method. Actually it it used to force a certain default tool entry in the project icon saved with the configuration. If no project icon has been specified via the CONFIGICON ToolType then APPSTART does nothing. (1) For example, APPSTART=/MirrorManager sets the default tool for the configuration icon specified via CONFIGICON to be MirrorManager in the parent directory. By default, MirrorManager will choose the default tool for the saved project icon in the following way: - If the configuration is saved into a drawer inside the MirrorManager directory then MirrorManager will use a relative pathname, i.e. a pathname relative to MirrorManager's PROGDIR:. This has the advantage that you can move your MirrorManager directory to any location on your hard drive without changing the default tool for all existing project icons. - On the other hand, if you select a save path for your configuration which is located outside the MirrorManager directory then MirrorManager will use an absolute pathname for the project icon's default tool. CONSOLE=... This ToolType sets the default console window for ARexx. You normally do not need this console window and so the default is CONSOLE=NIL: It is however useul to set a console window like e.g. CONSOLE=CON:30/20/600/80/MirrorManager/CLOSE/AUTO for debugging purposes. CONFIGNAME=... This ToolType specifies the startup configuration scriptfile. By default a tutorial demo configuration script will be loaded on startup. CONFIGNAME can also be used as a Shell argument keyword. If you execute MirrorManager from within a Shell then you can specify the configuration scriptfile either relative to your current directory or with an absolute pathname. The ToolType value can be given as an absolute pathname or relative to the GUI application's path: PROGDIR:. MAXPATHLEN=... Not implemented yet! MAXITEMLEN=... Not implemented yet! MAXCOMMANDLEN=... Not implemented yet! MAXARGLEN=... Not implemented yet! ---------- Footnotes ---------- (1) This is a lie: In fact, if you force icon creation by selecting the `Create Icons' item in the Settings menu without specifying a project icon via the CONFIGICON ToolType then MirrorManager uses the system default project icon (usually env:sys/def_project.info) and adjusts the default tool for this icon according to the ToolType value of APPSTART. MirrorManager.guide/Creating a Mirror Creating an Aminet Hierarchy **************************** This chapter explains the initial creation of the local Aminet mirror. Please make sure that MirrorManager is installed and configured before you go on reading here. See Installation, Configuring for details. MirrorManager.guide/Using the ListView Description of the ListView Items ********************************* When starting MirrorManager with the configuration script MirrorManager.rexx last will add some items to the ListView. This chapter will explain the use of these items. You must have configured the file MirrorManager.rexx to follow the steps below. See Configuring, for more information. You might want to skip this chapter if you don't want to use the MUI application. Create/Update Aminet TREE This item executes MakeTree in order to create the complete Aminet directory hierarchy from your Aminet TREE file. A filenote will be added to all directories listed in the TREE file. Delete Empty Directories This item executes CutTree.mm on your Aminet directory which will delete all empty directories there. Update Aminet DirNotes For each existing directory in your Aminet Hierarchy, a filenote will be added. The filenote will be read from the Aminet TREE file. Add FileNotes to INCOMING For all files in your incoming directory a filenote will be added. Last will be looked up in the Aminet INDEX file. Add FileNotes from RECENT Works like Add FileNotes to INCOMING except that the filenotes will be looked up in the RECENT file. Add FileNotes from WANTED Works like Add FileNotes to INCOMING except that the filenotes will be looked up in the WANTED file. Cleanup INCOMING Works like Add FileNotes to INCOMING. Additionally the files will be moved into the correct directory in your Aminet hierarchy. Non-existant directories will be created. Cleanup with new RECENT Works like Cleanup INCOMING except that the filenotes and the destination directory will be looked up in the RECENT file. Create FAST Index Splits the Aminet INDEX file and creates several small FAST index files. These files will be written to the fast index path which has been asked for in the Configure script. Create/Update LOCAL Index A local index file will be created for your local Aminet mirror. Edit LOCAL Index File Edits your local Aminet mirror's index file. Reorganize Local Mirror Compares the contents of your local index file with the Aminet INDEX file. Files located in a different directory than listed in the Aminet INDEX file will me moved to the correct location. Non-existant directories will be created automatically. Files which do not exist in the Aminet INDEX will be moved to the KickedPath, a directory which has been asked for in the Configure script. Re-Insert Kicked Out Files Files which have been moved to the KickedPath (e.g. by Reorganize Local Mirror) will be moved back to their former location. Caution: This operation needs your former local index file to look up the kicked out files' locations. I.e. you should not update your local index file after calling Reorganize Local Mirror if you want to move back some of the kicked out files into their old directories. Sort Aminet INDEX File Some people prefer an Aminet INDEX file which is sorted by filenames, not by directories. This item asks you for the first sorting creterium and then sorts the Aminet INDEX file accordingly. Edit Aminet INDEX File This item runs an Editor and loads the Aminet INDEX file. Edit WANTED Index This item runs an Editor and loads your WANTED file. Edit Configuration Script This item runs an Editor and loads this configuration sctiptfile. MirrorManager.guide/Menu Items Menu Items and Menu Structure ***************************** The Project Menu ================ Load... This will bring up a filerequester asking for a MirrorManager configuration. Because MirrorManager configurations are based on ARexx it will be loaded by executing it as an ARexx script, configuring MirrorManager via its ARexx port. See also: ARexx command LOAD Save... This will write your current configuration to disk without asking for a filename. It will be written over the last loaded configuration which will be deleted by this action. So be careful with this command! See also: ARexx command SAVE Save As... This will bring up a filerequester asking for a name under which you would like to save your current configuration. See also: ARexx command SAVE Locked This switch is set by MirrorManager whenever it executes an ARexx script or command and is unset as soon as MirrorManager has finished processing and is idle again. If you unset this switch you are able to execute further ARexx commands but this might be dangerous: - Most ARexx scripts in the MirrorManager package work directly on your files, moving them from one directory to another, adding filenotes etc. - Every MirrorManager ARexx script writes information into the MirrorManager Working Window. Because of these two facts the scripts might `disturb' each other. So the default behaviour of the scripts is to lock the MirrorManager GUI. See also: ARexx command LOCK About... This will bring up an About requester with some information about MirrorManager and its authors. Quit This will terminate MirrorManager. If your configuration has changed since you last saved it you will have to confirm a requester to actually quit MM. Note: MirrorManager will not quit under the following circumstances: - there are some open filerequester - the application is locked - there are still some ARexx commands running The Edit Menu ============= Add This will add an entry at the bottom of the listview. The initial name of the new entry is set to `- UNNAMED -', the command and argument fields are emtpy. See also: ARexx command ADD Insert This will insert an entry into the listview at cursorposition. The initial name of the new entry is set to "- UNNAMED -", the command and argument fields are emtpy. See also: ARexx command INSERT Remove This will delete the currently active entry in the listview and activate its successor. See also: ARexx command REMOVE Clone This will make an identical copy of the currently active entry at cursorposition. See also: ARexx command CLONE Edit... This will bring up a new window where you are able to edit a listview entry. As long as the 'Edit Window' is open the 'Main Window' is busy. An entry is split into three parts: - The name of the entry appearing in the listview. - The command which has to be an ARexx script or inline code. - The arguments for the command. If you specify inline code in the command field the argument field is ignored. Clear This will remove all entries from the listview and unset the internal CONFIGNAME variable. See also: ARexx command CLEAR Sort This will perform a case insensitive sort on the entries in the listview. See also: ARexx command SORT Top This will move the currently active entry to the beginning of the listview. See also: ARexx command TOP Up This will move the currently active entry in the listview one line up. See also: ARexx command UP Down This will move the currently active entry in the listview one line down. See also: ARexx command DOWN Bottom This will move the currently active entry to the end of the listview. See also: ARexx command BOTTOM The Output Menu =============== Open Window This will open the `Working Window' where the MirrorManager ARexx scripts will print their information. Clear Window This will clear the contents of the `Working Window' See also: ARexx command MESSAGE Save Log... This will bring up a filerequester asking you for a filename under which you would like to save the contents of the 'Working Window'. See also: ARexx command SAVELOG MirrorManager.guide/ARexx Scripts ARexx Scripts ************* All ARexx scripts coming with MirrorManager expect their arguments introduced by a keyword which must be seperated from the argument value by one or more SPC characters. For example, rx MakeTree.rexx FROM "treefile" TO "pathname" is the correct way to run MakeTree.rexx which has the template FROM/K/A,TO/A Caution: Legal keywords for each command are listed here in ReadArgs() template style. There is however a difference between the way ReadArgs() parses the arguments and the way we do. For example, rx MakeTree.rexx FROM="treefile" TO="pathname" would be legal for ReadArgs() but it is not legal for the ARexx scripts listed here. The = is not a legal keyword value delimiter for ARexx. There are .rexx and .mm script files coming with the MirrorManager distibution .rexx script files are absolutely independent and do never address to the MirrorManager's GUI application. This means that you can execute them from a CLI/Shell, configure them for a use with Stefan Becker's ToolManager, or install them on any directory management application. .mm script files need the MirrorManager MUI application. They depend on the way the GUI passes arguments to it's ARexx scripts and they heavily use the ARexx commands offered my the MUI application. In addition to the options listed below, .mm scripts usually know a switch AUTO/S. Last can be used to force closing of the message window after the script has completed. MirrorManager scripts Verbose documentation on all supplied script files Calling Method How MirrorManager executes ARexx code Hints Hints for writing new scripts for MirrorManager MirrorManager.guide/MirrorManager scripts MirrorManager ARexx scripts =========================== MakeTree FROM/K/A,TO/A,NOCREATE/S MakeTree.rexx creates all directories listed in the given FROM file relative to a given TO directory. The directory structure and a comment for each directory will be taken from that FROM file, which is usually called TREE in case of the Aminet. The TREE file will be scanned top-down and line by line, empty lines are ignored as well as lines beginning with a # character. The first word (i.e. everything upto the first white space) in each line will be taken as the direcory name, the rest of the line will be added as a filenote to the directory. For example, executing rx MakeTree.rexx FROM tree TO a:b with the file TREE looking somewhat like this # All directories on Aminet new Upload area recent Files uploaded the last seven days biz Business software biz/cad Computer aided design ... creates the directories a:b/new, a:b/recent, ... adding the filenotes (comments) Upload area, ... respectively. Caution: MakeTree.rexx is smart enough to create a path a:b/c by creating the directory a:b before creating a:b/c. However, a: must be legal of course. Using the option keyword NOCREATE will add filenotes for existing directories only. You might prefer this behaviour if you don't use to keep a complete Aminet hierarchy and CleanupIncoming or ExamineIndex created new directories. MakeTree.rexx needs the AmigaDOS commands MakeDir and FileNote (and optionally RequestFile and Delete) available in your command searchpath. CutTree PATH/A CutTree deletes empty directories in the given path. I usually don't keep a complete Aminet directory hierarchy because many of them stay empty anyway and scanning them for new files SplitIndex FROM/K/A,TO/K/A bzzzzzz. MakeIndex FROM/K/A,TO/A MakeIndex.rexx is ment to create a local Aminet mirror index. In general it creates a list of all files available in a given path including file size and file comment. Caution: Due to a problem with pragma('D') you must execute this script using RX explicitly - even in the WShell. This ARexx script needs the AmigaDOS commands List and Sort available in your path. ExamineIndex FILE/K/A,WITH/K/A,PATH/K,MOVE/S,COMMENT/S,MAKEPATH/S,FAST/S hmmmmmm. SortIndex FROM/K/A,FILE/S,DIR/S,QUICK/S,AUTO/S CleanupIncoming FROM/K/A,TO/K,WITH=INDEX/K/A,MOVE/S,COPY/S,NOCOMMENT/S,MAKEPATH/S,REPLACE/S,FAST/S,REMAP/K CleanupIncoming.rexx examines (non-recursively) the files in your incoming: directory and looks them up in an Aminet mirror INDEX file. For each file in your incoming: directory which is listed exactly once in the Aminet index file the following actions can be performed: - A filenote (comment) can be added according to the one listed in your Aminet index file and - The file can be copied (or moved) to the location listed in the Aminet index. The Aminet directory hierarchy can be created using MakeTree.rexx CleanupIncoming.rexx needs the AmigaDOS commands List, Sort, Search, Filenote, Copy and Delete available in your path. MirrorManager.rexx MirrorManager.rexx is the configuration file for the MirrorManager MUI application. MirrorManager.rexx will be executed by it's host on startup when the ToolType or CLI option CONFIGNAME=rexx/MirrorManager.rexx was set. On the other hand if MirrorManager.rexx was executed via RX or by double-clicking on it's icon and no empty application is running then it tries to run it's own MirrorManager executable. If you want to write your own configuration scripts then you should see Hints, for details. To set-up path and filenames in MirrorManager.rexx you should use the configure script, which can be found in the MirrorManager/rexx directory. See Using Configure, for further details. Demo Demo.rexx demonstrates the use of the GUI's ARexx interface. You should execute this demo either via double-clicking on its icon or by loading it as a configuration via Project/Load. The actions performed by Demo.rexx are fully self-explaining and need no further documentation here. whoami.rexx This script resolves the own path and filename. We decided to include this scriptfile as a tutorial example because it is quite a difficult task to do this correctly. Currently the PARSE SOURCE instruction is limited to a length of 64 characters. This is an enormous problem since this makes it impossible for an ARexx script to resolve its pathname if it is located deeper in the directory hierarchy. We have reported this bug, but we did not receive a reply yet. MirrorManager.guide/ARexx Commands ARexx Commands ************** MirrorManager is fully ARexx based and everything it does can be controled via ARexx. Since MirrorManager is a MUI application, it offers the default commands which are understood by every MUI program. Every MUI application is able to receive commands via the built-in ARexx port. (For more information about MUI see MUI) MUI built-in ARexx commands MUI Error codes MirrorManager ARexx commands If you want to write your own ARexx script files for MirrorManager you should also read Hints. MirrorManager.guide/MUI built-in ARexx commands MUI built-in ARexx commands =========================== QUIT Ends the application. The behaviour of this command is very much like clicking the closing Gadget of the application or pressing RCommand-Q or ESC. HIDE Hides (iconifies) the MirrorManager application. This will normally bring up the application icon MirrorManager.info or - if this is non-existant - def_MUI.info which will be loaded from env:sys/. This can however be customized with the MUI Preferences program. SHOW Shows (pops up) the iconified MirrorManager application. INFO ITEM/A According to the given ITEM parameter the result string is filled with the following contents: TITLE Title of the application (I.e. `MirrorManager') AUTHOR Author of the application COPYRIGHT Copyright message DESCRIPTION Short description VERSION Version string BASE Name of the ARexx port SCREEN Name of the public screen For example, OPTIONS RESULTS ADDRESS 'MIRRORMANAGER.1' 'INFO Title'; SAY "Application title .......:" result 'INFO Author'; SAY "Author of the application:" result 'INFO Copyright'; SAY "Copyright message .......:" result 'INFO Description'; SAY "Short description .......:" result 'INFO Version'; SAY "Version string ..........:" result 'INFO Base'; SAY "Name of the ARexx port ..:" result 'INFO Screen'; SAY "Name of the pub screen ..:" result HELP FILE/A A list of all ARexx commands available for the application is written into the given file. In addition to the default commands MirrorManager supports many application specific commands. The help list will contain these commands as well. For example, ADDRESS 'MIRRORMANAGER.1'; HELP "ram:help.out" creates the file ram:help.out with the following contents: Standard-Commands: Command Template ------- -------- quit hide show info ITEM/A help FILE/A Commands for application "MirrorManager": Command Template ------- -------- sort clear numentries add NAME/A,COMMAND/A,ARGS clone NAME remove NAME rename NAME/A execute NAME activate NAME up NAME down NAME top NAME bottom NAME load FILE save FILE configname FILE appstart COMMAND message CLEAR/S,OPEN/S,CLOSE/S,STRING complete PERCENTAGE/N working STRING requestchoice TITLE/K,GADGETS/A,BODY/A requestfile DRAWER,FILE/K,TITLE/K,SAVEMODE/S,DRAWERSONLY/S,NOICONS/S savelog FILE lock ON/S,OFF/S MirrorManager.guide/MUI Error codes MUI Error codes =============== In case of an error, MUI returns the following values to the rexx script: -1 Wrong command definition in host program. (Should never happen.) -2 Out of memory. -3 Unknown ARexx command. -4 Syntax error. If any of MirrorManager's own ARexx commands fail then either one of the above or 1 will be returned. In general: A value rc ~= 0 always indicates an error. MirrorManager.guide/MirrorManager ARexx commands MirrorManager ARexx commands ============================ SORT The SORT command performs a case insensitive sort on the MirrorManager's ListView. If SORT is called on an already sorted ListView then identically named entries will be exchanged. Calling this function via ARexx has the same result as pressing RCommand-S. CLEAR The CLEAR command removes all items from the MirrorManager's ListView and it will unset the internal CONFIGNAME variable. As a consequence NUMENTRIES will return result = 0 after this action has been performed. This can also be achieved by pressing RCommand-/. NUMENTRIES Returns the number of items in the MirrorManager's ListView. For example, ADDRESS 'MIRRORMANAGER.1' OPTIONS RESULTS NUMENTRIES SAY 'There are currently' result 'items' ADD NAME/A,COMMAND/A,ARGS Creates a new entry and adds it to the bottom of the ListView. The contents of the NAME field will appear in the MirrorManager's ListView, COMMAND must contain the pathname of an ARexx program and ARGS are the arguments for this ARexx program. For example, ADDRESS 'MIRRORMANAGER.1' ADD '"Add filenotes to INCOMING"', '"rexx/CleanupIncoming.mm"', '"FROM incoming: WITH aminet:INDEX"' will add an item Add filenotes to INCOMING which calls CleanupIncoming.mm with arguments FROM incoming: WITH aminet:INDEX. Note that all the commata `,' in the above example are ARexx line continuation tokens. They must be removed if the ADD command is used in one single line. When pressing RCommand-A a new item will be added to the ListView. The new item will be named - UNNAMED - by default and can be edited pressing RCommand-E. New items will always become the active item of the ListView. You may also write ARexx inline code into the COMMAND field. The ARGS field should however be empty then. For example, ADDRESS 'MIRRORMANAGER.1' ADD '"Edit current config"', '"*"OPTIONS RESULTS; CONFIGNAME; ADDRESS COMMAND ''Ed'' result*""' will start an Editor Ed with the name of the current configuration script as argument. See Calling Method, for more information about how MirrorManager executes ARexx code. CLONE NAME The CLONE command makes an identical copy of an item in the ListView. If no name is given, then the active item will be cloned. The new item will be inserted directly before the original item in the list and it will become active (1). CLONE can be called via RCommand-C. REMOVE NAME The REMOVE command deletes an item from the ListView. If no name is given then the active item will be removed. REMOVE activates the next item if there is a next one, otherwise, if the removed item was the last in the list then its previous item (which now is the last item) will become active. For example, ADDRESS 'MIRRORMANAGER.1' REMOVE '"Edit current config"' removes the item in the above example. This operation is identical to pressing RCommand-X. RENAME NAME/A The RENAME command changes the name of the active item to the given one. This operation will only redraw the active line in the ListView. Renaming the current item can also be done by editing this item either by pressing RCommand-E or selecting Edit/Edit... from the menu. EXECUTE NAME Executes a command by the name of its entry in the ListView. If no name is given then the active item's command will be executed. EXECUTE can also be performed by double-clicking or pressing the Return key on the desired item. ACTIVATE NAME ACTIVATE highlights a ListView item and makes it become the active item. If no name is given then ACTIVATE returns the name of the active item. Otherwise the command behind the given item will be returned. For example, OPTIONS RESULTS ADDRESS 'MIRRORMANAGER.1' ACTIVATE; name = result IF rc ~= 0 THEN SAY 'There is currently no active item.' ELSE DO ACTIVATE '"' || name || '"'; cmd = result SAY name 'performs the following command:' cmd END UP NAME Moves a ListView item one line up. If no name is given then the active item will be moved. This operation is identical to pressing RCommand-U. For example, OPTIONS RESULTS ADDRESS 'MIRRORMANAGER.1' UP; pos= result IF rc = 0 THEN DO WHILE pos > 0 'UP'; pos= result END ELSE SAY 'There is currently no item active.' would be a straight forward implementation of the TOP command. DOWN NAME Moves a ListView item one line down. If no name is given then the active item will be moved. This operation is identical to pressing RCommand-D. TOP NAME Moves an item to the beginning of the ListView. If no name is given then the active item will be moved. This operation is identical to pressing RCommand-T. BOTTOM NAME Moves an item to the end of the ListView. If no name is given then the active item will be moved. This operation is identical to pressing RCommand-B. LOAD FILE The LOAD command executes a configuration file. If called without arguments the last configuration will be re-loaded. SAVE FILE SAVE writes an ARexx executable to disk which, when executed restores the current MirrorManager configuration. If no filename is passed then the .rexx file will be written with the current default name. The SAVE command is identical to selecing Project/Save from the menu. You cannot write back the current configuration via a single keypress. Pressing RCommand-W will pop-up a filerequester asking you for the filename to write to. CONFIGNAME FILE The CONFIGNAME command sets the current filename for the configuration script. If called without parameters CONFIGNAME will return the current filename. The config filename will be set always after loading a configuration via Project/Load or after saving via Project/Save as.... It will also be set if these actions are performed via the ARexx commands LOAD or SAVE respectively. If MirrorManager has been run by executing a configuration scriptfile then this scriptfile will set CONFIGNAME to its own name. Otherwise, if MirrorManager has been started by double-clicking its icon then CONFIGNAME will be taken from the ToolTypes. When started from the CLI/Shell then the startup CONFIGNAME can be given via 1> MirrorManager CONFIGNAME=rexx/myconfig.mm Caution: If MirrorManager is executed without specifying CONFIGNAME then CONFIGNAME will be unset! This is so because the configuration scripts run MirrorManager without any arguments and of course they don't want MirrorManager to execute another configuration script. In this case Project/Save will behave like Project/Save as... and open a file requester. APPSTART COMMAND The APPSTART command sets the default command sequence for running MirrorManager. If no arguments are given then the current default will be returned. APPSTART can be set via a ToolType called APPSTART=. The default is Run MirrorManager. MESSAGE CLEAR/S,OPEN/S,CLOSE/S,STRING The MESSAGE command prints the given string in the MirrorManager working window appending a new line to the current window contents. Calling MESSAGE without parameters is a no-op. MESSAGE CLEAR wipes out the contents of the working window MESSAGE OPEN opens the working window MESSAGE CLOSE closes the working window Given string will be appended to the window contents even if the working window is closed at the time MirrorManager recieves the MESSAGE command. COMPLETE PERCENTAGE/N The COMPLETE command sets the gauge in the MirrorManager working window to the given value which has to be between 0 and 100. If COMPLETE is called without any parameters it will set the result string to the current gauge level. Even if the working window is closed at the time MirrorManager recieves the COMPLETE command, the gauge will be set to the given value. WORKING STRING The WORKING command sets the title of the MirrorManager working window to the given string. If it is called without any argument WORKING returns the current window title in the result string. REQUESTCHOICE TITLE/K,GADGETS/A,BODY/A The REQUESTCHOICE command is similar to the Commodore RequestChoice program. This gives the possibility to interact with the user. REQUESTCHOICE opens a MUI-Requester which can be configured by TITLE Title for the requester window. Defaults to "MirrorManager" GADGETS Pointer to a string containing the possible answers. The format looks like "_Save|_Use|_Test|_Cancel". If you precede an entry with a '*', this answer will become the active object. Pressing Return will terminate the requester with this response. A underscore _ character indicates the keyboard shortcut for this response. BODY The requester's body text The gadget and body string is parsed by MUI's text engine so it may contain the special characters '\n' Start a new line. With this character you can e.g. create multi line buttons. ESC - Disable text engine, following chars will be printed without further parsing. ESC u Set the soft style to underline. ESC b Set the soft style to bold. ESC i Set the soft style to italic. ESC n Set the soft style back to normal. ESC Use pen number n (2..9) as front pen. n must be a valid DrawInfo pen as specified in intuition/screens.h. ESC c Center current (and following) line(s). This sequence is only valid at the beginning of a string or after a newline character. ESC r Right justify current (and following) line(s). This sequence is only valid at the beginning of a string or after a newline character. ESC l Left justify current (and following) line(s). This sequence is only valid at the beginning of a string or after a newline character. ESC I[s] Draw MUI image with specification . See autodocs of image class for image spec definition. a quick example: OPTIONS RESULTS ADDRESS 'MIRRORMANAGER.1' REQUESTCHOICE TITLE "Dolle Sache" "_Yep!" "*Ec*EbMUI*En*Nis magic" REQUESTFILE DRAWER,FILE/K,TITLE/K,SAVEMODE/S,DRAWERSONLY/S,NOICONS/S The REQUESTFILE command ... SAVELOG FILE The SAVELOG command ... LOCK ON/S,OFF/S The LOCK command blafasel ... ---------- Footnotes ---------- (1) This is a lie. To be honest: The new item will be added directly below the original entry. The active item remains unchanged. MirrorManager.guide/Calling Method How MirrorManager executes ARexx Code ===================================== If you double-click one of MirrorManager's ListView items, MirrorManager will examine the Command and Arguments field associated with the selected item. ARexx inline code ----------------- If the contents of the Command field begins with a double quote " then MirrorManager expects this to be inline code and executes it like the ARexx starter command RX would. The only difference to RX is that the default host is set to the MirrorManager's ARexx port and the default extension for external ARexx scripts is .mm. ARexx script files ------------------ On the other hand, if the contents of the Command field does not begin with a double quote then the contents is expected to be the (path and) filename of an ARexx script. The pathname should be given relative to the path of the MirrorManager MUI application. However, also absolute pathnames are possible. Caution: You must not quote the contents of the Command field unless it is ment as ARexx inline code! MirrorManager will be able to execute your script file even if the path and/or the filename contains spaces. Before executing an ARexx script MirrorManager will generate inline code on its own. Consider the following example: Name Add filenotes to INCOMING Command Ram Disk:MirrorManager/rexx/CleanupIncoming.mm Arguments FROM "Ram Disk:incoming" WITH "aminet:INDEX" After setting the default host for ARexx to the name of MirrorManager's ARexx port, MirrorManager will execute the following inline code in order to invoke CleanupIncoming.mm: "CALL 'Ram Disk:MirrorManager/rexx/CleanupIncoming.mm', 'FROM','Ram Disk:incoming','WITH','aminet:INDEX'" Double quotes inside the Arguments field are treated as you would expect that for ordinary Shell commands. I.e. A double quote inside a double quoted argument needs a leading asterisk *. For example, "a *quote* *" inside" An asterisk however does not need to be prefixed by another asterisk. Here is an overview how MirrorManager converts the contents of the Arguments field which is shown on the left hand side of the following table: a b c 'a','b','c' a "b c" 'a','b c' a"b 'a""b' a'b 'a''b' "a*"b" 'a""b' "a'b" 'a''b' "a""b" 'a','b' Consider the source code rxcallstr.c for verbose documentation and further details. As you can see in the above example, MirrorManager will pass the arguments to the ARexx script in tokenized form. From within the ARexx script one can reach the i-th argument with arg(i). The ARexx variable arg() contains the number of supplied aruments. This is identical to an invocation method of ARexx scripts with RXFB_TOKEN set. And it is much more convenient for the ARexx programmer because he doesn't need to parse an argument string on its own. MirrorManager.guide/Hints Hints for writing new ARexx script files for MirrorManager ========================================================== Before writing ARexx scripts for MirrorManager you've got to make up your mind if you want to make it GUI-dependent or if your script file should better be executable from within any environment. GUI-dependent Independent MirrorManager.guide/GUI-dependent Writing GUI-dependent ARexx scripts ----------------------------------- Programming the GUI's ARexx interface will most often be done in order to configure MirrorManager to your own digests. If your work should however be useful for a greater variety of MirrorManager users then you should keep in mind the following: 1. MirrorManager has no assignments and needs no environment variables. You should therefore never write MirrorManager configuration scripts depending on your environment and your assignments. Instead you should take advantage of the fact that MirrorManager guarantees the current directory for all .mm scripts to be the directory MirrorManager resides in. And usually the sub-directory rexx/ contains these .mm scripts. 2. An important part of your configuration script makes up finding a legal host. The following example demonstrates how to do this poperly: /* ** Finding a MirrorManager host */ portbase = 'MIRRORMANAGER.' portlist = SHOW('P',,'0A'X) OPTIONS RESULTS DO WHILE WORDS(portlist) > 0 PARSE VAR portlist portname '0A'X portlist IF COMPARE(portname,portbase) = LENGTH(portbase)+1 THEN DO ADDRESS(portname); 'NUMENTRIES' IF result = 0 THEN portlist= "" ELSE ADDRESS END END IF ADDRESS() ~= portname THEN DO SAY 'MirrorManager is not running... exiting...' EXIT END /* ... */ EXIT 3. ARexx filenames containing spaces are currently somewhat difficult to execute. They are no problem for MirrorManager but they seem to be for several other hosts. Even RX needs a double quoted ToolType value for CMD, for example CMD="my script.rexx" or a kludge for executing my script.rexx from within the Shell: RX "call 'my example.rexx'" 4. If your configuration script should be executable from outside the GUI then you must set your own name to the application via the CONFIGNAME command. Otherwise CONFIGNAME will either be unset and calling SAVE without a parameter would fail, or if CONFIGNAME was set then SAVE would overwrite the old configuration. In fact it is not easy to determine the own full pathname from within an ARexx script, so here is an example PARSE SOURCE . . s t= LEFT(s,LASTPOS(':',s)) called= STRIP( LEFT(t,LASTPOS(' ',t)) ) CALL PRAGMA('W','N') DO WHILE ~EXISTS(called) & LASTPOS(' ',called) > 0 called= LEFT(called,LASTPOS(' ',called)-1) END IF LEFT(cr,1) = 'R' THEN DO host= ADDRESS() PARSE VAR s (called) s (host) . resolved= STRIP(s) CALL PRAGMA('W','N') DO WHILE ~EXISTS(resolved) resolved= LEFT(resolved,LASTPOS(' ',resolved)-1) END END /* ... */ At the bottom of this example, i.e. after the /* ... */ the variable called contains the filename used for calling this script while resolved contains the expanded path including the root's volume name. An example procedure whoami can also be found in the rexx/ drawer coming with MirrorManager. See MirrorManager scripts, whoami.rexx for more information. 5. You should always test the result of a call. All of the GUI's ARexx commands return 0 in the rc variable if they have been successful. A value ~= 0 always indicates an error. See MUI Error codes, for details on error codes. 6. Strings passed to the GUI always have to be quoted twice if they contain any white space. Additionally, double quotes `"' and asterisks `*' in a string passed to the GUI have to be escaped with an asterisk `*' to `*"' and `**' respectively. For this reason it is often useful to implement a function that quotes a string for you. For example, /* translate '"' into '*"' and '*' into '**' */ transquote: PROCEDURE PARSE ARG s t= s q= MAX( LASTPOS('*',s), LASTPOS('"',s) ) DO WHILE q > 0 t= INSERT('*',t,q-1,1) s= LEFT(s,q-1) q= MAX( LASTPOS('*',s), LASTPOS('"',s) ) END RETURN '"' || t || '"' double quotes the given argument string and translates each occurence of a double quote `"' into `*"' and each occurence of `*' into `**'. Here is an example for the usage of transquote with the ADD command: ADDRESS 'MIRRORMANAGER.1' ADD transquote('Say hello') transquote('"SAY ''Hello world!''"') MirrorManager.guide/Independent Writing GUI Independent ARexx Scripts for MirrorManager ------------------------------------------------------- The .rexx script files supplied with MirrorManager are all GUI independent, i.e. they never address to the MirrorManager's GUI host. This guarantees functionality from within any environment. The following is recommended to this kind of MirrorManager scripts: 1. The template for command line arguments sould be available in a ReadArgs() style. At most any user will expect this kind of argument passing meanwhile. The following example demonstrates a convenient argument parsing for a template REQUIRED/K/A,OPTIONAL/K,SWITCH/S /* ** parse command line arguments */ required = "" optional = "" switches = "" IF ( ARG() < 1 ) | ( (ARG() = 1) & ARG(1)= '?' ) then do OPTIONS PROMPT "REQUIRED/A,OPTIONAL,BOOL=SWITCH/S: " PARSE PULL ARGS END ELSE PARSE ARG args DO WHILE WORDS(args) > 0 av= next_arg() SELECT WHEN UPPER(av) = "REQUIRED" then do IF WORDS(args) > 0 THEN required= next_arg() ELSE DO SAY "missing argument value after REQUIRED keyword" EXIT usage()+5 END END WHEN UPPER(av) = "OPTIONAL" THEN DO IF WORDS(args) > 0 THEN optional= next_arg() ELSE DO SAY "missing arument value after OPTIONAL keyword" EXIT usage()+5 END END WHEN (UPPER(av) = "BOOL") | (upper(av) = "SWITCH") then do switches = switches || 's' END OTHERWISE DO IF av ~= '?' THEN SAY "Unknown keyword" av EXIT usage()+5 END END /* select */ END /* do */ IF WORDS(required) < 1 then do SAY "required argument missing" EXIT usage()+5 END /* ... */ IF LASTPOS('s',switches) > 0 THEN DO /* what this switch stands for */ END /* ... */ next_arg: PROCEDURE EXPOSE args args= STRIP(args) IF LEFT(args,1) = '"' THEN PARSE VAR args '"' a '"' args ELSE PARSE VAR args a args RETURN STRIP(a,'b','"'); MirrorManager.guide/Disclaimer Disclaimer ********** Warranty? No warranty. ====================== There is no warranty for this software package. Although the authors have tried to prevent errors, they cannot guarantee that the software package described in this document is 100% reliable. You are therefore using this material at your own risk. The authors cannot be made responsible for any damage which is caused by using this software package. MirrorManager.guide/License License ******* Copyright ========= MirrorManager is (c)Copyright 1994 by Tobias Ferber and Harald Kunze Tobias Ferber Harald Kunze Goethestrasse 32 Nuitsstrasse 29 76135 Karlsruhe 76185 Karlsruhe ukjg@rz.uni-karlsruhe.de uklg@rz.uni-karlsruhe.de @ @ ---oOO-(_)-OOo--- MirrorManager is ShareWare. THIS IS A BETA VERSION !!! Thanks to all beta testers, especially to Rene Petri, Mark Rose and Tobias Walter. Support ShareWare! ------------------ Please feel free to fill out the registration form! It can be found in your MirrorManager/docs drawer. Distribution ============ This software package is freely distributable under the concept of ShareWare. It may be put on any media which is used for the distribution of free software, like Public Domain disk collections, CDROMs, FTP servers or bulletin board systems. In order to ensure the integrity of this software package, distributors should use the original archive file. The authors cannot be made responsible if this software package has become unusable due to modifications of the archive contents or of the archive file itself. There is no limit on the costs of the distribution, e.g. for the media, like floppy disks, streamer tapes or compact disks, or the process of duplicating. Such limits have been proven to be harmful to the idea of freely distributable software, e.g. instead of reducing the price of the floppy disk below the limit, the software was simply removed from the master disk. Usage Restrictions ================== No program, document, data file or source code from this software package, neither in whole nor in part, may be used on any machine which is used * for the research, development, construction, testing or production of weapons or other military applications. This also includes any machine which is used in the education for any of the above mentioned purposes. * by people who accept, support or use violence against other people, e.g. citizens from foreign countries. MirrorManager.guide/MUI MUI - MagicUserInterface ************************ MirrorManager uses MUI - MagicUserInterface (C) Copyright 1993 by Stefan Stuntz MUI is a system to generate and maintain graphical user interfaces. With the aid of a preferences program, the user of an application has the ability to customize the outfit according to his personal taste. MUI is distributed as shareware. To obtain a complete package containing lots of examples and more information about registration please look for a file called muiXXusr.lha (XX means the latest version number) on your local bulletin boards or on public domain disks. If you want to register directly, feel free to send DM 20.- or US$ 15.- to Stefan Stuntz Eduard-Spranger-Straße 7 80935 München GERMANY MirrorManager.guide/Installer Installer ********* Along with MirrorManager comes the `Installer' from Commodore: Installer and Installer project icon (c) Copyright 1991-93 Commodore-Amiga, Inc. All Rights Reserved. Reproduced and distributed under license from Commodore. INSTALLER SOFTWARE IS PROVIDED "AS-IS" AND SUBJECT TO CHANGE; NO WARRANTIES ARE MADE. ALL USE IS AT YOUR OWN RISK. NO LIABILITY OR RESPONSIBILITY IS ASSUMED. Installer project icon redesigned by Martin Huttenloher. See MagicWB, for details. MirrorManager.guide/MagicWB MagicWB ******* All icons coming with MirrorManager are designed, redesigned or inspired by Martin Huttenloher's MagicWB. MagicWB has been designed and published by Martin Huttenloher under the concepts of SHAREWARE and is Copyright (C) 1993 by Martin Huttenloher, All rights reserved. Martin Huttenloher Am Hochstraess 4 D-89081 Ulm Germany/Europe MirrorManager.guide/ARexx Commands Index ARexx Commands Index ******************** ACTIVATE MirrorManager ARexx commands ADD MirrorManager ARexx commands APPSTART MirrorManager ARexx commands BOTTOM MirrorManager ARexx commands CLEAR MirrorManager ARexx commands CLONE MirrorManager ARexx commands COMPLETE MirrorManager ARexx commands COMPLETE MirrorManager ARexx commands CONFIGNAME MirrorManager ARexx commands DOWN MirrorManager ARexx commands EXECUTE MirrorManager ARexx commands HELP MUI built-in ARexx commands HIDE MUI built-in ARexx commands INFO MUI built-in ARexx commands LOAD MirrorManager ARexx commands LOCK MirrorManager ARexx commands MESSAGE MirrorManager ARexx commands NUMENTRIES MirrorManager ARexx commands QUIT MUI built-in ARexx commands REMOVE MirrorManager ARexx commands RENAME MirrorManager ARexx commands REQUESTCHOICE MirrorManager ARexx commands REQUESTFILE MirrorManager ARexx commands SAVE MirrorManager ARexx commands SAVELOG MirrorManager ARexx commands SHOW MUI built-in ARexx commands SORT MirrorManager ARexx commands TOP MirrorManager ARexx commands UP MirrorManager ARexx commands WORKING MirrorManager ARexx commands MirrorManager.guide/ARexx Scripts Index ARexx Scripts Index ******************* CutTree.mm MirrorManager scripts CutTree.rexx MirrorManager scripts Demo.rexx MirrorManager scripts ExamineIndex.mm MirrorManager scripts ExamineIndex.rexx MirrorManager scripts MakeIndex.mm MirrorManager scripts MakeIndex.rexx MirrorManager scripts MakeTree.mm MirrorManager scripts MakeTree.mm MirrorManager scripts MakeTree.rexx MirrorManager scripts MakeTree.rexx MirrorManager scripts MirrorManager.rexx MirrorManager scripts SortIndex.mm MirrorManager scripts SplitIndex.mm MirrorManager scripts SplitIndex.rexx MirrorManager scripts whoami.rexx MirrorManager scripts MirrorManager.guide/Master Index Master Index ************ .rexx ARexx Scripts About... Menu Items Add FileNotes from RECENT Using the ListView Add FileNotes from WANTED Using the ListView Add FileNotes to INCOMING Using the ListView Add Menu Items BODY MirrorManager ARexx commands Bottom Menu Items Cleanup INCOMING Using the ListView Cleanup with new RECENT Using the ListView Clear Window Menu Items Clear Menu Items Clone Menu Items Create FAST Index Using the ListView Create/Update Aminet TREE Using the ListView Create/Update LOCAL Index Using the ListView Delete Empty Directories Using the ListView Down Menu Items Edit Aminet INDEX File Using the ListView Edit Configuration Script Using the ListView Edit LOCAL Index File Using the ListView Edit WANTED Index Using the ListView Edit... Menu Items Edit Menu Menu Items GADGETS MirrorManager ARexx commands Insert Menu Items Load... Menu Items Locked Menu Items NO_ICON_POSITION ToolTypes and Command Line Arguments Open Window Menu Items Output Menu Menu Items PARSE SOURCE MirrorManager scripts Procject Menu Menu Items Quit Menu Items Re-Insert Kicked Out Files Using the ListView Remove Menu Items Reorganize Local Mirror Using the ListView Save As... Menu Items Save Log... Menu Items Save... Menu Items Sort Aminet INDEX File Using the ListView Sort Menu Items TITLE MirrorManager ARexx commands Top Menu Items TREE MirrorManager scripts Update Aminet DirNotes Using the ListView Up Menu Items Aminet Introduction Aminet directory hierarchy MirrorManager scripts APPSTART ToolTypes and Command Line Arguments APPSTART MirrorManager ARexx commands ARexx ARexx Scripts ARexx ARexx Commands ARexx code calling method Calling Method ARexx Commands ARexx Commands ARexx Scripts ARexx Scripts Argument parsing Independent Arguments ToolTypes and Command Line Arguments Arguments (to the .rexx scripts) ARexx Scripts AUTHOR MUI built-in ARexx commands BASE MUI built-in ARexx commands called GUI-dependent Calling Method Calling Method Check the local mirror MirrorManager scripts ClickMeForColors MagicWB Coding hints Hints Command line option parsing Independent CONFIGICON ToolTypes and Command Line Arguments CONFIGNAME GUI-dependent CONFIGNAME ToolTypes and Command Line Arguments CONFIGNAME MirrorManager ARexx commands Configuration script MirrorManager scripts Configuration scripts GUI-dependent Configuration scripts MirrorManager Configuration Scripts Configure Using Configure Configuring Configuring CONSOLE ToolTypes and Command Line Arguments COPYRIGHT MUI built-in ARexx commands Default tool ToolTypes and Command Line Arguments Delete empty Directories MirrorManager scripts Demo.rexx MirrorManager scripts DESCRIPTION MUI built-in ARexx commands Directory hierarchy MirrorManager scripts Disclaimer Disclaimer Distribution License Double quoting GUI-dependent Enter MirrorManager ARexx commands Error codes MUI Error codes Examine the local index file MirrorManager scripts Example code Hints Fast index file MirrorManager scripts Finding a MirrorManager host GUI-dependent GUI dependent scripts GUI-dependent Harald Kunze License Hello world! GUI-dependent Hints Hints Hostname ARexx Commands hostname GUI-dependent Icons MagicWB Inataller Installation Independent ARexx scripts Independent Initial ListView contents Using the ListView Installation Installation Installer Installer Installer program Installer Introduction Introduction License License MagicUserInterface MUI MagicWB MagicWB Martin Huttenloher MagicWB MAXARGLEN ToolTypes and Command Line Arguments MAXCOMMANDLEN ToolTypes and Command Line Arguments MAXITEMLEN ToolTypes and Command Line Arguments MAXPATHLEN ToolTypes and Command Line Arguments Menu items Menu Items Menu structure Menu Items MUI MUI MUI Error codes MUI Error codes No Warranty Disclaimer Options ToolTypes and Command Line Arguments Order form License Portname ARexx Commands Project icon ToolTypes and Command Line Arguments Project icon ToolTypes and Command Line Arguments Quoting GUI-dependent RCommand-/ MirrorManager ARexx commands RCommand-A MirrorManager ARexx commands RCommand-B MirrorManager ARexx commands RCommand-C MirrorManager ARexx commands RCommand-D MirrorManager ARexx commands RCommand-E MirrorManager ARexx commands RCommand-E MirrorManager ARexx commands RCommand-O MirrorManager ARexx commands RCommand-Q MUI built-in ARexx commands RCommand-S MirrorManager ARexx commands RCommand-T MirrorManager ARexx commands RCommand-U MirrorManager ARexx commands RCommand-W MirrorManager ARexx commands RCommand-X MirrorManager ARexx commands ReadArgs() Independent ReadArgs() ARexx Scripts Registring MirrorManager License resolved GUI-dependent Return MirrorManager ARexx commands RX ARexx Scripts SCREEN MUI built-in ARexx commands SetConfigureDefaults Using Configure ShareWare License Sorting an index file MirrorManager scripts Split index file MirrorManager scripts Stack size ToolTypes and Command Line Arguments Stefan Stuntz MUI Templates ARexx Scripts Templates Independent TITLE MUI built-in ARexx commands Tobias Ferber License ToolTypes ToolTypes and Command Line Arguments transquote GUI-dependent TREE MirrorManager scripts Using the ListView Using the ListView VERSION MUI built-in ARexx commands Warranty Disclaimer whoami GUI-dependent MirrorManager.guide converted by Guide2Doc 1.0 (02-Nov-1993) FreeWare - © Koessi