Ejemplo n.º 1
0
int fsimage_open(disk_image_t *image)
{
    fsimage_t *fsimage;

    fsimage = image->media.fsimage;
    fsimage->error_info.map = NULL;

    if (image->read_only) {
        fsimage->fd = zfile_fopen(fsimage->name, MODE_READ);
    } else {
        fsimage->fd = zfile_fopen(fsimage->name, MODE_READ_WRITE);

        /* If we cannot open the image read/write, try to open it read only. */
        if (fsimage->fd == NULL) {
            fsimage->fd = zfile_fopen(fsimage->name, MODE_READ);
            image->read_only = 1;
        }
    }

    if (fsimage->fd == NULL) {
        log_error(fsimage_log, "Cannot open file `%s'.", fsimage->name);
        return -1;
    }

    if (fsimage_probe(image) == 0) {
        return 0;
    }

    log_message(fsimage_log, "Unknown disk image `%s'.", fsimage->name);
    fsimage_close(image);
    return -1;
}
Ejemplo n.º 2
0
int disk_image_close(disk_image_t *image)
{
    int rc = 0;

	if (image == NULL)
		return 0;

    switch (image->device) {
      case DISK_IMAGE_DEVICE_FS:
        rc = fsimage_close(image);
        break;
#ifdef HAVE_OPENCBM
      case DISK_IMAGE_DEVICE_REAL:
        rc = realimage_close(image);
        break;
#endif
#ifdef HAVE_RAWDRIVE
      case DISK_IMAGE_DEVICE_RAW:
        rc = rawimage_close(image);
        break;
#endif
      default:
        log_error(disk_image_log, "Unknow image device %i.", image->device);
        rc = -1;
    }

    return rc;
}
Ejemplo n.º 3
0
void fsimage_media_destroy(disk_image_t *image)
{
    fsimage_t *fsimage;

    fsimage = image->media.fsimage;

    if (fsimage->fd) {
        fsimage_close(image);
    }
    lib_free(fsimage->name);
    lib_free(fsimage);
}