[haiku-commits] r35654 - haiku/trunk/src/add-ons/kernel/file_systems/udf

  • From: mmlr@xxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Sun, 28 Feb 2010 09:50:01 +0100 (CET)

Author: mmlr
Date: 2010-02-28 09:50:01 +0100 (Sun, 28 Feb 2010)
New Revision: 35654
Changeset: http://dev.haiku-os.org/changeset/35654/haiku

Modified:
   haiku/trunk/src/add-ons/kernel/file_systems/udf/Icb.cpp
   haiku/trunk/src/add-ons/kernel/file_systems/udf/kernel_interface.cpp
Log:
* Finish the partition scanning part so that UDF is recognized and mountable.
* Added myself to the copyrights.


Modified: haiku/trunk/src/add-ons/kernel/file_systems/udf/Icb.cpp
===================================================================
--- haiku/trunk/src/add-ons/kernel/file_systems/udf/Icb.cpp     2010-02-28 
08:03:41 UTC (rev 35653)
+++ haiku/trunk/src/add-ons/kernel/file_systems/udf/Icb.cpp     2010-02-28 
08:50:01 UTC (rev 35654)
@@ -1,9 +1,9 @@
-//----------------------------------------------------------------------
-//  This software is part of the Haiku distribution and is covered
-//  by the MIT license.
-//
-//  Copyright (c) 2003 Tyler Dauwalder, tyler@xxxxxxxxxxxxx
-//---------------------------------------------------------------------
+/*
+ * Copyright 2003, Tyler Dauwalder, tyler@xxxxxxxxxxxxxx
+ * Copyright 2010, Michael Lotz, mmlr@xxxxxxxxx
+ * Distributed under the terms of the MIT License.
+ */
+
 #include "Icb.h"
 
 #include "time.h"

Modified: haiku/trunk/src/add-ons/kernel/file_systems/udf/kernel_interface.cpp
===================================================================
--- haiku/trunk/src/add-ons/kernel/file_systems/udf/kernel_interface.cpp        
2010-02-28 08:03:41 UTC (rev 35653)
+++ haiku/trunk/src/add-ons/kernel/file_systems/udf/kernel_interface.cpp        
2010-02-28 08:50:01 UTC (rev 35654)
@@ -1,6 +1,7 @@
 /*
+ * Copyright 2003, Tyler Dauwalder, tyler@xxxxxxxxxxxxxx
  * Copyright 2008, Salvatore Benedetto, salvatore.benedetto@xxxxxxxxxx
- * Copyright 2003, Tyler Dauwalder, tyler@xxxxxxxxxxxxxx
+ * Copyright 2010, Michael Lotz, mmlr@xxxxxxxxx
  * Distributed under the terms of the MIT License.
  */
 
@@ -39,6 +40,11 @@
 extern fs_vnode_ops gUDFVnodeOps;
 
 
+struct identify_cookie {
+       struct logical_volume_descriptor logical_volume_descriptor;
+};
+
+
 //     #pragma mark - io callbacks
 
 
@@ -82,6 +88,12 @@
        if (error != B_OK)
                return -1;
 
+       identify_cookie *cookie = new(std::nothrow) identify_cookie;
+       if (cookie == NULL)
+               return -1;
+
+       cookie->logical_volume_descriptor = logicalVolumeDescriptor;
+       *_cookie = cookie;
        return 0.8f;
 }
 
@@ -90,15 +102,32 @@
 udf_scan_partition(int fd, partition_data *partition, void *_cookie)
 {
        TRACE(("udf_scan_partition: fd = %d\n", fd));
+       identify_cookie *cookie = (identify_cookie *)_cookie;
+       logical_volume_descriptor &volumeDescriptor
+               = cookie->logical_volume_descriptor;
 
-#if 0
-       UdfString name(logicalVolumeDescriptor.logical_volume_identifier());
+       partition->status = B_PARTITION_VALID;
+       partition->flags |= B_PARTITION_FILE_SYSTEM;
+       partition->content_size = partition->size;
+               // TODO: not actually correct
+       partition->block_size = volumeDescriptor.logical_block_size();
+
+       UdfString name(volumeDescriptor.logical_volume_identifier());
        partition->content_name = strdup(name.Utf8());
-#endif
-       return B_ERROR;
+       if (partition->content_name == NULL)
+               return B_NO_MEMORY;
+
+       return B_OK;
 }
 
 
+static void
+udf_free_identify_partition_cookie(partition_data *partition, void *cookie)
+{
+       delete (identify_cookie *)cookie;
+}
+
+
 static status_t
 udf_unmount(fs_volume *_volume)
 {
@@ -696,7 +725,7 @@
 
        &udf_identify_partition,
        &udf_scan_partition,
-       NULL, // &udf_free_identify_patition_cookie,
+       &udf_free_identify_partition_cookie,
        NULL,   // free_partition_content_cookie()
 
        &udf_mount,


Other related posts:

  • » [haiku-commits] r35654 - haiku/trunk/src/add-ons/kernel/file_systems/udf - mmlr