- int ret;
- PERR("vfvol_close: modo == VFWRITE");
- /* Me posiciono al principio del archivo. */
- if ((ret = fseek(vfp->fp, 0l, SEEK_SET))) return ret; /* fseek error. */
- /* Guardo cabecera para indicar si es el último volumen o no. */
- if ((ret = fputc(vfp->lastvol, vfp->fp))) return ret; /* fputc error. */
+ /* Si es de escritura y el último guardo la cabecera. */
+ if (vfp->mode == VFWRITE && vfp->lastvol)
+ {
+ 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;