geode-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From u..@apache.org
Subject [01/10] geode git commit: GEODE-2142: Removal of offending JSON.ORG code and license information
Date Fri, 17 Feb 2017 23:13:11 GMT
Repository: geode
Updated Branches:
  refs/heads/feature/GEODE-2142 [created] 38c5286a0


http://git-wip-us.apache.org/repos/asf/geode/blob/0b4ac2fe/geode-json/src/main/java/org/json/XML.java
----------------------------------------------------------------------
diff --git a/geode-json/src/main/java/org/json/XML.java b/geode-json/src/main/java/org/json/XML.java
deleted file mode 100755
index ae6d61a..0000000
--- a/geode-json/src/main/java/org/json/XML.java
+++ /dev/null
@@ -1,504 +0,0 @@
-package org.json;
-
-/*
- * Copyright (c) 2002 JSON.org
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
and
- * associated documentation files (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge, publish, distribute,
- * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software
is
- * furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all copies
or
- * substantial portions of the Software.
- * 
- * The Software shall be used for Good, not Evil.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
BUT
- * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM,
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-import java.util.Iterator;
-
-
-/**
- * This provides static methods to convert an XML text into a JSONObject, and to covert a
JSONObject
- * into an XML text.
- * 
- * @author JSON.org
- * @version 2011-02-11
- */
-public class XML {
-
-  /** The Character '&'. */
-  public static final Character AMP = new Character('&');
-
-  /** The Character '''. */
-  public static final Character APOS = new Character('\'');
-
-  /** The Character '!'. */
-  public static final Character BANG = new Character('!');
-
-  /** The Character '='. */
-  public static final Character EQ = new Character('=');
-
-  /** The Character '>'. */
-  public static final Character GT = new Character('>');
-
-  /** The Character '<'. */
-  public static final Character LT = new Character('<');
-
-  /** The Character '?'. */
-  public static final Character QUEST = new Character('?');
-
-  /** The Character '"'. */
-  public static final Character QUOT = new Character('"');
-
-  /** The Character '/'. */
-  public static final Character SLASH = new Character('/');
-
-  /**
-   * Replace special characters with XML escapes:
-   * 
-   * <pre>
-   * &amp; <small>(ampersand)</small> is replaced by &amp;amp;
-   * &lt; <small>(less than)</small> is replaced by &amp;lt;
-   * &gt; <small>(greater than)</small> is replaced by &amp;gt;
-   * &quot; <small>(double quote)</small> is replaced by &amp;quot;
-   * </pre>
-   * 
-   * @param string The string to be escaped.
-   * @return The escaped string.
-   */
-  public static String escape(String string) {
-    StringBuffer sb = new StringBuffer();
-    for (int i = 0, length = string.length(); i < length; i++) {
-      char c = string.charAt(i);
-      switch (c) {
-        case '&':
-          sb.append("&amp;");
-          break;
-        case '<':
-          sb.append("&lt;");
-          break;
-        case '>':
-          sb.append("&gt;");
-          break;
-        case '"':
-          sb.append("&quot;");
-          break;
-        case '\'':
-          sb.append("&apos;");
-          break;
-        default:
-          sb.append(c);
-      }
-    }
-    return sb.toString();
-  }
-
-  /**
-   * Throw an exception if the string contains whitespace. Whitespace is not allowed in tagNames
and
-   * attributes.
-   * 
-   * @param string
-   * @throws JSONException
-   */
-  public static void noSpace(String string) throws JSONException {
-    int i, length = string.length();
-    if (length == 0) {
-      throw new JSONException("Empty string.");
-    }
-    for (i = 0; i < length; i += 1) {
-      if (Character.isWhitespace(string.charAt(i))) {
-        throw new JSONException("'" + string + "' contains a space character.");
-      }
-    }
-  }
-
-  /**
-   * Scan the content following the named tag, attaching it to the context.
-   * 
-   * @param x The XMLTokener containing the source string.
-   * @param context The JSONObject that will include the new material.
-   * @param name The tag name.
-   * @return true if the close tag is processed.
-   * @throws JSONException
-   */
-  private static boolean parse(XMLTokener x, JSONObject context, String name) throws JSONException
{
-    char c;
-    int i;
-    JSONObject jsonobject = null;
-    String string;
-    String tagName;
-    Object token;
-
-    // Test for and skip past these forms:
-    // <!-- ... -->
-    // <! ... >
-    // <![ ... ]]>
-    // <? ... ?>
-    // Report errors for these forms:
-    // <>
-    // <=
-    // <<
-
-    token = x.nextToken();
-
-    // <!
-
-    if (token == BANG) {
-      c = x.next();
-      if (c == '-') {
-        if (x.next() == '-') {
-          x.skipPast("-->");
-          return false;
-        }
-        x.back();
-      } else if (c == '[') {
-        token = x.nextToken();
-        if ("CDATA".equals(token)) {
-          if (x.next() == '[') {
-            string = x.nextCDATA();
-            if (string.length() > 0) {
-              context.accumulate("content", string);
-            }
-            return false;
-          }
-        }
-        throw x.syntaxError("Expected 'CDATA['");
-      }
-      i = 1;
-      do {
-        token = x.nextMeta();
-        if (token == null) {
-          throw x.syntaxError("Missing '>' after '<!'.");
-        } else if (token == LT) {
-          i += 1;
-        } else if (token == GT) {
-          i -= 1;
-        }
-      } while (i > 0);
-      return false;
-    } else if (token == QUEST) {
-
-      // <?
-
-      x.skipPast("?>");
-      return false;
-    } else if (token == SLASH) {
-
-      // Close tag </
-
-      token = x.nextToken();
-      if (name == null) {
-        throw x.syntaxError("Mismatched close tag " + token);
-      }
-      if (!token.equals(name)) {
-        throw x.syntaxError("Mismatched " + name + " and " + token);
-      }
-      if (x.nextToken() != GT) {
-        throw x.syntaxError("Misshaped close tag");
-      }
-      return true;
-
-    } else if (token instanceof Character) {
-      throw x.syntaxError("Misshaped tag");
-
-      // Open tag <
-
-    } else {
-      tagName = (String) token;
-      token = null;
-      jsonobject = new JSONObject();
-      for (;;) {
-        if (token == null) {
-          token = x.nextToken();
-        }
-
-        // attribute = value
-
-        if (token instanceof String) {
-          string = (String) token;
-          token = x.nextToken();
-          if (token == EQ) {
-            token = x.nextToken();
-            if (!(token instanceof String)) {
-              throw x.syntaxError("Missing value");
-            }
-            jsonobject.accumulate(string, XML.stringToValue((String) token));
-            token = null;
-          } else {
-            jsonobject.accumulate(string, "");
-          }
-
-          // Empty tag <.../>
-
-        } else if (token == SLASH) {
-          if (x.nextToken() != GT) {
-            throw x.syntaxError("Misshaped tag");
-          }
-          if (jsonobject.length() > 0) {
-            context.accumulate(tagName, jsonobject);
-          } else {
-            context.accumulate(tagName, "");
-          }
-          return false;
-
-          // Content, between <...> and </...>
-
-        } else if (token == GT) {
-          for (;;) {
-            token = x.nextContent();
-            if (token == null) {
-              if (tagName != null) {
-                throw x.syntaxError("Unclosed tag " + tagName);
-              }
-              return false;
-            } else if (token instanceof String) {
-              string = (String) token;
-              if (string.length() > 0) {
-                jsonobject.accumulate("content", XML.stringToValue(string));
-              }
-
-              // Nested element
-
-            } else if (token == LT) {
-              if (parse(x, jsonobject, tagName)) {
-                if (jsonobject.length() == 0) {
-                  context.accumulate(tagName, "");
-                } else if (jsonobject.length() == 1 && jsonobject.opt("content")
!= null) {
-                  context.accumulate(tagName, jsonobject.opt("content"));
-                } else {
-                  context.accumulate(tagName, jsonobject);
-                }
-                return false;
-              }
-            }
-          }
-        } else {
-          throw x.syntaxError("Misshaped tag");
-        }
-      }
-    }
-  }
-
-
-  /**
-   * Try to convert a string into a number, boolean, or null. If the string can't be converted,
-   * return the string. This is much less ambitious than JSONObject.stringToValue, especially
-   * because it does not attempt to convert plus forms, octal forms, hex forms, or E forms
lacking
-   * decimal points.
-   * 
-   * @param string A String.
-   * @return A simple JSON value.
-   */
-  public static Object stringToValue(String string) {
-    if ("".equals(string)) {
-      return string;
-    }
-    if ("true".equalsIgnoreCase(string)) {
-      return Boolean.TRUE;
-    }
-    if ("false".equalsIgnoreCase(string)) {
-      return Boolean.FALSE;
-    }
-    if ("null".equalsIgnoreCase(string)) {
-      return JSONObject.NULL;
-    }
-    if ("0".equals(string)) {
-      return new Integer(0);
-    }
-
-    // If it might be a number, try converting it. If that doesn't work,
-    // return the string.
-
-    try {
-      char initial = string.charAt(0);
-      boolean negative = false;
-      if (initial == '-') {
-        initial = string.charAt(1);
-        negative = true;
-      }
-      if (initial == '0' && string.charAt(negative ? 2 : 1) == '0') {
-        return string;
-      }
-      if ((initial >= '0' && initial <= '9')) {
-        if (string.indexOf('.') >= 0) {
-          return Double.valueOf(string);
-        } else if (string.indexOf('e') < 0 && string.indexOf('E') < 0) {
-          Long myLong = new Long(string);
-          if (myLong.longValue() == myLong.intValue()) {
-            return new Integer(myLong.intValue());
-          } else {
-            return myLong;
-          }
-        }
-      }
-    } catch (Exception ignore) {
-    }
-    return string;
-  }
-
-
-  /**
-   * Convert a well-formed (but not necessarily valid) XML string into a JSONObject. Some
-   * information may be lost in this transformation because JSON is a data format and XML
is a
-   * document format. XML uses elements, attributes, and content text, while JSON uses unordered
-   * collections of name/value pairs and arrays of values. JSON does not does not like to
-   * distinguish between elements and attributes. Sequences of similar elements are represented
as
-   * JSONArrays. Content text may be placed in a "content" member. Comments, prologs, DTDs,
and
-   * <code>&lt;[ [ ]]></code> are ignored.
-   * 
-   * @param string The source string.
-   * @return A JSONObject containing the structured data from the XML string.
-   * @throws JSONException
-   */
-  public static JSONObject toJSONObject(String string) throws JSONException {
-    JSONObject jo = new JSONObject();
-    XMLTokener x = new XMLTokener(string);
-    while (x.more() && x.skipPast("<")) {
-      parse(x, jo, null);
-    }
-    return jo;
-  }
-
-
-  /**
-   * Convert a JSONObject into a well-formed, element-normal XML string.
-   * 
-   * @param object A JSONObject.
-   * @return A string.
-   * @throws JSONException
-   */
-  public static String toString(Object object) throws JSONException {
-    return toString(object, null);
-  }
-
-
-  /**
-   * Convert a JSONObject into a well-formed, element-normal XML string.
-   * 
-   * @param object A JSONObject.
-   * @param tagName The optional name of the enclosing tag.
-   * @return A string.
-   * @throws JSONException
-   */
-  public static String toString(Object object, String tagName) throws JSONException {
-    StringBuffer sb = new StringBuffer();
-    int i;
-    JSONArray ja;
-    JSONObject jo;
-    String key;
-    Iterator keys;
-    int length;
-    String string;
-    Object value;
-    if (object instanceof JSONObject) {
-
-      // Emit <tagName>
-
-      if (tagName != null) {
-        sb.append('<');
-        sb.append(tagName);
-        sb.append('>');
-      }
-
-      // Loop thru the keys.
-
-      jo = (JSONObject) object;
-      keys = jo.keys();
-      while (keys.hasNext()) {
-        key = keys.next().toString();
-        value = jo.opt(key);
-        if (value == null) {
-          value = "";
-        }
-        if (value instanceof String) {
-          string = (String) value;
-        } else {
-          string = null;
-        }
-
-        // Emit content in body
-
-        if ("content".equals(key)) {
-          if (value instanceof JSONArray) {
-            ja = (JSONArray) value;
-            length = ja.length();
-            for (i = 0; i < length; i += 1) {
-              if (i > 0) {
-                sb.append('\n');
-              }
-              sb.append(escape(ja.get(i).toString()));
-            }
-          } else {
-            sb.append(escape(value.toString()));
-          }
-
-          // Emit an array of similar keys
-
-        } else if (value instanceof JSONArray) {
-          ja = (JSONArray) value;
-          length = ja.length();
-          for (i = 0; i < length; i += 1) {
-            value = ja.get(i);
-            if (value instanceof JSONArray) {
-              sb.append('<');
-              sb.append(key);
-              sb.append('>');
-              sb.append(toString(value));
-              sb.append("</");
-              sb.append(key);
-              sb.append('>');
-            } else {
-              sb.append(toString(value, key));
-            }
-          }
-        } else if ("".equals(value)) {
-          sb.append('<');
-          sb.append(key);
-          sb.append("/>");
-
-          // Emit a new tag <k>
-
-        } else {
-          sb.append(toString(value, key));
-        }
-      }
-      if (tagName != null) {
-
-        // Emit the </tagname> close tag
-
-        sb.append("</");
-        sb.append(tagName);
-        sb.append('>');
-      }
-      return sb.toString();
-
-      // XML does not have good support for arrays. If an array appears in a place
-      // where XML is lacking, synthesize an <array> element.
-
-    } else {
-      if (object.getClass().isArray()) {
-        object = new JSONArray(object);
-      }
-      if (object instanceof JSONArray) {
-        ja = (JSONArray) object;
-        length = ja.length();
-        for (i = 0; i < length; i += 1) {
-          sb.append(toString(ja.opt(i), tagName == null ? "array" : tagName));
-        }
-        return sb.toString();
-      } else {
-        string = (object == null) ? "null" : escape(object.toString());
-        return (tagName == null) ? "\"" + string + "\""
-            : (string.length() == 0) ? "<" + tagName + "/>"
-                : "<" + tagName + ">" + string + "</" + tagName + ">";
-      }
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/geode/blob/0b4ac2fe/geode-json/src/main/java/org/json/XMLTokener.java
----------------------------------------------------------------------
diff --git a/geode-json/src/main/java/org/json/XMLTokener.java b/geode-json/src/main/java/org/json/XMLTokener.java
deleted file mode 100755
index f56a1f6..0000000
--- a/geode-json/src/main/java/org/json/XMLTokener.java
+++ /dev/null
@@ -1,362 +0,0 @@
-package org.json;
-
-/*
- * Copyright (c) 2002 JSON.org
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
and
- * associated documentation files (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge, publish, distribute,
- * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software
is
- * furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all copies
or
- * substantial portions of the Software.
- * 
- * The Software shall be used for Good, not Evil.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
BUT
- * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM,
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/**
- * The XMLTokener extends the JSONTokener to provide additional methods for the parsing of
XML
- * texts.
- * 
- * @author JSON.org
- * @version 2010-12-24
- */
-public class XMLTokener extends JSONTokener {
-
-
-  /**
-   * The table of entity values. It initially contains Character values for amp, apos, gt,
lt, quot.
-   */
-  public static final java.util.HashMap entity;
-
-  static {
-    entity = new java.util.HashMap(8);
-    entity.put("amp", XML.AMP);
-    entity.put("apos", XML.APOS);
-    entity.put("gt", XML.GT);
-    entity.put("lt", XML.LT);
-    entity.put("quot", XML.QUOT);
-  }
-
-  /**
-   * Construct an XMLTokener from a string.
-   * 
-   * @param s A source string.
-   */
-  public XMLTokener(String s) {
-    super(s);
-  }
-
-  /**
-   * Get the text in the CDATA block.
-   * 
-   * @return The string up to the <code>]]&gt;</code>.
-   * @throws JSONException If the <code>]]&gt;</code> is not found.
-   */
-  public String nextCDATA() throws JSONException {
-    char c;
-    int i;
-    StringBuffer sb = new StringBuffer();
-    for (;;) {
-      c = next();
-      if (end()) {
-        throw syntaxError("Unclosed CDATA");
-      }
-      sb.append(c);
-      i = sb.length() - 3;
-      if (i >= 0 && sb.charAt(i) == ']' && sb.charAt(i + 1) == ']' &&
sb.charAt(i + 2) == '>') {
-        sb.setLength(i);
-        return sb.toString();
-      }
-    }
-  }
-
-
-  /**
-   * Get the next XML outer token, trimming whitespace. There are two kinds of tokens: the
'<'
-   * character which begins a markup tag, and the content text between markup tags.
-   *
-   * @return A string, or a '<' Character, or null if there is no more source text.
-   * @throws JSONException
-   */
-  public Object nextContent() throws JSONException {
-    char c;
-    StringBuffer sb;
-    do {
-      c = next();
-    } while (Character.isWhitespace(c));
-    if (c == 0) {
-      return null;
-    }
-    if (c == '<') {
-      return XML.LT;
-    }
-    sb = new StringBuffer();
-    for (;;) {
-      if (c == '<' || c == 0) {
-        back();
-        return sb.toString().trim();
-      }
-      if (c == '&') {
-        sb.append(nextEntity(c));
-      } else {
-        sb.append(c);
-      }
-      c = next();
-    }
-  }
-
-
-  /**
-   * Return the next entity. These entities are translated to Characters:
-   * <code>&amp;  &apos;  &gt;  &lt;  &quot;</code>.
-   * 
-   * @param ampersand An ampersand character.
-   * @return A Character or an entity String if the entity is not recognized.
-   * @throws JSONException If missing ';' in XML entity.
-   */
-  public Object nextEntity(char ampersand) throws JSONException {
-    StringBuffer sb = new StringBuffer();
-    for (;;) {
-      char c = next();
-      if (Character.isLetterOrDigit(c) || c == '#') {
-        sb.append(Character.toLowerCase(c));
-      } else if (c == ';') {
-        break;
-      } else {
-        throw syntaxError("Missing ';' in XML entity: &" + sb);
-      }
-    }
-    String string = sb.toString();
-    Object object = entity.get(string);
-    return object != null ? object : ampersand + string + ";";
-  }
-
-
-  /**
-   * Returns the next XML meta token. This is used for skipping over <!...> and <?...?>
structures.
-   * 
-   * @return Syntax characters (<code>< > / = ! ?</code>) are returned
as Character, and strings and
-   *         names are returned as Boolean. We don't care what the values actually are.
-   * @throws JSONException If a string is not properly closed or if the XML is badly structured.
-   */
-  public Object nextMeta() throws JSONException {
-    char c;
-    char q;
-    do {
-      c = next();
-    } while (Character.isWhitespace(c));
-    switch (c) {
-      case 0:
-        throw syntaxError("Misshaped meta tag");
-      case '<':
-        return XML.LT;
-      case '>':
-        return XML.GT;
-      case '/':
-        return XML.SLASH;
-      case '=':
-        return XML.EQ;
-      case '!':
-        return XML.BANG;
-      case '?':
-        return XML.QUEST;
-      case '"':
-      case '\'':
-        q = c;
-        for (;;) {
-          c = next();
-          if (c == 0) {
-            throw syntaxError("Unterminated string");
-          }
-          if (c == q) {
-            return Boolean.TRUE;
-          }
-        }
-      default:
-        for (;;) {
-          c = next();
-          if (Character.isWhitespace(c)) {
-            return Boolean.TRUE;
-          }
-          switch (c) {
-            case 0:
-            case '<':
-            case '>':
-            case '/':
-            case '=':
-            case '!':
-            case '?':
-            case '"':
-            case '\'':
-              back();
-              return Boolean.TRUE;
-          }
-        }
-    }
-  }
-
-
-  /**
-   * Get the next XML Token. These tokens are found inside of angle brackets. It may be one
of these
-   * characters: <code>/ > = ! ?</code> or it may be a string wrapped in single
quotes or double
-   * quotes, or it may be a name.
-   * 
-   * @return a String or a Character.
-   * @throws JSONException If the XML is not well formed.
-   */
-  public Object nextToken() throws JSONException {
-    char c;
-    char q;
-    StringBuffer sb;
-    do {
-      c = next();
-    } while (Character.isWhitespace(c));
-    switch (c) {
-      case 0:
-        throw syntaxError("Misshaped element");
-      case '<':
-        throw syntaxError("Misplaced '<'");
-      case '>':
-        return XML.GT;
-      case '/':
-        return XML.SLASH;
-      case '=':
-        return XML.EQ;
-      case '!':
-        return XML.BANG;
-      case '?':
-        return XML.QUEST;
-
-      // Quoted string
-
-      case '"':
-      case '\'':
-        q = c;
-        sb = new StringBuffer();
-        for (;;) {
-          c = next();
-          if (c == 0) {
-            throw syntaxError("Unterminated string");
-          }
-          if (c == q) {
-            return sb.toString();
-          }
-          if (c == '&') {
-            sb.append(nextEntity(c));
-          } else {
-            sb.append(c);
-          }
-        }
-      default:
-
-        // Name
-
-        sb = new StringBuffer();
-        for (;;) {
-          sb.append(c);
-          c = next();
-          if (Character.isWhitespace(c)) {
-            return sb.toString();
-          }
-          switch (c) {
-            case 0:
-              return sb.toString();
-            case '>':
-            case '/':
-            case '=':
-            case '!':
-            case '?':
-            case '[':
-            case ']':
-              back();
-              return sb.toString();
-            case '<':
-            case '"':
-            case '\'':
-              throw syntaxError("Bad character in a name");
-          }
-        }
-    }
-  }
-
-
-  /**
-   * Skip characters until past the requested string. If it is not found, we are left at
the end of
-   * the source with a result of false.
-   * 
-   * @param to A string to skip past.
-   * @throws JSONException
-   */
-  public boolean skipPast(String to) throws JSONException {
-    boolean b;
-    char c;
-    int i;
-    int j;
-    int offset = 0;
-    int length = to.length();
-    char[] circle = new char[length];
-
-    /*
-     * First fill the circle buffer with as many characters as are in the to string. If we
reach an
-     * early end, bail.
-     */
-
-    for (i = 0; i < length; i += 1) {
-      c = next();
-      if (c == 0) {
-        return false;
-      }
-      circle[i] = c;
-    }
-    /*
-     * We will loop, possibly for all of the remaining characters.
-     */
-    for (;;) {
-      j = offset;
-      b = true;
-      /*
-       * Compare the circle buffer with the to string.
-       */
-      for (i = 0; i < length; i += 1) {
-        if (circle[j] != to.charAt(i)) {
-          b = false;
-          break;
-        }
-        j += 1;
-        if (j >= length) {
-          j -= length;
-        }
-      }
-      /*
-       * If we exit the loop with b intact, then victory is ours.
-       */
-      if (b) {
-        return true;
-      }
-      /*
-       * Get the next character. If there isn't one, then defeat is ours.
-       */
-      c = next();
-      if (c == 0) {
-        return false;
-      }
-      /*
-       * Shove the character in the circle buffer and advance the circle offset. The offset
is mod
-       * n.
-       */
-      circle[offset] = c;
-      offset += 1;
-      if (offset >= length) {
-        offset -= length;
-      }
-    }
-  }
-}


Mime
View raw message