10 #include <event2/util.h>
13 #include "pathnames.h"
17 dnscrypt_memzero(void * const pnt
, const size_t size
)
19 volatile unsigned char *pnt_
= (volatile unsigned char *) pnt
;
20 size_t i
= (size_t) 0U;
31 uint64_t ts
= (uint64_t) 0U;
34 ret
= evutil_gettimeofday(&tv
, NULL
);
37 ts
= (uint64_t) tv
.tv_sec
* 1000000U + (uint64_t) tv
.tv_usec
;
48 if ((z
= (long) sysconf(_SC_OPEN_MAX
)) < 0L) {
49 logger_error(NULL
, "_SC_OPEN_MAX");
52 return (unsigned int) z
;
56 closedesc_all(const int closestdin
)
60 if (closestdin
!= 0) {
62 if ((fodder
= open(_PATH_DEVNULL
, O_RDONLY
)) == -1) {
65 (void) dup2(fodder
, 0);
70 if ((fodder
= open(_PATH_DEVNULL
, O_WRONLY
)) == -1) {
73 (void) dup2(fodder
, 1);
88 if ((child
= fork()) == (pid_t
) -1) {
89 logger_error(NULL
, "Unable to fork() in order to daemonize");
91 } else if (child
!= (pid_t
) 0) {
94 if (setsid() == (pid_t
) -1) {
95 logger_error(NULL
, "Unable to setsid()");
99 if (isatty((int) i
)) {
100 (void) close((int) i
);
104 if (closedesc_all(1) != 0) {
105 logger_error(NULL
, _PATH_DEVNULL
" duplication");
114 closedesc_all(const int closestdin
)