From 1863bd8cc1e243be6131265bf5b1a06736b29844 Mon Sep 17 00:00:00 2001 From: Chris Cromer Date: Wed, 5 Aug 2020 22:49:31 -0400 Subject: [PATCH] add pid file and openrc detection --- contrib/openrc/tufmanager.in | 2 +- src/server-main.vala | 23 +++++++++++++++++++++-- 2 files changed, 22 insertions(+), 3 deletions(-) mode change 100644 => 100755 contrib/openrc/tufmanager.in diff --git a/contrib/openrc/tufmanager.in b/contrib/openrc/tufmanager.in old mode 100644 new mode 100755 index dc8d3f8..9e3ec2c --- a/contrib/openrc/tufmanager.in +++ b/contrib/openrc/tufmanager.in @@ -12,7 +12,7 @@ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. command=@LIBEXECDIR@/tuf-server -pidfile=/var/run/tufmanager/tufmanager.pid +pidfile=/run/tufmanager/pid name="TUF Manager daemon" depend() diff --git a/src/server-main.vala b/src/server-main.vala index 03b0391..18ba475 100644 --- a/src/server-main.vala +++ b/src/server-main.vala @@ -75,7 +75,26 @@ namespace TUFManager { if (pid < 0) { Posix.exit (Posix.EXIT_FAILURE); } - else if (pid > 0) { + + if (pid > 0) { + try { + File file = File.new_for_path ("/run/tufmanager"); + if (!file.query_exists ()) { + file.make_directory_with_parents (); + } + file = null; + } + catch (Error e) { + stderr.printf (_ ("Error: %s\n"), e.message); + } + var stream = FileStream.open ("/run/tufmanager/pid", "w"); + if (stream == null) { + stderr.printf (_ ("Could not create pid file!\n")); + } + else { + uint32 pidfile = pid; + stream.puts (pidfile.to_string ()); + } Posix.exit (Posix.EXIT_SUCCESS); } @@ -100,7 +119,7 @@ namespace TUFManager { on_bus_acquired, () => {}, () => { - stderr.printf (_ ("Could not acquire bus name\n")); + stderr.printf (_ ("Could not acquire bus name!\n")); }); loop = new MainLoop ();