add -fPIC option to the C compiler, required in f31
[vsys.git] / frontend.ml
index 9d444c3..cf53b9b 100644 (file)
@@ -13,9 +13,16 @@ class frontendHandler (root_dir,slice_name) =
 object(this)
 
   (** regex indicating that the script passes fds around *)
-  val fd_regex = Str.regexp "^fd_"
+  val fd_regex = Str.regexp "fd_"
+
+  method is_fd_passer fname = 
+    try let _ = Str.search_forward fd_regex fname 0 
+    in 
+      true
+    with
+      | Not_found -> false 
+      | _ -> false
 
-  method is_fd_passer fname = Str.string_match fd_regex fname 0
   method get_slice_name () = slice_name
   (** A new script was copied into the backend, make a corresponding entry in
     the frontend.
@@ -31,7 +38,7 @@ object(this)
               begin
                 match res with
                   | Success ->
-                      Unixsocketwatcher.openentry root_dir fqp (abspath, slice_name)
+                      ()
                   | _ -> 
                       logprint "Could not create entry %s" abspath
               end
@@ -77,12 +84,25 @@ object(this)
       let fqp = String.concat "/" [root_dir;rel] in
       let fqp_in = String.concat "." [fqp;"in"] in
       let fqp_out = String.concat "." [fqp;"out"] in
-        Directfifowatcher.closeentry fqp;
-        try 
-          Unix.unlink fqp_in;
-          Unix.unlink fqp_out
-        with _ ->
-          logprint "Hm. %s disappeared. Looks like slice %s shot itself in the foot\n" fqp (this#get_slice_name ())
+      let fqp_control = String.concat "." [fqp;"out"] in
+
+        if (this#is_fd_passer rel) then
+          begin
+            Unixsocketwatcher.closeentry fqp;
+            try 
+              Unix.unlink fqp_control
+            with _ ->
+              logprint "Hm. %s disappeared. Looks like slice %s shot itself in the foot\n" fqp (this#get_slice_name ())
+          end
+        else
+          begin
+            Directfifowatcher.closeentry fqp;
+            try 
+              Unix.unlink fqp_in;
+              Unix.unlink fqp_out
+            with _ ->
+              logprint "Hm. %s disappeared. Looks like slice %s shot itself in the foot\n" fqp (this#get_slice_name ())
+          end
 
   method rmdir rp =
     match rp with Relpath(rel) ->