/*
 * $Id: cmdline.txt 10694 2009-03-25 15:34:09Z vszakats $
 */

/*
 * Las siguientes partes son derechos adquiridos de sus autores individuales.
 * www - http://www.harbour-project.org
 *
 * Copyright 2001 
 *   Documentación en Ingl‚s de: cmdline.txt
 *
 * Copyright 2002 Alejandro de G rate <alex_degarate@hotmail.com>
 *   Documentaci¢n en Espa¤ol de: cmdline.txt
 *
 * Vea COPYING por los t‚rminos de la licencia.
 *
 */

/*  $DOC$
 *  $FUNCNAME$
 *      Linea de Comandos
 *  $CATEGORY$
 *      Documento
 *  $ONELINER$
 *      Opciones del Compilador
 *  $DESCRIPTION$
 *      Esta especificaci¢n sirve para CLIPPERCMD, HARBOURCMD, el compilador
 *      Harbour y las directivas #pragma en el c¢digo fuente.
 *      
 *      La l¡nea de comando siempre predomina sobre las variables de entorno.
 *      
 *      Note que algunos switches no son aceptados en variables de entorno,
 *      y algunos otros en #pragmas.
 *      
 *      Primero el analizador (parser) deber¡a comenzar saltando a trav‚s 
 *      de todos los tokens en la cadena separadas por espacios en blanco.
 *      (¢ solo ir a trav‚s de todos los argv[])
 *      
 *      1.) Si el token comienza con "-", este debe ser tratado como un
 *          un nuevo estilo de switch .
 *      
 *      Uno ¢ m s caracteres switch pueden seguir a ‚ste. El signo "-"
 *      dentro del token apaga el switch.
 *      
 *      Si el switch tiene un argumento, todos los caracteres siguientes son
 *      tratados como parte del argumento:
 *      
 *      El signo "/" n tiene significado especial aqui.
 *          
 *        <table>
 *        Switch                  Opci¢n resultante
 *
 *        -wn                     ( W N )
 *        -w-n                    ( !W N )
 *        -wi/harbour/include/    ( W I=/harbour/include/ )
 *        -wi/harbour/include/n   ( W I=/harbour/include/n )
 *        -wes0n                  ( W ES=0 N )
 *        -wen                    ( W [invalid switch: e] N )
 *        -wesn                   ( W ES=default(0) N )
 *        -wses                   ( W S ES=default(0) )
 *        -wess                   ( W ES=default(0) S )
 *        -                       ( [invalid switch] )
 *        -w-n-p                  ( !W !N P )
 *        -w-n-p-                 ( !W !N !P )      
 *        -w- -w -w-              ( finally: !W )
 *          </table>
 *      
 *
 *      2.) Si el token comienza con "/", este debe ser tratado como un
 *          switch de compatibilidad.
 *      
 *      El analizador revisa el token por el pr¢ximo signo "/", o EOS
 *      (End Of String = fin de linea) y  trata la cadena resultante
 *      como un s¢lo switch.
 *      
 *      Esto significa que si un switch con un argumento conteniendo el 
 *      signo "/" tiene algunas limitaciones.
 *      Esto puede ser resuelto permitiendo el uso de caracteres comillas.
 *      Esto es mayormente un problema en sistemas que usan "/" como un
 *      separador de path.
 *      
 *      
 *      El signo "-" n tiene significado especial aqu¡, ‚ste no puede ser
 *      usado para deshabilitar un switch.
 *
 *         <table>  
 *        Switch              Opci¢n resultante
 *
 *        /w/n                ( W N )
 *        /wo/n               ( [invalid switch: wo] N )
 *        /ihello/world/      ( I=hello [invalid switch: world] 
 *                                      [invalid switch: /] )
 *        /i"hello/world/"/w  ( I=hello/world/ W )
 *        /ihello\world\      ( I=hello\world\ )
 *      </table>
 *
 *
 *      3.) Si el token comienza con otra cosa, ‚ste deber¡a ser saltado.
 *      
 *      Los switches de Harbour son siempre insensibles a las mayúsculas.
 *      
 *      En la l¡nea de comandos de Harbour los dos estilos pueden ser usados
 *      conjuntamente:   
 *
 *      harbour -wnes2 /gc0/q0 -iC:\hello
 *      
 *      Excepciones: 
 *      
 *      - El manejo del switch indocumentado /CREDIT en la l¡nea de comandos 
 *        de Harbour es inusual, revise el c¢digo actual por esto.
 *      
 *      - El analisis de los par metros en la l¡nea de comandos de CLIPPER,
 *        HARBOUR y aplicaciones de Harbour, son cosas distintas, vea
 *        cmdarg.c por una nota.
 *
 *      Notas:
 *      
 *      - En toda ocurrencia donde el path es aceptado, Harbour deber¡a 
 *        manejar el caracter doble comillas (") para especificar un path 
 *        conteniendo espacios, signo negativo, barras u otros caracteres
 *        con un significado especial.
 *      
 *        /i"C:/hello/"   </par>
 *        -i"C:/hello-n"  </par>
 *        /i"C:/Program Files/" </par>
 *        -i"C:/Program Files/" </par>
 *      
 *      <fixed>
 *      S¢lo algunos ejemplos para las varias formas aceptadas:
 *      //F20 == /F20 == F20 == F:20 == F20X
 *      //TMPPATH:C:\hello
 *      F20//TMPPATH:/temp///F:30000000 NOIDLE
 *      F0NOIDLEX10
 *      SQUAWKNOIDLE
 *      </fixed>
 *      "//" siempre deber¡an ser usados en la l¡nea de comandos.
 *  $SEEALSO$
 *      Opciones Compilador
 *  $END$
 */  


