Example #1
0
static int match_host(const struct url_info *url_info,
		      const struct url_info *pattern_info)
{
	const char *url = url_info->url + url_info->host_off;
	const char *pat = pattern_info->url + pattern_info->host_off;
	int url_len = url_info->host_len;
	int pat_len = pattern_info->host_len;

	while (url_len && pat_len) {
		const char *url_next = end_of_token(url, '.', url_len);
		const char *pat_next = end_of_token(pat, '.', pat_len);

		if (pat_next == pat + 1 && pat[0] == '*')
			/* wildcard matches anything */
			;
		else if ((pat_next - pat) == (url_next - url) &&
			 !memcmp(url, pat, url_next - url))
			/* the components are the same */
			;
		else
			return 0; /* found an unmatch */

		if (url_next < url + url_len)
			url_next++;
		url_len -= url_next - url;
		url = url_next;
		if (pat_next < pat + pat_len)
			pat_next++;
		pat_len -= pat_next - pat;
		pat = pat_next;
	}

	return (!url_len && !pat_len);
}
Example #2
0
char *
find_next_token (const char **ptr, unsigned int *lengthptr)
{
  const char *p = next_token (*ptr);

  if (*p == '\0')
    return 0;

  *ptr = end_of_token (p);
  if (lengthptr != 0)
    *lengthptr = *ptr - p;

  return (char *)p;
}
Example #3
0
char *
find_next_token (char **ptr, unsigned int *lengthptr)
{
  char *p = next_token (*ptr);
  char *end;

  if (*p == '\0')
    return 0;

  *ptr = end = end_of_token (p);
  if (lengthptr != 0)
    *lengthptr = end - p;
  return p;
}
Example #4
0
File: sh.c Project: danhil/050ade
/* gettoken: read one token and let *outptr point to it. */
int gettoken(char** outptr)
{
	token_type_t	type;

	*outptr = token;

	while (*input_char == ' '|| *input_char == '\t')
		input_char++;

	*token++ = *input_char;

	switch (*input_char++) {
	case '\n':
		type = NEWLINE;
		break;

	case '<':
		type = INPUT;
		break;

	case '>':
		type = OUTPUT;
		break;

	case '&':
		type = AMPERSAND;
		break;

	case '|':
		type = PIPE; 
		break;

	default:
		type = NORMAL;

		while (!end_of_token(*input_char))
			*token++ = *input_char++;
	}

	*token++ = 0; /* null-terminate the string. */

	return type;
}