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; }
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; }