[OBSOLETE, we don't recommend anymore to write TCL Macros. Instead, use
the Python SDK located in the PythonLib folder]

Macros start-up :
-----------------

* The startup.tcl file get executed before *each* command of TCL.
* In order to be recognized by the application, the macro file has to be
located in the "Macros" folder (or any of its sub-folder).
* A header tells the application in which menu to hook-up the macro :

#!CVSGUI1.0 [--admin|--selection]  --name "The name which appears in the menu"

Built-in TCL commands available anywhere :
------------------------------------------

* cvs : the cvs command.

* cvsout ?arg arg...?
  output a set of strings to the console window.

* cvserr ?arg arg...?
  output a set of strings to the console window.

* cvsentries pathName funcName
  load the CVS/Entries informations from pathName and set the funcName with
  a "cvsbrowser" like syntax (see below).

* cvsexitonerror true|false
  Enable or disable automatic termination of a macro 
  if cvs command returns an error code (ie. non zero value).

  true  = Exit automatically in error (default behaviour)
  false = Do not exit automatically. cvslasterrorcode command can be used
          to read the error code, so macro can handle the error.

* cvslasterrorcode  ?arg?
  Return the error code of last CVS command if called without argument.
  Set a value of cvslasterrorcode variable if called with integer argument.

     cvsexitonerror false
     cvs -q update $fileInfo(name)
     set errcode [cvslasterrorcode]
     if {[string compare $errcode "0"] == 0} {  
        cvsout "Successfully updated\n"
     } else {
        cvsout "Failed to update\n"
     }
     
* cvsfilemodtime ?arg?
  Return a string containing the UTC value for the modification time for 
  the disk file ?arg?.


Built-in TCL commands only from the Selections menu :
-----------------------------------------------------

* cvsbrowser :
  - cvsbrowser get : returns a list of the selected items in the browser. A simple
    return is : {"C:/myproject/foo.c" "C:/myproject/foo.rc"}
  - cvsbrowser info fileName arrayName : set the array "arrayName" with a set of informations
    about "fileName". If the browser has such an information, the array "arrayName" contains :
	  + $arrayName(name) :        the file name
	  + $arrayName(kind) :        [file|folder]
	  + $arrayName(path) :        the file path
	  + $arrayName(missing) :     [0|1]
	  + $arrayName(unknown) :     [0|1]
	  + $arrayName(ignored) :     [0|1]
	  + $arrayName(locked) :      [0|1]
	  + $arrayName(modified) :    [0|1]
	  + $arrayName(status) :      A string like "Mod. file" or "Unknown folder"
	  + if the element is a file (if $arrayName(kind) is "file")
         + $arrayName(revision) :     the file revision (i.e. 1.1, 1.2.3.4...)
         + $arrayName(timestamp) :    the time stamp on the server
         + $arrayName(option) :       the substitution option (i.e. -kb)
         + $arrayName(tag) :          the tag name (if any)
         + $arrayName(conflict) :     the conflict desc. (if any)


