On Thu, Aug 19, 2010 at 03:47:43PM -0400, Alvaro Herrera wrote:
> Excerpts from David Fetter's message of jue ago 19 11:48:53 -0400 2010:
> 
> > +    <varlistentry>
> > +     <term><option>-S <replaceable 
> > class="parameter"></replaceable></option></term>
> 
> You omitted the start-type inside the <replaceable> tag.  Also, the "a"
> and "d" values seem to be accepted but not documented.

D'oh!  Changed patch enclosed.  Now in context format :)

Cheers,
David.
-- 
David Fetter <da...@fetter.org> http://fetter.org/
Phone: +1 415 235 3778  AIM: dfetter666  Yahoo!: dfetter
Skype: davidfetter      XMPP: david.fet...@gmail.com
iCal: webcal://www.tripit.com/feed/ical/people/david74/tripit.ics

Remember to vote!
Consider donating to Postgres: http://www.postgresql.org/about/donate
*** a/doc/src/sgml/ref/pg_ctl-ref.sgml
--- b/doc/src/sgml/ref/pg_ctl-ref.sgml
***************
*** 96,101 **** PostgreSQL documentation
--- 96,107 ----
     <arg>-U <replaceable>username</replaceable></arg>
     <arg>-P <replaceable>password</replaceable></arg>
     <arg>-D <replaceable>datadir</replaceable></arg>
+    <arg>-S
+      <group choice="plain">
+        <arg>a[uto]</arg>
+        <arg>d[emand]</arg>
+      </group>
+    </arg>
     <arg>-w</arg>
     <arg>-t <replaceable>seconds</replaceable></arg>
     <arg>-o <replaceable>options</replaceable></arg>
***************
*** 377,382 **** PostgreSQL documentation
--- 383,400 ----
        </para>
       </listitem>
      </varlistentry>
+ 
+     <varlistentry>
+      <term><option>-S <replaceable 
class="parameter">start-type</replaceable></option></term>
+      <listitem>
+       <para>
+        Start type of the system service to register.  start-type can
+        be <literal>auto</literal>, or <literal>demand</literal>, or
+        the first letter of one of these two. If this is omitted,
+        <literal>auto</literal> is used.
+       </para>
+      </listitem>
+     </varlistentry>
     </variablelist>
    </refsect2>
  
*** a/src/bin/pg_ctl/pg_ctl.c
--- b/src/bin/pg_ctl/pg_ctl.c
***************
*** 69,74 **** typedef enum
--- 69,82 ----
        RUN_AS_SERVICE_COMMAND
  } CtlCommand;
  
+ 
+ typedef enum
+ {
+       PGCTL_START_AUTO,
+       PGCTL_START_DEMAND
+ } PgctlWin32StartType;
+ 
+ 
  #define DEFAULT_WAIT  60
  
  static bool do_wait = false;
***************
*** 87,92 **** static char *exec_path = NULL;
--- 95,101 ----
  static char *register_servicename = "PostgreSQL";             /* FIXME: + 
version ID? */
  static char *register_username = NULL;
  static char *register_password = NULL;
+ static PgctlWin32StartType win32_start_type = PGCTL_START_AUTO;
  static char *argv0 = NULL;
  static bool allow_core_files = false;
  
***************
*** 1132,1137 **** pgwin32_doRegister(void)
--- 1141,1147 ----
  {
        SC_HANDLE       hService;
        SC_HANDLE       hSCM = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
+       DWORD           starttype;
  
        if (hSCM == NULL)
        {
***************
*** 1145,1153 **** pgwin32_doRegister(void)
                exit(1);
        }
  
        if ((hService = CreateService(hSCM, register_servicename, 
register_servicename,
                                                           SERVICE_ALL_ACCESS, 
SERVICE_WIN32_OWN_PROCESS,
!                                                                 
SERVICE_AUTO_START, SERVICE_ERROR_NORMAL,
                                                                  
pgwin32_CommandLine(true),
           NULL, NULL, "RPCSS\0", register_username, register_password)) == 
NULL)
        {
--- 1155,1168 ----
                exit(1);
        }
  
+       if (win32_start_type == PGCTL_START_AUTO)
+               starttype = SERVICE_AUTO_START;
+       else
+               starttype = SERVICE_DEMAND_START;
+ 
        if ((hService = CreateService(hSCM, register_servicename, 
register_servicename,
                                                           SERVICE_ALL_ACCESS, 
SERVICE_WIN32_OWN_PROCESS,
!                                                                 starttype, 
SERVICE_ERROR_NORMAL,
                                                                  
pgwin32_CommandLine(true),
           NULL, NULL, "RPCSS\0", register_username, register_password)) == 
NULL)
        {
***************
*** 1586,1592 **** do_help(void)
        printf(_("  %s kill    SIGNALNAME PID\n"), progname);
  #if defined(WIN32) || defined(__CYGWIN__)
        printf(_("  %s register   [-N SERVICENAME] [-U USERNAME] [-P PASSWORD] 
[-D DATADIR]\n"
!                "                    [-w] [-t SECS] [-o \"OPTIONS\"]\n"), 
progname);
        printf(_("  %s unregister [-N SERVICENAME]\n"), progname);
  #endif
  
--- 1601,1607 ----
        printf(_("  %s kill    SIGNALNAME PID\n"), progname);
  #if defined(WIN32) || defined(__CYGWIN__)
        printf(_("  %s register   [-N SERVICENAME] [-U USERNAME] [-P PASSWORD] 
[-D DATADIR]\n"
!                "                    [-S START-TYPE] [-w] [-t SECS] [-o 
\"OPTIONS\"]\n"), progname);
        printf(_("  %s unregister [-N SERVICENAME]\n"), progname);
  #endif
  
***************
*** 1627,1632 **** do_help(void)
--- 1642,1654 ----
        printf(_("  -N SERVICENAME  service name with which to register 
PostgreSQL server\n"));
        printf(_("  -P PASSWORD     password of account to register PostgreSQL 
server\n"));
        printf(_("  -U USERNAME     user name of account to register PostgreSQL 
server\n"));
+       printf(_("  -S START-TYPE   service start type to register PostgreSQL 
server,\n"
+                       "                  can be auto or demand\n"));
+ 
+       printf(_("\nStart types are:\n"));
+       printf(_("  auto       service start automatically during system 
startup\n"));
+       printf(_("  demand     service start on demand\n"));
+ 
  #endif
  
        printf(_("\nReport bugs to <pgsql-b...@postgresql.org>.\n"));
***************
*** 1696,1701 **** set_sig(char *signame)
--- 1718,1742 ----
  
  
  
+ #if defined(WIN32) || defined(__CYGWIN__)
+ static void
+ set_starttype(char *starttypeopt)
+ {
+       if (strcmp(starttypeopt, "a") == 0 || strcmp(starttypeopt, "auto") == 0)
+               win32_start_type = PGCTL_START_AUTO;
+       else if (strcmp(starttypeopt, "d") == 0 || strcmp(starttypeopt, 
"demand") == 0)
+               win32_start_type = PGCTL_START_DEMAND;
+       else
+       {
+               write_stderr(_("%s: unrecognized start type \"%s\"\n"), 
progname, starttypeopt);
+               do_advice();
+               exit(1);
+       }
+ }
+ #endif
+ 
+ 
+ 
  int
  main(int argc, char **argv)
  {
***************
*** 1772,1778 **** main(int argc, char **argv)
        /* process command-line options */
        while (optind < argc)
        {
!               while ((c = getopt_long(argc, argv, "cD:l:m:N:o:p:P:st:U:wW", 
long_options, &option_index)) != -1)
                {
                        switch (c)
                        {
--- 1813,1819 ----
        /* process command-line options */
        while (optind < argc)
        {
!               while ((c = getopt_long(argc, argv, "cD:l:m:N:o:p:P:sS:t:U:wW", 
long_options, &option_index)) != -1)
                {
                        switch (c)
                        {
***************
*** 1819,1824 **** main(int argc, char **argv)
--- 1860,1870 ----
                                case 's':
                                        silent_mode = true;
                                        break;
+ #if defined(WIN32) || defined(__CYGWIN__)
+                               case 'S':
+                                       set_starttype(optarg);
+                                       break;
+ #endif
                                case 't':
                                        wait_seconds = atoi(optarg);
                                        break;
-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to