static svn_error_t * vbindf(svn_sqlite__stmt_t *stmt, const char *fmt, va_list ap) { int count; for (count = 1; *fmt; fmt++, count++) { const void *blob; apr_size_t blob_size; switch (*fmt) { case 's': SVN_ERR(svn_sqlite__bind_text(stmt, count, va_arg(ap, const char *))); break; case 'i': SVN_ERR(svn_sqlite__bind_int64(stmt, count, va_arg(ap, apr_int64_t))); break; case 'b': blob = va_arg(ap, const void *); blob_size = va_arg(ap, apr_size_t); SVN_ERR(svn_sqlite__bind_blob(stmt, count, blob, blob_size)); break; default: SVN_ERR_MALFUNCTION(); } } return SVN_NO_ERROR; }
static svn_error_t * vbindf(svn_sqlite__stmt_t *stmt, const char *fmt, va_list ap) { int count; for (count = 1; *fmt; fmt++, count++) { const void *blob; apr_size_t blob_size; const svn_token_map_t *map; switch (*fmt) { case 's': SVN_ERR(svn_sqlite__bind_text(stmt, count, va_arg(ap, const char *))); break; case 'd': SVN_ERR(svn_sqlite__bind_int(stmt, count, va_arg(ap, int))); break; case 'i': case 'L': SVN_ERR(svn_sqlite__bind_int64(stmt, count, va_arg(ap, apr_int64_t))); break; case 'b': blob = va_arg(ap, const void *); blob_size = va_arg(ap, apr_size_t); SVN_ERR(svn_sqlite__bind_blob(stmt, count, blob, blob_size)); break; case 'r': SVN_ERR(svn_sqlite__bind_revnum(stmt, count, va_arg(ap, svn_revnum_t))); break; case 't': map = va_arg(ap, const svn_token_map_t *); SVN_ERR(svn_sqlite__bind_token(stmt, count, map, va_arg(ap, int))); break; case 'n': /* Skip this column: no binding */ break; default: SVN_ERR_MALFUNCTION(); } } return SVN_NO_ERROR; }
svn_error_t * svn_sqlite__bind_properties(svn_sqlite__stmt_t *stmt, int slot, const apr_hash_t *props, apr_pool_t *scratch_pool) { svn_skel_t *skel; svn_stringbuf_t *properties; if (props == NULL) return svn_error_trace(svn_sqlite__bind_blob(stmt, slot, NULL, 0)); SVN_ERR(svn_skel__unparse_proplist(&skel, props, scratch_pool)); properties = svn_skel__unparse(skel, scratch_pool); return svn_error_trace(svn_sqlite__bind_blob(stmt, slot, properties->data, properties->len)); }