/*		Sistema de ficheros simbolico				*/
/*		version 2.0, marzo 1997					*/

/*	Prototipos de funciones						*/


typedef unsigned short int u_short;

/* Funcion para la creacion de un fichero				*/
int Crea_Fichero( Nombre nomb, Atributo atrib );
/*	nomb: cadena de caracteres que contiene el nombre del fichero	*/
/*	atrib: accesos permitidos					*/
/*	Retorna: 0 creacion con exito, -1 en caso de error		*/

/* Funcion para borrar un fichero					*/
int Borra_Fichero( Nombre nomb );
/*	nomb: nombre del fichero a borrar				*/
/*	Retorna: 0 se pudo borrar, -1 en caso de error			*/

/* Funcion para abrir un fichero					*/
int Abre_Fichero( Nombre nomb, Acceso acces );
/*	nomb: nombre del fichero a abrir				*/
/*	acces: accesos a realizar (LECTURA y/o ESCRITURA)		*/
/*	Retorna: 0 apertura con exito, -1 en caso de error		*/

/* Funcion para posicionar el puntero de acceso al fichero		*/
int Posiciona_Puntero( int fd, Posfich punt );
/*	fd: descriptor valido de fichero				*/
/*	punt: nueva posicion						*/
/*	Retorna: punt si operacion con exito, -1 en caso de error	*/

/* Funcion para leer una cadena de bytes				*/
int Lee_Fichero( int fd, void *buff, int nbytes );
/*	fd: descriptor valido de archivo				*/
/*	buff: puntero a zona de memoria donde recoger los bytes leidos	*/
/*	nbytes: numero de bytes a leer					*/
/*	Retorna: valor positivo si se leen bytes, -1 en caso de error	*/

/* Funcion para escibir una cadena de bytes				*/
int Escribe_Fichero( int fd, void *buff, int nbytes );
/*	fd: descriptor valido de ficehro				*/
/*	buff: puntero a memoria donde estan los bytes a escribir	*/ 
/*	nbytes: numero de bytes a escribir				*/
/*	Retorna: nbytes si escritura con exito, en caso de error -1	*/

/* Funcion para cerrar un fichero					*/
int	Cierra_Fichero( int fd );
/*	fd: descriptor valido de fichero				*/
/*	Retorna: o si cierre con exito, -1 en caso de error		*/

/* Funcion para crear un sistema de archivos				*/
int Crea_Sistema( char *nomb, u_short nbloq, u_short tbloq, u_short nfich);
/*	nomb: fichero UNIX que contendra en sistema de archivos		*/
/*	nbloq: numero de bloques de datos del sistema a crear		*/
/*	tbloq: bytes de los bloques de datos				*/
/*	nfich: numero de entradas del directorio de volumen		*/
/*	Retorna: 0 si creacion con exito, -1 en caso de error		*/

/* Funcion para activar un sistema de archivos aun no activo		*/
int Activa_Sistema( char *nomb, int nbloque_cache );
/*	nomb: nombre del fichero UNIX que contiene el sistema a activar	*/
/*	nbloque_cache: numero de bloques de la cache de disco 		*/
/*	IMPORTANTE: Para probar pasen este parametro con valor 0	*/	
/*	Retorna: 0 si activacion con exito, en caso de error -1 	*/

/* Funcion para desactivar un sistema de archivos			*/
int Desactiva_Sistema( );
/*	Retorna: 0 si desactivacion realizada, -1 en caso de error	*/
/* Funcion para visualizar estado del sistema de archivos		*/
void	InformeSFS( void );
/*	Debera presentar al menos lo siguiente:				*/
/*		1. Ficheros abiertos: puntero de acceso, modo de	*/ 
/*		apertura y contador de referencias.			*/ 
/*		2. Caracteristicas basicas del superbloque: tamano y	*/
/*		numero de ficheros en de directorio de volumen 		*/ 	/*		3. Ficheros existentes en el directorio de volumen:	*/
/*		tamano, fecha de actualizacion y atributos de acceso	*/