#include <isc/print.h>
#include <isc/resource.h>
#include <isc/result.h>
-#include <isc/strerror.h>
#include <isc/string.h>
#include <named/globals.h>
return;
}
if (cap_set_proc(caps) < 0) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
named_main_earlyfatal("cap_set_proc() failed: %s:"
" please ensure that the capset kernel"
" module is loaded. see insmod(8)",
if (err != -1 && curval) { \
err = cap_set_flag(caps, CAP_EFFECTIVE, 1, &capval, CAP_SET); \
if (err == -1) { \
- isc__strerror(errno, strbuf, sizeof(strbuf)); \
+ strerror_r(errno, strbuf, sizeof(strbuf)); \
named_main_earlyfatal("cap_set_proc failed: %s", strbuf); \
} \
\
err = cap_set_flag(caps, CAP_PERMITTED, 1, &capval, CAP_SET); \
if (err == -1) { \
- isc__strerror(errno, strbuf, sizeof(strbuf)); \
+ strerror_r(errno, strbuf, sizeof(strbuf)); \
named_main_earlyfatal("cap_set_proc failed: %s", strbuf); \
} \
} \
do { \
caps = cap_init(); \
if (caps == NULL) { \
- isc__strerror(errno, strbuf, sizeof(strbuf)); \
+ strerror_r(errno, strbuf, sizeof(strbuf)); \
named_main_earlyfatal("cap_init failed: %s", strbuf); \
} \
curcaps = cap_get_proc(); \
if (curcaps == NULL) { \
- isc__strerror(errno, strbuf, sizeof(strbuf)); \
+ strerror_r(errno, strbuf, sizeof(strbuf)); \
named_main_earlyfatal("cap_get_proc failed: %s", strbuf); \
} \
} while (0)
if (prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0) < 0) {
if (errno != EINVAL) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
named_main_earlyfatal("prctl() failed: %s", strbuf);
}
} else {
char strbuf[ISC_STRERRORSIZE];
if (pipe(dfd) == -1) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
named_main_earlyfatal("pipe(): %s", strbuf);
}
pid = fork();
if (pid == -1) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
named_main_earlyfatal("fork(): %s", strbuf);
}
if (pid != 0) {
#endif
if (setsid() == -1) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
named_main_earlyfatal("setsid(): %s", strbuf);
}
if (root != NULL) {
#ifdef HAVE_CHROOT
if (chroot(root) < 0) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
named_main_earlyfatal("chroot(): %s", strbuf);
}
#else
named_main_earlyfatal("chroot(): disabled");
#endif
if (chdir("/") < 0) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
named_main_earlyfatal("chdir(/): %s", strbuf);
}
#ifdef HAVE_LIBSCF
if (getuid() == 0) {
if (initgroups(runas_pw->pw_name, runas_pw->pw_gid) < 0) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
named_main_earlyfatal("initgroups(): %s", strbuf);
}
}
#endif
if (setgid(runas_pw->pw_gid) < 0) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
named_main_earlyfatal("setgid(): %s", strbuf);
}
if (setuid(runas_pw->pw_uid) < 0) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
named_main_earlyfatal("setuid(): %s", strbuf);
}
* call has disabled it.
*/
if (prctl(PR_SET_DUMPABLE,1,0,0,0) < 0) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
named_main_earlywarning("prctl(PR_SET_DUMPABLE) failed: %s",
strbuf);
}
if (stat(filename, &sb) == -1) {
if (errno != ENOENT) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
(*report)("couldn't stat '%s': %s", filename,
strbuf);
goto error;
mode |= S_IRGRP | S_IXGRP; /* g=rx */
mode |= S_IROTH | S_IXOTH; /* o=rx */
if (mkdir(filename, mode) == -1) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
(*report)("couldn't mkdir '%s': %s", filename,
strbuf);
goto error;
if (runas_pw != NULL &&
chown(filename, runas_pw->pw_uid,
runas_pw->pw_gid) == -1) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
(*report)("couldn't chown '%s': %s", filename,
strbuf);
}
#endif
#if defined(HAVE_SETEGID)
if (getegid() != gid && setegid(gid) == -1) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
named_main_earlywarning("unable to set effective "
"gid to %ld: %s",
(long)gid, strbuf);
#elif defined(HAVE_SETRESGID)
if (getresgid(&tmpg, &oldgid, &tmpg) == -1 || oldgid != gid) {
if (setresgid(-1, gid, -1) == -1) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
named_main_earlywarning("unable to set effective "
"gid to %d: %s", gid, strbuf);
}
#if defined(HAVE_SETEUID)
if (geteuid() != uid && seteuid(uid) == -1) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
named_main_earlywarning("unable to set effective "
"uid to %ld: %s",
(long)uid, strbuf);
#elif defined(HAVE_SETRESUID)
if (getresuid(&tmpu, &olduid, &tmpu) == -1 || olduid != uid) {
if (setresuid(-1, uid, -1) == -1) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
named_main_earlywarning("unable to set effective "
"uid to %d: %s", uid, strbuf);
}
*/
f = strdup(filename);
if (f == NULL) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
named_main_earlywarning("couldn't strdup() '%s': %s",
filename, strbuf);
return (NULL);
}
if (fd < 0) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
named_main_earlywarning("could not open file '%s': %s",
filename, strbuf);
return (NULL);
fp = fdopen(fd, "w");
if (fp == NULL) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
named_main_earlywarning("could not fdopen() file '%s': %s",
filename, strbuf);
}
pidfile = strdup(filename);
if (pidfile == NULL) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
(*report)("couldn't strdup() '%s': %s", filename, strbuf);
return;
}
*/
lockfile = strdup(filename);
if (lockfile == NULL) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
named_main_earlyfatal("couldn't allocate memory for '%s': %s",
filename, strbuf);
} else {
#include <isc/print.h>
#include <isc/result.h>
-#include <isc/strerror.h>
#include <isc/string.h>
#include <isc/ntpaths.h>
#include <isc/util.h>
UNUSED(switch_user);
fd = safe_open(filename, mode, false);
if (fd < 0) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_s(strbuf, sizeof(strbuf), errno);
named_main_earlywarning("could not open file '%s': %s",
filename, strbuf);
return (NULL);
fp = fdopen(fd, "w");
if (fp == NULL) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_s(strbuf, sizeof(strbuf), errno);
named_main_earlywarning("could not fdopen() file '%s': %s",
filename, strbuf);
close(fd);
pidfile = strdup(filename);
if (pidfile == NULL) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_s(strbuf, sizeof(strbuf), errno);
(*report)("couldn't strdup() '%s': %s", filename, strbuf);
return;
}
lockfile = strdup(filename);
if (lockfile == NULL) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_s(strbuf, sizeof(strbuf), errno);
named_main_earlyfatal("couldn't allocate memory for '%s': %s",
filename, strbuf);
}
AC_CHECK_HEADERS(readline/history.h)
fi
-
-AC_CHECK_FUNC(strerror, AC_DEFINE(HAVE_STRERROR))
#
# Use our own SPNEGO implementation?
#
#include <isc/result.h>
#include <isc/string.h>
#include <isc/util.h>
-#include <isc/strerror.h>
#include <dns/fixedname.h>
#include <dns/name.h>
fd = socket(AF_UNIX, SOCK_STREAM, 0);
if (fd == -1) {
char strbuf[ISC_STRERRORSIZE];
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
ssu_e_log(3, "ssu_external: unable to create socket - %s",
strbuf);
return (-1);
if (connect(fd, (struct sockaddr *)&addr, sizeof(addr)) == -1) {
char strbuf[ISC_STRERRORSIZE];
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
ssu_e_log(3, "ssu_external: unable to connect to "
"socket '%s' - %s",
path, strbuf);
isc_mem_free(mctx, data);
if (ret != (ssize_t) req_len) {
char strbuf[ISC_STRERRORSIZE];
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
ssu_e_log(3, "ssu_external: unable to send request - %s",
strbuf);
close(fd);
ret = read(fd, &reply, sizeof(uint32_t));
if (ret != (ssize_t) sizeof(uint32_t)) {
char strbuf[ISC_STRERRORSIZE];
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
ssu_e_log(3, "ssu_external: unable to receive reply - %s",
strbuf);
close(fd);
#include <isc/serial.h>
#include <isc/stats.h>
#include <isc/stdtime.h>
-#include <isc/strerror.h>
#include <isc/string.h>
#include <isc/taskpool.h>
#include <isc/thread.h>
"removing journal file");
if (remove(zone->journal) < 0 && errno != ENOENT) {
char strbuf[ISC_STRERRORSIZE];
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
isc_log_write(dns_lctx,
DNS_LOGCATEGORY_GENERAL,
DNS_LOGMODULE_ZONE,
zone->journal);
if (result != ISC_R_SUCCESS) {
char strbuf[ISC_STRERRORSIZE];
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
dns_zone_log(zone, ISC_LOG_ERROR,
"ixfr-from-differences: failed: "
"%s", strbuf);
if (DNS_ZONE_FLAG(zone, DNS_ZONEFLG_FORCEXFER) &&
remove(zone->masterfile) < 0 && errno != ENOENT) {
char strbuf[ISC_STRERRORSIZE];
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
isc_log_write(dns_lctx,
DNS_LOGCATEGORY_GENERAL,
DNS_LOGMODULE_ZONE,
"removing journal file");
if (remove(zone->journal) < 0 && errno != ENOENT) {
char strbuf[ISC_STRERRORSIZE];
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
isc_log_write(dns_lctx,
DNS_LOGCATEGORY_GENERAL,
DNS_LOGMODULE_ZONE,
unix/errno2result.@O@ unix/file.@O@ unix/fsaccess.@O@ \
unix/interfaceiter.@O@ unix/keyboard.@O@ unix/meminfo.@O@ \
unix/net.@O@ unix/os.@O@ unix/resource.@O@ unix/socket.@O@ \
- unix/stdio.@O@ unix/stdtime.@O@ unix/strerror.@O@ \
+ unix/stdio.@O@ unix/stdtime.@O@ \
unix/syslog.@O@ unix/time.@O@
NLSOBJS = nls/msgcat.@O@
#define thread_local __thread
#endif
+/***
+ *** Default strerror_r buffer size
+ ***/
+
+#define ISC_STRERRORSIZE 128
+
/***
*** Network.
***/
#include <isc/condition.h>
#include <isc/msgs.h>
-#include <isc/strerror.h>
#include <isc/string.h>
#include <isc/time.h>
#include <isc/util.h>
return (ISC_R_TIMEDOUT);
} while (presult == EINTR);
- isc__strerror(presult, strbuf, sizeof(strbuf));
+ strerror_r(presult, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"pthread_cond_timedwait() %s %s",
isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL,
#include <stdbool.h>
#include <stdio.h>
+#include <string.h>
#include <time.h>
#include <sys/time.h>
#include <errno.h>
#include <isc/mutex.h>
#include <isc/util.h>
#include <isc/print.h>
-#include <isc/strerror.h>
#include <isc/once.h>
#if ISC_MUTEX_PROFILE
if (err == ENOMEM)
return (ISC_R_NOMEMORY);
if (err != 0) {
- isc__strerror(err, strbuf, sizeof(strbuf));
+ strerror_r(err, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(file, line, "isc_mutex_init() failed: %s",
strbuf);
result = ISC_R_UNEXPECTED;
file.@O@ fsaccess.@O@ interfaceiter.@O@ \
keyboard.@O@ meminfo.@O@ \
net.@O@ os.@O@ resource.@O@ socket.@O@ stdio.@O@ stdtime.@O@ \
- strerror.@O@ syslog.@O@ time.@O@
+ syslog.@O@ time.@O@
# Alphabetically
SRCS = pk11_api.c \
app.c dir.c errno.c errno2result.c \
file.c fsaccess.c interfaceiter.c keyboard.c meminfo.c \
net.c os.c resource.c socket.c stdio.c stdtime.c \
- strerror.c syslog.c time.c
+ syslog.c time.c
SUBDIRS = include
TARGETS = ${OBJS}
@BIND9_MAKE_RULES@
-interfaceiter.@O@: interfaceiter.c ifiter_ioctl.c ifiter_sysctl.c ifiter_getifaddrs.c
-
+interfaceiter.@O@: interfaceiter.c ifiter_getifaddrs.c
#include <sys/epoll.h>
#endif
+#include <isc/platform.h>
#include <isc/app.h>
#include <isc/condition.h>
#include <isc/mem.h>
#include <isc/mutex.h>
#include <isc/event.h>
#include <isc/platform.h>
-#include <isc/strerror.h>
#include <isc/string.h>
#include <isc/task.h>
#include <isc/time.h>
if (sigfillset(&sa.sa_mask) != 0 ||
sigaction(sig, &sa, NULL) < 0) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
isc_msgcat_get(isc_msgcat, ISC_MSGSET_APP,
ISC_MSG_SIGNALSETUP,
*/
presult = pthread_init();
if (presult != 0) {
- isc__strerror(presult, strbuf, sizeof(strbuf));
+ strerror_r(presult, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"isc_app_start() pthread_init: %s", strbuf);
return (ISC_R_UNEXPECTED);
sigaddset(&sset, SIGHUP) != 0 ||
sigaddset(&sset, SIGINT) != 0 ||
sigaddset(&sset, SIGTERM) != 0) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"isc_app_start() sigsetops: %s", strbuf);
result = ISC_R_UNEXPECTED;
}
presult = pthread_sigmask(SIG_BLOCK, &sset, NULL);
if (presult != 0) {
- isc__strerror(presult, strbuf, sizeof(strbuf));
+ strerror_r(presult, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"isc_app_start() pthread_sigmask: %s",
strbuf);
sigaddset(&sset, SIGHUP) != 0 ||
sigaddset(&sset, SIGINT) != 0 ||
sigaddset(&sset, SIGTERM) != 0) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"isc_app_run() sigsetops: %s",
strbuf);
return (ISC_R_SUCCESS);
if (sigemptyset(&sset) != 0) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"isc_app_run() sigsetops: %s",
strbuf);
}
#ifdef HAVE_GPERFTOOLS_PROFILER
if (sigaddset(&sset, SIGALRM) != 0) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"isc_app_run() sigsetops: %s",
strbuf);
result = pthread_kill(main_thread, SIGTERM);
if (result != 0) {
- isc__strerror(result,
+ strerror_r(result,
strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"isc_app_shutdown() "
if (isc_bind9) {
/* BIND9 internal, single context */
if (kill(getpid(), SIGTERM) < 0) {
- isc__strerror(errno,
+ strerror_r(errno,
strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"isc_app_shutdown() "
result = pthread_kill(main_thread, SIGHUP);
if (result != 0) {
- isc__strerror(result,
+ strerror_r(result,
strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"isc_app_reload() "
if (isc_bind9) {
/* BIND9 internal, single context */
if (kill(getpid(), SIGHUP) < 0) {
- isc__strerror(errno,
+ strerror_r(errno,
strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"isc_app_reload() "
#include <config.h>
#include <stdbool.h>
+#include <string.h>
+#include <isc/platform.h>
#include <isc/result.h>
-#include <isc/strerror.h>
#include <isc/util.h>
#include "errno2result.h"
return (ISC_R_CONNREFUSED);
default:
if (dolog) {
- isc__strerror(posixerrno, strbuf, sizeof(strbuf));
+ strerror_r(posixerrno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(file, line, "unable to convert errno "
"to isc_result: %d: %s",
posixerrno, strbuf);
#endif
if (getifaddrs(&iter->ifaddrs) < 0) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
isc_msgcat_get(isc_msgcat,
ISC_MSGSET_IFITERGETIFADDRS,
+++ /dev/null
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-
-#ifndef ISC_STRERROR_H
-#define ISC_STRERROR_H
-
-/*! \file */
-
-#include <sys/types.h>
-
-#include <isc/lang.h>
-
-ISC_LANG_BEGINDECLS
-
-/*% String Error Size */
-#define ISC_STRERRORSIZE 128
-
-/*%
- * Provide a thread safe wrapper to strerror().
- *
- * Requires:
- * 'buf' to be non NULL.
- */
-void
-isc__strerror(int num, char *buf, size_t bufsize);
-
-ISC_LANG_ENDDECLS
-
-#endif /* ISC_STRERROR_H */
#include <isc/net.h>
#include <isc/print.h>
#include <isc/result.h>
-#include <isc/strerror.h>
#include <isc/string.h>
#include <isc/types.h>
#include <isc/util.h>
#include <isc/net.h>
#include <isc/netdb.h>
#include <isc/once.h>
-#include <isc/strerror.h>
#include <isc/string.h>
#include <isc/util.h>
#endif
return (ISC_R_NOTFOUND);
default:
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"socket() %s: %s",
isc_msgcat_get(isc_msgcat,
/* check for TCP sockets */
s = socket(PF_INET6, SOCK_STREAM, 0);
if (s == -1) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"socket() %s: %s",
isc_msgcat_get(isc_msgcat,
/* check for UDP sockets */
s = socket(PF_INET6, SOCK_DGRAM, 0);
if (s == -1) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"socket() %s: %s",
isc_msgcat_get(isc_msgcat,
/* we only use this for UDP sockets */
s = socket(PF_INET6, SOCK_DGRAM, IPPROTO_UDP);
if (s == -1) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"socket() %s: %s",
isc_msgcat_get(isc_msgcat,
#endif
if (ret == -1) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
#ifdef USE_FIONBIO_IOCTL
"ioctl(%d, FIONBIO, &on): %s", fd,
isc_result_t result;
if (bind(s, res->ai_addr, res->ai_addrlen) < 0) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
isc_log_write(isc_lctx, ISC_LOGCATEGORY_GENERAL,
ISC_LOGMODULE_SOCKET, ISC_LOG_DEBUG(10),
"bind: %s", strbuf);
}
if (getsockname(s, (struct sockaddr *)&ss, &len) < 0) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
isc_log_write(isc_lctx, ISC_LOGCATEGORY_GENERAL,
ISC_LOGMODULE_SOCKET, ISC_LOG_DEBUG(10),
"getsockname: %s", strbuf);
default:
debug = ISC_LOG_NOTICE;
}
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
if (debug != ISC_LOG_NOTICE) {
isc_log_write(isc_lctx, ISC_LOGCATEGORY_GENERAL,
ISC_LOGMODULE_SOCKET, ISC_LOG_DEBUG(10),
s = socket(res0->ai_family, res0->ai_socktype, res0->ai_protocol);
if (s == -1) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
isc_log_write(isc_lctx, ISC_LOGCATEGORY_GENERAL,
ISC_LOGMODULE_SOCKET, ISC_LOG_DEBUG(10),
"socket: %s", strbuf);
s = socket(res0->ai_family, res0->ai_socktype, res0->ai_protocol);
if (s == -1) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
isc_log_write(isc_lctx, ISC_LOGCATEGORY_GENERAL,
ISC_LOGMODULE_SOCKET, ISC_LOG_DEBUG(10),
"socket: %s", strbuf);
#include <isc/resource.h>
#include <isc/socket.h>
#include <isc/stats.h>
-#include <isc/strerror.h>
#include <isc/string.h>
#include <isc/task.h>
#include <isc/thread.h>
ret = epoll_ctl(manager->epoll_fd, op, fd, &event);
if (ret == -1 && errno != ENOENT) {
char strbuf[ISC_STRERRORSIZE];
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"epoll_ctl(DEL), %d: %s", fd, strbuf);
result = ISC_R_UNEXPECTED;
} while (cc < 0 && SOFT_ERROR(errno));
if (cc < 0) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
FATAL_ERROR(__FILE__, __LINE__,
isc_msgcat_get(isc_msgcat, ISC_MSGSET_SOCKET,
ISC_MSG_WRITEFAILED,
if (SOFT_ERROR(errno))
return;
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
FATAL_ERROR(__FILE__, __LINE__,
isc_msgcat_get(isc_msgcat, ISC_MSGSET_SOCKET,
ISC_MSG_READFAILED,
#endif
if (ret == -1) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
#ifdef USE_FIONBIO_IOCTL
"ioctl(%d, FIONBIO, &on): %s", fd,
(void *)&dscp, sizeof(int)) < 0)
{
char strbuf[ISC_STRERRORSIZE];
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"setsockopt(%d, IP_TOS, %.02x)"
" %s: %s",
if (setsockopt(sock->fd, IPPROTO_IPV6, IPV6_TCLASS,
(void *)&dscp, sizeof(int)) < 0) {
char strbuf[ISC_STRERRORSIZE];
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"setsockopt(%d, IPV6_TCLASS, "
"%.02x) %s: %s",
return (DOIO_SOFT);
if (isc_log_wouldlog(isc_lctx, IOEVENT_LEVEL)) {
- isc__strerror(recv_errno, strbuf, sizeof(strbuf));
+ strerror_r(recv_errno, strbuf, sizeof(strbuf));
socket_log(sock, NULL, IOEVENT,
isc_msgcat, ISC_MSGSET_SOCKET,
ISC_MSG_DOIORECV,
* a status.
*/
isc_sockaddr_format(&dev->address, addrbuf, sizeof(addrbuf));
- isc__strerror(send_errno, strbuf, sizeof(strbuf));
+ strerror_r(send_errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__, "internal_send: %s: %s",
addrbuf, strbuf);
dev->result = isc__errno2result(send_errno);
switch (errno) {
case EMFILE:
case ENFILE:
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
isc_log_iwrite(isc_lctx, ISC_LOGCATEGORY_GENERAL,
ISC_LOGMODULE_SOCKET, ISC_LOG_ERROR,
isc_msgcat, ISC_MSGSET_SOCKET,
return (ISC_R_FAMILYNOSUPPORT);
default:
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"%s() %s: %s", err,
isc_msgcat_get(isc_msgcat,
if (sock->type != isc_sockettype_unix && bsdcompat &&
setsockopt(sock->fd, SOL_SOCKET, SO_BSDCOMPAT,
(void *)&on, sizeof(on)) < 0) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"setsockopt(%d, SO_BSDCOMPAT) %s: %s",
sock->fd,
#ifdef SO_NOSIGPIPE
if (setsockopt(sock->fd, SOL_SOCKET, SO_NOSIGPIPE,
(void *)&on, sizeof(on)) < 0) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"setsockopt(%d, SO_NOSIGPIPE) %s: %s",
sock->fd,
if (setsockopt(sock->fd, SOL_SOCKET, SO_TIMESTAMP,
(void *)&on, sizeof(on)) < 0
&& errno != ENOPROTOOPT) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"setsockopt(%d, SO_TIMESTAMP) %s: %s",
sock->fd,
if ((sock->pf == AF_INET6)
&& (setsockopt(sock->fd, IPPROTO_IPV6, IPV6_RECVPKTINFO,
(void *)&on, sizeof(on)) < 0)) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"setsockopt(%d, IPV6_RECVPKTINFO) "
"%s: %s", sock->fd,
if ((sock->pf == AF_INET6)
&& (setsockopt(sock->fd, IPPROTO_IPV6, IPV6_PKTINFO,
(void *)&on, sizeof(on)) < 0)) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"setsockopt(%d, IPV6_PKTINFO) %s: %s",
sock->fd,
set_rcvbuf) == ISC_R_SUCCESS);
if (setsockopt(sock->fd, SOL_SOCKET, SO_RCVBUF,
(void *)&rcvbuf, sizeof(rcvbuf)) == -1) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"setsockopt(%d, SO_RCVBUF, %d) %s: %s",
sock->fd, rcvbuf,
if ((sock->pf == AF_INET6)
&& (setsockopt(sock->fd, IPPROTO_IPV6, IPV6_RECVTCLASS,
(void *)&on, sizeof(on)) < 0)) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"setsockopt(%d, IPV6_RECVTCLASS) "
"%s: %s", sock->fd,
if ((sock->pf == AF_INET)
&& (setsockopt(sock->fd, IPPROTO_IP, IP_RECVTOS,
(void *)&on, sizeof(on)) < 0)) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"setsockopt(%d, IP_RECVTOS) "
"%s: %s", sock->fd,
default:
break;
}
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"internal_accept: %s() %s: %s", err,
isc_msgcat_get(isc_msgcat,
#endif /* USE_KQUEUE */
if (cc < 0 && !SOFT_ERROR(errno)) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
FATAL_ERROR(__FILE__, __LINE__,
"%s %s: %s", fnname,
isc_msgcat_get(isc_msgcat,
manager->kqueue_fd = kqueue();
if (manager->kqueue_fd == -1) {
result = isc__errno2result(errno);
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"kqueue %s: %s",
isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL,
manager->epoll_fd = epoll_create(manager->nevents);
if (manager->epoll_fd == -1) {
result = isc__errno2result(errno);
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"epoll_create %s: %s",
isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL,
manager->devpoll_fd = open("/dev/poll", O_RDWR);
if (manager->devpoll_fd == -1) {
result = isc__errno2result(errno);
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"open(/dev/poll) %s: %s",
isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL,
* select/poll loop when something internal needs to be done.
*/
if (pipe(manager->pipe_fds) != 0) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"pipe() %s: %s",
isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL,
if (active) {
if (stat(sockaddr->type.sunix.sun_path, &sb) < 0) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
isc_log_write(isc_lctx, ISC_LOGCATEGORY_GENERAL,
ISC_LOGMODULE_SOCKET, ISC_LOG_ERROR,
"isc_socket_cleanunix: stat(%s): %s",
return;
}
if (unlink(sockaddr->type.sunix.sun_path) < 0) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
isc_log_write(isc_lctx, ISC_LOGCATEGORY_GENERAL,
ISC_LOGMODULE_SOCKET, ISC_LOG_ERROR,
"isc_socket_cleanunix: unlink(%s): %s",
s = socket(AF_UNIX, SOCK_STREAM, 0);
if (s < 0) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
isc_log_write(isc_lctx, ISC_LOGCATEGORY_GENERAL,
ISC_LOGMODULE_SOCKET, ISC_LOG_WARNING,
"isc_socket_cleanunix: socket(%s): %s",
case ENOENT: /* We exited cleanly last time */
break;
default:
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
isc_log_write(isc_lctx, ISC_LOGCATEGORY_GENERAL,
ISC_LOGMODULE_SOCKET, ISC_LOG_WARNING,
"isc_socket_cleanunix: stat(%s): %s",
case ECONNREFUSED:
case ECONNRESET:
if (unlink(sockaddr->type.sunix.sun_path) < 0) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
isc_log_write(isc_lctx, ISC_LOGCATEGORY_GENERAL,
ISC_LOGMODULE_SOCKET,
ISC_LOG_WARNING,
}
break;
default:
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
isc_log_write(isc_lctx, ISC_LOGCATEGORY_GENERAL,
ISC_LOGMODULE_SOCKET, ISC_LOG_WARNING,
"isc_socket_cleanunix: connect(%s): %s",
#endif
if (chmod(path, perm) < 0) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
isc_log_write(isc_lctx, ISC_LOGCATEGORY_GENERAL,
ISC_LOGMODULE_SOCKET, ISC_LOG_ERROR,
"isc_socket_permunix: chmod(%s, %d): %s",
result = ISC_R_FAILURE;
}
if (chown(path, owner, group) < 0) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
isc_log_write(isc_lctx, ISC_LOGCATEGORY_GENERAL,
ISC_LOGMODULE_SOCKET, ISC_LOG_ERROR,
"isc_socket_permunix: chown(%s, %d, %d): %s",
case EINVAL:
return (ISC_R_BOUND);
default:
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__, "bind: %s",
strbuf);
return (ISC_R_UNEXPECTED);
strlcpy(afa.af_name, filter, sizeof(afa.af_name));
if (setsockopt(sock->fd, SOL_SOCKET, SO_ACCEPTFILTER,
&afa, sizeof(afa)) == -1) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
socket_log(sock, NULL, CREATION, isc_msgcat, ISC_MSGSET_SOCKET,
ISC_MSG_FILTER, "setsockopt(SO_ACCEPTFILTER): %s",
strbuf);
#endif
if (setsockopt(sock->fd, IPPROTO_TCP, TCP_FASTOPEN,
(void *)&backlog, sizeof(backlog)) < 0) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"setsockopt(%d, TCP_FASTOPEN) failed with %s",
sock->fd, strbuf);
if (listen(sock->fd, (int)backlog) < 0) {
UNLOCK(&sock->lock);
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__, "listen: %s", strbuf);
sock->connected = 0;
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
isc_sockaddr_format(addr, addrbuf, sizeof(addrbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__, "connect(%s) %d/%s",
addrbuf, errno, strbuf);
result = ISC_R_UNEXPECTED;
isc_sockaddr_format(&sock->peer_address, peerbuf,
sizeof(peerbuf));
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"internal_connect: connect(%s) %s",
peerbuf, strbuf);
len = sizeof(addressp->type);
if (getsockname(sock->fd, &addressp->type.sa, (void *)&len) < 0) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__, "getsockname: %s",
strbuf);
result = ISC_R_UNEXPECTED;
if (setsockopt(sock->fd, IPPROTO_IPV6, IPV6_V6ONLY,
(void *)&onoff, sizeof(int)) < 0) {
char strbuf[ISC_STRERRORSIZE];
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"setsockopt(%d, IPV6_V6ONLY) "
"%s: %s", sock->fd,
if (setsockopt(sock->fd, IPPROTO_IP, IP_TOS,
(void *)&value, sizeof(value)) < 0) {
char strbuf[ISC_STRERRORSIZE];
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"setsockopt(%d, IP_TOS, %.02x) "
"%s: %s", sock->fd, value >> 2,
if (setsockopt(sock->fd, IPPROTO_IPV6, IPV6_TCLASS,
(void *)&value, sizeof(value)) < 0) {
char strbuf[ISC_STRERRORSIZE];
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"setsockopt(%d, IPV6_TCLASS, %.02x) "
"%s: %s", sock->fd, dscp >> 2,
+++ /dev/null
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-
-/*! \file */
-
-#include <config.h>
-
-#include <stdio.h>
-#include <string.h>
-
-#include <isc/mutex.h>
-#include <isc/once.h>
-#include <isc/print.h>
-#include <isc/strerror.h>
-#include <isc/util.h>
-
-#ifdef HAVE_STRERROR
-/*%
- * We need to do this this way for profiled locks.
- */
-static isc_mutex_t isc_strerror_lock;
-static void init_lock(void) {
- RUNTIME_CHECK(isc_mutex_init(&isc_strerror_lock) == ISC_R_SUCCESS);
-}
-#else
-extern const char * const sys_errlist[];
-extern const int sys_nerr;
-#endif
-
-void
-isc__strerror(int num, char *buf, size_t size) {
-#ifdef HAVE_STRERROR
- char *msg;
- unsigned int unum = (unsigned int)num;
- static isc_once_t once = ISC_ONCE_INIT;
-
- REQUIRE(buf != NULL);
-
- RUNTIME_CHECK(isc_once_do(&once, init_lock) == ISC_R_SUCCESS);
-
- LOCK(&isc_strerror_lock);
- msg = strerror(num);
- if (msg != NULL)
- snprintf(buf, size, "%s", msg);
- else
- snprintf(buf, size, "Unknown error: %u", unum);
- UNLOCK(&isc_strerror_lock);
-#else
- unsigned int unum = (unsigned int)num;
-
- REQUIRE(buf != NULL);
-
- if (num >= 0 && num < sys_nerr)
- snprintf(buf, size, "%s", sys_errlist[num]);
- else
- snprintf(buf, size, "Unknown error: %u", unum);
-#endif
-}
#include <isc/log.h>
#include <isc/platform.h>
#include <isc/print.h>
-#include <isc/strerror.h>
#include <isc/string.h>
#include <isc/time.h>
#include <isc/tm.h>
REQUIRE(t != NULL);
if (gettimeofday(&tv, NULL) == -1) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__, "%s", strbuf);
return (ISC_R_UNEXPECTED);
}
INSIST(i->nanoseconds < NS_PER_S);
if (gettimeofday(&tv, NULL) == -1) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__, "%s", strbuf);
return (ISC_R_UNEXPECTED);
}
return (ISC_R_NORESOURCES);
default:
if (dolog) {
- isc__strerror(posixerrno, strbuf, sizeof(strbuf));
+ strerror_r(posixerrno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(file, line,
"unable to convert errno "
"to isc_result: %d: %s",
#if defined(_WIN32) || defined(_WIN64)
/* We are on Windows */
# define strtok_r strtok_s
+# define strerror_r(errnum, buf, buflen) strerror_s(buf, buflen, errnum)
+
+#define ISC_STRERRORSIZE 128
#ifndef strtoull
#define strtoull _strtoui64
+++ /dev/null
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-
-#ifndef ISC_STRERROR_H
-#define ISC_STRERROR_H
-
-#include <sys/types.h>
-
-#include <isc/lang.h>
-
-ISC_LANG_BEGINDECLS
-
-#define ISC_STRERRORSIZE 128
-
-/*
- * Provide a thread safe wrapper to strerrror().
- *
- * Requires:
- * 'buf' to be non NULL.
- */
-void
-isc__strerror(int num, char *buf, size_t bufsize);
-
-ISC_LANG_ENDDECLS
-
-#endif /* ISC_STRERROR_H */
error = WSAGetLastError();
if (error == WSAEAFNOSUPPORT)
goto inet6_only;
- isc__strerror(error, strbuf, sizeof(strbuf));
+ strerror_r(error, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"making interface scan socket: %s",
strbuf);
error = WSAGetLastError();
if (error != WSAEFAULT && error != WSAENOBUFS) {
errno = error;
- isc__strerror(error, strbuf, sizeof(strbuf));
+ strerror_r(error, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"get interface configuration: %s",
strbuf);
error = WSAGetLastError();
if (error == WSAEAFNOSUPPORT)
goto inet_only;
- isc__strerror(error, strbuf, sizeof(strbuf));
+ strerror_r(error, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"making interface scan socket: %s",
strbuf);
error = WSAGetLastError();
if (error != WSAEFAULT && error != WSAENOBUFS) {
errno = error;
- isc__strerror(error, strbuf, sizeof(strbuf));
+ strerror_r(error, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"sio address list query: %s",
strbuf);
isc__socketmgr_getmaxsockets
isc__socketmgr_setreserved
isc__socketmgr_setstats
-isc__strerror
isc__task_getname
isc__task_gettag
isc__task_unsendrange
case WSAEINVAL:
return (ISC_R_NOTFOUND);
default:
- isc__strerror(errval, strbuf, sizeof(strbuf));
+ strerror_r(errval, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"socket() %s: %s",
isc_msgcat_get(isc_msgcat,
/* check for TCP sockets */
s = socket(PF_INET6, SOCK_STREAM, 0);
if (s == INVALID_SOCKET) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"socket() %s: %s",
isc_msgcat_get(isc_msgcat,
/* check for UDP sockets */
s = socket(PF_INET6, SOCK_DGRAM, 0);
if (s == INVALID_SOCKET) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"socket() %s: %s",
isc_msgcat_get(isc_msgcat,
/* we only use this for UDP sockets */
s = socket(PF_INET6, SOCK_DGRAM, IPPROTO_UDP);
if (s == INVALID_SOCKET) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"socket() %s: %s",
isc_msgcat_get(isc_msgcat,
if (!PostQueuedCompletionStatus(manager->hIoCompletionPort,
0, 0, 0)) {
errval = GetLastError();
- isc__strerror(errval, strbuf, sizeof(strbuf));
+ strerror_r(errval, strbuf, sizeof(strbuf));
FATAL_ERROR(__FILE__, __LINE__,
isc_msgcat_get(isc_msgcat, ISC_MSGSET_SOCKET,
ISC_MSG_FAILED,
&manager->dwIOCPThreadIds[i]);
if (manager->hIOCPThreads[i] == NULL) {
errval = GetLastError();
- isc__strerror(errval, strbuf, sizeof(strbuf));
+ strerror_r(errval, strbuf, sizeof(strbuf));
FATAL_ERROR(__FILE__, __LINE__,
isc_msgcat_get(isc_msgcat, ISC_MSGSET_SOCKET,
ISC_MSG_FAILED,
hHeapHandle = HeapCreate(0, 10 * sizeof(IoCompletionInfo), 0);
if (hHeapHandle == NULL) {
errval = GetLastError();
- isc__strerror(errval, strbuf, sizeof(strbuf));
+ strerror_r(errval, strbuf, sizeof(strbuf));
FATAL_ERROR(__FILE__, __LINE__,
isc_msgcat_get(isc_msgcat, ISC_MSGSET_SOCKET,
ISC_MSG_FAILED,
0, manager->maxIOCPThreads);
if (manager->hIoCompletionPort == NULL) {
errval = GetLastError();
- isc__strerror(errval, strbuf, sizeof(strbuf));
+ strerror_r(errval, strbuf, sizeof(strbuf));
FATAL_ERROR(__FILE__, __LINE__,
isc_msgcat_get(isc_msgcat, ISC_MSGSET_SOCKET,
ISC_MSG_FAILED,
if (hiocp == NULL) {
DWORD errval = GetLastError();
- isc__strerror(errval, strbuf, sizeof(strbuf));
+ strerror_r(errval, strbuf, sizeof(strbuf));
isc_log_iwrite(isc_lctx,
ISC_LOGCATEGORY_GENERAL,
ISC_LOGMODULE_SOCKET, ISC_LOG_ERROR,
err = WSAStartup(wVersionRequested, &wsaData);
if (err != 0) {
char strbuf[ISC_STRERRORSIZE];
- isc__strerror(err, strbuf, sizeof(strbuf));
+ strerror_r(err, strbuf, sizeof(strbuf));
FATAL_ERROR(__FILE__, __LINE__, "WSAStartup() %s: %s",
isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL,
ISC_MSG_FAILED, "failed"),
ret = ioctlsocket(fd, FIONBIO, &flags);
if (ret == -1) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"ioctlsocket(%d, FIOBIO, %d): %s",
fd, flags, strbuf);
break;
}
if (doreturn == DOIO_HARD) {
- isc__strerror(windows_errno, errorstring, bufsize);
+ strerror_r(windows_errno, errorstring, bufsize);
}
return (doreturn);
}
* If we got this far then something is wrong
*/
if (isc_log_wouldlog(isc_lctx, IOEVENT_LEVEL)) {
- isc__strerror(*send_errno, strbuf, sizeof(strbuf));
+ strerror_r(*send_errno, strbuf, sizeof(strbuf));
socket_log(__LINE__, sock, NULL, IOEVENT,
isc_msgcat, ISC_MSGSET_SOCKET,
ISC_MSG_INTERNALSEND,
return (ISC_R_FAMILYNOSUPPORT);
default:
- isc__strerror(socket_errno, strbuf, sizeof(strbuf));
+ strerror_r(socket_errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"socket() %s: %s",
isc_msgcat_get(isc_msgcat,
if ((pf == AF_INET6)
&& (setsockopt(sock->fd, IPPROTO_IPV6, IPV6_RECVPKTINFO,
(char *)&on, sizeof(on)) < 0)) {
- isc__strerror(WSAGetLastError(), strbuf, sizeof(strbuf));
+ strerror_r(WSAGetLastError(), strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"setsockopt(%d, IPV6_RECVPKTINFO) "
"%s: %s", sock->fd,
if ((pf == AF_INET6)
&& (setsockopt(sock->fd, IPPROTO_IPV6, IPV6_PKTINFO,
(char *)&on, sizeof(on)) < 0)) {
- isc__strerror(WSAGetLastError(), strbuf, sizeof(strbuf));
+ strerror_r(WSAGetLastError(), strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"setsockopt(%d, IPV6_PKTINFO) %s: %s",
sock->fd,
#undef ERROR_MATCH
default:
result = ISC_R_UNEXPECTED;
- isc__strerror(connect_errno, strbuf, sizeof(strbuf));
+ strerror_r(connect_errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"internal_connect: connect() %s",
strbuf);
if (!SetThreadPriority(GetCurrentThread(),
THREAD_PRIORITY_ABOVE_NORMAL)) {
errval = GetLastError();
- isc__strerror(errval, strbuf, sizeof(strbuf));
+ strerror_r(errval, strbuf, sizeof(strbuf));
FATAL_ERROR(__FILE__, __LINE__,
isc_msgcat_get(isc_msgcat, ISC_MSGSET_SOCKET,
ISC_MSG_FAILED,
case WSAEINVAL:
return (ISC_R_BOUND);
default:
- isc__strerror(bind_errno, strbuf, sizeof(strbuf));
+ strerror_r(bind_errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__, "bind: %s",
strbuf);
return (ISC_R_UNEXPECTED);
if (listen(sock->fd, (int)backlog) < 0) {
UNLOCK(&sock->lock);
- isc__strerror(WSAGetLastError(), strbuf, sizeof(strbuf));
+ strerror_r(WSAGetLastError(), strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__, "listen: %s", strbuf);
#if defined(ISC_PLATFORM_HAVETFO) && defined(TCP_FASTOPEN)
if (setsockopt(sock->fd, IPPROTO_TCP, TCP_FASTOPEN,
&on, sizeof(on)) < 0) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
+ strerror_r(errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"setsockopt(%d, TCP_FASTOPEN) failed with %s",
sock->fd, strbuf);
case WSAEINVAL:
return (ISC_R_BOUND);
default:
- isc__strerror(bind_errno, strbuf,
+ strerror_r(bind_errno, strbuf,
sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"bind: %s", strbuf);
len = sizeof(addressp->type);
if (getsockname(sock->fd, &addressp->type.sa, (void *)&len) < 0) {
- isc__strerror(WSAGetLastError(), strbuf, sizeof(strbuf));
+ strerror_r(WSAGetLastError(), strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__, "getsockname: %s",
strbuf);
result = ISC_R_UNEXPECTED;
+++ /dev/null
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-
-#include <config.h>
-
-#include <stdio.h>
-#include <string.h>
-#include <winsock2.h>
-
-#include <isc/mutex.h>
-#include <isc/once.h>
-#include <isc/print.h>
-#include <isc/strerror.h>
-#include <isc/util.h>
-
-/*
- * Forward declarations
- */
-
-char *
-FormatError(int error);
-
-char *
-GetWSAErrorMessage(int errval);
-
-char *
-NTstrerror(int err, BOOL *bfreebuf);
-
-/*
- * We need to do this this way for profiled locks.
- */
-
-static isc_mutex_t isc_strerror_lock;
-static void init_lock(void) {
- RUNTIME_CHECK(isc_mutex_init(&isc_strerror_lock) == ISC_R_SUCCESS);
-}
-
-/*
- * This routine needs to free up any buffer allocated by FormatMessage
- * if that routine gets used.
- */
-
-void
-isc__strerror(int num, char *buf, size_t size) {
- char *msg;
- BOOL freebuf;
- unsigned int unum = num;
- static isc_once_t once = ISC_ONCE_INIT;
-
- REQUIRE(buf != NULL);
-
- RUNTIME_CHECK(isc_once_do(&once, init_lock) == ISC_R_SUCCESS);
-
- LOCK(&isc_strerror_lock);
- freebuf = FALSE;
- msg = NTstrerror(num, &freebuf);
- if (msg != NULL)
- snprintf(buf, size, "%s", msg);
- else
- snprintf(buf, size, "Unknown error: %u", unum);
- if(freebuf && msg != NULL) {
- LocalFree(msg);
- }
- UNLOCK(&isc_strerror_lock);
-}
-
-/*
- * Note this will cause a memory leak unless the memory allocated here
- * is freed by calling LocalFree. isc__strerror does this before unlocking.
- * This only gets called if there is a system type of error and will likely
- * be an unusual event.
- */
-char *
-FormatError(int error) {
- LPVOID lpMsgBuf = NULL;
- FormatMessage(
- FORMAT_MESSAGE_ALLOCATE_BUFFER |
- FORMAT_MESSAGE_FROM_SYSTEM |
- FORMAT_MESSAGE_IGNORE_INSERTS,
- NULL,
- error,
- /* Default language */
- MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
- (LPTSTR) &lpMsgBuf,
- 0,
- NULL);
-
- return (lpMsgBuf);
-}
-
-/*
- * This routine checks the error value and calls the WSA Windows Sockets
- * Error message function GetWSAErrorMessage below if it's within that range
- * since those messages are not available in the system error messages.
- */
-char *
-NTstrerror(int err, BOOL *bfreebuf) {
- char *retmsg = NULL;
-
- /* Copy the error value first in case of other errors */
- DWORD errval = err;
-
- *bfreebuf = FALSE;
-
- /* Get the Winsock2 error messages */
- if (errval >= WSABASEERR && errval <= (WSABASEERR + 1015)) {
- retmsg = GetWSAErrorMessage(errval);
- if (retmsg != NULL)
- return (retmsg);
- }
- /*
- * If it's not one of the standard Unix error codes,
- * try a system error message
- */
- if (errval > (DWORD) _sys_nerr) {
- *bfreebuf = TRUE;
- return (FormatError(errval));
- } else {
- return (strerror(errval));
- }
-}
-
-/*
- * This is a replacement for perror
- */
-void __cdecl
-NTperror(char *errmsg) {
- /* Copy the error value first in case of other errors */
- int errval = errno;
- BOOL bfreebuf = FALSE;
- char *msg;
-
- msg = NTstrerror(errval, &bfreebuf);
- fprintf(stderr, "%s: %s\n", errmsg, msg);
- if(bfreebuf == TRUE) {
- LocalFree(msg);
- }
-
-}
-
-/*
- * Return the error string related to Winsock2 errors.
- * This function is necessary since FormatMessage knows nothing about them
- * and there is no function to get them.
- */
-char *
-GetWSAErrorMessage(int errval) {
- char *msg;
-
- switch (errval) {
-
- case WSAEINTR:
- msg = "Interrupted system call";
- break;
-
- case WSAEBADF:
- msg = "Bad file number";
- break;
-
- case WSAEACCES:
- msg = "Permission denied";
- break;
-
- case WSAEFAULT:
- msg = "Bad address";
- break;
-
- case WSAEINVAL:
- msg = "Invalid argument";
- break;
-
- case WSAEMFILE:
- msg = "Too many open sockets";
- break;
-
- case WSAEWOULDBLOCK:
- msg = "Operation would block";
- break;
-
- case WSAEINPROGRESS:
- msg = "Operation now in progress";
- break;
-
- case WSAEALREADY:
- msg = "Operation already in progress";
- break;
-
- case WSAENOTSOCK:
- msg = "Socket operation on non-socket";
- break;
-
- case WSAEDESTADDRREQ:
- msg = "Destination address required";
- break;
-
- case WSAEMSGSIZE:
- msg = "Message too long";
- break;
-
- case WSAEPROTOTYPE:
- msg = "Protocol wrong type for socket";
- break;
-
- case WSAENOPROTOOPT:
- msg = "Bad protocol option";
- break;
-
- case WSAEPROTONOSUPPORT:
- msg = "Protocol not supported";
- break;
-
- case WSAESOCKTNOSUPPORT:
- msg = "Socket type not supported";
- break;
-
- case WSAEOPNOTSUPP:
- msg = "Operation not supported on socket";
- break;
-
- case WSAEPFNOSUPPORT:
- msg = "Protocol family not supported";
- break;
-
- case WSAEAFNOSUPPORT:
- msg = "Address family not supported";
- break;
-
- case WSAEADDRINUSE:
- msg = "Address already in use";
- break;
-
- case WSAEADDRNOTAVAIL:
- msg = "Can't assign requested address";
- break;
-
- case WSAENETDOWN:
- msg = "Network is down";
- break;
-
- case WSAENETUNREACH:
- msg = "Network is unreachable";
- break;
-
- case WSAENETRESET:
- msg = "Net connection reset";
- break;
-
- case WSAECONNABORTED:
- msg = "Software caused connection abort";
- break;
-
- case WSAECONNRESET:
- msg = "Connection reset by peer";
- break;
-
- case WSAENOBUFS:
- msg = "No buffer space available";
- break;
-
- case WSAEISCONN:
- msg = "Socket is already connected";
- break;
-
- case WSAENOTCONN:
- msg = "Socket is not connected";
- break;
-
- case WSAESHUTDOWN:
- msg = "Can't send after socket shutdown";
- break;
-
- case WSAETOOMANYREFS:
- msg = "Too many references: can't splice";
- break;
-
- case WSAETIMEDOUT:
- msg = "Connection timed out";
- break;
-
- case WSAECONNREFUSED:
- msg = "Connection refused";
- break;
-
- case WSAELOOP:
- msg = "Too many levels of symbolic links";
- break;
-
- case WSAENAMETOOLONG:
- msg = "File name too long";
- break;
-
- case WSAEHOSTDOWN:
- msg = "Host is down";
- break;
-
- case WSAEHOSTUNREACH:
- msg = "No route to host";
- break;
-
- case WSAENOTEMPTY:
- msg = "Directory not empty";
- break;
-
- case WSAEPROCLIM:
- msg = "Too many processes";
- break;
-
- case WSAEUSERS:
- msg = "Too many users";
- break;
-
- case WSAEDQUOT:
- msg = "Disc quota exceeded";
- break;
-
- case WSAESTALE:
- msg = "Stale NFS file handle";
- break;
-
- case WSAEREMOTE:
- msg = "Too many levels of remote in path";
- break;
-
- case WSASYSNOTREADY:
- msg = "Network system is unavailable";
- break;
-
- case WSAVERNOTSUPPORTED:
- msg = "Winsock version out of range";
- break;
-
- case WSANOTINITIALISED:
- msg = "WSAStartup not yet called";
- break;
-
- case WSAEDISCON:
- msg = "Graceful shutdown in progress";
- break;
-/*
- case WSAHOST_NOT_FOUND:
- msg = "Host not found";
- break;
-
- case WSANO_DATA:
- msg = "No host data of that type was found";
- break;
-*/
- default:
- msg = NULL;
- break;
- }
- return (msg);
-}
-
-/*
- * These error messages are more informative about CryptAPI Errors than the
- * standard error messages
- */
-
-char *
-GetCryptErrorMessage(int errval) {
- char *msg;
-
- switch (errval) {
-
- case NTE_BAD_FLAGS:
- msg = "The dwFlags parameter has an illegal value.";
- break;
- case NTE_BAD_KEYSET:
- msg = "The Registry entry for the key container "
- "could not be opened and may not exist.";
- break;
- case NTE_BAD_KEYSET_PARAM:
- msg = "The pszContainer or pszProvider parameter "
- "is set to an illegal value.";
- break;
- case NTE_BAD_PROV_TYPE:
- msg = "The value of the dwProvType parameter is out "
- "of range. All provider types must be from "
- "1 to 999, inclusive.";
- break;
- case NTE_BAD_SIGNATURE:
- msg = "The provider DLL signature did not verify "
- "correctly. Either the DLL or the digital "
- "signature has been tampered with.";
- break;
- case NTE_EXISTS:
- msg = "The dwFlags parameter is CRYPT_NEWKEYSET, but the key"
- " container already exists.";
- break;
- case NTE_KEYSET_ENTRY_BAD:
- msg = "The Registry entry for the pszContainer key container "
- "was found (in the HKEY_CURRENT_USER window), but is "
- "corrupt. See the section System Administration for "
- " etails about CryptoAPI's Registry usage.";
- break;
- case NTE_KEYSET_NOT_DEF:
- msg = "No Registry entry exists in the HKEY_CURRENT_USER "
- "window for the key container specified by "
- "pszContainer.";
- break;
- case NTE_NO_MEMORY:
- msg = "The CSP ran out of memory during the operation.";
- break;
- case NTE_PROV_DLL_NOT_FOUND:
- msg = "The provider DLL file does not exist or is not on the "
- "current path.";
- break;
- case NTE_PROV_TYPE_ENTRY_BAD:
- msg = "The Registry entry for the provider type specified by "
- "dwProvType is corrupt. This error may relate to "
- "either the user default CSP list or the machine "
- "default CSP list. See the section System "
- "Administration for details about CryptoAPI's "
- "Registry usage.";
- break;
- case NTE_PROV_TYPE_NO_MATCH:
- msg = "The provider type specified by dwProvType does not "
- "match the provider type found in the Registry. Note "
- "that this error can only occur when pszProvider "
- "specifies an actual CSP name.";
- break;
- case NTE_PROV_TYPE_NOT_DEF:
- msg = "No Registry entry exists for the provider type "
- "specified by dwProvType.";
- break;
- case NTE_PROVIDER_DLL_FAIL:
- msg = "The provider DLL file could not be loaded, and "
- "may not exist. If it exists, then the file is "
- "not a valid DLL.";
- break;
- case NTE_SIGNATURE_FILE_BAD:
- msg = "An error occurred while loading the DLL file image, "
- "prior to verifying its signature.";
- break;
-
- default:
- msg = NULL;
- break;
- }
- return msg;
-}
-
./lib/isc/unix/include/isc/offset.h C 2000,2001,2004,2005,2007,2008,2016,2018
./lib/isc/unix/include/isc/stat.h C 2004,2007,2014,2016,2018
./lib/isc/unix/include/isc/stdtime.h C 1999,2000,2001,2004,2005,2007,2011,2012,2016,2018
-./lib/isc/unix/include/isc/strerror.h C 2001,2004,2005,2007,2008,2016,2018
./lib/isc/unix/include/isc/syslog.h C 1999,2000,2001,2004,2005,2007,2016,2018
./lib/isc/unix/include/isc/time.h C 1998,1999,2000,2001,2004,2005,2006,2007,2008,2009,2012,2014,2015,2016,2017,2018
./lib/isc/unix/include/pkcs11/cryptoki.h X 2014,2018
./lib/isc/unix/socket_p.h C 2000,2001,2004,2005,2007,2008,2009,2016,2018
./lib/isc/unix/stdio.c C 2000,2001,2004,2007,2011,2012,2013,2014,2016,2018
./lib/isc/unix/stdtime.c C 1999,2000,2001,2004,2005,2007,2016,2018
-./lib/isc/unix/strerror.c C 2001,2004,2005,2007,2009,2016,2018
./lib/isc/unix/syslog.c C 2001,2004,2005,2007,2016,2018
./lib/isc/unix/time.c C 1998,1999,2000,2001,2003,2004,2005,2006,2007,2008,2011,2012,2014,2015,2016,2017,2018
./lib/isc/version.c C 1998,1999,2000,2001,2004,2005,2007,2016,2018
./lib/isc/win32/include/isc/platform.h.in C 2001,2004,2005,2007,2008,2009,2013,2014,2015,2016,2017,2018
./lib/isc/win32/include/isc/stat.h C 2000,2001,2003,2004,2007,2009,2012,2016,2018
./lib/isc/win32/include/isc/stdtime.h C 1999,2000,2001,2004,2005,2007,2011,2012,2016,2018
-./lib/isc/win32/include/isc/strerror.h C 2001,2004,2007,2016,2018
./lib/isc/win32/include/isc/syslog.h C 1999,2000,2001,2004,2007,2016,2018
./lib/isc/win32/include/isc/thread.h C 1998,1999,2000,2001,2004,2005,2007,2009,2013,2016,2017,2018
./lib/isc/win32/include/isc/time.h C 1998,1999,2000,2001,2004,2006,2007,2008,2009,2012,2014,2015,2016,2017,2018
./lib/isc/win32/socket.c C 2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018
./lib/isc/win32/stdio.c C 2000,2001,2004,2007,2013,2016,2018
./lib/isc/win32/stdtime.c C 1999,2000,2001,2004,2007,2013,2016,2018
-./lib/isc/win32/strerror.c C 2001,2002,2004,2007,2016,2018
./lib/isc/win32/syslog.c C 2001,2002,2003,2004,2007,2014,2016,2018
./lib/isc/win32/syslog.h C 2001,2002,2004,2007,2016,2018
./lib/isc/win32/thread.c C 1998,1999,2000,2001,2004,2005,2007,2016,2017,2018