]> rtime.felk.cvut.cz Git - l4.git/blobdiff - l4/pkg/l4re-core/l4re_vfs/include/impl/ns_fs_impl.h
Update
[l4.git] / l4 / pkg / l4re-core / l4re_vfs / include / impl / ns_fs_impl.h
similarity index 94%
rename from l4/pkg/l4re_vfs/include/impl/ns_fs_impl.h
rename to l4/pkg/l4re-core/l4re_vfs/include/impl/ns_fs_impl.h
index 4ebe8741f60a3a8912c8137b468ff7dd14e855ab..8db337fa97c43156651a974aa98513009c536d3b 100644 (file)
@@ -68,7 +68,7 @@ Ns_dir::get_entry(const char *path, int flags, mode_t mode,
   (void)mode; (void)flags;
   if (!*path)
     {
-      *f = this;
+      *f = cxx::ref_ptr(this);
       return 0;
     }
 
@@ -79,21 +79,21 @@ Ns_dir::get_entry(const char *path, int flags, mode_t mode,
     return -ENOENT;
 
   // FIXME: should check if it is a dataspace, somehow
-  L4Re::Vfs::File *fi = 0;
+  cxx::Ref_ptr<L4Re::Vfs::File> fi;
 
   L4::Cap<L4Re::Namespace> nsc
     = L4::cap_dynamic_cast<L4Re::Namespace>(file.get());
 
   if (!nsc.is_valid())
-    fi = new Ro_file(file.get());
+    fi = cxx::ref_ptr(new Ro_file(file.get()));
   else // use mat protocol here!!
-    fi = new Ns_dir(nsc);
+    fi = cxx::ref_ptr(new Ns_dir(nsc));
 
   if (!fi)
     return -ENOMEM;
 
   file.release();
-  *f = fi;
+  *f = cxx::move(fi);
   return 0;
 }
 
@@ -254,7 +254,7 @@ Env_dir::get_entry(const char *path, int flags, mode_t mode,
   (void)mode; (void)flags;
   if (!*path)
     {
-      *f = this;
+      *f = cxx::ref_ptr(this);
       return 0;
     }
 
@@ -265,21 +265,21 @@ Env_dir::get_entry(const char *path, int flags, mode_t mode,
     return -ENOENT;
 
   // FIXME: should check if it is a dataspace, somehow
-  L4Re::Vfs::File *fi = 0;
+  cxx::Ref_ptr<L4Re::Vfs::File> fi;
 
   L4::Cap<L4Re::Namespace> nsc
     = L4::cap_dynamic_cast<L4Re::Namespace>(file.get());
 
   if (!nsc.is_valid())
-    fi = new Ro_file(file.get());
+    fi = cxx::ref_ptr(new Ro_file(file.get()));
   else // use mat protocol here!!
-    fi = new Ns_dir(nsc);
+    fi = cxx::ref_ptr(new Ns_dir(nsc));
 
   if (!fi)
     return -ENOMEM;
 
   file.release();
-  *f = fi;
+  *f = cxx::move(fi);
   return 0;
 }
 
@@ -371,9 +371,9 @@ Env_dir::getdents(char *buf, size_t sz) throw()
           memcpy(d->d_name, _current_cap_entry->name, l);
           d->d_name[l - 1] = 0;
           d->d_reclen = n;
-          if (check_type(_current_cap_entry, L4Re::Protocol::Namespace))
+          if (check_type(_current_cap_entry, L4Re::Namespace::Protocol))
             d->d_type = DT_DIR;
-          else if (check_type(_current_cap_entry, L4Re::Protocol::Dataspace))
+          else if (check_type(_current_cap_entry, L4Re::Dataspace::Protocol))
             d->d_type = DT_REG;
           else
             d->d_type = DT_UNKNOWN;