]> granicus.if.org Git - postgis/commitdiff
Allow GUI to create partial connection strings.
authorPaul Ramsey <pramsey@cleverelephant.ca>
Mon, 17 May 2010 23:33:31 +0000 (23:33 +0000)
committerPaul Ramsey <pramsey@cleverelephant.ca>
Mon, 17 May 2010 23:33:31 +0000 (23:33 +0000)
git-svn-id: http://svn.osgeo.org/postgis/trunk@5622 b70326c6-7e19-0410-871a-916f4a2858ee

loader/shp2pgsql-core.c
loader/shp2pgsql-core.h
loader/shp2pgsql-gui.c

index 4624a9a336eeff20d6209a6986ba4d5f8a8dab75..222f00725daf4dfc4e9c62544ce819216d888c01 100644 (file)
@@ -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);
 
index 2ab2b610e1e488292e2c1f167d3f82c1e031c36a..419909c0e4ec01ccb12055e67666f9fa571d1851 100644 (file)
@@ -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);
index 4c7356002fce224b0eafc09d9bf97232ad63f385..8e6af16f64b2c2c47361528572f02c77ab8024b1 100644 (file)
@@ -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