Bug fixed for stdin and stdout in a different platform.
[Faustine.git] / interpreter / main.ml
index 7275d01..94b0ae1 100644 (file)
@@ -59,16 +59,36 @@ let file_of_path : string -> string =
     let n = List.length fragments in
     List.nth fragments (n - 1);;  
 
     let n = List.length fragments in
     List.nth fragments (n - 1);;  
 
+let valid_input_file : string -> bool = 
+  fun (file : string) ->
+    let fragments = Str.split (Str.regexp "\.") file in
+    let n = List.length fragments in
+    let extension = List.nth fragments (n - 1) in
+    if extension = "csv" || extension = "wav" then true
+    else false;;
+
+let chk_input_path : string -> bool =
+  fun (path : string) ->
+    let file_in = file_of_path path in
+    valid_input_file file_in;;
+
 let stdinput = fun (x : unit) ->
   let path = Unix.readlink "/proc/self/fd/0" in
 let stdinput = fun (x : unit) ->
   let path = Unix.readlink "/proc/self/fd/0" in
-  if path <> "/dev/pts/4" then
+  if chk_input_path path then
     ( incr size_input;
       inputs := !inputs @ [path] )
   else ();;
 
     ( incr size_input;
       inputs := !inputs @ [path] )
   else ();;
 
+let chk_output_path : string -> bool =
+  fun (path : string) ->
+    let fragments = Str.split (Str.regexp "/") path in
+    let location = List.nth fragments 0 in
+    if location = "dev" then false
+    else true;;
+
 let stdoutput = fun (x : unit) ->
   let path = Unix.readlink "/proc/self/fd/1" in
 let stdoutput = fun (x : unit) ->
   let path = Unix.readlink "/proc/self/fd/1" in
-  if path <> "/dev/pts/4" then output := path
+  if chk_output_path path then output := path
   else ();;
 
 let stdio = fun (x : unit) -> 
   else ();;
 
 let stdio = fun (x : unit) ->