From e1468a20ac373c8366595ce97a7e78b1fe673545 Mon Sep 17 00:00:00 2001 From: Paul Ramsey Date: Mon, 17 May 2010 23:33:31 +0000 Subject: [PATCH] Allow GUI to create partial connection strings. git-svn-id: http://svn.osgeo.org/postgis/trunk@5622 b70326c6-7e19-0410-871a-916f4a2858ee --- loader/shp2pgsql-core.c | 1 - loader/shp2pgsql-core.h | 1 + loader/shp2pgsql-gui.c | 58 +++++++++++++++++++++++------------------ 3 files changed, 34 insertions(+), 26 deletions(-) diff --git a/loader/shp2pgsql-core.c b/loader/shp2pgsql-core.c index 4624a9a33..222f00725 100644 --- a/loader/shp2pgsql-core.c +++ b/loader/shp2pgsql-core.c @@ -41,7 +41,6 @@ void lwgeom_init_allocators() */ char *utf8(const char *fromcode, char *inputbuf); -void vasbappend(stringbuffer_t *sb, char *fmt, ... ); char *escape_copy_string(char *str); char *escape_insert_string(char *str); diff --git a/loader/shp2pgsql-core.h b/loader/shp2pgsql-core.h index 2ab2b610e..419909c0e 100644 --- a/loader/shp2pgsql-core.h +++ b/loader/shp2pgsql-core.h @@ -206,6 +206,7 @@ typedef struct shp_connection_state /* Externally accessible functions */ void strtolower(char *s); +void vasbappend(stringbuffer_t *sb, char *fmt, ... ); void set_config_defaults(SHPLOADERCONFIG *config); SHPLOADERSTATE *ShpLoaderCreate(SHPLOADERCONFIG *config); diff --git a/loader/shp2pgsql-gui.c b/loader/shp2pgsql-gui.c index 4c7356002..8e6af16f6 100644 --- a/loader/shp2pgsql-gui.c +++ b/loader/shp2pgsql-gui.c @@ -436,40 +436,48 @@ pgui_read_connection(void) const char *pg_db = gtk_entry_get_text(GTK_ENTRY(entry_pg_db)); char *connection_string = NULL; - if ( ! pg_host || strlen(pg_host) == 0 ) - { - pgui_seterr("Fill in the server host."); - return NULL; - } - if ( ! pg_port || strlen(pg_port) == 0 ) - { - pgui_seterr("Fill in the server port."); - return NULL; - } - if ( ! pg_user || strlen(pg_user) == 0 ) + stringbuffer_t *sb = stringbuffer_create(); + + /* Read the host */ + if ( pg_host && strlen(pg_host) > 0 ) { - pgui_seterr("Fill in the user name."); - return NULL; + vasbappend(sb, "host=%s ", pg_host); } - if ( ! pg_db || strlen(pg_db) == 0 ) - { - pgui_seterr("Fill in the database name."); - return NULL; + + /* Read the port */ + if ( pg_port && strlen(pg_port) > 0 ) + { + if ( ! atoi(pg_port) ) + { + pgui_seterr("Server port must be a number."); + stringbuffer_destroy(sb); + return NULL; + } + vasbappend(sb, "port=%s ", pg_port); } - if ( ! atoi(pg_port) ) + + /* Read the user name */ + if ( pg_user && strlen(pg_user) > 0 ) { - pgui_seterr("Server port must be a number."); - return NULL; + vasbappend(sb, "user=%s ", pg_user); } - if ( ! lw_asprintf(&connection_string, "user=%s password=%s port=%s host=%s dbname=%s", pg_user, pg_pass, pg_port, pg_host, pg_db) ) + + /* Read the database name */ + if ( pg_db && strlen(pg_db) > 0 ) { - return NULL; + vasbappend(sb, "dbname=%s ", pg_db); } - if ( connection_string ) + + /* Read the password */ + if ( pg_pass && strlen(pg_pass) > 0 ) { - return connection_string; + vasbappend(sb, "password=%s ", pg_pass); } - return NULL; + + /* Return the connection string */ + connection_string = strdup(stringbuffer_getstring(sb)); + stringbuffer_destroy(sb); + return connection_string; } static void -- 2.40.0