FILE* file;
long file_size;
- //printf("%s!!!\n", filename);
if (!(file = fopen(filename, "ab"))) return -1;
- //printf("Abrio!\n");
file_size = ftell(file);
fclose(file);
return file_size;
free(shuff);
/* Muestro bpb */
- //printf("%s: %ld bytes.\n", src, fsize(src));
- //printf("%s: %ld bytes.\n", dst, vfsize(dst));
- printf("%s: %.04f bits/byte.\n", dst, 1.0/fsize(src)*vfsize(dst)*8.0f);
+ printf("%s: %.04f bits/byte.\n", dst, vfsize(dst)*8.0f/fsize(src));
return 0;
}
int vfvol_close(VFILE* vfp)
{
- /* Si es de escritura y el último guardo la cabecera. */
- if (vfp->mode == VFWRITE && vfp->lastvol)
+ int ret = 0;
+ if (vfp->fp)
{
- int ret;
- PERR("vfvol_close: modo == VFWRITE");
- /* Me posiciono al principio del archivo. */
- if ((ret = fseek(vfp->fp, 0l, SEEK_SET)))
+ /* Si es de escritura y el último guardo la cabecera. */
+ if (vfp->mode == VFWRITE && vfp->lastvol)
{
- PERR("vfvol_close: fseek error");
- return ret; /* fseek error. */
- }
- /* Guardo cabecera para indicar si es el último volumen o no. */
- if ((ret = fputc(vfp->lastvol, vfp->fp)) == EOF)
- {
- PERR("vfvol_close: fputc error");
- return ret; /* fputc error. */
+ int ret;
+ PERR("vfvol_close: modo == VFWRITE");
+ /* Me posiciono al principio del archivo. */
+ if ((ret = fseek(vfp->fp, 0l, SEEK_SET)))
+ {
+ PERR("vfvol_close: fseek error");
+ return ret; /* fseek error. */
+ }
+ /* Guardo cabecera para indicar si es el último volumen o no. */
+ if ((ret = fputc(vfp->lastvol, vfp->fp)) == EOF)
+ {
+ PERR("vfvol_close: fputc error");
+ return ret; /* fputc error. */
+ }
}
+ ret = fclose(vfp->fp);
+ vfp->fp = 0;
}
- return fclose(vfp->fp);
+ return ret;
}
int vfvol_open_next(VFILE* vfp)
/** Estado del agrupador de ceros. */
typedef struct
{
- unsigned char count; /**< Cantidad de ceros acumulados. */
- int in_zero; /**< Indica si está en una serie de ceros. */
+ unsigned char count; /**< Cantidad de ceros acumulados. */
+ int in_zero; /**< Indica si está en una serie de ceros. */
}
ZG;