Re: [HACKERS] Fw: patch for pg_ctl.c to add windows service start-type

2010-09-30 Thread Magnus Hagander
On Thu, Sep 30, 2010 at 04:40, Itagaki Takahiro
itagaki.takah...@gmail.com wrote:
 Hi, I have a question about the latest patch.

 On Sun, Aug 22, 2010 at 11:03 PM, Quan Zongliang
 quanzongli...@gmail.com wrote:
 New patch attached. How about this?
 I don't see us ever using anything other than auto or demand. The
 others aren't for regular services

 + set_starttype(char *starttypeopt)
 + {
 +       if (strcmp(starttypeopt, a) == 0 || strcmp(starttypeopt, auto) == 
 0)
 +               pgctl_start_type = SERVICE_AUTO_START;
 +       else if (strcmp(starttypeopt, d) == 0 || strcmp(starttypeopt,
 demand) == 0)
 +               pgctl_start_type = SERVICE_DEMAND_START;

 It accepts only a and auto for auto, but au or aut are rejected.
 Is is an intended behavior?  I think we can use prefix match here because
 we use the logic in some places. For example,

I think it's modeled on what we allow for the -m parameter, and ISTM
it's good to keep those consistent.

-- 
 Magnus Hagander
 Me: http://www.hagander.net/
 Work: http://www.redpill-linpro.com/

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] Fw: patch for pg_ctl.c to add windows service start-type

2010-09-29 Thread Itagaki Takahiro
Hi, I have a question about the latest patch.

On Sun, Aug 22, 2010 at 11:03 PM, Quan Zongliang
quanzongli...@gmail.com wrote:
 New patch attached. How about this?
 I don't see us ever using anything other than auto or demand. The
 others aren't for regular services

+ set_starttype(char *starttypeopt)
+ {
+   if (strcmp(starttypeopt, a) == 0 || strcmp(starttypeopt, auto) == 0)
+   pgctl_start_type = SERVICE_AUTO_START;
+   else if (strcmp(starttypeopt, d) == 0 || strcmp(starttypeopt,
demand) == 0)
+   pgctl_start_type = SERVICE_DEMAND_START;

It accepts only a and auto for auto, but au or aut are rejected.
Is is an intended behavior?  I think we can use prefix match here because
we use the logic in some places. For example,

postgres=# SELECT 'tru'::bool, 'fal'::bool;
 bool | bool
--+--
 t| f
(1 row)

-- 
Itagaki Takahiro

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] Fw: patch for pg_ctl.c to add windows service start-type

2010-08-24 Thread Quan Zongliang
Which files need be modified?
sgml, html, and man-page or only sgml?
I am not familiar with this.

On Sun, 22 Aug 2010 08:25:59 -0700
David Fetter da...@fetter.org wrote:

 On Sun, Aug 22, 2010 at 10:03:32PM +0800, Quan Zongliang wrote:
  Sure, I agree.
  New patch attached. How about this?
 
 Docs re-added.  Please not to leave these out in future patches. :)
 
 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


-- 
Quan Zongliang quanzongli...@gmail.com

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] Fw: patch for pg_ctl.c to add windows service start-type

2010-08-24 Thread Magnus Hagander
On Tue, Aug 24, 2010 at 2:05 PM, Quan Zongliang quanzongli...@gmail.com wrote:
 Which files need be modified?
 sgml, html, and man-page or only sgml?
 I am not familiar with this.

Only SGML. HTML and man pages are generated from the SGML.


-- 
 Magnus Hagander
 Me: http://www.hagander.net/
 Work: http://www.redpill-linpro.com/

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] Fw: patch for pg_ctl.c to add windows service start-type

2010-08-22 Thread Quan Zongliang
Sure, I agree.
New patch attached. How about this?

On Fri, 20 Aug 2010 11:21:18 +0200
Magnus Hagander mag...@hagander.net wrote:

 On Fri, Aug 20, 2010 at 01:01, Quan Zongliang quanzongli...@gmail.com wrote:
  Because Windows's CreateService has serial start-type:
  SERVICE_AUTO_START
  SERVICE_BOOT_START
  SERVICE_DEMAND_START
  SERVICE_DISABLED
  SERVICE_SYSTEM_START
 
  Although all of them are not useful for pg service.
  I think it is better to use enum.
 
 I don't see us ever using anything other than auto or demand. The
 others aren't for regular services, except for disabled. And
 adding a disabled service makes no sense :-) So I'm with Alvaro, I
 think it's a good idea to simplify that.
 
 
 -- 
  Magnus Hagander
  Me: http://www.hagander.net/
  Work: http://www.redpill-linpro.com/


-- 
Quan Zongliang quanzongli...@gmail.com
*** pg_ctl.c.bak2010-04-07 11:48:51.0 +0800
--- pg_ctl.c2010-08-22 20:15:53.37500 +0800
***
*** 121,126 
--- 121,127 
  static void pgwin32_doRunAsService(void);
  static intCreateRestrictedProcess(char *cmd, PROCESS_INFORMATION 
*processInfo, bool as_service);
  
+ static DWORD pgctl_start_type = SERVICE_AUTO_START;
  static SERVICE_STATUS status;
  static SERVICE_STATUS_HANDLE hStatus = (SERVICE_STATUS_HANDLE) 0;
  static HANDLE shutdownHandles[2];
***
*** 1147,1153 
  
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)
{
--- 1148,1154 
  
if ((hService = CreateService(hSCM, register_servicename, 
register_servicename,
   SERVICE_ALL_ACCESS, 
SERVICE_WIN32_OWN_PROCESS,
! 
pgctl_start_type, SERVICE_ERROR_NORMAL,
  
pgwin32_CommandLine(true),
   NULL, NULL, RPCSS\0, register_username, register_password)) == 
NULL)
{
***
*** 1586,1592 
printf(_(  %s killSIGNALNAME 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
  
--- 1587,1593 
printf(_(  %s killSIGNALNAME 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 
--- 1628,1640 
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 
--- 1704,1728 
  
  
  
+ #if defined(WIN32) || defined(__CYGWIN__)
+ static void
+ set_starttype(char *starttypeopt)
+ {
+   if (strcmp(starttypeopt, a) == 0 || strcmp(starttypeopt, auto) == 0)
+   pgctl_start_type = SERVICE_AUTO_START;
+   else if (strcmp(starttypeopt, d) == 0 || strcmp(starttypeopt, 
demand) == 0)
+   pgctl_start_type = SERVICE_DEMAND_START;
+   else
+   {
+   write_stderr(_(%s: unrecognized start type \%s\\n), 
progname, starttypeopt);
+   do_advice();
+   exit(1);
+   }
+ }
+ #endif
+ 
+ 
+ 
  int
  main(int argc, char **argv)
  {
***
*** 1772,1778 
/* 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)
{
--- 1799,1805 
/* process command-line options */
while 

Re: [HACKERS] Fw: patch for pg_ctl.c to add windows service start-type

2010-08-22 Thread David Fetter
On Sun, Aug 22, 2010 at 10:03:32PM +0800, Quan Zongliang wrote:
 Sure, I agree.
 New patch attached. How about this?

Docs re-added.  Please not to leave these out in future patches. :)

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
diff --git a/doc/src/sgml/ref/pg_ctl-ref.sgml b/doc/src/sgml/ref/pg_ctl-ref.sgml
index 20d87bb..ac30320 100644
--- a/doc/src/sgml/ref/pg_ctl-ref.sgml
+++ b/doc/src/sgml/ref/pg_ctl-ref.sgml
@@ -97,6 +97,12 @@ PostgreSQL documentation
arg-P replaceablepassword/replaceable/arg
arg-D replaceabledatadir/replaceable/arg
arg-w/arg
+   arg-S
+ group choice=plain
+   arga[uto]/arg
+   argd[emand]/arg
+ /group
+   /arg
arg-t replaceableseconds/replaceable/arg
arg-o replaceableoptions/replaceable/arg
sbr
@@ -377,6 +383,18 @@ PostgreSQL documentation
   /para
  /listitem
 /varlistentry
+
+varlistentry
+ termoption-S replaceable 
class=parameterstart-type/replaceable/option/term
+ listitem
+  para
+   Start type of the system service to register.  start-type can
+   be literalauto/literal, or literaldemand/literal, or
+   the first letter of one of these two. If this is omitted,
+   literalauto/literal is used.
+  /para
+ /listitem
+/varlistentry
/variablelist
   /refsect2
 
diff --git a/src/bin/pg_ctl/pg_ctl.c b/src/bin/pg_ctl/pg_ctl.c
index 1caec12..f7de2a5 100644
--- a/src/bin/pg_ctl/pg_ctl.c
+++ b/src/bin/pg_ctl/pg_ctl.c
@@ -121,6 +121,7 @@ static void WINAPI pgwin32_ServiceMain(DWORD, LPTSTR *);
 static void pgwin32_doRunAsService(void);
 static int CreateRestrictedProcess(char *cmd, PROCESS_INFORMATION 
*processInfo, bool as_service);
 
+static DWORD pgctl_start_type = SERVICE_AUTO_START;
 static SERVICE_STATUS status;
 static SERVICE_STATUS_HANDLE hStatus = (SERVICE_STATUS_HANDLE) 0;
 static HANDLE shutdownHandles[2];
@@ -1147,7 +1148,7 @@ pgwin32_doRegister(void)
 
if ((hService = CreateService(hSCM, register_servicename, 
register_servicename,
   SERVICE_ALL_ACCESS, 
SERVICE_WIN32_OWN_PROCESS,
- 
SERVICE_AUTO_START, SERVICE_ERROR_NORMAL,
+ 
pgctl_start_type, SERVICE_ERROR_NORMAL,
  
pgwin32_CommandLine(true),
   NULL, NULL, RPCSS\0, register_username, register_password)) == 
NULL)
{
@@ -1586,7 +1587,7 @@ do_help(void)
printf(_(  %s killSIGNALNAME 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);
+[-S START-TYPE] [-w] [-t SECS] [-o 
\OPTIONS\]\n), progname);
printf(_(  %s unregister [-N SERVICENAME]\n), progname);
 #endif
 
@@ -1627,6 +1628,11 @@ do_help(void)
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,6 +1702,25 @@ set_sig(char *signame)
 
 
 
+#if defined(WIN32) || defined(__CYGWIN__)
+static void
+set_starttype(char *starttypeopt)
+{
+   if (strcmp(starttypeopt, a) == 0 || strcmp(starttypeopt, auto) == 0)
+   pgctl_start_type = SERVICE_AUTO_START;
+   else if (strcmp(starttypeopt, d) == 0 || strcmp(starttypeopt, 
demand) == 0)
+   pgctl_start_type = SERVICE_DEMAND_START;
+   else
+   {
+   write_stderr(_(%s: unrecognized start type \%s\\n), 
progname, starttypeopt);
+   do_advice();
+   exit(1);
+   }
+}
+#endif
+
+
+
 int
 main(int argc, char **argv)
 {
@@ -1772,7 +1797,7 @@ 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)
+   while ((c = getopt_long(argc, argv, 

Re: [HACKERS] Fw: patch for pg_ctl.c to add windows service start-type

2010-08-20 Thread Magnus Hagander
On Fri, Aug 20, 2010 at 01:01, Quan Zongliang quanzongli...@gmail.com wrote:
 Because Windows's CreateService has serial start-type:
 SERVICE_AUTO_START
 SERVICE_BOOT_START
 SERVICE_DEMAND_START
 SERVICE_DISABLED
 SERVICE_SYSTEM_START

 Although all of them are not useful for pg service.
 I think it is better to use enum.

I don't see us ever using anything other than auto or demand. The
others aren't for regular services, except for disabled. And
adding a disabled service makes no sense :-) So I'm with Alvaro, I
think it's a good idea to simplify that.


-- 
 Magnus Hagander
 Me: http://www.hagander.net/
 Work: http://www.redpill-linpro.com/

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] Fw: patch for pg_ctl.c to add windows service start-type

2010-08-19 Thread David Fetter
On Thu, Aug 19, 2010 at 10:24:54PM +0800, Quan Zongliang wrote:
 documents attached. html and man-page

Thanks!

For future reference, the way to patch docs is by patching the SGML
source.  Please find enclosed a patch which incorporates the code
patch you sent with these docs.

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
diff --git a/doc/src/sgml/ref/pg_ctl-ref.sgml b/doc/src/sgml/ref/pg_ctl-ref.sgml
index 20d87bb..a4e675e 100644
--- a/doc/src/sgml/ref/pg_ctl-ref.sgml
+++ b/doc/src/sgml/ref/pg_ctl-ref.sgml
@@ -377,6 +377,18 @@ PostgreSQL documentation
   /para
  /listitem
 /varlistentry
+
+varlistentry
+ termoption-S replaceable 
class=parameter/replaceable/option/term
+ listitem
+  para
+   Start type of the system service to register.  start-type can
+   be literalauto/literal, or literaldemand/literal, or
+   the first letter of one of these two. If this is omitted,
+   literalauto/literal is used.
+  /para
+ /listitem
+/varlistentry
/variablelist
   /refsect2
 
diff --git a/src/bin/pg_ctl/pg_ctl.c b/src/bin/pg_ctl/pg_ctl.c
index 1caec12..42a8aa9 100644
--- a/src/bin/pg_ctl/pg_ctl.c
+++ b/src/bin/pg_ctl/pg_ctl.c
@@ -69,6 +69,14 @@ typedef enum
RUN_AS_SERVICE_COMMAND
 } CtlCommand;
 
+
+typedef enum
+{
+   PGCTL_START_AUTO,
+   PGCTL_START_DEMAND
+} PgctlWin32StartType;
+
+
 #define DEFAULT_WAIT   60
 
 static bool do_wait = false;
@@ -87,6 +95,7 @@ static char *exec_path = NULL;
 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,6 +1141,7 @@ pgwin32_doRegister(void)
 {
SC_HANDLE   hService;
SC_HANDLE   hSCM = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
+   DWORD   starttype;
 
if (hSCM == NULL)
{
@@ -1145,9 +1155,14 @@ pgwin32_doRegister(void)
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,
- 
SERVICE_AUTO_START, SERVICE_ERROR_NORMAL,
+ starttype, 
SERVICE_ERROR_NORMAL,
  
pgwin32_CommandLine(true),
   NULL, NULL, RPCSS\0, register_username, register_password)) == 
NULL)
{
@@ -1586,7 +1601,7 @@ do_help(void)
printf(_(  %s killSIGNALNAME 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);
+[-S START-TYPE] [-w] [-t SECS] [-o 
\OPTIONS\]\n), progname);
printf(_(  %s unregister [-N SERVICENAME]\n), progname);
 #endif
 
@@ -1627,6 +1642,13 @@ do_help(void)
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,6 +1718,25 @@ set_sig(char *signame)
 
 
 
+#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
 

Re: [HACKERS] Fw: patch for pg_ctl.c to add windows service start-type

2010-08-19 Thread Alvaro Herrera
Excerpts from David Fetter's message of jue ago 19 11:48:53 -0400 2010:

 +varlistentry
 + termoption-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.

-- 
Álvaro Herrera alvhe...@commandprompt.com
The PostgreSQL Company - Command Prompt, Inc.
PostgreSQL Replication, Consulting, Custom Development, 24x7 support

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] Fw: patch for pg_ctl.c to add windows service start-type

2010-08-19 Thread David Fetter
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
  + termoption-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 replaceableusername/replaceable/arg
 arg-P replaceablepassword/replaceable/arg
 arg-D replaceabledatadir/replaceable/arg
+arg-S
+  group choice=plain
+arga[uto]/arg
+argd[emand]/arg
+  /group
+/arg
 arg-w/arg
 arg-t replaceableseconds/replaceable/arg
 arg-o replaceableoptions/replaceable/arg
***
*** 377,382  PostgreSQL documentation
--- 383,400 
/para
   /listitem
  /varlistentry
+ 
+ varlistentry
+  termoption-S replaceable 
class=parameterstart-type/replaceable/option/term
+  listitem
+   para
+Start type of the system service to register.  start-type can
+be literalauto/literal, or literaldemand/literal, or
+the first letter of one of these two. If this is omitted,
+literalauto/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 killSIGNALNAME 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 killSIGNALNAME 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 
 

Re: [HACKERS] Fw: patch for pg_ctl.c to add windows service start-type

2010-08-19 Thread Alvaro Herrera
Excerpts from David Fetter's message of jue ago 19 16:40:18 -0400 2010:
 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
   + termoption-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 :)

Thanks.

Another thing -- why is there an enum at all?  Seems it'd be
simpler to assign the right value to the variable in the getopt() code
to start with.

-- 
Álvaro Herrera alvhe...@commandprompt.com
The PostgreSQL Company - Command Prompt, Inc.
PostgreSQL Replication, Consulting, Custom Development, 24x7 support

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] Fw: patch for pg_ctl.c to add windows service start-type

2010-08-19 Thread David Fetter
On Thu, Aug 19, 2010 at 04:48:53PM -0400, Alvaro Herrera wrote:
 Excerpts from David Fetter's message of jue ago 19 16:40:18 -0400 2010:
  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
+ termoption-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 :)
 
 Thanks.
 
 Another thing -- why is there an enum at all?  Seems it'd be simpler
 to assign the right value to the variable in the getopt() code to
 start with.

That's a question for the patch author.  I was just cleaning up the
docs :)

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

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] Fw: patch for pg_ctl.c to add windows service start-type

2010-08-19 Thread Quan Zongliang
Because Windows's CreateService has serial start-type:
SERVICE_AUTO_START
SERVICE_BOOT_START
SERVICE_DEMAND_START
SERVICE_DISABLED
SERVICE_SYSTEM_START

Although all of them are not useful for pg service.
I think it is better to use enum.

On Thu, 19 Aug 2010 16:48:53 -0400
Alvaro Herrera alvhe...@commandprompt.com wrote:

 Excerpts from David Fetter's message of jue ago 19 16:40:18 -0400 2010:
  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
+ termoption-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 :)
 
 Thanks.
 
 Another thing -- why is there an enum at all?  Seems it'd be
 simpler to assign the right value to the variable in the getopt() code
 to start with.
 
 -- 
 Álvaro Herrera alvhe...@commandprompt.com
 The PostgreSQL Company - Command Prompt, Inc.
 PostgreSQL Replication, Consulting, Custom Development, 24x7 support


-- 
Quan Zongliang quanzongli...@gmail.com

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] Fw: patch for pg_ctl.c to add windows service start-type

2010-08-19 Thread Quan Zongliang
I don't know how to edit documents exactly before.

Thanks.

On Thu, 19 Aug 2010 08:48:53 -0700
David Fetter da...@fetter.org wrote:

 On Thu, Aug 19, 2010 at 10:24:54PM +0800, Quan Zongliang wrote:
  documents attached. html and man-page
 
 Thanks!
 
 For future reference, the way to patch docs is by patching the SGML
 source.  Please find enclosed a patch which incorporates the code
 patch you sent with these docs.
 
 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


-- 
Quan Zongliang quanzongli...@gmail.com

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


[HACKERS] Fw: patch for pg_ctl.c to add windows service start-type

2010-08-17 Thread Quan Zongliang

Sorry.
I forget to attach the patch file.

Begin forwarded message:

Date: Mon, 16 Aug 2010 19:49:20 +0800
From: Quan Zongliang quanzongli...@gmail.com
To: pgsql-hackers@postgresql.org
Subject: patch for pg_ctl.c to add windows service start-type


Hi, all

I modified pg_ctl.c to add a new option for Windows service start-type.
new option is -S [auto|demand]

For example, the command can be used under Windows:
pg_ctl register -N s-name -S auto
or
pg_ctl register -N s-name -S demand

The created service will be SERVICE_AUTO_START or SERVICE_DEMAND_START 
respectively.

regards

-- 
Quan Zongliang quanzongli...@gmail.com


-- 
Quan Zongliang quanzongli...@gmail.com


pg_ctl.patch
Description: Binary data

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] Fw: patch for pg_ctl.c to add windows service start-type

2010-08-17 Thread Magnus Hagander
On Tue, Aug 17, 2010 at 2:58 PM, Quan Zongliang quanzongli...@gmail.com wrote:

 Sorry.
 I forget to attach the patch file.

Without looking at the details of this patch, it looks reasonable - so
please put it on the commitfest page, if you haven't already.

It does, however, lack documentation updates - that needs to be done
before it can get applied.

-- 
 Magnus Hagander
 Me: http://www.hagander.net/
 Work: http://www.redpill-linpro.com/

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers