示例#1
0
int
main(int argc, char *argv[])
{
  /* opcion seleccionada por el usuario en el menu principal */
  unsigned int opt_menu_principal;
  /* cantidad de automoviles en el parqueadero */
  unsigned int cantidad_automoviles;
  /* cantidad de motocicletas en el parqueadero */
  unsigned int cantidad_moticicletas;  
  /* espacio para los puestos del automovil */
  Espacio_t parqueadero[LEN_AUTOMOVILES + LEN_MOTOCICLETAS];
  /* se inicializan los contadores en 0 */
  cantidad_automoviles = 0;
  cantidad_moticicletas = 0;
  /* cargando datos del archivo */
  cargar_datos(parqueadero, &cantidad_automoviles, &cantidad_moticicletas);
  
  /* ciclo del programa */
  do{
    opt_menu_principal = menu_parqueadero();
    switch(opt_menu_principal)
    {
    case 1:
		registrar_vehiculo(parqueadero, &cantidad_automoviles, &cantidad_moticicletas);
      break;
    case 2:
		salida_vehiculo(parqueadero, &cantidad_automoviles, &cantidad_moticicletas);
      break;
    case 3:
		calcular_pago(parqueadero, cantidad_automoviles + cantidad_moticicletas);
      break;
    case 4:
		mostrar_reporte_dia(parqueadero, cantidad_automoviles + cantidad_moticicletas);
      break;
    case 5:
		mostrar_estado_espacio(parqueadero, cantidad_automoviles, cantidad_moticicletas);
      break;
    case 6:
      printf("\n\n ****** Gracias por uilizar el programa.***** \n");
      return 0;
      break;
    default:
      printf("Opcion no valida\n");
    }
  }while(1);
  return 0;
}
/*
 Read data from an open file

 Read should return exactly the number of bytes requested except on EOF or error, otherwise the rest of the data will be substituted
 with zeroes. An exception to this is when the 'direct_io' mount option is specified, in which case the return value of the read system
 call will reflect the return value of this operation.
 */
int fs_read(const char *path, char *buf, size_t size, off_t offset,
		struct fuse_file_info *fi) {
	char* temp = string_from_format(path, "%s"); // no uso string_duplicate para evitar el warning de tipos.
	//logear_path("fs_read", path);
	//logger_info(logger, "fs_read: '%s' %zu bytes desde byte %i.", path, size,offset);

	uint indice = 0;
	int retorno = buscar_bloque_nodo(temp, &indice);

	free(temp);

	if (retorno) { // no existe.
		/*logger_info(logger, "fs_read: no encontre '%s' indice: '%i'.", temp,
		 indice);*/
		return -ENOENT;
	}
	return cargar_datos(&nodos[indice], buf, size, offset);
}