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

  • From: mmlr@xxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Sun, 28 Feb 2010 00:19:13 +0100 (CET)

Author: mmlr
Date: 2010-02-28 00:19:13 +0100 (Sun, 28 Feb 2010)
New Revision: 35647
Changeset: http://dev.haiku-os.org/changeset/35647/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:
* UDF didn't actually initializing _flags to 0 (same as with fat).
* Set the _type as well, this gets file listings work.
* Some cleanup and debug output moves/fixes/additions.

Yet crashes when accessing files though.


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-27 
21:54:56 UTC (rev 35646)
+++ haiku/trunk/src/add-ons/kernel/file_systems/udf/Icb.cpp     2010-02-27 
23:19:13 UTC (rev 35647)
@@ -19,7 +19,7 @@
        if (!id || !name || !length)
                return B_BAD_VALUE;
 
-       TRACE(("DirectoryIterator::GetNextEntry: name = %s, length = %ld, "
+       TRACE(("DirectoryIterator::GetNextEntry: name = %p, length = %ld, "
                "id = %p, position = %Ld, parent length = %Ld\n", name, 
*length, id,
                fPosition, Parent()->Length()));
 
@@ -31,8 +31,10 @@
                *id = Parent()->Id();
                fAtBeginning = false;
        } else {
-               if (uint64(fPosition) >= Parent()->Length()) 
+               if (uint64(fPosition) >= Parent()->Length()) {
+                       TRACE(("DirectoryIterator::GetNextEntry: end of 
dir\n"));
                        return B_ENTRY_NOT_FOUND;
+               }
 
                uint8 data[kMaxFileIdSize];
                file_id_descriptor *entry = (file_id_descriptor *)data;
@@ -82,7 +84,7 @@
 }
 
 
-//     #pragma - Private methods
+//     #pragma mark - Private methods
 
 
 DirectoryIterator::DirectoryIterator(Icb *parent)
@@ -93,6 +95,7 @@
 {
 }
 
+
 Icb::Icb(Volume *volume, long_address address)
        :
        fVolume(volume),
@@ -241,10 +244,13 @@
 
        bool foundIt = false;
        while (i->GetNextEntry(name, &length, &entryId) == B_OK) {
-       if (strcmp(filename, name) == 0) {
-               foundIt = true;
-               break;
-       }
+               if (strcmp(filename, name) == 0) {
+                       foundIt = true;
+                       break;
+               }
+
+               // reset overwritten length
+               length = B_FILE_NAME_LENGTH;
        }
 
        if (foundIt)

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-27 21:54:56 UTC (rev 35646)
+++ haiku/trunk/src/add-ons/kernel/file_systems/udf/kernel_interface.cpp        
2010-02-27 23:19:13 UTC (rev 35647)
@@ -131,7 +131,8 @@
                        if (_node)
                                _node->private_node = icb;
                                _node->ops = &gUDFVnodeOps;
-                               _flags = 0;
+                               *_type = icb->Mode();
+                               *_flags = 0;
                } else {
                        TRACE_ERROR(("udf_get_vnode: InitCheck failed\n"));
                        delete icb;
@@ -366,8 +367,8 @@
        uint32 nameLength = bufferSize - sizeof(struct dirent) + 1;
        ino_t id;
        status_t status = iterator->GetNextEntry(dirent->d_name, &nameLength, 
&id);
-       TRACE(("udf_read_dir: dirent->d_name = %s, length = %ld\n", 
dirent->d_name, nameLength));
        if (!status) {
+               TRACE(("udf_read_dir: dirent->d_name = %s, length = %ld\n", 
dirent->d_name, nameLength));
                *_num = 1;
                dirent->d_dev = volume->ID();
                dirent->d_ino = id;


Other related posts:

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