Changeset: 2db1736428c2 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/2db1736428c2 Modified Files: sql/server/rel_remote.c sql/server/rel_remote.h Branch: odbc_loader Log Message:
Add sa_msettings_to_string() diffs (60 lines): diff --git a/sql/server/rel_remote.c b/sql/server/rel_remote.c --- a/sql/server/rel_remote.c +++ b/sql/server/rel_remote.c @@ -41,8 +41,20 @@ sa_msettings_create(allocator *sa) return msettings_create_with(msettings_sa_allocator, sa); } -#define mapi_prefix "mapi:" -#define monetdb_prefix "monetdb" +char* +sa_msettings_to_string(const msettings *mp, allocator *sa, size_t size_hint) +{ + size_t buffer_size = size_hint ? size_hint + 1 : 80; + do { + char *buffer = sa_alloc(sa, buffer_size); + if (!buffer) + return NULL; + size_t needed = msettings_write_url(mp, buffer, buffer_size); + if (needed + 1 <= buffer_size) + return buffer; + buffer_size = needed + 1; + } while (1); +} int mapiuri_valid( const char *uri, allocator *sa) @@ -62,21 +74,7 @@ mapiuri_uri( const char *uri, allocator return NULL; msetting_set_string(mp, MP_TABLESCHEMA, ""); msetting_set_string(mp, MP_TABLE, ""); - - size_t buffer_size = strlen(uri) + 1; - do { - char *buffer = sa_alloc(sa, buffer_size); - if (!buffer) - return NULL; - size_t needed = msettings_write_url(mp, buffer, buffer_size); - if (needed + 1 <= buffer_size) - return buffer; - // it's unlikely but remotely possible that the url as written by - // msettings_write_url is longer, for example because it escapes some - // characters that were not escaped in the original - buffer_size = needed + 1; - } while (1); - + return sa_msettings_to_string(mp, sa, strlen(uri)); } const char * diff --git a/sql/server/rel_remote.h b/sql/server/rel_remote.h --- a/sql/server/rel_remote.h +++ b/sql/server/rel_remote.h @@ -18,6 +18,7 @@ // maybe this needs to be somewhere more global? extern msettings *sa_msettings_create(allocator *sa); +extern char *sa_msettings_to_string(const msettings *mp, allocator *sa, size_t size_hint); sql_export int mapiuri_valid( const char *uri, allocator *sa); extern const char *mapiuri_uri(const char *uri, allocator *sa); _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org