diff src/variables.cc @ 10975:2d14817353a6

allow exist to work correctly for special files; recognize directories when searching for files
author John W. Eaton <jwe@octave.org>
date Tue, 14 Sep 2010 13:51:23 -0400
parents a4f482e66b65
children 4ab04ea74b08
line wrap: on
line diff
--- a/src/variables.cc	Tue Sep 14 02:38:25 2010 -0400
+++ b/src/variables.cc	Tue Sep 14 13:51:23 2010 -0400
@@ -493,16 +493,10 @@
 
           if (fs)
             {
-              if ((type == "any" || type == "file")
-                  && fs.is_reg ())
-                {
-                  retval = 2;
-                }
-              else if ((type == "any" || type == "dir")
-                       && fs.is_dir ())
-                {
-                  retval = 7;
-                }
+              if (type == "any" || type == "file")
+                retval = fs.is_dir () ? 7 : 2;
+              else if (type == "dir" && fs.is_dir ())
+                retval = 7;
             }
         }
     }
@@ -597,6 +591,21 @@
   return retval;
 }
 
+/*
+%!test
+%!  if (isunix ())
+%!    assert (exist ("/tmp") == 7);
+%!    assert (exist ("/tmp", "file") == 7);
+%!    assert (exist ("/tmp", "dir") == 7);
+%!    assert (exist ("/bin/sh") == 2);
+%!    assert (exist ("/bin/sh", "file") == 2);
+%!    assert (exist ("/bin/sh", "dir") == 0);
+%!    assert (exist ("/dev/null") == 2);
+%!    assert (exist ("/dev/null", "file") == 2);
+%!    assert (exist ("/dev/null", "dir") == 0);
+%!  endif
+*/
+
 octave_value
 lookup_function_handle (const std::string& nm)
 {