|
@@ -4,12 +4,12 @@
|
|
* MODULE: db.login
|
|
* MODULE: db.login
|
|
* AUTHOR(S): Radim Blazek <radim.blazek gmail.com> (original contributor)
|
|
* AUTHOR(S): Radim Blazek <radim.blazek gmail.com> (original contributor)
|
|
* Glynn Clements <glynn gclements.plus.com>, Markus Neteler <neteler itc.it>
|
|
* Glynn Clements <glynn gclements.plus.com>, Markus Neteler <neteler itc.it>
|
|
- * PURPOSE:
|
|
|
|
- * COPYRIGHT: (C) 2004-2006 by the GRASS Development Team
|
|
|
|
|
|
+ * PURPOSE: Store db login settings
|
|
|
|
+ * COPYRIGHT: (C) 2004-2009 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
|
|
|
|
- * for details.
|
|
|
|
|
|
+ * This program is free software under the GNU General
|
|
|
|
+ * Public License (>=v2). Read the file COPYING that
|
|
|
|
+ * comes with GRASS for details.
|
|
*
|
|
*
|
|
*****************************************************************************/
|
|
*****************************************************************************/
|
|
#include <stdio.h>
|
|
#include <stdio.h>
|
|
@@ -30,28 +30,23 @@ int main(int argc, char *argv[])
|
|
{
|
|
{
|
|
struct Option *driver, *database, *user, *password;
|
|
struct Option *driver, *database, *user, *password;
|
|
struct GModule *module;
|
|
struct GModule *module;
|
|
-
|
|
|
|
-#ifdef HAVE_TERMIOS_H
|
|
|
|
- struct termios tios, tios2;
|
|
|
|
-#endif
|
|
|
|
- char answer[200];
|
|
|
|
-
|
|
|
|
|
|
+
|
|
/* Initialize the GIS calls */
|
|
/* Initialize the GIS calls */
|
|
G_gisinit(argv[0]);
|
|
G_gisinit(argv[0]);
|
|
|
|
|
|
module = G_define_module();
|
|
module = G_define_module();
|
|
G_add_keyword(_("database"));
|
|
G_add_keyword(_("database"));
|
|
- G_add_keyword(_("SQL"));
|
|
|
|
|
|
+ G_add_keyword(_("connection"));
|
|
module->description = _("Sets user/password for driver/database.");
|
|
module->description = _("Sets user/password for driver/database.");
|
|
|
|
|
|
driver = G_define_standard_option(G_OPT_DB_DRIVER);
|
|
driver = G_define_standard_option(G_OPT_DB_DRIVER);
|
|
driver->options = db_list_drivers();
|
|
driver->options = db_list_drivers();
|
|
driver->required = YES;
|
|
driver->required = YES;
|
|
- driver->answer = db_get_default_driver_name();
|
|
|
|
|
|
+ driver->answer = (char *) db_get_default_driver_name();
|
|
|
|
|
|
database = G_define_standard_option(G_OPT_DB_DATABASE);
|
|
database = G_define_standard_option(G_OPT_DB_DATABASE);
|
|
database->required = YES;
|
|
database->required = YES;
|
|
- database->answer = db_get_default_database_name();
|
|
|
|
|
|
+ database->answer = (char *) db_get_default_database_name();
|
|
|
|
|
|
user = G_define_option();
|
|
user = G_define_option();
|
|
user->key = "user";
|
|
user->key = "user";
|
|
@@ -70,47 +65,13 @@ int main(int argc, char *argv[])
|
|
if (G_parser(argc, argv))
|
|
if (G_parser(argc, argv))
|
|
exit(EXIT_FAILURE);
|
|
exit(EXIT_FAILURE);
|
|
|
|
|
|
- /* set connection */
|
|
|
|
- if (!password->answer && isatty(fileno(stdin))) {
|
|
|
|
- for (;;) {
|
|
|
|
-#ifdef HAVE_TERMIOS_H
|
|
|
|
- tcgetattr(STDIN_FILENO, &tios);
|
|
|
|
- tios2 = tios;
|
|
|
|
- tios2.c_lflag &= ~ECHO;
|
|
|
|
- tcsetattr(STDIN_FILENO, TCSAFLUSH, &tios2);
|
|
|
|
-#endif
|
|
|
|
- do {
|
|
|
|
- fprintf(stderr,
|
|
|
|
- _("\nEnter database password for connection\n<%s:%s:user=%s>\n"),
|
|
|
|
- driver->answer, database->answer, user->answer);
|
|
|
|
- fprintf(stderr, _("Hit RETURN to cancel request\n"));
|
|
|
|
- fprintf(stderr, ">");
|
|
|
|
- *answer = '\0';
|
|
|
|
- G_getl(answer, sizeof(answer), stdin);
|
|
|
|
- } while (0);
|
|
|
|
-#ifdef HAVE_TERMIOS_H
|
|
|
|
- tcsetattr(STDIN_FILENO, TCSANOW, &tios);
|
|
|
|
-#endif
|
|
|
|
- G_strip(answer);
|
|
|
|
- if (strlen(answer) == 0) {
|
|
|
|
- G_message(_("Exiting. Not changing current settings"));
|
|
|
|
- return -1;
|
|
|
|
- }
|
|
|
|
- else {
|
|
|
|
- G_message(_("New password set"));
|
|
|
|
- password->answer = G_store(answer);
|
|
|
|
- break;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- if (db_set_login
|
|
|
|
- (driver->answer, database->answer, user->answer,
|
|
|
|
- password->answer) == DB_FAILED) {
|
|
|
|
|
|
+ if (db_set_login(driver->answer, database->answer, user->answer,
|
|
|
|
+ password->answer) == DB_FAILED) {
|
|
G_fatal_error(_("Unable to set user/password"));
|
|
G_fatal_error(_("Unable to set user/password"));
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
if (password->answer)
|
|
if (password->answer)
|
|
- G_warning(_("The password was stored in file"));
|
|
|
|
-
|
|
|
|
|
|
+ G_important_message(_("The password was stored in file (%s/dblogin)"), CONFIG_DIR);
|
|
|
|
+
|
|
exit(EXIT_SUCCESS);
|
|
exit(EXIT_SUCCESS);
|
|
}
|
|
}
|