diff options
author | V3n3RiX <venerix@redcorelinux.org> | 2018-08-08 20:11:47 +0100 |
---|---|---|
committer | V3n3RiX <venerix@redcorelinux.org> | 2018-08-08 20:11:47 +0100 |
commit | f625b9919a60a30f1bd860f7d1b2eac183ced593 (patch) | |
tree | 7543f00925ff7277e31881de0a87801681f6f92f /dev-lang/erlang/files/erlang-add-epmd-pid-file-creation-for-openrc.patch | |
parent | e3872864be25f7421015bef2732fa57c0c9fb726 (diff) |
gentoo resync : 08.08.2018
Diffstat (limited to 'dev-lang/erlang/files/erlang-add-epmd-pid-file-creation-for-openrc.patch')
-rw-r--r-- | dev-lang/erlang/files/erlang-add-epmd-pid-file-creation-for-openrc.patch | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/dev-lang/erlang/files/erlang-add-epmd-pid-file-creation-for-openrc.patch b/dev-lang/erlang/files/erlang-add-epmd-pid-file-creation-for-openrc.patch new file mode 100644 index 000000000000..56e3946c93fa --- /dev/null +++ b/dev-lang/erlang/files/erlang-add-epmd-pid-file-creation-for-openrc.patch @@ -0,0 +1,90 @@ +From 04ace92c33a699f75445dc99c30d521311aba826 Mon Sep 17 00:00:00 2001 +From: Steve Arnold <nerdboy@gentoo.org> +Date: Mon, 6 Aug 2018 16:38:30 -0700 +Subject: [PATCH] Add daemon-mode pid file creation when not configured for + systemd + +Signed-off-by: Steve Arnold <nerdboy@gentoo.org> +--- + erts/epmd/src/epmd.c | 39 ++++++++++++++++++++++++++++++++++++++- + erts/epmd/src/epmd.h | 3 +++ + 2 files changed, 41 insertions(+), 1 deletion(-) + +diff --git a/erts/epmd/src/epmd.c b/erts/epmd/src/epmd.c +index 44e997e609..c74888a1ee 100644 +--- a/erts/epmd/src/epmd.c ++++ b/erts/epmd/src/epmd.c +@@ -40,6 +40,37 @@ static int check_relaxed(void); + #ifdef __WIN32__ + static int has_console(void); + #endif ++#ifndef HAVE_SYSTEMD_DAEMON ++static int create_pidfile(void); ++static const char *pidfile = EPMD_PIDFILE; ++#endif ++ ++#ifndef HAVE_SYSTEMD_DAEMON ++static int create_pidfile(void) ++{ ++ int fd; ++ ++ unlink(pidfile); ++ ++ /* open the pidfile */ ++ fd = open(pidfile, O_WRONLY|O_CREAT|O_EXCL, 0644); ++ if (fd >= 0) { ++ FILE *f; ++ ++ /* write our pid to it */ ++ f = fdopen(fd, "w"); ++ if (f != NULL) { ++ fprintf(f, "%d\n", getpid()); ++ fclose(f); ++ /* leave the fd open */ ++ return 0; ++ } ++ close(fd); ++ } ++ ++ return -1; ++} ++#endif /* (no) HAVE_SYSTEMD_DAEMON */ + + #ifdef DONT_USE_MAIN + +@@ -340,6 +371,13 @@ static void run_daemon(EpmdVars *g) + + umask(0); + ++#ifndef HAVE_SYSTEMD_DAEMON ++ if (create_pidfile() < 0) { ++ dbg_perror(g,"could not create pidfile %s", pidfile); ++ epmd_cleanup_exit(g,1); ++ } ++#endif /* HAVE_SYSTEMD_DAEMON */ ++ + for (fd = 0; fd < g->max_conn ; fd++) /* close all files ... */ + close(fd); + /* Syslog on linux will try to write to whatever if we dont +@@ -614,4 +652,3 @@ static int check_relaxed(void) + char* port_str = getenv("ERL_EPMD_RELAXED_COMMAND_CHECK"); + return (port_str != NULL) ? 1 : 0; + } +- +diff --git a/erts/epmd/src/epmd.h b/erts/epmd/src/epmd.h +index cffcd4ae7a..e53322acf5 100644 +--- a/erts/epmd/src/epmd.h ++++ b/erts/epmd/src/epmd.h +@@ -20,6 +20,9 @@ + + /* The port number is defined in a makefile */ + ++/* The name and path to the pid file */ ++#define EPMD_PIDFILE "/var/run/epmd.pid" ++ + /* Definitions of message codes */ + + /* Registration and queries */ +-- +2.17.0 + |