Add a --locale switch to createdb, to ease the creation of databases with
authorAlvaro Herrera <alvherre@alvh.no-ip.org>
Mon, 10 Nov 2008 16:25:41 +0000 (16:25 +0000)
committerAlvaro Herrera <alvherre@alvh.no-ip.org>
Mon, 10 Nov 2008 16:25:41 +0000 (16:25 +0000)
different locales.  This is just syntactical sweetener over --lc-collate and
--lc-ctype.  Per discussion.

While at it, properly document --lc-ctype and --lc-collate in SGML docs,
which apparently were forgotten (or purposefully ommited?) when they were
created.

doc/src/sgml/ref/createdb.sgml
src/bin/scripts/createdb.c

index 97c38ed4b845a03971a75b2019d644b1395db57c..0fc66560a81dd022e87fbcc1c3b884295245ee94 100644 (file)
@@ -106,6 +106,35 @@ PostgreSQL documentation
       </listitem>
      </varlistentry>
 
+     <varlistentry>
+      <term><option>-l <replaceable class="parameter">locale</replaceable></></term>
+      <term><option>--locale <replaceable class="parameter">locale</replaceable></></term>
+      <listitem>
+       <para>
+        Specifies the locale to be used in this database.  This is equivalent
+        to specifying both <option>--lc-collate</option> and <option>--lc-ctype</option>.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term><option>--lc-collate <replaceable class="parameter">locale</replaceable></></term>
+      <listitem>
+       <para>
+        Specifies the LC_COLLATE setting to be used in this database.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term><option>--lc-ctype <replaceable class="parameter">locale</replaceable></></term>
+      <listitem>
+       <para>
+        Specifies the LC_CTYPE setting to be used in this database.
+       </para>
+      </listitem>
+     </varlistentry>
+
      <varlistentry>
       <term><option>-E <replaceable class="parameter">encoding</replaceable></></term>
       <term><option>--encoding <replaceable class="parameter">encoding</replaceable></></term>
@@ -142,7 +171,7 @@ PostgreSQL documentation
    </para>
 
    <para>
-    The options <option>-D</option>, <option>-E</option>,
+    The options <option>-D</option>, <option>-E</option>, <option>-l</option>,
     <option>-O</option>, and
     <option>-T</option> correspond to options of the underlying
     SQL command <xref linkend="SQL-CREATEDATABASE"
index 543a83fdebac3807e55121a87edf1ce886ed4ba0..369f87a611f60d619951daa3ac10aa969399eff6 100644 (file)
@@ -34,6 +34,7 @@ main(int argc, char *argv[])
                {"encoding", required_argument, NULL, 'E'},
                {"lc-collate", required_argument, NULL, 1},
                {"lc-ctype", required_argument, NULL, 2},
+               {"locale", required_argument, NULL, 'l'},
                {NULL, 0, NULL, 0}
        };
 
@@ -54,6 +55,7 @@ main(int argc, char *argv[])
        char       *encoding = NULL;
        char       *lc_collate = NULL;
        char       *lc_ctype = NULL;
+       char       *locale = NULL;
 
        PQExpBufferData sql;
 
@@ -65,7 +67,7 @@ main(int argc, char *argv[])
 
        handle_help_version_opts(argc, argv, "createdb", help);
 
-       while ((c = getopt_long(argc, argv, "h:p:U:WeqO:D:T:E:", long_options, &optindex)) != -1)
+       while ((c = getopt_long(argc, argv, "h:p:U:WeqO:D:T:E:l:", long_options, &optindex)) != -1)
        {
                switch (c)
                {
@@ -105,6 +107,9 @@ main(int argc, char *argv[])
                        case 2:
                                lc_ctype = optarg;
                                break;
+                       case 'l':
+                               locale = optarg;
+                               break;
                        default:
                                fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
                                exit(1);
@@ -129,6 +134,24 @@ main(int argc, char *argv[])
                        exit(1);
        }
 
+       if (locale)
+       {
+               if (lc_ctype)
+               {
+                       fprintf(stderr, _("%s: only one of --locale and --lc-ctype can be specified\n"),
+                                       progname);
+                       exit(1);
+               }
+               if (lc_collate)
+               {
+                       fprintf(stderr, _("%s: only one of --locale and --lc-collate can be specified\n"),
+                                       progname);
+                       exit(1);
+               }
+               lc_ctype = locale;
+               lc_collate = locale;
+       }
+
        if (encoding)
        {
                if (pg_char_to_encoding(encoding) < 0)
@@ -224,6 +247,7 @@ help(const char *progname)
        printf(_("\nOptions:\n"));
        printf(_("  -D, --tablespace=TABLESPACE  default tablespace for the database\n"));
        printf(_("  -E, --encoding=ENCODING      encoding for the database\n"));
+       printf(_("  -l, --locale=LOCALE          locale settings for the database\n"));
        printf(_("  --lc-collate=LOCALE          LC_COLLATE setting for the database\n"));
        printf(_("  --lc-ctype=LOCALE            LC_CTYPE setting for the database\n"));
        printf(_("  -O, --owner=OWNER            database user to own the new database\n"));