]> granicus.if.org Git - postgresql/commitdiff
make initdb -U username work as advertised; back out bogus patch at rev 1.42
authorAndrew Dunstan <andrew@dunslane.net>
Fri, 24 Feb 2006 00:55:49 +0000 (00:55 +0000)
committerAndrew Dunstan <andrew@dunslane.net>
Fri, 24 Feb 2006 00:55:49 +0000 (00:55 +0000)
and supply real fix for problem it tried to address.

src/bin/initdb/initdb.c

index 9b35151640c328d42dc04fefc35a8fed9e8daf7b..460aa3d5ee072405c328c8984e71dd0758e10e43 100644 (file)
@@ -42,7 +42,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  * Portions taken from FreeBSD.
  *
- * $PostgreSQL: pgsql/src/bin/initdb/initdb.c,v 1.110 2006/02/18 16:15:23 petere Exp $
+ * $PostgreSQL: pgsql/src/bin/initdb/initdb.c,v 1.111 2006/02/24 00:55:49 adunstan Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -113,7 +113,6 @@ static char *conversion_file;
 static char *info_schema_file;
 static char *features_file;
 static char *system_views_file;
-static char *effective_user;
 static bool made_new_pgdata = false;
 static bool found_existing_pgdata = false;
 static char infoversion[100];
@@ -1385,7 +1384,7 @@ bootstrap_template1(char *short_version)
                exit_nicely();
        }
 
-       bki_lines = replace_token(bki_lines, "POSTGRES", effective_user);
+       bki_lines = replace_token(bki_lines, "POSTGRES", username);
 
        bki_lines = replace_token(bki_lines, "ENCODING", encodingid);
 
@@ -1547,7 +1546,7 @@ get_set_pwd(void)
        PG_CMD_OPEN;
 
        PG_CMD_PRINTF2("ALTER USER \"%s\" WITH PASSWORD '%s';\n",
-                                  effective_user, pwd1);
+                                  username, pwd1);
 
        PG_CMD_CLOSE;
 
@@ -1866,7 +1865,7 @@ setup_privileges(void)
        PG_CMD_OPEN;
 
        priv_lines = replace_token(privileges_setup,
-                                                          "$POSTGRES_SUPERUSERNAME", effective_user);
+                                                          "$POSTGRES_SUPERUSERNAME", username);
        for (line = priv_lines; *line != NULL; line++)
                PG_CMD_PUTS(*line);
 
@@ -2446,6 +2445,7 @@ main(int argc, char *argv[])
                                ret;
        int                     option_index;
        char       *short_version;
+    char       *effective_user;
        char       *pgdenv;                     /* PGDATA value gotten from and sent to
                                                                 * environment */
        char            bin_dir[MAXPGPATH];
@@ -2735,10 +2735,10 @@ main(int argc, char *argv[])
                exit(1);
        }
 
-       if (strlen(username))
-               effective_user = username;
-       else
-               effective_user = get_id();
+       effective_user = get_id();
+       if (strlen(username) == 0)
+               username = effective_user;
+
 
        if (strlen(encoding))
                encodingid = get_encoding_id(encoding);
@@ -2767,7 +2767,7 @@ main(int argc, char *argv[])
                                "PG_HBA_SAMPLE=%s\nPG_IDENT_SAMPLE=%s\n",
                                PG_VERSION,
                                pg_data, share_path, bin_path,
-                               effective_user, bki_file,
+                               username, bki_file,
                                desc_file, shdesc_file,
                                conf_file,
                                hba_file, ident_file);