Răsfoiți Sursa

fix(readdir): the third argument is unsupported

greatbridf 7 luni în urmă
părinte
comite
d12f42764e
4 a modificat fișierele cu 5 adăugiri și 5 ștergeri
  1. 2 1
      include/kernel/vfs/vfs.hpp
  2. 1 1
      src/fs/fat.cpp
  3. 1 1
      src/fs/procfs.cc
  4. 1 2
      src/fs/tmpfs.cc

+ 2 - 1
include/kernel/vfs/vfs.hpp

@@ -1,5 +1,6 @@
 #pragma once
 
+#include <defs.hpp>
 #include <functional>
 #include <map>
 
@@ -14,7 +15,7 @@ namespace fs {
 
 class vfs {
    public:
-    using filldir_func = std::function<ssize_t(const char*, inode*, uint8_t)>;
+    using filldir_func = std::function<ssize_t(const char*, inode*, u8)>;
 
    private:
     struct dcache m_dcache;

+ 1 - 1
src/fs/fat.cpp

@@ -138,7 +138,7 @@ ssize_t fat32::readdir(inode* dir, size_t offset,
                 else
                     fname += toupper(d->extension[i]);
             }
-            auto ret = filldir(fname.c_str(), ind, ind->mode & S_IFMT);
+            auto ret = filldir(fname.c_str(), ind, 0);
 
             if (ret != 0) {
                 release_cluster(next);

+ 1 - 1
src/fs/procfs.cc

@@ -177,7 +177,7 @@ class procfs : public virtual fs::vfs {
         int nread = 0;
         for (const auto& [ino, pf] : files) {
             auto* ind = get_inode(ino);
-            int ret = callback(pf.name.c_str(), ind, ind->mode);
+            int ret = callback(pf.name.c_str(), ind);
             if (ret != 0)
                 return -EIO;
             ++nread;

+ 1 - 2
src/fs/tmpfs.cc

@@ -56,8 +56,7 @@ class tmpfs : public virtual vfs {
             const auto& entry = entries[off];
             auto* ind = get_inode(entry.ino);
 
-            // inode mode filetype is compatible with user dentry filetype
-            auto ret = filldir(entry.filename.c_str(), ind, ind->mode & S_IFMT);
+            auto ret = filldir(entry.filename.c_str(), ind, 0);
             if (ret != 0)
                 break;
         }