]> git.llucax.com Git - z.facultad/75.06/jacu.git/commitdiff
Parece andar todo bien.
authorLeandro Lucarella <llucax@gmail.com>
Thu, 17 Jun 2004 23:47:31 +0000 (23:47 +0000)
committerLeandro Lucarella <llucax@gmail.com>
Thu, 17 Jun 2004 23:47:31 +0000 (23:47 +0000)
src/vfile/Makefile
src/vfile/common.c
src/vfile/common.h
src/vfile/vfile.c
src/vfile/vfile.h
src/vfile/vol.c

index d080686299d2ee339a06910207d2a9f5afeeb4e0..e56db460e5c00525b67cc8fc88d820f087c81f21 100644 (file)
@@ -1,4 +1,3 @@
-#
 #----------------------------------------------------------------------------
 #                                  jacu
 #----------------------------------------------------------------------------
 #----------------------------------------------------------------------------
 #                                  jacu
 #----------------------------------------------------------------------------
 
 TARGETS=vol unvol
 COMMON=common.o vfile.o
 
 TARGETS=vol unvol
 COMMON=common.o vfile.o
+SRCS = common.c vfile.c vol.c unvol.c
 
 
-CFLAGS=-ggdb -Wall -DDEBUG
+CFLAGS=-O3 -Wall -DNDEBUG
+#CFLAGS=-ggdb -Wall -DDEBUG
 
 all: $(TARGETS)
 
 
 all: $(TARGETS)
 
@@ -36,9 +37,40 @@ vol: $(COMMON) vol.o
 
 unvol: $(COMMON) unvol.o
 
 
 unvol: $(COMMON) unvol.o
 
-clean:
+depend:
+       makedepend -- $(CFLAGS) -- $(SRCS)
 
 
+clean:
        @$(RM) -f *.o $(TARGETS)
 
        @$(RM) -f *.o $(TARGETS)
 
-.PHONY: all clean
+.PHONY: all clean depend
+
+# DO NOT DELETE
 
 
+common.o: common.h /usr/include/malloc.h /usr/include/string.h
+common.o: /usr/include/features.h /usr/include/sys/cdefs.h
+common.o: /usr/include/gnu/stubs.h
+vfile.o: common.h vfile.h /usr/include/stdio.h /usr/include/features.h
+vfile.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
+vfile.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h
+vfile.o: /usr/include/bits/typesizes.h /usr/include/libio.h
+vfile.o: /usr/include/_G_config.h /usr/include/wchar.h
+vfile.o: /usr/include/bits/wchar.h /usr/include/gconv.h
+vfile.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
+vfile.o: /usr/include/malloc.h /usr/include/string.h
+vol.o: vfile.h /usr/include/stdio.h /usr/include/features.h
+vol.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
+vol.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h
+vol.o: /usr/include/bits/typesizes.h /usr/include/libio.h
+vol.o: /usr/include/_G_config.h /usr/include/wchar.h
+vol.o: /usr/include/bits/wchar.h /usr/include/gconv.h
+vol.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
+vol.o: /usr/include/malloc.h /usr/include/string.h /usr/include/stdlib.h
+unvol.o: vfile.h /usr/include/stdio.h /usr/include/features.h
+unvol.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
+unvol.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h
+unvol.o: /usr/include/bits/typesizes.h /usr/include/libio.h
+unvol.o: /usr/include/_G_config.h /usr/include/wchar.h
+unvol.o: /usr/include/bits/wchar.h /usr/include/gconv.h
+unvol.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
+unvol.o: /usr/include/malloc.h /usr/include/string.h
index ed2933d62010efc6fb24937a67e350cda21d51ef..6695fe9a7bd5d6535b3d3af35ed01e589ef7e825 100644 (file)
@@ -36,7 +36,7 @@
 #include <malloc.h>
 #include <string.h>
 
 #include <malloc.h>
 #include <string.h>
 
-char* strdup(const char* s)
+char* str_dup(const char* s)
 {
        char* copy;
        if (!s) return 0;
 {
        char* copy;
        if (!s) return 0;
index a2c53d5677bf45fb2a132b3e4ef3500f6cf6e35e..2431b1c13acd40647aec29c8bde184c1904f6c89 100644 (file)
 #define _JACU_COMMON_H_
 
 #ifdef DEBUG
 #define _JACU_COMMON_H_
 
 #ifdef DEBUG
-       /** Imprime un mensaje de debug por pantalla. */
-       #define PERR(msg) fprintf(stderr, "%s:%d> %s.\n",__FILE__, __LINE__, msg);
+/** Imprime un mensaje de debug por pantalla. */
+#      define PERR(msg) fprintf(stderr, "%s:%d> %s.\n",__FILE__, __LINE__, msg);
 #else
 #else
-       #define PERR(msg) ;
+#      define PERR(msg) ;
 #endif /* DEBUG */
 
 /** Duplica un string. */
 #endif /* DEBUG */
 
 /** Duplica un string. */
-char* strdup(const char* s);
+char* str_dup(const char* s);
 
 #endif /* _JACU_COMMON_H_ */
 
 
 #endif /* _JACU_COMMON_H_ */
 
index c8bde5d834047e32fcfbc4b4122b93890c898ace..1ca56074a211cbf8bac00dd2d665c8868c36585a 100644 (file)
@@ -69,9 +69,9 @@ VFILE* vfopen(const char* path, const char* mode, long volsize)
                free(vfp);
                return 0;
        }
                free(vfp);
                return 0;
        }
-       if (!(vfp->name = strdup(path))) /* no hay más memoria */
+       if (!(vfp->name = str_dup(path))) /* no hay más memoria */
        {
        {
-               PERR("vfopen: no se pudo hacer strdup!");
+               PERR("vfopen: no se pudo hacer str_dup!");
                free(vfp);
                return 0;
        }
                free(vfp);
                return 0;
        }
@@ -84,10 +84,7 @@ VFILE* vfopen(const char* path, const char* mode, long volsize)
                free(vfp);
                return 0;
        }
                free(vfp);
                return 0;
        }
-       /* todo ok. */
-       vfp->room    = vfp->volsize;
-       vfp->lastvol = 0;
-       return vfp;
+       return vfp; /* todo ok. */
 }
 
 int vfclose(VFILE* vfp)
 }
 
 int vfclose(VFILE* vfp)
@@ -119,10 +116,11 @@ int vfputc(int c, VFILE* vfp)
 {
        /* Si no es multivolumen o hay lugar, agrego y salgo. */
        if (!vfp->volsize || vfp->room--) return fputc(c, vfp->fp);
 {
        /* Si no es multivolumen o hay lugar, agrego y salgo. */
        if (!vfp->volsize || vfp->room--) return fputc(c, vfp->fp);
+       PERR("vfputc: Necesito otro volumen!\n");
        /* Si no hay lugar, abro otro volumen. */
        if (vfvol_close(vfp)) return EOF; /* error al cerrar. */
        if (vfvol_open_next(vfp)) return EOF; /* error al abrir. */
        /* Si no hay lugar, abro otro volumen. */
        if (vfvol_close(vfp)) return EOF; /* error al cerrar. */
        if (vfvol_open_next(vfp)) return EOF; /* error al abrir. */
-       vfp->room = vfp->volsize;
+       vfp->room--; /* resto de nuevo el espacio porque al abrirlo lo resetea. */
        return fputc(c, vfp->fp);
 }
 
        return fputc(c, vfp->fp);
 }
 
@@ -178,7 +176,11 @@ int vfvol_open_next(VFILE* vfp)
        /* Si es para lectura, me fijo si es el últio a leer. */
        if (vfp->mode == VFREAD) vfp->lastvol = fgetc(vfp->fp);
        /* Si es para escritura, guardo header dummy (supongo que es el último). */
        /* Si es para lectura, me fijo si es el últio a leer. */
        if (vfp->mode == VFREAD) vfp->lastvol = fgetc(vfp->fp);
        /* Si es para escritura, guardo header dummy (supongo que es el último). */
-       if (vfp->mode == VFWRITE) return !fputc(1, vfp->fp);
+       if (vfp->mode == VFWRITE)
+       {
+               vfp->room = vfp->volsize;
+               return !fputc(1, vfp->fp);
+       }
        return 0;
 }
 
        return 0;
 }
 
index 17f1c4b8b569815bfec11008d2c3f79af590258c..e09ec234620e8ba9140e0019f19313370886c969 100644 (file)
@@ -26,6 +26,9 @@
  *
  */
 
  *
  */
 
+#ifndef _JACU_VFILE_H_
+#define _JACU_VFILE_H_
+
 #include <stdio.h>
 
 /** \file
 #include <stdio.h>
 
 /** \file
@@ -39,7 +42,7 @@
  */
 
 /** Mínimo tamaño de un volumen. */
  */
 
 /** Mínimo tamaño de un volumen. */
-#define VFMINVOLSIZE 512
+#define VFMINVOLSIZE 4
 
 /** Esquema del nombre a utilizar en los volumenes. */
 #define VFNAMETEMPLATE "%s-%d"
 
 /** Esquema del nombre a utilizar en los volumenes. */
 #define VFNAMETEMPLATE "%s-%d"
@@ -97,3 +100,5 @@ size_t vfread(void* ptr, size_t size, size_t nmemb, VFILE* vfp);
 /** Escribe un conjunto de bytes en un archivo virtual multivolumen. */
 size_t vfwrite(const void *ptr, size_t size, size_t nmemb, VFILE* vfp);
 
 /** Escribe un conjunto de bytes en un archivo virtual multivolumen. */
 size_t vfwrite(const void *ptr, size_t size, size_t nmemb, VFILE* vfp);
 
+#endif /* _JACU_VFILE_H_ */
+
index f86ba2b8e0cf6efb76dd29809afcb607c3bdf0fb..b66b272375ee977f57fcd2a510b5a9d43ccccc4a 100644 (file)
@@ -44,13 +44,13 @@ int main(int argc, char* argv[])
        VFILE* vf;
        if (argc < 3)
        {
        VFILE* vf;
        if (argc < 3)
        {
-               fprintf(stderr, "Faltan argumentos! Uso: %s <destino> <tamaño en KB)\n",
+               fprintf(stderr, "Faltan argumentos! Uso: %s <destino> <tamaño bytes>)\n",
                                argv[0]);
                fprintf(stderr, "La entrada de datos a guardar en volumenes se "
                                "obtiene de la entrada estándar.\n");
                return 1;
        }
                                argv[0]);
                fprintf(stderr, "La entrada de datos a guardar en volumenes se "
                                "obtiene de la entrada estándar.\n");
                return 1;
        }
-       if (!(vf = vfopen(argv[1], "w", atoi(argv[2]) * (1 << 10) /* en KB */)))
+       if (!(vf = vfopen(argv[1], "w", atoi(argv[2]) /* * (1 << 10) en KB */)))
        {
                fprintf(stderr, "No se pudo abrir el archivo virtual '%s'!\n", argv[1]);
                return 2;
        {
                fprintf(stderr, "No se pudo abrir el archivo virtual '%s'!\n", argv[1]);
                return 2;