# HG changeset patch # User John W. Eaton # Date 1284486683 14400 # Node ID 2d14817353a6e9ac54a88314b057308e951b50f8 # Parent c6dc5f6666955e09df9d9bb4300e4a3db3011a28 allow exist to work correctly for special files; recognize directories when searching for files diff --git a/src/ChangeLog b/src/ChangeLog --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,9 @@ +2010-09-14 John W. Eaton + + * variables.cc (symbol_exist): If looking for any type of file + or "file", return 7 for directories and 2 for all other types of + files. + 2010-09-14 John W. Eaton * graphics.h.in (base_graphics_backend::initialize): Rename diff --git a/src/variables.cc b/src/variables.cc --- a/src/variables.cc +++ b/src/variables.cc @@ -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) {