First commit 05/09/1999
This commit is contained in:
		
							
								
								
									
										88
									
								
								JDIRECT.H
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										88
									
								
								JDIRECT.H
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,88 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					   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<73> 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 <20>ltima modific. <2>*/
 | 
				
			||||||
 | 
					        unsigned int sec   : 5;
 | 
				
			||||||
 | 
					        unsigned int min   : 6;
 | 
				
			||||||
 | 
					        unsigned int hours : 5;
 | 
				
			||||||
 | 
					    } time;
 | 
				
			||||||
 | 
					    struct {                        /*fecha de la <20>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<63>n Turbo C / Quick C*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif                              /*(si no incluido)*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Notas sobre DIRECT.H:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <1> FileInfo es una estructura que contiene informaci<63>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<61> esta definici<63>n no
 | 
				
			||||||
 | 
					        es port<72>til (aunque sirve tanto con Turbo C como con Quick C). Se
 | 
				
			||||||
 | 
					        pod<6F>an escribir tambi<62>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 <20>til por comodidad de
 | 
				
			||||||
 | 
					        manipulaci<63>n (por ej. pasar time a una funci<63>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.
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
		Reference in New Issue
	
	Block a user