diff src/syscalls.cc @ 5138:5fa9670b5956

[project @ 2005-02-09 23:13:03 by jwe]
author jwe
date Wed, 09 Feb 2005 23:13:03 +0000
parents b6ff3a0d3d17
children 4c8a2e4e0717
line wrap: on
line diff
--- a/src/syscalls.cc	Wed Feb 09 17:59:19 2005 +0000
+++ b/src/syscalls.cc	Wed Feb 09 23:13:03 2005 +0000
@@ -190,7 +190,7 @@
 		    exec_args[i+1] = tmp[i];
 		}
 	      else
-		error ("exec: arguments must be strings");
+		error ("exec: arguments must be character strings");
 	    }
 	  else
 	    {
@@ -942,6 +942,37 @@
   return retval;
 }
 
+DEFUN (canonicalize_file_name, args, ,
+  "-*- texinfo -*-\n\
+@deftypefn {Built-in Function} {[@var{cname}, @var{status}, @var{msg}]} canonicalize_file_name (@var{name})\n\
+Return the canonical name of file @var{name}.\n\
+@end deftypefn")
+{
+  octave_value_list retval;
+
+  if (args.length () == 1)
+    {
+      std::string name = args(0).string_value ();
+
+      if (! error_state)
+	{
+	  std::string msg;
+
+	  std::string result = file_ops::canonicalize_file_name (name, msg);
+
+	  retval(2) = msg;
+	  retval(1) = msg.empty () ? 0 : -1;
+	  retval(0) = result;
+	}
+      else
+	error ("canonicalize_file_name: argument must be a character string");
+    }
+  else
+    print_usage ("canonicalize_file_name");
+
+  return retval;
+}
+
 #if !defined (O_NONBLOCK) && defined (O_NDELAY)
 #define O_NONBLOCK O_NDELAY
 #endif