private boolean readUntilMatch(byte[] match, boolean withinBlock) throws IOException {
	      int i = 0;
	      while (true) {
	        int b = fsin.read();
	        // end of file:
	        if (b == -1) return false;
	        // save to buffer:
	        if (withinBlock) buffer.write(b);
	        
	        // check if we're matching:
	        if (b == match[i]) {
	          i++;
	          if (i >= match.length) return true;
	        } else i = 0;
	        // see if we've passed the stop point:
	        if (!withinBlock && i == 0 && fsin.getPos() >= end) return false;
	      }
	    }