#ifndef __SFBASICO_H
#define __SFBASICO_H

/************************************************************************/
/*									*/
/*	SFBASICO.H							*/
/*	==========							*/
/*									*/
/*	Interfaz con un sistema de ficheros muy simple,			*/
/*	para realizar prácticas de diseño de sistemas operativos.	*/
/*									*/
/*	Características:						*/
/*									*/
/*		- Sólo un directorio raíz				*/
/*		- Ficheros de tamaño fijo				*/
/*		- Transferencias por bloques (no por bytes)		*/
/*		- Si se borra un fichero, los bloques ocupados		*/
/*		  no quedan disponibles					*/
/*									*/
/*	Versión 2.0a							*/
/*	                                                                */
/*	© José Miguel Santos, Carmelo Rubén García, Gabino Padrón,	*/
/*      1996-97								*/
/*									*/
/************************************************************************/



/* Tipos básicos de las prácticas */

#include "tipos.h"



/****************************/
/* Servicios de este módulo */
/****************************/



/* Formateo y montaje de discos */

int FormateaSFB ( const char* nombre_fichero, const char* args[] );

int MontaSFB ( const char* nombre_fichero, int nbloques_cache );
int DesmontaSFB (void);



/* Información del sistema */

WORD	TamBloqueDatos(void);
DWORD	EspacioLibre (void);
WORD	FicherosLibres (void);


/* Creación y destrucción de ficheros */

IFB CreaFB ( const char* nombre, WORD num_bloques );
int DestruyeFB ( IFB fichero );


/* Tamaño del fichero */

WORD LongitudFB ( IFB fichero );
int CambiaLongitudFB ( IFB fichero, WORD num_bloques );


/* Lectura y escritura de bloques */

int LeeBloqueFB ( IFB fichero, WORD num_bloque, void* bufer );
int EscribeBloqueFB ( IFB fichero, WORD num_bloque, const void* bufer );


/* Gestión de nombres y directorios */

IFB BuscaFB ( const char* nombre );
IFB EntradaDir ( int numero_de_orden, char* nombre );