/************************************************************************/
/*									*/
/*	ERRORES.C							*/
/*	=========							*/
/*									*/
/*	Implementación de un sistema de ficheros muy simple,		*/
/*	para realizar prácticas de diseño de sistemas operativos.	*/
/*								 	*/
/*	Este módulo implementa una subrutina para imprimir mensajes  	*/
/*	de error.							*/
/*						      			*/
/************************************************************************/ 


#include "errores.h"
#include <stdio.h>

/* Tabla de mensajes de error */

static
const char* tabla_mensajes_error[] =
{
  "***", /* ERR_INICIO_ERRORES */
  "espacio insuficiente", /* ERR_ESPACIO */	
  "parámetro no válido", /* ERR_PARAMETRO */	
  "error al operar con el disco físico", /* ERR_DISCO */	
  "formato incorrecto del sistema de ficheros", /* ERR_FORMATO */	
  "el sistema de ficheros está corrupto", /* ERR_CORRUPTO */	
  "el fichero no existe", /* ERR_NOEXISTE */	
  "el fichero ya existe", /* ERR_EXISTE */	
  "ya hay un sistema montado", /* ERR_MONTADO */	
  "el sistema no está montado", /* ERR_INACTIVO */	
  "el parametro esta fuera de rango", /* ERR_RANGO */	
  "el recurso estaba libre", /* ERR_LIBRE */
  "el recurso estaba ocupado", /* ERR_OCUPADO */	
  "no se tienen permisos para realizar la operacion", /* ERR_PERMISOS */      
  "el servicio no está implementado", /* ERR_IMPLEME */	
};

/* variable pública */
enum Errores Error_SF;


/* subrutina que explica el error actual */


void MensajeError (const char* prologo)
{
  const char* mensaje;
  if (Error_SF==ERROR_SINERROR) mensaje="no hay error";
  if (Error_SF>ERR_INICIO_ERRORES && Error_SF<ERR_BESTIA)
    mensaje=tabla_mensajes_error[(int)Error_SF-ERR_INICIO_ERRORES];
  else mensaje="error desconocido";
  fprintf(stderr,"%s: %s (Error_SF=%d)\n",prologo,mensaje,Error_SF);
}