changeset 10335:9dd04a06410e

document glob patterns
author Thorsten Meyer <thorsten.meyier@gmx.de>
date Thu, 18 Feb 2010 22:45:40 +0100
parents db540cb0e959
children 1603dfe72933
files src/ChangeLog src/dirfns.cc
diffstat 2 files changed, 72 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/src/ChangeLog	Thu Feb 18 08:40:17 2010 +0100
+++ b/src/ChangeLog	Thu Feb 18 22:45:40 2010 +0100
@@ -1,3 +1,7 @@
+2010-02-18  Thorsten Meyer  <thorsten.meyier@gmx.de>
+
+	* dirfns.cc (Fglob): Document globbing patterns, add test.
+
 2010-02-18  Jaroslav Hajek  <highegg@gmail.com>
 
 	* load-path.cc (in_path_list): New helper function.
--- a/src/dirfns.cc	Thu Feb 18 08:40:17 2010 +0100
+++ b/src/dirfns.cc	Thu Feb 18 22:45:40 2010 +0100
@@ -548,19 +548,49 @@
 DEFUN (glob, args, ,
   "-*- texinfo -*-\n\
 @deftypefn {Built-in Function} {} glob (@var{pattern})\n\
-Given an array of strings (as a char array or a cell array) in\n\
+Given an array of pattern strings (as a char array or a cell array) in\n\
 @var{pattern}, return a cell array of file names that match any of\n\
-them, or an empty cell array if no patterns match.  Tilde expansion\n\
+them, or an empty cell array if no patterns match.  The pattern strings are \n\
+interpreted as filename globbing patterns (as they are used by unix shells).\n\
+Within a pattern\n\
+@table @code\n\
+@itemx *\n\
+matches any string, including the null string,\n\
+@itemx ?\n\
+matches any single character, and\n\
+@item [...]\n\
+matches any of the enclosed characters.\n\
+@end table\n\
+\n\
+Tilde expansion\n\
 is performed on each of the patterns before looking for matching file\n\
-names.  For example,\n\
+names.  For example:\n\
 \n\
 @example\n\
 @group\n\
-glob (\"/vm*\")\n\
-     @result{} \"/vmlinuz\"\n\
+ls\n\
+     @result{}\n\
+        file1  file2  file3  myfile1 myfile1b \n\
+glob (\"*file1\")\n\
+     @result{}\n\
+        @{\n\
+          [1,1] = file1\n\
+          [2,1] = myfile1\n\
+        @}\n\
+glob (\"myfile?\")\n\
+     @result{}\n\
+        @{\n\
+          [1,1] = myfile1\n\
+        @}\n\
+glob (\"file[12]\")\n\
+     @result{}\n\
+        @{\n\
+          [1,1] = file1\n\
+          [2,1] = file2\n\
+        @}\n\
 @end group\n\
 @end example\n\
-@seealso{dir, ls, stat, readdir}\n\
+@seealso{dir, ls, stat, readdir, regexp}\n\
 @end deftypefn")
 {
   octave_value retval;
@@ -584,6 +614,38 @@
   return retval;
 }
 
+/*
+%!test
+%!  tmpdir = tmpnam;
+%!  filename = {"file1", "file2", "file3", "myfile1", "myfile1b"};
+%!  if (mkdir (tmpdir))
+%!    cwd = pwd;
+%!    cd (tmpdir);
+%!    if strcmp (pwd, tmpdir)
+%!      a = 0;
+%!      for n = 1:5
+%!        save (filename{n}, "a");
+%!      endfor
+%!    else
+%!      rmdir (tmpdir);
+%!      error ("Couldn't change to temporary dir");
+%!    endif
+%!  else
+%!    error ("Couldn't create temporary directory");
+%!  endif
+%!  result1 = glob ("*file1");
+%!  result2 = glob ("myfile?");
+%!  result3 = glob ("file[12]");
+%!  for n = 1:5
+%!    delete (filename{n});
+%!  endfor
+%!  cd (cwd);
+%!  rmdir (tmpdir);
+%!  assert (result1, {"file1"; "myfile1"});
+%!  assert (result2, {"myfile1"});
+%!  assert (result3, {"file1"; "file2"});
+*/
+
 DEFUN (fnmatch, args, ,
   "-*- texinfo -*-\n\
 @deftypefn {Built-in Function} {} fnmatch (@var{pattern}, @var{string})\n\