89 lines
3.3 KiB
C
89 lines
3.3 KiB
C
/*
|
||
Este fichero forma parte del Curso de C
|
||
Copyright (C) 1991 Grupo Editorial Jackson
|
||
Todos los derechos reservados
|
||
*/
|
||
|
||
|
||
/* JDIRECT.H: cabecera para utilizar las funciones de b£squeda en los */
|
||
/* directorios MS-DOS tanto con Quick C como con Turbo C. */
|
||
|
||
|
||
#if !defined(__JDIRECT_H_) /*incluye s¢lo si no est ya incluido*/
|
||
#define __JDIRECT_H_
|
||
|
||
|
||
#include <dos.h>
|
||
|
||
typedef struct { /*define el tipo FileInfo: <1> */
|
||
char reserved[21]; /*espacio reservado para DOS*/
|
||
char atrib; /*atributos del fichero*/
|
||
struct { /*tiempo de la £ltima modific. <2>*/
|
||
unsigned int sec : 5;
|
||
unsigned int min : 6;
|
||
unsigned int hours : 5;
|
||
} time;
|
||
struct { /*fecha de la £ltima modific. <3>*/
|
||
unsigned int day : 5;
|
||
unsigned int month : 4;
|
||
unsigned int year : 7;
|
||
} date;
|
||
long size; /*dimensiones del fichero*/
|
||
char name[13]; /*nombre del fichero*/
|
||
} FileInfo;
|
||
|
||
|
||
#ifdef __TURBOC__ /*compila si Turbo C*/
|
||
|
||
#include <dir.h>
|
||
|
||
// #define FA_NORMAL 0 /*constante para ficheros 'normales'*/
|
||
|
||
/*convierte el tipo del puntero a datos del fichero: */
|
||
|
||
#define findfirst(p,b,a) findfirst(p,(struct ffblk *)b,a) /*<4>*/
|
||
#define findnext(b) findnext((struct ffblk *)b)
|
||
|
||
#else /*compila si Quick C*/
|
||
|
||
#include <direct.h>
|
||
|
||
#define FA_NORMAL _A_NORMAL /*convierte nombres const. atributos: */
|
||
#define FA_RDONLY _A_RDONLY /*s¢lo lectura*/
|
||
#define FA_HIDDEN _A_HIDDEN /*oculto*/
|
||
#define FA_SYSTEM _A_SYSTEM /*de sistema*/
|
||
#define FA_LABEL _A_VOLID /*etiqueta de volumen*/
|
||
#define FA_DIREC _A_SUBDIR /*directorio*/
|
||
#define FA_ARCH _A_ARCH /*archivo*/
|
||
|
||
/*convierte nombres funciones, cambia orden argumentos de findfirst: */
|
||
|
||
#define findfirst(p,b,a) (int)_dos_findfirst(p,a,(struct find_t *)b)
|
||
#define findnext(b) (int)_dos_findnext((struct find_t *)b) /*<5>*/
|
||
|
||
#endif /*fin opci¢n Turbo C / Quick C*/
|
||
|
||
|
||
#endif /*(si no incluido)*/
|
||
|
||
|
||
/* Notas sobre DIRECT.H:
|
||
|
||
<1> FileInfo es una estructura que contiene informaci¢n relativa a
|
||
un fichero, restituida por findfirst y findnext.
|
||
<2> La componente time es un int (16 bits) que contiene en realidad tres
|
||
valores, cada uno conservado en un grupo de bits adyacentes. El orden
|
||
de lectura de los bits depende del compilador, as¡ esta definici¢n no
|
||
es port til (aunque sirve tanto con Turbo C como con Quick C). Se
|
||
pod¡an escribir tambi‚n simplemente los tres campos de bits como
|
||
componentes de la estructura FileInfo (sin utilizar la estructura
|
||
time), pero hemos preferido subrayar que los tres campos de bits
|
||
forman en conjunto un int: esto puede ser £til por comodidad de
|
||
manipulaci¢n (por ej. pasar time a una funci¢n).
|
||
<3> Ver nota 2.
|
||
<4> Este cast, desgraciadamente, le deja al compilador sin posibilidades
|
||
de comprobar los errores. S¢lo lo hemos utilizado para asegurar la
|
||
portabilidad entre Turbo C 2.0 y Quick C 2.0.
|
||
<5> Ver nota 4.
|
||
*/
|