/*
 * $Id: dir.txt,v 1.3 2001/07/30 13:39:30 ckedem Exp $
 */

/*
 * Las siguientes partes son derechos adquiridos de sus autores individuales.
 * www - http://www.harbour-project.org
 *
 * Copyright 2000 Alejandro de Gárate <alex_degarate@hotmail.com>
 * Documentación en Español de: __DIR(), DIR, ADIR()
 *
 * Copyright 1999 Chen Kedem <niki@actcom.co.il>
 *    Documentación en Inglés de: __DIR(), DIR, ADIR()
 *
 * Vea doc/license.txt por los términos de la licencia.
 *
 */


/*  $DOC$
 *  $FUNCNAME$
 *      __Dir()*
 *  $CATEGORY$
 *      Manejo de Archivos
 *  $ONELINER$
 *      Muestra por pantalla el listado de archivos.
 *  $SYNTAX$
 *      __Dir( [<cFileMask>] ) --> NIL
 *  $ARGUMENTS$
 *      <cFileMask> Máscara de archivos para incluir en el retorno de la
 *      función. Esta podría contener subdirectorios (path) y caracteres
 *      estándar usados como comdines, segun sean soportados por el sistema
 *      operativo (como * y ?). Si <cFileMask> no contiene la ruta al archivo
 *      entonces SET DEFAULT es usado para mostrar archivos en la máscara.
 *  $RETURNS$
 *      __Dir() siempre retorna NIL.
 *  $DESCRIPTION$
 *      Si ninguna <cFileMask> es dada, __Dir() muestra información acerca de
 *      todos los *.DBF en la ruta SET DEFAULT. Esta información contiene:
 *      - Nombre del archivo
 *      - Numero de registros
 *      - Fecha de la ultima actualización
 *      - Tamaño de cada archivo.
 *
 *      Si <cFileMask> es dada, __Dir() lista todos los archivos que coinciden
 *      con la máscara en los siguientes detalles: Nombre, Extensión, Tamaño,
 *      Fecha.
 *
 *      El comando DIR es pre-procesado en la función __Dir() durante el
 *      tiempo de compilación.
 *
 *      __Dir() es una función de compatibilidad, esta fué superada por
 *      DIRECTORY(), la cual devuelve toda la información en un arreglo
 *      multidimensional.
 *  $EXAMPLES$
    <fixed>
 *      __Dir()   // Información de todos los DBF en el directorio actual
 *
 *      __Dir( "*.dbf" )       // Lista todos los DBF en el directorio actual
 *
 *      // Lista todos los PRG de la librería de ejecución (RTL) de Harbour
 *      // para sistemas operativos compatibles con DOS
 *      __Dir( "c:\harbour\source\rtl\*.prg" )
 *
 *      // Lista todos los archivos de la sección pública sobre una máquina
 *      // tipo Unix
 *      __Dir( "/pub" )
    </fixed>
 *  $STATUS$
 *      R
 *  $COMPLIANCE$
 *      Información de DBF: CA-Clipper muestra nombres de archivos en el
 *      formato 8.3, Harbour muestra los primeros 15 caracteres si un nombre
 *      largo de archivo esta disponible.
 *
 *      Listado de archivos: para formatear los nombres mostrados usamos algo
 *      así como:
 *      PADR( Nombre, 8 ) + " " + PADR( Ext, 3 )
 *      CA-Clipper usa nombres de archivo 8.3, con Harbour probablemente se
 *      podría cortar los nombres largos de archivo para llenar este molde.
 *  $FILES$
 *      La librería es rtl
 *  $SEEALSO$
 *      ADIR(),DIRECTORY(),SET DEFAULT,DIR
 *  $END$
 */


/*  $DOC$
 *  $FUNCNAME$
 *      DIR
 *  $CATEGORY$
 *      Comandos
 *  $ONELINER$
 *      Muestra el listado de archivos
 *  $SYNTAX$
 *      DIR [<cFileMask>]
 *  $ARGUMENTS$
 *      <cFileMask> Máscara de archivos para incluir en el retorno de la
 *      función. Esta podría contener subdirectorios (path) y caracteres
 *      estándar usados como comdines, segun sean soportados por el sistema
 *      operativo (como * y ?). Si <cFileMask> no contiene la ruta al archivo
 *      entonces SET DEFAULT es usado para mostrar archivos en la máscara.
 *  $DESCRIPTION$
 *      Si ninguna <cFileMask> es dada, __Dir() muestra información acerca de
 *      todos los *.DBF en la ruta SET DEFAULT. esta información contiene:
 *      - Nombre del archivo
 *      - Número de registros
 *      - Fecha de la ultima actualización
 *      - Tamaño de cada archivo.
 *
 *      Si <cFileMask> es dada, __Dir() lista todos los archivos que coinciden
 *      con la máscara en los siguientes detalles: Nombre, Extensión, Tamaño,
 *      Fecha.
 *
 *      El comando DIR es pre-procesado en la función __Dir() durante el
 *      tiempo de compilación.
 *
 *      __Dir() es una función de compatibilidad, esta fué superada por
 *      DIRECTORY(), la cual devuelve toda la información en un arreglo
 *      multidimensional.
 *  $EXAMPLES$
    <fixed>
 *      __Dir()   // Información de todos los DBF en el directorio actual
 *
 *      __Dir( "*.dbf" )       // Lista todos los DBF en el directorio actual
 *
 *      // Lista todos los PRG de la librería de ejecución (RTL) de Harbour
 *      // para sistemas operativos compatibles con DOS
 *      __Dir( "c:\harbour\source\rtl\*.prg" )
 *
 *      // Lista todos los archivos de la sección pública sobre una máquina
 *      // tipo Unix
 *      __Dir( "/pub" )
    </fixed>
 *  $STATUS$
 *      R
 *  $COMPLIANCE$
 *      Información de DBF: CA-Clipper muestra nombres de archivos en el
 *      formato 8.3, Harbour muestra los primeros 15 caracteres si un nombre
 *      largo de archivo está disponible.
 *
 *      Listado de archivos: para formatear los nombres mostrados usamos algo
 *      así como:
 *      PADR( Nombre, 8 ) + " " + PADR( Ext, 3 )
 *      CA-Clipper usa nombres de archivo 8.3, con Harbour probablemente se
 *      podría cortar los nombres largos de archivo para llenar este molde.
 *  $SEEALSO$
 *      ADIR(),DIRECTORY(),SET DEFAULT,__DIR()*
 *  $END$
 */


/*  $DOC$
 *  $FUNCNAME$
 *      ADIR()
 *  $CATEGORY$
 *      Array
 *  $ONELINER$
 *      Llena arrays pre-definidos con información de archivo / directorio
 *  $SYNTAX$
 *      ADIR( [<cFileMask>], [<aNombre>], [<aTamano>], [<aFecha>],
 *            [<aHora>], [<aAtrib>] ) -> nEntradasDirectorio
 *  $ARGUMENTS$
 *      <cFileMask> Máscara de archivos para incluir en el retorno de la
 *      función. Esta podria contener subdirectorios (path) y caracteres
 *      estandar usados como comodines, segun sean soportados por el sistema
 *      operativo (como * y ?). Si <cFileMask> no contiene la ruta al archivo
 *      entonces SET DEFAULT es usado para mostrar archivos en la máscara.
 *
 *      <aNombre> Array para llenar con el Nombre de los archivos que cumplen
 *      con <cFileMask>. Cada elemento es una cadena de caracteres que incluye
 *      el Nombre y Extensión del archivo sin la ruta de acceso.
 *      Nombre es el nombre largo de archivo como es reportado por el sistema
 *      operativo y no necesariamente en el formato mayúsculas 8.3 del D.O.S.
 *
 *      <aTamano> Array  para llenar con el Tamaño de los archivos que cumplen
 *      con <cFileMask>. Cada elemento es un número entero con el tamaño del
 *      archivo en bytes.
 *      Los Directorios siempre tienen un tamaño cero.
 *
 *      <aFecha> Array para llenar con la Fecha de la ultima modificación del
 *      archivo que cumplen con <cFileMask>. Cada elemento es del tipo "Date"
 *
 *      <aHora> Array para llenar con la Hora de la ultima modificación del
 *      archivo que cumplen con <cFileMask>. Cada elemento es una cadena de
 *      caracteres en el formato:      HH:MM:SS.
 *
 *      <aAtrib> Array para llenar con los atributos de los archivos que
 *      cumplen con <cFileMask>. Cada elemento es una cadena de caracteres,
 *      Vea DIRECTORY() por información sobre los valores de los atributos.
 *      Si Ud. pasa un array a <aAtrib>, la función va a devolver archivos
 *      con los atributos Normal, Oculto (H), sistema (S) y directorio (D)
 *      Si <aAtrib> no es especificado o es distinto de un array solo
 *      archivos con atributo normal porian ser devueltos.
 *
 *      Nota: Al momento de escribir esta documentación todavia no había
 *            información sobre el comportamiento de esta función con los
 *            atributos que poseen las maquinas tipo Unix.
 *  $RETURNS$
 *      ADIR() retorna el número de entradas de archivo que cumplen con la
 *      condición establecida en la máscara <cFileMask>.
 *  $DESCRIPTION$
 *      ADIR() retorna el número de archivos y/o directorios que cumplen con
 *      un formato especificado, este tambien llena una serie de arrays con
 *      Nombre, Tamaño, Fecha, Hora y Atributo de estos archivos.
 *      El array pasado debe ser pre-inicializado al tamaño apropiado, vea el
 *      ejemplo más abajo.
 *      Con motivo de incluir los atributos Oculto (H), sistema (S) o de
 *      directorio (D) <aAtrib> debe ser especificado.
 *
 *      ADIR() es una función de compatibilidad, esta fue superada por
 *      DIRECTORY(), la cual devuelve toda la información en un arreglo
 *      multidimensional.
 *  $EXAMPLES$
    <fixed>
 *      LOCAL aNombre, aTamano, aFecha, aHora, aAtrib, nLen, i
 *      nLen := ADIR( "*.JPG" )   // Nro de archivos JPG files en directorio
 *
 *      IF nLen > 0
 *         aNombre := Array( nLen )  // hace lugar para guardar la información
 *         aTamano := Array( nLen )
 *         aFecha := Array( nLen )
 *         aHora := Array( nLen )
 *         aAtrib := Array( nLen )
 *         FOR i = 1 TO nLen
 *             ? aNombre[i], aTamano[i], aFecha[i], aHora[i], aAtrib[i]
 *         NEXT
 *      ELSE
 *         ? "Este directorio no tiene ni pelusa"
 *      ENDIF
    </fixed>
 *  $STATUS$
 *     R
 *  $COMPLIANCE$
 *      <aNombre> esta yendo a ser llenado con nombres largos de archivo y
 *      no necesariamente con el formato mayúsculas 8.3 del D.O.S.
 *  $FILES$
 *      La librería es rtl
 *  $SEEALSO$
 *      ARRAY(),DIRECTORY(),SET DEFAULT
 *  $END$
 */
