summaryrefslogtreecommitdiffstats
path: root/debian/htdig/htdig-3.2.0b6/htlib/QuotedStringList.cc
diff options
context:
space:
mode:
Diffstat (limited to 'debian/htdig/htdig-3.2.0b6/htlib/QuotedStringList.cc')
-rw-r--r--debian/htdig/htdig-3.2.0b6/htlib/QuotedStringList.cc90
1 files changed, 90 insertions, 0 deletions
diff --git a/debian/htdig/htdig-3.2.0b6/htlib/QuotedStringList.cc b/debian/htdig/htdig-3.2.0b6/htlib/QuotedStringList.cc
new file mode 100644
index 00000000..2d6aa006
--- /dev/null
+++ b/debian/htdig/htdig-3.2.0b6/htlib/QuotedStringList.cc
@@ -0,0 +1,90 @@
+//
+// QuotedStringList.cc
+//
+// QuotedStringList: Fed with a string it will extract separator delimited
+// words and store them in a list. The words may be
+// delimited by " or ', hence the name.
+//
+// Part of the ht://Dig package <http://www.htdig.org/>
+// Copyright (c) 1999-2004 The ht://Dig Group
+// For copyright details, see the file COPYING in your distribution
+// or the GNU Library General Public License (LGPL) version 2 or later
+// <http://www.gnu.org/copyleft/lgpl.html>
+//
+// $Id: QuotedStringList.cc,v 1.7 2004/05/28 13:15:21 lha Exp $
+//
+
+#ifdef HAVE_CONFIG_H
+#include "htconfig.h"
+#endif /* HAVE_CONFIG_H */
+
+#include "QuotedStringList.h"
+
+
+//*****************************************************************************
+QuotedStringList::QuotedStringList()
+{
+}
+
+//*****************************************************************************
+int
+QuotedStringList::Create(const char *str, const char *sep, int single)
+{
+ char quote = 0;
+ int quoted = 0;
+ String word;
+
+ while (str && *str)
+ {
+ if (*str == '\\')
+ {
+ if (!str[1])
+ break;
+ word << *++str;
+ }
+ else if (*str == quote)
+ {
+ quote = 0;
+ }
+ else if (!quote && (*str == '"' || *str == '\''))
+ {
+ quote = *str;
+ quoted++;
+ }
+ else if (quote == 0 && strchr(sep, *str))
+ {
+ Add(new String(word));
+ word = 0;
+ quoted = 0;
+ if (!single)
+ {
+ while (strchr(sep, *str))
+ str++;
+ str--;
+ }
+ }
+ else
+ word << *str;
+ str++;
+ }
+
+ //
+ // Add the last word to the list
+ //
+ if (word.length() || quoted)
+ Add(new String(word));
+ return Count();
+}
+
+
+//*****************************************************************************
+int
+QuotedStringList::Create(const char *str, char sep, int single)
+{
+ char t[2] = "1";
+
+ t[0] = sep;
+ return Create(str, t, single);
+}
+
+