Change 'pg_ctl: no server running' Exit Status to 3
-----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);
}
On Mon, May 23, 2011 at 8:50 PM, Aaron W. Swenson
<aaron.w.swenson@gmail.com> wrote:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256According 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
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.
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);
}