Add NullFS

Signed-off-by: Thomas Heijligen <src@posteo.de>
diff --git a/src/filo-fs-nullfs.adb b/src/filo-fs-nullfs.adb
index dc0ca28..73195ba 100644
--- a/src/filo-fs-nullfs.adb
+++ b/src/filo-fs-nullfs.adb
@@ -1,59 +1,13 @@
+with FILO.Blockdev;
+
 package body FILO.FS.NullFS is
 
-   Global_NullFS : NullFS_Type := (
-      State => Unmounted
-   );
-
-   procedure Mount
-      (Item : in out NullFS_Type;
-       Success : out Boolean)
-   is
-   begin
-      Success := True;
-      Item.State := Mounted;
-   end Mount;
-
-   procedure Open
-      (Item    : in out NullFS_Type;
-       Path    : in     String;
-       Success : out    Boolean)
-   is
-   begin
-      Success := True;
-      Item.State := File_Open;
-   end Open;
-
-   procedure Read
-      (Item    : in out NullFS_Type;
-       Buffer  : in out Buffer_Type;
-       Offset  : in     Natural;
-       Success : out    Boolean)
-   is
-   begin
-      Success := True;
-      null;
-   end Read;
-
-   procedure Close 
-      (Item : in out NullFS_Type;
-       Success : out Boolean)
-   is
-   begin
-      Success := True;
-      Item.State := Mounted;
-   end Close;
-
-   ---------------------------------------------------------------------A
-
    function To_Int (Success : Boolean) return Interfaces.C.int is
       (if Success then 1 else 0);
 
-   function C_Mount return Interfaces.C.int
-   is
-      Success : Boolean;
+   function C_Mount return Interfaces.C.int is
    begin
-      Mount(Global_NullFS, Success);
-      return To_Int (Success);
+      return To_Int (True);
    end C_Mount;
 
    function C_Read 
@@ -62,38 +16,26 @@
    return Interfaces.C.int
       with SPARK_Mode => Off
    is
-      use FILO.FS;
       Buffer : Buffer_Type (0 .. Integer(len) - 1) with Address => buf;
-      Offset : constant Natural := Natural(File_Pos);
+      Offset : constant Blockdev_Offset := Blockdev_Offset(File_Pos);
       Success : Boolean;
    begin
-      Read (Global_NullFS, Buffer, Offset, Success);
-      if Success then
-         Set_File_Pos (File_Length (Offset + Buffer'Length));
-      end if;
-      return To_Int (Success);
-      
+      FILO.Blockdev.Read (Buffer, Offset, Success);
+      return To_Int (Success); 
    end C_Read;
 
+
    function C_Dir
-      (Path : Interfaces.C.Strings.chars_ptr)
+      (Path : System.Address)
    return Interfaces.C.int
       with SPARK_Mode => Off
    is
-      use Interfaces.C.Strings;
-      Success : Boolean;
+      First_Byte : Unsigned_8 with Address => Path;
    begin
-      Open (Global_NullFS, Value (Path), Success);
-      return To_Int (Success);
+      if First_Byte = 0 then
+         return To_Int (True);
+      end if;
+      return To_Int (False);
    end C_Dir;
 
-   function C_Close return Interfaces.C.int
-      with SPARK_Mode => Off
-   is
-      Success : Boolean;
-   begin
-      Close (Global_NullFS, Success);
-      return To_Int (Success);
-   end C_Close;
-
 end FILO.FS.NullFS;