changeset 2924:50edcdd3ec22

[project @ 1997-05-03 20:21:03 by jwe]
author jwe
date Sat, 03 May 1997 20:21:15 +0000
parents 76e1331ba933
children f0665dac8e33
files liboctave/glob-match.cc liboctave/glob-match.h liboctave/oct-glob.cc liboctave/oct-glob.h
diffstat 4 files changed, 226 insertions(+), 226 deletions(-) [+]
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/liboctave/glob-match.cc
@@ -0,0 +1,136 @@
+/*
+
+Copyright (C) 1996, 1997 John W. Eaton
+
+This file is part of Octave.
+
+Octave is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option) any
+later version.
+
+Octave is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with Octave; see the file COPYING.  If not, write to the Free
+Software Foundation, 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <fnmatch.h>
+#include <glob.h>
+
+#include <iostream.h>
+
+#include <string>
+
+#include "file-stat.h"
+#include "oct-glob.h"
+#include "str-vec.h"
+
+bool
+glob_match::match (const string& s)
+{
+  int npat = pat.length ();
+
+  const char *str = s.c_str ();
+
+  int fnmatch_flags = 0;
+
+  if (flags & pathname)
+    fnmatch_flags |= FNM_PATHNAME;
+
+  if (flags & noescape)
+    fnmatch_flags |= FNM_NOESCAPE;
+
+  if (flags & period)
+    fnmatch_flags |= FNM_PERIOD;
+
+  for (int i = 0; i < npat; i++)
+    if (fnmatch (pat(i).c_str (), str, fnmatch_flags) != FNM_NOMATCH)
+      return true;
+
+  return false;
+}
+
+Array<bool>
+glob_match::match (const string_vector& s)
+{
+  int n = s.length ();
+
+  Array<bool> retval (n);
+
+  for (int i = 0; i < n; i++)
+    retval(i) = match (s[i]);
+
+  return retval;
+}
+
+static bool
+single_match_exists (const string& file)
+{
+  file_stat s (file);
+
+  return s.exists ();
+}
+
+string_vector
+glob_match::glob (void)
+{
+  string_vector retval;
+
+  int npat = pat.length ();
+
+  int k = 0;
+
+  for (int i = 0; i < npat; i++)
+    {
+      string xpat = pat(i);
+
+      if (! xpat.empty ())
+	{
+	  glob_t glob_info;
+
+	  int err = ::glob (xpat.c_str (), GLOB_NOSORT, 0, &glob_info);
+
+	  if (! err)
+	    {
+	      int n = glob_info.gl_pathc;
+
+	      char **matches = glob_info.gl_pathv;
+
+	      // XXX FIXME XXX -- we shouldn't have to check to see if
+	      // a single match exists, but it seems that glob() won't
+	      // check for us unless the pattern contains globbing
+	      // characters.  Hmm.
+
+	      if (n > 1
+		  || (n == 1 && single_match_exists (string (matches[0]))))
+		{
+		  retval.resize (k+n);
+
+		  for (int j = 0; j < n; j++)
+		    retval[k++] = matches[j];
+		}
+
+	      globfree (&glob_info);
+	    }
+	}
+    }
+
+  return retval.qsort ();
+}
+
+/*
+;;; Local Variables: ***
+;;; mode: C++ ***
+;;; End: ***
+*/
+
new file mode 100644
--- /dev/null
+++ b/liboctave/glob-match.h
@@ -0,0 +1,90 @@
+/*
+
+Copyright (C) 1996, 1997 John W. Eaton
+
+This file is part of Octave.
+
+Octave is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option) any
+later version.
+
+Octave is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with Octave; see the file COPYING.  If not, write to the Free
+Software Foundation, 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+
+*/
+
+#if !defined (octave_oct_glob_h)
+#define octave_oct_glob_h 1
+
+#include <string>
+
+#include "Array.h"
+#include "str-vec.h"
+
+class
+glob_match
+{
+public:
+
+  enum opts
+    {
+      pathname = 1,  // No wildcard can ever match `/'.
+      noescape = 2,  // Backslashes don't quote special chars.
+      period = 4     // Leading `.' is matched only explicitly.
+   };
+
+  glob_match (const string& p = string (),
+	      unsigned int f = pathname|noescape|period)
+    : pat (p), flags (f) { }
+
+  glob_match (const string_vector& p = string_vector (),
+	      unsigned int f = pathname|noescape|period)
+    : pat (p), flags (f) { }
+
+  glob_match (const glob_match& gm) : pat (gm.pat), flags (gm.flags) { }
+
+  glob_match& operator = (const glob_match& gm)
+    {
+      if (this != &gm)
+	{
+	  pat = gm.pat;
+	  flags = gm.flags;
+	}
+      return *this;
+    }
+
+  ~glob_match (void) { }
+
+  void set_pattern (const string& p) { pat = p; }
+
+  void set_pattern (const string_vector& p) { pat = p; }
+
+  bool match (const string&);
+
+  Array<bool> match (const string_vector&);
+
+  string_vector glob (void);
+
+private:
+
+  // Globbing pattern(s).
+  string_vector pat;
+
+  // Option flags.
+  unsigned int flags;
+};
+
+#endif
+
+/*
+;;; Local Variables: ***
+;;; mode: C++ ***
+;;; End: ***
+*/
deleted file mode 100644
--- a/liboctave/oct-glob.cc
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
-
-Copyright (C) 1996, 1997 John W. Eaton
-
-This file is part of Octave.
-
-Octave is free software; you can redistribute it and/or modify it
-under the terms of the GNU General Public License as published by the
-Free Software Foundation; either version 2, or (at your option) any
-later version.
-
-Octave is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-for more details.
-
-You should have received a copy of the GNU General Public License
-along with Octave; see the file COPYING.  If not, write to the Free
-Software Foundation, 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <fnmatch.h>
-#include <glob.h>
-
-#include <iostream.h>
-
-#include <string>
-
-#include "file-ops.h"
-#include "oct-glob.h"
-#include "str-vec.h"
-
-bool
-glob_match::match (const string& s)
-{
-  int npat = pat.length ();
-
-  const char *str = s.c_str ();
-
-  int fnmatch_flags = 0;
-
-  if (flags & pathname)
-    fnmatch_flags |= FNM_PATHNAME;
-
-  if (flags & noescape)
-    fnmatch_flags |= FNM_NOESCAPE;
-
-  if (flags & period)
-    fnmatch_flags |= FNM_PERIOD;
-
-  for (int i = 0; i < npat; i++)
-    if (fnmatch (pat(i).c_str (), str, fnmatch_flags) != FNM_NOMATCH)
-      return true;
-
-  return false;
-}
-
-Array<bool>
-glob_match::match (const string_vector& s)
-{
-  int n = s.length ();
-
-  Array<bool> retval (n);
-
-  for (int i = 0; i < n; i++)
-    retval(i) = match (s[i]);
-
-  return retval;
-}
-
-static bool
-single_match_exists (const string& file)
-{
-  file_stat s (file);
-
-  return s.exists ();
-}
-
-string_vector
-glob_match::glob (void)
-{
-  string_vector retval;
-
-  int npat = pat.length ();
-
-  int k = 0;
-
-  for (int i = 0; i < npat; i++)
-    {
-      string xpat = pat(i);
-
-      if (! xpat.empty ())
-	{
-	  glob_t glob_info;
-
-	  int err = ::glob (xpat.c_str (), GLOB_NOSORT, 0, &glob_info);
-
-	  if (! err)
-	    {
-	      int n = glob_info.gl_pathc;
-
-	      char **matches = glob_info.gl_pathv;
-
-	      // XXX FIXME XXX -- we shouldn't have to check to see if
-	      // a single match exists, but it seems that glob() won't
-	      // check for us unless the pattern contains globbing
-	      // characters.  Hmm.
-
-	      if (n > 1
-		  || (n == 1 && single_match_exists (string (matches[0]))))
-		{
-		  retval.resize (k+n);
-
-		  for (int j = 0; j < n; j++)
-		    retval[k++] = matches[j];
-		}
-
-	      globfree (&glob_info);
-	    }
-	}
-    }
-
-  return retval.qsort ();
-}
-
-/*
-;;; Local Variables: ***
-;;; mode: C++ ***
-;;; End: ***
-*/
-
deleted file mode 100644
--- a/liboctave/oct-glob.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
-
-Copyright (C) 1996, 1997 John W. Eaton
-
-This file is part of Octave.
-
-Octave is free software; you can redistribute it and/or modify it
-under the terms of the GNU General Public License as published by the
-Free Software Foundation; either version 2, or (at your option) any
-later version.
-
-Octave is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-for more details.
-
-You should have received a copy of the GNU General Public License
-along with Octave; see the file COPYING.  If not, write to the Free
-Software Foundation, 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-
-*/
-
-#if !defined (octave_oct_glob_h)
-#define octave_oct_glob_h 1
-
-#include <string>
-
-#include "Array.h"
-#include "str-vec.h"
-
-class
-glob_match
-{
-public:
-
-  enum opts
-    {
-      pathname = 1,  // No wildcard can ever match `/'.
-      noescape = 2,  // Backslashes don't quote special chars.
-      period = 4     // Leading `.' is matched only explicitly.
-   };
-
-  glob_match (const string& p = string (),
-	      unsigned int f = pathname|noescape|period)
-    : pat (p), flags (f) { }
-
-  glob_match (const string_vector& p = string_vector (),
-	      unsigned int f = pathname|noescape|period)
-    : pat (p), flags (f) { }
-
-  glob_match (const glob_match& gm) : pat (gm.pat), flags (gm.flags) { }
-
-  glob_match& operator = (const glob_match& gm)
-    {
-      if (this != &gm)
-	{
-	  pat = gm.pat;
-	  flags = gm.flags;
-	}
-      return *this;
-    }
-
-  ~glob_match (void) { }
-
-  void set_pattern (const string& p) { pat = p; }
-
-  void set_pattern (const string_vector& p) { pat = p; }
-
-  bool match (const string&);
-
-  Array<bool> match (const string_vector&);
-
-  string_vector glob (void);
-
-private:
-
-  // Globbing pattern(s).
-  string_vector pat;
-
-  // Option flags.
-  unsigned int flags;
-};
-
-#endif
-
-/*
-;;; Local Variables: ***
-;;; mode: C++ ***
-;;; End: ***
-*/