Ejemplo n.º 1
0
const char *
odbc_get_str(char **p)
{
	char *s = *p, *end;
	s += strspn(s, SEP);
	if (!*s) odbc_fatal(": unable to get string\n");

	if (strncmp(s, "\"\"\"", 3) == 0) {
		s += 3;
		end = strstr(s, "\"\"\"");
		if (!end) odbc_fatal(": string not terminated\n");
		*end = 0;
		*p = end+3;
	} else if (s[0] == '\"') {
		++s;
		end = strchr(s, '\"');
		if (!end) odbc_fatal(": string not terminated\n");
		*end = 0;
		parse_cstr(s);
		*p = end+1;
	} else {
		return odbc_get_tok(p);
	}
	return s;
}
Ejemplo n.º 2
0
static svn_error_t *
parse_invalid_atoms(const char **msg,
                    svn_boolean_t msg_only,
                    svn_test_opts_t *opts,
                    apr_pool_t *pool)
{
  struct invalid_atoms *ia = invalid_atoms;

  *msg = "parse invalid atoms";

  if (msg_only)
    return SVN_NO_ERROR;

  while (ia->type != 7)
    {
      if (ia->type == 1)
        {
          svn_skel_t *skel = parse_cstr(ia->data, pool);
          if (check_atom(skel, ia->data, ia->len))
            return fail(pool,
                        "failed to detect parsing error in '%s'", ia->data);
        }
      else
        {
          svn_error_t *err = try_explicit_length(ia->data, ia->len,
                                                 strlen(ia->data), pool);
          if (err == SVN_NO_ERROR)
            return fail(pool, "got wrong length in explicit-length atom");
          svn_error_clear(err);
        }

      ia++;
    }

  return SVN_NO_ERROR;
}