[GRASS-SVN] r64060 - in grass/branches/releasebranch_7_0: . db/db.connect
svn_grass at osgeo.org
svn_grass at osgeo.org
Sun Jan 11 10:32:37 PST 2015
Author: martinl
Date: 2015-01-11 10:32:37 -0800 (Sun, 11 Jan 2015)
New Revision: 64060
Modified:
grass/branches/releasebranch_7_0/
grass/branches/releasebranch_7_0/db/db.connect/main.c
Log:
db.connect: substitute variables for database name (-cpd)
(merge r59671 from trunk)
Property changes on: grass/branches/releasebranch_7_0
___________________________________________________________________
Modified: svn:mergeinfo
- /grass/trunk:60497,60563-60566,60817,60922,60976,61046,61096,61141,61994,62085,62105,62179-62180,62182,62190,62403,62422,62424,62429,62437,62466,62469,62484,62487,62491,62494,62501,62506,62508-62509,62515,62518-62519,62521,62526,62533,62539,62541,62555,62562,62566,62570,62573,62575,62585,62588,62597,62603,62606,62608-62609,62614,62618,62628,62632,62638,62642,62648-62649,62652,62654-62657,62666,62691,62705,62709,62723,62730,62739,62741,62743,62746,62750-62752,62757,62762,62785,62798,62800-62801,62803,62805,62812,62822,62824,62828,62831,62838,62845,62847,62850,62856,62879,62881,62886,62904,62907-62908,62910,62912,62914,62916,62918,62920,62925,62932-62933,62935,62940,62942,62944-62946,62949,62955-62956,62958,62960,62962,62964,62966-62968,62970,62973,62975,62977,62981,62983,62985,62987,62989,62991,62993,62995,62997,62999-63000,63003,63005,63007,63009,63011,63013,63015,63017,63020,63022,63024,63026,63028-63031,63033,63035,63037,63040,63043-63044,63047,63049,63051,63053,63055,
63057,63060,63062-63064,63066,63068,63070-63071,63074,63076,63079,63081,63083,63085,63087,63089,63091,63093,63095,63098,63100,63102,63105,63107,63109,63111,63113-63114,63116,63119,63121,63123,63125,63130,63132-63133,63135,63137,63140,63143,63145,63147,63149,63151,63153-63154,63157,63160,63165,63170,63173,63175,63187,63192-63193,63196,63199-63200,63202,63209,63216,63220-63221,63224,63227,63240,63246,63250,63255,63259,63261,63275-63276,63279,63281,63283,63287,63290,63292,63297,63302,63304-63307,63315,63319,63327,63330,63332,63339,63342,63345,63361-63363,63367,63369,63379,63389,63391,63393,63402,63408-63409,63416-63417,63425,63427,63429,63431,63433,63448,63451,63453,63457,63459,63461,63464-63470,63473,63482,63497,63505,63508,63510,63515,63521-63524,63526,63528,63536-63537,63551-63552,63554,63556,63558-63559,63562,63570,63576,63582,63589-63593,63602,63604,63608-63610,63616,63618,63624,63626,63628,63630,63634,63639,63642,63644,63650,63652,63656,63679,63685,63689,63691,63693,63695
,63698,63700-63702,63704,63706-63707,63709,63711,63713,63715,63717-63718,63721-63727,63731,63733,63736,63740-63742,63744-63749,63751-63752,63756,63758,63760-63761,63767,63777,63780,63783,63787,63793,63796-63798,63801,63803,63807-63808,63812,63814,63816,63821,63823-63824,63827-63828,63830-63831,63834-63835,63837-63839,63841,63843-63844,63846-63847,63849,63851,63853,63855-63856,63858-63859,63862,63865,63869,63871,63882,63884,63889-63890,63892-63895,63897-63898,63900,63902-63903,63905,63907,63909-63911,63913-63914,63927,63930-63931,63940-63941,63945,63954-63955,63960,63965,63967,63976-63983,63995,64026,64030,64040,64056
+ /grass/trunk:59671,60497,60563-60566,60817,60922,60976,61046,61096,61141,61994,62085,62105,62179-62180,62182,62190,62403,62422,62424,62429,62437,62466,62469,62484,62487,62491,62494,62501,62506,62508-62509,62515,62518-62519,62521,62526,62533,62539,62541,62555,62562,62566,62570,62573,62575,62585,62588,62597,62603,62606,62608-62609,62614,62618,62628,62632,62638,62642,62648-62649,62652,62654-62657,62666,62691,62705,62709,62723,62730,62739,62741,62743,62746,62750-62752,62757,62762,62785,62798,62800-62801,62803,62805,62812,62822,62824,62828,62831,62838,62845,62847,62850,62856,62879,62881,62886,62904,62907-62908,62910,62912,62914,62916,62918,62920,62925,62932-62933,62935,62940,62942,62944-62946,62949,62955-62956,62958,62960,62962,62964,62966-62968,62970,62973,62975,62977,62981,62983,62985,62987,62989,62991,62993,62995,62997,62999-63000,63003,63005,63007,63009,63011,63013,63015,63017,63020,63022,63024,63026,63028-63031,63033,63035,63037,63040,63043-63044,63047,63049,63051,63053,
63055,63057,63060,63062-63064,63066,63068,63070-63071,63074,63076,63079,63081,63083,63085,63087,63089,63091,63093,63095,63098,63100,63102,63105,63107,63109,63111,63113-63114,63116,63119,63121,63123,63125,63130,63132-63133,63135,63137,63140,63143,63145,63147,63149,63151,63153-63154,63157,63160,63165,63170,63173,63175,63187,63192-63193,63196,63199-63200,63202,63209,63216,63220-63221,63224,63227,63240,63246,63250,63255,63259,63261,63275-63276,63279,63281,63283,63287,63290,63292,63297,63302,63304-63307,63315,63319,63327,63330,63332,63339,63342,63345,63361-63363,63367,63369,63379,63389,63391,63393,63402,63408-63409,63416-63417,63425,63427,63429,63431,63433,63448,63451,63453,63457,63459,63461,63464-63470,63473,63482,63497,63505,63508,63510,63515,63521-63524,63526,63528,63536-63537,63551-63552,63554,63556,63558-63559,63562,63570,63576,63582,63589-63593,63602,63604,63608-63610,63616,63618,63624,63626,63628,63630,63634,63639,63642,63644,63650,63652,63656,63679,63685,63689,63691,63693
,63695,63698,63700-63702,63704,63706-63707,63709,63711,63713,63715,63717-63718,63721-63727,63731,63733,63736,63740-63742,63744-63749,63751-63752,63756,63758,63760-63761,63767,63777,63780,63783,63787,63793,63796-63798,63801,63803,63807-63808,63812,63814,63816,63821,63823-63824,63827-63828,63830-63831,63834-63835,63837-63839,63841,63843-63844,63846-63847,63849,63851,63853,63855-63856,63858-63859,63862,63865,63869,63871,63882,63884,63889-63890,63892-63895,63897-63898,63900,63902-63903,63905,63907,63909-63911,63913-63914,63927,63930-63931,63940-63941,63945,63954-63955,63960,63965,63967,63976-63983,63995,64026,64030,64040,64056
Modified: grass/branches/releasebranch_7_0/db/db.connect/main.c
===================================================================
--- grass/branches/releasebranch_7_0/db/db.connect/main.c 2015-01-11 18:18:01 UTC (rev 64059)
+++ grass/branches/releasebranch_7_0/db/db.connect/main.c 2015-01-11 18:32:37 UTC (rev 64060)
@@ -9,7 +9,7 @@
* Hamish Bowman <hamish_b yahoo com>
* Martin Landa <landa.martin gmail.com> ('d' flag)
* PURPOSE: set parameters for connection to database
- * COPYRIGHT: (C) 2002-2013 by the GRASS Development Team
+ * COPYRIGHT: (C) 2002-2014 by the GRASS Development Team
*
* This program is free software under the GNU General Public
* License (>=v2). Read the file COPYING that comes with GRASS
@@ -23,12 +23,11 @@
#include <grass/dbmi.h>
#include <grass/glocale.h>
-/* database for DBF can be written with variables:
- * database=$GISDBASE/$LOCATION_NAME/$MAPSET/dbf
- */
+static char *substitute_variables(dbConnection *);
int main(int argc, char *argv[])
{
+ char *databaseName;
dbConnection conn;
struct Flag *print, *shell, *check_set_default, *def;
@@ -93,7 +92,7 @@
"select privilege is granted");
group->guisection = _("Set");
- /* commented due to new mechanism:
+ /* commented due to new mechanism - see db.login
user = G_define_option() ;
user->key = "user" ;
user->type = TYPE_STRING ;
@@ -125,54 +124,14 @@
fprintf(stdout, "group=%s\n", conn.group ? conn.group : "");
}
else {
- char database[GPATH_MAX];
+ databaseName = substitute_variables(&conn);
- 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);
- }
-#ifdef __MINGW32__
- if (strcmp(conn.driverName, "sqlite") == 0 ||
- strcmp(conn.driverName, "dbf") == 0) {
- char *p;
- p = database;
- while(*p) {
- if (*p == '/')
- *p = HOST_DIRSEP;
- p++;
- }
- }
-#endif
- }
- else {
- database[0] = '\0';
- }
-
fprintf(stdout, "driver: %s\n",
conn.driverName ? conn.driverName : "");
/* substitute variables */
- fprintf(stdout, "database: %s\n", database);
+ fprintf(stdout, "database: %s\n", databaseName);
+ G_free(database);
+
fprintf(stdout, "schema: %s\n",
conn.schemaName ? conn.schemaName : "");
fprintf(stdout, "group: %s\n", conn.group ? conn.group : "");
@@ -198,16 +157,21 @@
db_set_default_connection();
db_get_connection(&conn);
+ databaseName = substitute_variables(&conn);
G_important_message(_("Default driver / database set to:\n"
"driver: %s\ndatabase: %s"), conn.driverName,
- conn.databaseName);
+ databaseName);
}
+ else {
+ G_important_message(_("DB settings already defined, nothing to do"));
+ }
+
/* they must be a matched pair, so if one is set but not the other
then give up and let the user figure it out */
- else if (!conn.driverName) {
+ if (!conn.driverName) {
G_fatal_error(_("Default driver is not set"));
}
- else if (!conn.databaseName) {
+ if (!conn.databaseName) {
G_fatal_error(_("Default database is not set"));
}
@@ -220,9 +184,10 @@
db_set_default_connection();
db_get_connection(&conn);
+ databaseName = substitute_variables(&conn);
G_important_message(_("Default driver / database set to:\n"
"driver: %s\ndatabase: %s"), conn.driverName,
- conn.databaseName);
+ databaseName);
exit(EXIT_SUCCESS);
}
@@ -246,3 +211,49 @@
exit(EXIT_SUCCESS);
}
+
+char *substitute_variables(dbConnection *conn)
+{
+ char *database, *c, buf[GPATH_MAX];
+
+ if (!conn->databaseName)
+ return NULL;
+
+ database = (char *) G_malloc(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);
+ }
+#ifdef __MINGW32__
+ if (strcmp(conn->driverName, "sqlite") == 0 ||
+ strcmp(conn->driverName, "dbf") == 0) {
+ char *p;
+ p = database;
+ while(*p) {
+ if (*p == '/')
+ *p = HOST_DIRSEP;
+ p++;
+ }
+ }
+#endif
+
+ return database;
+}
More information about the grass-commit
mailing list