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

Reply via email to