]> git.llucax.com Git - z.facultad/75.06/emufs.git/blobdiff - emufs/tipo1.c
* Reestructuro para que quede mas claro
[z.facultad/75.06/emufs.git] / emufs / tipo1.c
index 18d3cb95b0888be3b321de6f8a3cc63fe4638175..0db0f3a3c85ccbd695d65dcc931d646072c22744 100644 (file)
 #include "idx.h"
 #include "fsc.h"
 #include "did.h"
 #include "idx.h"
 #include "fsc.h"
 #include "did.h"
+#include <unistd.h>
+#include <sys/types.h>
 #include <stdio.h>
 #include <math.h>
 #include <stdlib.h>
 #include <string.h>
 #include <stdio.h>
 #include <math.h>
 #include <stdlib.h>
 #include <string.h>
-#include <unistd.h>
 
 #ifndef MIN
 #      define MIN(x, y) (((x) > (y)) ? (y) : (x))
 
 #ifndef MIN
 #      define MIN(x, y) (((x) > (y)) ? (y) : (x))
@@ -63,9 +64,6 @@ static int emufs_tipo1_header_jump(FILE*);
 
 static int emufs_tipo1_block_jump(EMUFS*, FILE*, EMUFS_BLOCK_ID);
 
 
 static int emufs_tipo1_block_jump(EMUFS*, FILE*, EMUFS_BLOCK_ID);
 
-static void emufs_tipo1_escribir_reg_en_memoria(char*, EMUFS_TIPO1_REG_HEADER,
-               char*);
-
 static void emufs_tipo1_escribir_reg_chunk_en_memoria(char* dst,
                EMUFS_TIPO1_REG_HEADER header, char* reg, EMUFS_REG_SIZE reg_size);
 
 static void emufs_tipo1_escribir_reg_chunk_en_memoria(char* dst,
                EMUFS_TIPO1_REG_HEADER header, char* reg, EMUFS_REG_SIZE reg_size);
 
@@ -92,6 +90,7 @@ int emufs_tipo1_inicializar(EMUFS* efs)
        }
        /* Asigna punteros a funciones. */
        efs->leer_bloque       = emufs_tipo1_leer_bloque;
        }
        /* Asigna punteros a funciones. */
        efs->leer_bloque       = emufs_tipo1_leer_bloque;
+       efs->leer_bloque_raw   = emufs_tipo1_leer_bloque_raw;
        efs->grabar_registro   = emufs_tipo1_grabar_registro;
        efs->borrar_registro   = emufs_tipo1_borrar_registro;
        efs->leer_registro     = emufs_tipo1_leer_registro;
        efs->grabar_registro   = emufs_tipo1_grabar_registro;
        efs->borrar_registro   = emufs_tipo1_borrar_registro;
        efs->leer_registro     = emufs_tipo1_leer_registro;
@@ -657,7 +656,7 @@ EMUFS_BLOCK_ID emufs_tipo1_grabar_bloque_fsc(EMUFS *efs, void *block,
                }
                /* si me lo solicitan, actualizo el .fsc */
                if (fs != EMUFS_NOT_FOUND) {
                }
                /* si me lo solicitan, actualizo el .fsc */
                if (fs != EMUFS_NOT_FOUND) {
-                       if ((err = emufs_fsc_actualizar(efs, block_id, fs))) {
+                       if ((*err = emufs_fsc_actualizar(efs, block_id, fs))) {
                                /* TODO Manejo de errores */
                                PERR("no se pudo actualizar .fsc");
                                fclose(file);
                                /* TODO Manejo de errores */
                                PERR("no se pudo actualizar .fsc");
                                fclose(file);
@@ -707,12 +706,6 @@ int emufs_tipo1_block_jump(EMUFS* efs, FILE* fp, EMUFS_BLOCK_ID block_count)
        return 0; /* EMUFS_OK */
 }
 
        return 0; /* EMUFS_OK */
 }
 
-void emufs_tipo1_escribir_reg_en_memoria(char* dst, EMUFS_TIPO1_REG_HEADER header,
-               char* reg)
-{
-       emufs_tipo1_escribir_reg_chunk_en_memoria(dst, header, reg, header.size);
-}
-
 void emufs_tipo1_escribir_reg_chunk_en_memoria(char* dst,
                EMUFS_TIPO1_REG_HEADER header, char* reg, EMUFS_REG_SIZE reg_size)
 {
 void emufs_tipo1_escribir_reg_chunk_en_memoria(char* dst,
                EMUFS_TIPO1_REG_HEADER header, char* reg, EMUFS_REG_SIZE reg_size)
 {
@@ -743,3 +736,12 @@ long emufs_tipo1_get_file_size(EMUFS* efs, int* err)
        return file_size;
 }
 
        return file_size;
 }
 
+void emufs_tipo1_leer_bloque_raw(EMUFS *efs, EMUFS_BLOCK_ID id, char **actual, char **anterior, char **siguiente, EMUFS_BLOCK_SIZE *size1, EMUFS_BLOCK_SIZE *size2, EMUFS_BLOCK_SIZE *size3)
+{
+       int err;
+       (*actual) = emufs_tipo1_leer_bloque(efs, id, &err);
+       (*anterior) = emufs_tipo1_leer_bloque(efs, id-1, &err);
+       (*siguiente) = emufs_tipo1_leer_bloque(efs, id+1, &err);
+       (*size1) = (*size2) = (*size3) = efs->tam_bloque;
+}
+