浏览代码

db.connect -p: substitute variables in database settings

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@56199 15284696-431f-4ddb-bdfa-cd5b030d7da7
Martin Landa 12 年之前
父节点
当前提交
2fa39ba788
共有 1 个文件被更改,包括 36 次插入3 次删除
  1. 36 3
      db/db.connect/main.c

+ 36 - 3
db/db.connect/main.c

@@ -49,7 +49,8 @@ int main(int argc, char *argv[])
 
 
     print = G_define_flag();
     print = G_define_flag();
     print->key = 'p';
     print->key = 'p';
-    print->description = _("Print current connection parameters and exit");
+    print->label = _("Print current connection parameters and exit");
+    print->description = _("Substitute variables in database settings");
     print->guisection = _("Print");
     print->guisection = _("Print");
 
 
     shell = G_define_flag();
     shell = G_define_flag();
@@ -124,10 +125,42 @@ int main(int argc, char *argv[])
                 fprintf(stdout, "group=%s\n", conn.group ? conn.group : "");
                 fprintf(stdout, "group=%s\n", conn.group ? conn.group : "");
             }
             }
             else {
             else {
+                char database[GPATH_MAX];
+                
+                if (conn.databaseName) {
+                    char *c, buf[GPATH_MAX];
+                    
+                    strcpy(database, conn.databaseName);
+                    
+                    strcpy(buf, database);
+                    c = (char *)strstr(buf, "$GISDBASE");
+                    if (c != NULL) {
+                        *c = '\0';
+                        sprintf(database, "%s%s%s", buf, G_gisdbase(), c + 9);
+                    }
+                    
+                    strcpy(buf, database);
+                    c = (char *)strstr(buf, "$LOCATION_NAME");
+                    if (c != NULL) {
+                        *c = '\0';
+                        sprintf(database, "%s%s%s", buf, G_location(), c + 14);
+                    }
+
+                    strcpy(buf, database);
+                    c = (char *)strstr(buf, "$MAPSET");
+                    if (c != NULL) {
+                        *c = '\0';
+                        sprintf(database, "%s%s%s", buf, G_mapset(), c + 7);
+                    }
+                }
+                else {
+                    database[0] = '\0';
+                }
+                    
                 fprintf(stdout, "driver: %s\n",
                 fprintf(stdout, "driver: %s\n",
                         conn.driverName ? conn.driverName : "");
                         conn.driverName ? conn.driverName : "");
-                fprintf(stdout, "database: %s\n",
-                        conn.databaseName ? conn.databaseName : "");
+                /* substitute variables */
+                fprintf(stdout, "database: %s\n", database);
                 fprintf(stdout, "schema: %s\n",
                 fprintf(stdout, "schema: %s\n",
                         conn.schemaName ? conn.schemaName : "");
                         conn.schemaName ? conn.schemaName : "");
                 fprintf(stdout, "group: %s\n", conn.group ? conn.group : "");
                 fprintf(stdout, "group: %s\n", conn.group ? conn.group : "");