Преглед изворни кода

libdbmi: db_get_login_dump() added
db.login: implement print flag
(merge r60471-2 from trunk)


git-svn-id: https://svn.osgeo.org/grass/grass/branches/releasebranch_7_0@60536 15284696-431f-4ddb-bdfa-cd5b030d7da7

Martin Landa пре 11 година
родитељ
комит
bcabdcb7c3
3 измењених фајлова са 47 додато и 4 уклоњено
  1. 12 0
      db/db.login/main.c
  2. 1 0
      include/defs/dbmi.h
  3. 34 4
      lib/db/dbmi_base/login.c

+ 12 - 0
db/db.login/main.c

@@ -30,6 +30,7 @@
 int main(int argc, char *argv[])
 {
     struct Option *driver, *database, *user, *password;
+    struct Flag *print;
     struct GModule *module;
     
     /* Initialize the GIS calls */
@@ -65,9 +66,20 @@ int main(int argc, char *argv[])
     password->description = _("Password to set for DB connection");
     password->guisection = _("Settings");
 
+    print = G_define_flag();
+    print->key = 'p';
+    print->description = _("Print connection settings and exit");
+    print->guisection = _("Print");
+    
     if (G_parser(argc, argv))
         exit(EXIT_FAILURE);
 
+    if (print->answer) {
+        /* print all settings to standard output and exit */
+        db_get_login_dump(stdout);
+        exit(EXIT_SUCCESS);
+    }
+
     if (db_set_login(driver->answer, database->answer, user->answer,
                      password->answer) == DB_FAILED) {
         G_fatal_error(_("Unable to set user/password"));

+ 1 - 0
include/defs/dbmi.h

@@ -411,5 +411,6 @@ void db_zero_string(dbString *);
 unsigned int db_sizeof_string(const dbString *);
 int db_set_login(const char *, const char *, const char *, const char *);
 int db_get_login(const char *, const char *, const char **, const char **);
+int db_get_login_dump(FILE *);
 
 #endif

+ 34 - 4
lib/db/dbmi_base/login.c

@@ -171,8 +171,8 @@ static int write_file(LOGIN * login)
   \param user user name
   \param password password string
   
-  \return DB_OK
-  \return DB_FAILED
+  \return DB_OK on success
+  \return DB_FAILED on failure
  */
 int db_set_login(const char *driver, const char *database, const char *user,
 		 const char *password)
@@ -225,8 +225,8 @@ int db_set_login(const char *driver, const char *database, const char *user,
   \param[out] user name
   \param[out] password string
   
-  \return DB_OK
-  \return DB_FAILED
+  \return DB_OK on success
+  \return DB_FAILED on failure
 */
 int db_get_login(const char *driver, const char *database, const char **user,
 		 const char **password)
@@ -263,3 +263,33 @@ int db_get_login(const char *driver, const char *database, const char **user,
 
     return DB_OK;
 }
+
+/*!  
+  \brief Print all connection settings to file
+  
+  \param fd file where to print settings
+  
+  \return DB_OK on success
+  \return DB_FAILED on failure
+*/
+int db_get_login_dump(FILE *fd)
+{
+    int i;
+    LOGIN login;
+    
+    G_debug(3, "db_get_login_dump()");
+    
+    init_login(&login);
+    if (read_file(&login) == -1)
+	return DB_FAILED;
+    
+    for (i = 0; i < login.n; i++) {
+        fprintf(fd, "%s|%s|%s|%s\n",
+                login.data[i].driver,
+                login.data[i].database,
+                login.data[i].user,
+                login.data[i].password);
+    }
+    
+    return DB_OK;
+}