30
30
int main(int argc, char *argv[])
32
32
struct Option *driver, *database, *user, *password;
33
34
struct GModule *module;
36
struct termios tios, tios2;
40
36
/* Initialize the GIS calls */
41
37
G_gisinit(argv[0]);
43
39
module = G_define_module();
44
module->keywords = _("database, connection settings");
45
module->description = _("Sets user/password for driver/database.");
40
G_add_keyword(_("database"));
41
G_add_keyword(_("connection settings"));
42
module->description = _("Sets user/password for DB driver/database.");
47
driver = G_define_standard_option(G_OPT_DRIVER);
44
driver = G_define_standard_option(G_OPT_DB_DRIVER);
48
45
driver->options = db_list_drivers();
49
46
driver->required = YES;
50
driver->answer = db_get_default_driver_name();
47
driver->answer = (char *) db_get_default_driver_name();
52
database = G_define_standard_option(G_OPT_DATABASE);
49
database = G_define_standard_option(G_OPT_DB_DATABASE);
53
50
database->required = YES;
54
database->answer = db_get_default_database_name();
51
database->answer = (char *) db_get_default_database_name();
56
53
user = G_define_option();
57
54
user->key = "user";
58
55
user->type = TYPE_STRING;
59
56
user->required = NO;
60
57
user->multiple = NO;
61
user->description = _("Username");
58
user->description = _("Username to set for DB connection");
62
59
user->guisection = _("Settings");
64
61
password = G_define_option();
65
62
password->key = "password";
66
63
password->type = TYPE_STRING;
67
64
password->required = NO;
68
65
password->multiple = NO;
69
password->description = _("Password");
66
password->description = _("Password to set for DB connection");
70
67
password->guisection = _("Settings");
69
print = G_define_flag();
71
print->description = _("Print connection settings and exit");
72
print->guisection = _("Print");
72
74
if (G_parser(argc, argv))
76
if (!password->answer && isatty(fileno(stdin))) {
79
tcgetattr(STDIN_FILENO, &tios);
81
tios2.c_lflag &= ~ECHO;
82
tcsetattr(STDIN_FILENO, TCSAFLUSH, &tios2);
86
_("\nEnter database password for connection\n<%s:%s:user=%s>\n"),
87
driver->answer, database->answer, user->answer);
88
fprintf(stderr, _("Hit RETURN to cancel request\n"));
90
} while (!G_gets(answer));
92
tcsetattr(STDIN_FILENO, TCSANOW, &tios);
95
if (strlen(answer) == 0) {
96
G_message(_("Exiting. Not changing current settings"));
100
G_message(_("New password set"));
101
password->answer = G_store(answer);
107
(driver->answer, database->answer, user->answer,
108
password->answer) == DB_FAILED) {
109
G_fatal_error(_("Unable to set user/password"));
78
/* print all settings to standard output and exit */
79
db_get_login_dump(stdout);
83
if (db_set_login(driver->answer, database->answer, user->answer,
84
password->answer) == DB_FAILED) {
85
G_fatal_error(_("Unable to set user/password"));
112
88
if (password->answer)
113
/* defined in lib/db/dbmi_base/login.c */
114
G_important_message(_("The password was stored in file (%s/.grasslogin64)"), G_home());
89
G_important_message(_("The password was stored in file (%s%cdblogin)"), G_config_path(), HOST_DIRSEP);
116
91
exit(EXIT_SUCCESS);