Imported Upstream version 3.3.1
[debian/amanda] / device-src / vfs-device.c
index 4906c29a02db60c2da0796170f78309ff89b4f8a..122a6efb8e479cdf21713b93c31a13af2d9e5d7c 100644 (file)
@@ -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;
 }