connect.c 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. /*!
  2. \file lib/db/dbmi_base/connect.c
  3. \brief DBMI Library (base) - connect to DB
  4. (C) 1999-2009, 2011 by the GRASS Development Team
  5. This program is free software under the GNU General Public License
  6. (>=v2). Read the file COPYING that comes with GRASS for details.
  7. \author Joel Jones (CERL/UIUC), Radim Blazek
  8. \author Doxygenized by Martin Landa <landa.martin gmail.com> (2011)
  9. */
  10. #include <grass/gis.h>
  11. #include <grass/dbmi.h>
  12. /*!
  13. \brief Set default DB connection settings
  14. This function sets environmental variables as DB_DRIVER, DB_DATABASE,
  15. DB_SCHEMA, DB_GROUP.
  16. \param connection pointer to dbConnection with default settings
  17. \return DB_OK
  18. */
  19. int db_set_connection(dbConnection * connection)
  20. {
  21. /* TODO: add checks and return DB_* error code if needed */
  22. G_unsetenv2("DB_DRIVER", G_VAR_MAPSET);
  23. if (connection->driverName)
  24. G_setenv2("DB_DRIVER", connection->driverName, G_VAR_MAPSET);
  25. G_unsetenv2("DB_DATABASE", G_VAR_MAPSET);
  26. if (connection->databaseName)
  27. G_setenv2("DB_DATABASE", connection->databaseName, G_VAR_MAPSET);
  28. G_unsetenv2("DB_SCHEMA", G_VAR_MAPSET);
  29. if (connection->schemaName)
  30. G_setenv2("DB_SCHEMA", connection->schemaName, G_VAR_MAPSET);
  31. G_unsetenv2("DB_GROUP", G_VAR_MAPSET);
  32. if (connection->group)
  33. G_setenv2("DB_GROUP", connection->group, G_VAR_MAPSET);
  34. /* below commented due to new mechanism:
  35. if ( connection->hostName )
  36. G_setenv("DB_HOST", connection->hostName);
  37. if ( connection->location )
  38. G_setenv("DB_LOCATION", connection->location);
  39. if ( connection->user )
  40. G_setenv("DB_USER", connection->user);
  41. if ( connection->password )
  42. G_setenv("DB_PASSWORD", connection->password);
  43. */
  44. return DB_OK;
  45. }
  46. /*!
  47. \brief Get default DB connection settings for the current mapset
  48. \param[out] connection pointer to dbConnection to be modified
  49. \return DB_OK
  50. \return DB_FAILED
  51. */
  52. int db_get_connection(dbConnection * connection)
  53. {
  54. G_zero(connection, sizeof(dbConnection));
  55. connection->driverName = (char *)G_getenv_nofatal2("DB_DRIVER", G_VAR_MAPSET);
  56. connection->databaseName = (char *)G_getenv_nofatal2("DB_DATABASE", G_VAR_MAPSET);
  57. if (connection->driverName == NULL ||
  58. connection->databaseName == NULL)
  59. return DB_FAILED;
  60. connection->schemaName = (char *)G_getenv_nofatal2("DB_SCHEMA", G_VAR_MAPSET);
  61. connection->group = (char *)G_getenv_nofatal2("DB_GROUP", G_VAR_MAPSET);
  62. /* try to get user/password */
  63. db_get_login2(connection->driverName, connection->databaseName,
  64. (const char **) &(connection->user),
  65. (const char **) &(connection->password),
  66. (const char **) &(connection->hostName),
  67. (const char **) &(connection->port));
  68. return DB_OK;
  69. }