140 lines
4.9 KiB
Plaintext
140 lines
4.9 KiB
Plaintext
/*
|
|
* $Id$
|
|
*/
|
|
|
|
/*
|
|
* 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 doc/license.txt por los términos de la licencia.
|
|
*
|
|
*/
|
|
|
|
/* $DOC$
|
|
* $FUNCNAME$
|
|
* Utilidad Linea de Comandos
|
|
* $CATEGORY$
|
|
* Document
|
|
* $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: </par>
|
|
* 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 del Compilador
|
|
* $END$
|
|
*/
|