From 275444ab8281377a6711f99d806bdc09bb907299 Mon Sep 17 00:00:00 2001
From: Matthew Wild <mwild1@gmail.com>
Date: Wed, 13 Jan 2010 00:03:22 +0000
Subject: mod_posix: Adjust file open mode depending on whether file exists
 (take that fopen designers!!!)

---
 plugins/mod_posix.lua | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

(limited to 'plugins')

diff --git a/plugins/mod_posix.lua b/plugins/mod_posix.lua
index 8b0bd399..ed0dbd87 100644
--- a/plugins/mod_posix.lua
+++ b/plugins/mod_posix.lua
@@ -20,6 +20,7 @@ end
 local logger_set = require "util.logger".setwriter;
 
 local lfs = require "lfs";
+local stat = lfs.attributes;
 
 local prosody = _G.prosody;
 
@@ -78,7 +79,8 @@ local function write_pidfile()
 	end
 	pidfile = module:get_option("pidfile");
 	if pidfile then
-		pidfile_handle, err = io.open(pidfile, "a+");
+		local mode = stat(pidfile) and "r+" or "w+";
+		pidfile_handle, err = io.open(pidfile, mode);
 		if not pidfile_handle then
 			module:log("error", "Couldn't write pidfile at %s; %s", pidfile, err);
 			prosody.shutdown("Couldn't write pidfile");
-- 
cgit v1.2.3