X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=device-src%2Fvfs-device.c;h=122a6efb8e479cdf21713b93c31a13af2d9e5d7c;hb=3a9beabdb44ee1b2dcce141c2571fbb2b3fa90b1;hp=4906c29a02db60c2da0796170f78309ff89b4f8a;hpb=cd0b924f27312d57bd42f6c4fae2b795139e2d0b;p=debian%2Famanda diff --git a/device-src/vfs-device.c b/device-src/vfs-device.c index 4906c29..122a6ef 100644 --- a/device-src/vfs-device.c +++ b/device-src/vfs-device.c @@ -585,11 +585,9 @@ vfs_device_open_device (Device * pself, char * device_name, char * device_type, static gboolean delete_vfs_files_functor(const char * filename, gpointer user_data) { VfsDevice * self; - Device * d_self; char * path_name; self = VFS_DEVICE(user_data); - d_self = DEVICE(self); /* Skip the volume lock. */ if (strcmp(filename, VOLUME_LOCKFILE_NAME) == 0) @@ -691,6 +689,7 @@ static gboolean clear_and_prepare_label(VfsDevice * self, char * label, return FALSE; } dumpfile_free(d_self->volume_header); + d_self->header_block_size = VFS_DEVICE_LABEL_SIZE; d_self->volume_header = label_header; self->volume_bytes = VFS_DEVICE_LABEL_SIZE; return TRUE; @@ -1230,6 +1229,9 @@ vfs_device_seek_file (Device * dself, guint requested_file) { } /* update our state */ + if (requested_file == 0) { + dself->header_block_size = header_buffer_size; + } dself->in_file = TRUE; dself->file = file; @@ -1404,6 +1406,11 @@ vfs_device_erase (Device * dself) { release_file(self); + dumpfile_free(dself->volume_header); + dself->volume_header = NULL; + device_set_error(dself, g_strdup("Unlabeled volume"), + DEVICE_STATUS_VOLUME_UNLABELED); + return TRUE; }