Change 'pg_ctl: no server running' Exit Status to 3

Started by Aaron W. Swensonover 14 years ago4 messages
#1Aaron W. Swenson
aaron.w.swenson@gmail.com
1 attachment(s)

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

According to Linux Standard Base Core Specification 3.1 [1]http://refspecs.freestandards.org/LSB_3.1.1/LSB-Core-generic/LSB-Core-generic/iniscrptact.html -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.17 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/, the exit
status should be '3' when the server isn't running.

I've attached a very simple patch that resolves this cosmetic issue,
which applies to all branches.

My initial search regarding other platforms has turned up nil. It looks
like they just check for a zero or non-zero exit status.

As for the necessity of the patch: Gentoo Linux uses pg_ctl in all of
its initscript actions for PostgreSQL. I'd imagine that Gentoo is not
the only distribution that takes advantage of pg_ctl for its initscript
actions.

Sincerely,
Mr. Aaron W. Swenson

[1]: http://refspecs.freestandards.org/LSB_3.1.1/LSB-Core-generic/LSB-Core-generic/iniscrptact.html -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.17 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
http://refspecs.freestandards.org/LSB_3.1.1/LSB-Core-generic/LSB-Core-generic/iniscrptact.html
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.17 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iF4EAREIAAYFAk3bAO0ACgkQCOhwUhu5AElmsQEAs5rqihVYnglG1l8tiAVE7LZ+
vGq8+YFxRrqlPEt0kQIA/0PIdnf9xlnNewPCZuMRk/uOOeMHBptcDMSTuaWI3QBU
=td0Z
-----END PGP SIGNATURE-----

Attachments:

pg_ctl-exit-status.patchtext/plain; name=pg_ctl-exit-status.patchDownload
diff -cr a/src/bin/pg_ctl/pg_ctl.c b/src/bin/pg_ctl/pg_ctl.c
*** a/src/bin/pg_ctl/pg_ctl.c	2011-04-14 23:15:53.000000000 -0400
--- b/src/bin/pg_ctl/pg_ctl.c	2011-05-22 10:25:34.186930946 -0400
***************
*** 1036,1042 ****
  		}
  	}
  	printf(_("%s: no server running\n"), progname);
! 	exit(1);
  }
  
  
--- 1036,1042 ----
  		}
  	}
  	printf(_("%s: no server running\n"), progname);
! 	exit(3);
  }
  
  
#2Robert Haas
robertmhaas@gmail.com
In reply to: Aaron W. Swenson (#1)
Re: Change 'pg_ctl: no server running' Exit Status to 3

On Mon, May 23, 2011 at 8:50 PM, Aaron W. Swenson
<aaron.w.swenson@gmail.com> wrote:

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

According to Linux Standard Base Core Specification 3.1 [1], the exit
status should be '3' when the server isn't running.

I've attached a very simple patch that resolves this cosmetic issue,
which applies to all branches.

My initial search regarding other platforms has turned up nil. It looks
like they just check for a zero or non-zero exit status.

As for the necessity of the patch: Gentoo Linux uses pg_ctl in all of
its initscript actions for PostgreSQL. I'd imagine that Gentoo is not
the only distribution that takes advantage of pg_ctl for its initscript
actions.

I'd be disinclined to back-patch this as it might break things for
people. But I see no harm in applying it to master, if nobody
objects...

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

#3Peter Eisentraut
peter_e@gmx.net
In reply to: Aaron W. Swenson (#1)
Re: Change 'pg_ctl: no server running' Exit Status to 3

On mån, 2011-05-23 at 20:50 -0400, Aaron W. Swenson wrote:

According to Linux Standard Base Core Specification 3.1 [1], the exit
status should be '3' when the server isn't running.

I've attached a very simple patch that resolves this cosmetic issue,
which applies to all branches.

If we're going to make the exit status meaningful, it should probably be
added to the documentation.

#4Bruce Momjian
bruce@momjian.us
In reply to: Peter Eisentraut (#3)
1 attachment(s)
Re: Change 'pg_ctl: no server running' Exit Status to 3

Peter Eisentraut wrote:

On m?n, 2011-05-23 at 20:50 -0400, Aaron W. Swenson wrote:

According to Linux Standard Base Core Specification 3.1 [1], the exit
status should be '3' when the server isn't running.

I've attached a very simple patch that resolves this cosmetic issue,
which applies to all branches.

If we're going to make the exit status meaningful, it should probably be
added to the documentation.

Patch attached and applied, with docs. I also cleaned up some C
comments, which are not in the attached patch.

--
Bruce Momjian <bruce@momjian.us> http://momjian.us
EnterpriseDB http://enterprisedb.com

+ It's impossible for everything to be true. +

Attachments:

/rtmp/pg_ctltext/x-diffDownload
diff --git a/doc/src/sgml/ref/pg_ctl-ref.sgml b/doc/src/sgml/ref/pg_ctl-ref.sgml
new file mode 100644
index 07836e7..7dc170e
*** a/doc/src/sgml/ref/pg_ctl-ref.sgml
--- b/doc/src/sgml/ref/pg_ctl-ref.sgml
*************** PostgreSQL documentation
*** 205,211 ****
     <option>status</option> mode checks whether a server is running in
     the specified data directory. If it is, the <acronym>PID</acronym>
     and the command line options that were used to invoke it are
!    displayed.
    </para>
  
    <para>
--- 205,212 ----
     <option>status</option> mode checks whether a server is running in
     the specified data directory. If it is, the <acronym>PID</acronym>
     and the command line options that were used to invoke it are
!    displayed.  If the server is not running, the process returns an
!    exit status of 3.
    </para>
  
    <para>
diff --git a/src/bin/pg_ctl/pg_ctl.c b/src/bin/pg_ctl/pg_ctl.c
new file mode 100644
index c9007ed..8e9d2ce
*** a/src/bin/pg_ctl/pg_ctl.c
--- b/src/bin/pg_ctl/pg_ctl.c
*************** do_status(void)
*** 1186,1192 ****
  		}
  	}
  	printf(_("%s: no server running\n"), progname);
! 	exit(1);
  }
  
  
--- 1188,1198 ----
  		}
  	}
  	printf(_("%s: no server running\n"), progname);
! 	/*
! 	 * The Linux Standard Base Core Specification 3.1 says this should return '3'
! 	 * http://refspecs.freestandards.org/LSB_3.1.1/LSB-Core-generic/LSB-Core-generic/iniscrptact.html
! 	 */
! 	exit(3);
  }