aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/suricata/src/util-pidfile.c
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/suricata/src/util-pidfile.c')
-rw-r--r--framework/src/suricata/src/util-pidfile.c127
1 files changed, 0 insertions, 127 deletions
diff --git a/framework/src/suricata/src/util-pidfile.c b/framework/src/suricata/src/util-pidfile.c
deleted file mode 100644
index a13e54ef..00000000
--- a/framework/src/suricata/src/util-pidfile.c
+++ /dev/null
@@ -1,127 +0,0 @@
-/* Copyright (C) 2007-2010 Open Information Security Foundation
- *
- * You can copy, redistribute or modify this Program under the terms of
- * the GNU General Public License version 2 as published by the Free
- * Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * version 2 along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301, USA.
- */
-
-/**
- * \file
- *
- * \author Pablo Rincon Crespo <pablo.rincon.crespo@gmail.com>
- * \author Victor Julien <victor@inliniac.net>
- *
- * Utility code for dealing with a pidfile.
- * Adaptation of Steve Grubbs patch to our coding guidelines
- * (thanks for the patch Steve ;)
- */
-
-#include "suricata-common.h"
-#include "util-pidfile.h"
-
-/**
- * \brief Write a pid file (used at the startup)
- * This commonly needed by the init scripts
- *
- * \param pointer to the name of the pid file to write (optarg)
- *
- * \retval 0 if succes
- * \retval -1 on failure
- */
-int SCPidfileCreate(const char *pidfile)
-{
- SCEnter();
-
- int pidfd = 0;
- char val[16];
-
- size_t len = snprintf(val, sizeof(val), "%"PRIuMAX"\n", (uintmax_t)getpid());
- if (len <= 0) {
- SCLogError(SC_ERR_PIDFILE_SNPRINTF, "Pid error (%s)", strerror(errno));
- SCReturnInt(-1);
- }
-
- pidfd = open(pidfile, O_CREAT | O_TRUNC | O_NOFOLLOW | O_WRONLY, 0644);
- if (pidfd < 0) {
- SCLogError(SC_ERR_PIDFILE_OPEN, "unable to set pidfile '%s': %s",
- pidfile,
- strerror(errno));
- SCReturnInt(-1);
- }
-
- ssize_t r = write(pidfd, val, (unsigned int)len);
- if (r == -1) {
- SCLogError(SC_ERR_PIDFILE_WRITE, "unable to write pidfile: %s", strerror(errno));
- close(pidfd);
- SCReturnInt(-1);
- } else if ((size_t)r != len) {
- SCLogError(SC_ERR_PIDFILE_WRITE, "unable to write pidfile: wrote"
- " %"PRIdMAX" of %"PRIuMAX" bytes.", (intmax_t)r, (uintmax_t)len);
- close(pidfd);
- SCReturnInt(-1);
- }
-
- close(pidfd);
- SCReturnInt(0);
-}
-
-/**
- * \brief Remove the pid file (used at the startup)
- *
- * \param pointer to the name of the pid file to write (optarg)
- */
-void SCPidfileRemove(const char *pid_filename)
-{
- if (pid_filename != NULL) {
- /* we ignore the result, the user may have removed the file already. */
- (void)unlink(pid_filename);
- }
-}
-
-/**
- * \brief Check a pid file (used at the startup)
- * This commonly needed by the init scripts
- *
- * \param pointer to the name of the pid file to write (optarg)
- *
- * \retval 0 if succes
- * \retval -1 on failure
- */
-int SCPidfileTestRunning(const char *pid_filename)
-{
- if (access(pid_filename, F_OK) == 0) {
- /* Check if the existing process is still alive. */
- pid_t pidv;
- FILE *pf;
-
- pf = fopen(pid_filename, "r");
- if (pf == NULL) {
- SCLogError(SC_ERR_INITIALIZATION,
- "pid file '%s' exists and can not be read. Aborting!",
- pid_filename);
- return -1;
- }
-
- if (fscanf(pf, "%d", &pidv) == 1 && kill(pidv, 0) == 0) {
- fclose(pf);
- SCLogError(SC_ERR_INITIALIZATION,
- "pid file '%s' exists. Is Suricata already running? Aborting!",
- pid_filename);
- return -1;
- }
-
- if (pf != NULL)
- fclose(pf);
- }
- return 0;
-}