X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=src%2Fdaemon.c;h=838a808a86b8fb19315a1f1eb0c2be126b4a68dd;hp=f0ccd3eebac8206e522e3a44af2accf6005c67e2;hb=43a9d38d20c1b1bcd1a03b2445a501d27526bd35;hpb=b3b89ab95e626286ad2fe9ccf5b589f153e5aa37 diff --git a/src/daemon.c b/src/daemon.c index f0ccd3e..838a808 100644 --- a/src/daemon.c +++ b/src/daemon.c @@ -1,5 +1,5 @@ /* This file is part of the YAZ toolkit. - * Copyright (C) 1995-2008 Index Data + * Copyright (C) 1995-2011 Index Data * See the file LICENSE for details. */ @@ -27,16 +27,16 @@ #include #endif -#if HAVE_SYS_STAT_H -#include -#endif - #include #if HAVE_PWD_H #include #endif +#if HAVE_SYS_PRCTL_H +#include +#endif + #include #include #include @@ -53,7 +53,7 @@ static void write_pidfile(int pid_fd) yaz_log(YLOG_FATAL|YLOG_ERRNO, "ftruncate"); exit(1); } - if (write(pid_fd, buf, strlen(buf)) != strlen(buf)) + if (write(pid_fd, buf, strlen(buf)) != (int) strlen(buf)) { yaz_log(YLOG_FATAL|YLOG_ERRNO, "write"); exit(1); @@ -203,6 +203,13 @@ int yaz_daemon(const char *progname, yaz_log(YLOG_FATAL|YLOG_ERRNO, "setuid"); exit(1); } + /* Linux don't produce core dumps evern if the limit is right and + files are writable.. This fixes this. See prctl(2) */ +#if HAVE_SYS_PRCTL_H +#ifdef PR_SET_DUMPABLE + prctl(PR_SET_DUMPABLE, 1, 0, 0); +#endif +#endif } if (flags & YAZ_DAEMON_FORK) @@ -274,7 +281,9 @@ int yaz_daemon(const char *progname, /* * Local variables: * c-basic-offset: 4 + * c-file-style: "Stroustrup" * indent-tabs-mode: nil * End: * vim: shiftwidth=4 tabstop=8 expandtab */ +