content: /*
   * This file is part of "JTA - Telnet/SSH for the JAVA(tm) platform".
   *
   * (c) Matthias L. Jugel, Marcus Meißner 1996-2005. All Rights Reserved.
   *
   * Please visit http://javatelnet.org/ for updates and contact.
   *
   * --LICENSE NOTICE--
   * This program 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
   * of the License, or (at your option) any later version.
   *
   * This program 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 this program; if not, write to the Free Software
   * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
   * --LICENSE NOTICE--
   *
   */
  
  package de.mud.telnet;
  
  import java.util.Vector;
  
  /**
   * A script handler, that tries to match strings and returns true when
   * it found the string it searched for.
   * <P>
   * <B>Maintainer:</B> Matthias L. Jugel
   *
   * @version $Id: ScriptHandler.java 499 2005-09-29 08:24:54Z leo $
   * @author Matthias L. Jugel, Marcus Mei�ner
   */
  public class ScriptHandler {
  
    /** debugging level */
    private final static int debug = 0;
  
    private int matchPos;		// current position in the match
    private byte[] match;		// the current bytes to look for
    private boolean done = true;	// nothing to look for!
  
    /**
     * Setup the parser using the passed string. 
     * @param match the string to look for
     */
    public void setup(String match) {
      if(match == null) return;
      this.match = match.getBytes();
      matchPos = 0;
      done = false;
    }
  
    /**
     * Try to match the byte array s against the match string.
     * @param s the array of bytes to match against
     * @param length the amount of bytes in the array
     * @return true if the string was found, else false
     */
    public boolean match(byte[] s, int length) {
      if(done) return true;
      for(int i = 0; !done && i < length; i++) {
        if(s[i] == match[matchPos]) {
          // the whole thing matched so, return the match answer 
          // and reset to use the next match
          if(++matchPos >= match.length) {
            done = true;
            return true;
          }
        } else
          matchPos = 0; // get back to the beginning
      }
      return false;
    }
  }
  