search (char *buffer, size_t buf_len, char *string, size_t str_len, char *matrix)
search (const char *buffer, const size_t buf_len, const char *string, const size_t str_len, const char *matrix)
search (char *buffer,	size_t buf_len, char *string, size_t str_len, char *matrix){  size_t pos;  pos = str_len - 1;  while (pos < buf_len)    {      if (matrix[(int) buffer[pos]])	pos += matrix[(int) buffer[pos]];      else	{	  if (memcmp (&buffer[pos - str_len], string, str_len))	    pos++; /* pos += str_len is tempting but assumes that the last char		    * occurs only once FIXME		    * we could look for the last char instead in if and use the		    * second to last occurence in the matrix */	  else	    return &buffer[pos];	}    }  return NULL;}