From 3c586ccf3e85f5d3ba6c87cde8005166e18bbac8 Mon Sep 17 00:00:00 2001 From: jailbird777 Date: Wed, 24 Aug 2022 19:53:52 -0500 Subject: [PATCH] Remove ancient portability code (#361) Remove portability code for systems that don't follow at least SUSv3. This fairly closely aligns with ISO C99, which solanum already requires. --- configure.ac | 23 +--- include/stdinc.h | 18 --- ircd/ircd.c | 4 - librb/acinclude.m4 | 12 -- librb/configure.ac | 193 ++++-------------------------- librb/include/commio-int.h | 4 - librb/src/arc4random.c | 5 - librb/src/commio.c | 238 +------------------------------------ librb/src/epoll.c | 6 +- librb/src/linebuf.c | 2 - librb/src/poll.c | 35 +----- librb/src/rb_lib.c | 42 +------ librb/src/sigio.c | 5 +- librb/src/tools.c | 51 -------- librb/src/unix.c | 37 ------ ssld/ssld.c | 2 - wsockd/wsockd.c | 2 - 17 files changed, 31 insertions(+), 648 deletions(-) diff --git a/configure.ac b/configure.ac index f261614e..c18734a6 100644 --- a/configure.ac +++ b/configure.ac @@ -124,7 +124,7 @@ dnl Checks for header files. AC_HEADER_STDC AC_HEADER_STDBOOL -AC_CHECK_HEADERS([crypt.h sys/resource.h sys/param.h errno.h sys/syslog.h stddef.h sys/wait.h wait.h sys/epoll.h sys/uio.h machine/endian.h]) +AC_CHECK_HEADERS([crypt.h sys/param.h sys/syslog.h sys/epoll.h machine/endian.h]) dnl Stuff that the memory manager (imalloc) depends on dnl ================================================== @@ -171,33 +171,12 @@ AC_CHECK_FUNCS([strlcat strlcpy]) AC_TYPE_INT16_T AC_TYPE_INT32_T -AC_CHECK_TYPE([sa_family_t], [], -[AC_DEFINE(sa_family_t, [u_int16_t], [If system does not define sa_family_t, define it here.])], -[[#include -#include ]]) - AC_CHECK_TYPES([uintptr_t]) dnl check for various functions... -AC_CHECK_FUNCS([snprintf vsnprintf socketpair mmap gettimeofday strdup strndup ]) AC_FUNC_ALLOCA -dnl Specialized functions checks -dnl ============================ - -dnl check for nanosleep -AC_CHECK_FUNC(nanosleep,,[AC_CHECK_LIB(rt,nanosleep, - LIBS="${LIBS} -lrt", - [AC_CHECK_LIB(posix4,nanosleep, LIBS="${LIBS} -lposix4" - )])]) -if test x$ac_cv_func_nanosleep = xno && test x$ac_cv_lib_posix4_nanosleep = xno && test x$ac_cv_lib_rt_nanosleep = xno -then - AC_MSG_RESULT("nanosleep not found..using select for delay") -else - AC_DEFINE([HAVE_NANOSLEEP], 1, [Define if nanosleep exists]) -fi - dnl OpenSSL support AC_MSG_CHECKING(for OpenSSL) AC_ARG_ENABLE(openssl, diff --git a/include/stdinc.h b/include/stdinc.h index d620f779..127ee1c8 100644 --- a/include/stdinc.h +++ b/include/stdinc.h @@ -64,11 +64,7 @@ char *alloca (); # endif #endif - -#ifdef HAVE_STDDEF_H #include -#endif - #ifdef HAVE_STDBOOL_H # include @@ -98,18 +94,11 @@ typedef bool _Bool; #include #include - -#ifdef HAVE_UNISTD_H #include -#endif - #include #include #include -#ifdef HAVE_SYS_RESOURCE_H #include -#endif - #include @@ -117,15 +106,8 @@ typedef bool _Bool; #include #endif -#ifdef HAVE_ERRNO_H #include -#else -extern int errno; -#endif - -#ifdef HAVE_SYS_UIO_H #include -#endif #if defined(__INTEL_COMPILER) || defined(__GNUC__) # ifdef __unused diff --git a/ircd/ircd.c b/ircd/ircd.c index 5751d20c..582964e8 100644 --- a/ircd/ircd.c +++ b/ircd/ircd.c @@ -197,7 +197,6 @@ ircd_shutdown(const char *reason) static void init_sys(void) { -#if defined(RLIMIT_NOFILE) && defined(HAVE_SYS_RESOURCE_H) struct rlimit limit; if(!getrlimit(RLIMIT_NOFILE, &limit)) @@ -211,7 +210,6 @@ init_sys(void) } return; } -#endif /* RLIMIT_FD_MAX */ maxconnections = MAXCONNECTIONS; } @@ -425,7 +423,6 @@ check_pidfile(const char *filename) static void setup_corefile(void) { -#ifdef HAVE_SYS_RESOURCE_H struct rlimit rlim; /* resource limits */ /* Set corefilesize to maximum */ @@ -434,7 +431,6 @@ setup_corefile(void) rlim.rlim_cur = rlim.rlim_max; setrlimit(RLIMIT_CORE, &rlim); } -#endif } static void diff --git a/librb/acinclude.m4 b/librb/acinclude.m4 index f4db8aad..ae4b425e 100644 --- a/librb/acinclude.m4 +++ b/librb/acinclude.m4 @@ -84,15 +84,9 @@ AC_DEFUN([RB_CHECK_TIMER_CREATE], [AC_CACHE_CHECK([for a working timer_create(CLOCK_REALTIME)], [rb__cv_timer_create_works], [AC_TRY_RUN([ -#ifdef HAVE_TIME_H #include -#endif -#ifdef HAVE_SIGNAL_H #include -#endif -#ifdef HAVE_UNISTD_H #include -#endif int main(int argc, char *argv[]) { #if HAVE_TIMER_CREATE @@ -125,15 +119,9 @@ AC_DEFUN([RB_CHECK_TIMERFD_CREATE], [AC_CACHE_CHECK([for a working timerfd_create(CLOCK_REALTIME)], [rb__cv_timerfd_create_works], [AC_TRY_RUN([ -#ifdef HAVE_TIME_H #include -#endif -#ifdef HAVE_SIGNAL_H #include -#endif -#ifdef HAVE_UNISTD_H #include -#endif #ifdef HAVE_SYS_TIMERFD_H #include #endif diff --git a/librb/configure.ac b/librb/configure.ac index 89ef564d..5b81bcda 100644 --- a/librb/configure.ac +++ b/librb/configure.ac @@ -84,7 +84,7 @@ AC_TYPE_UID_T dnl Checks for header files. AC_HEADER_STDC -AC_CHECK_HEADERS([crypt.h unistd.h sys/socket.h sys/stat.h sys/time.h time.h netinet/in.h netinet/tcp.h arpa/inet.h errno.h sys/uio.h spawn.h sys/poll.h sys/epoll.h sys/select.h sys/devpoll.h sys/event.h port.h signal.h sys/signalfd.h sys/timerfd.h]) +AC_CHECK_HEADERS([crypt.h sys/poll.h sys/epoll.h sys/select.h sys/devpoll.h sys/event.h port.h sys/signalfd.h sys/timerfd.h]) AC_HEADER_TIME dnl Networking Functions @@ -95,75 +95,15 @@ AC_SEARCH_LIBS(socket, [socket],,) AC_CHECK_MEMBER([struct sockaddr.sa_len], [AC_DEFINE(SOCKADDR_IN_HAS_LEN, 1, [Define to 1 if sockaddr has a 'sa_len' member.])],,[[ -#ifdef HAVE_SYS_TYPES_H #include -#endif -#ifdef HAVE_SYS_SOCKET_H #include -#endif ]]) -AC_CHECK_TYPE([socklen_t], rb_cv_socklen_t=socklen_t,[ - AC_MSG_CHECKING([for socklen_t equivalent]) - AC_CACHE_VAL([rb_cv_socklen_t], - [ - # Systems have either "struct sockaddr *" or - # "void *" as the second argument to getpeername - rb_cv_socklen_t= - for arg2 in "struct sockaddr" void; do - for t in int size_t unsigned long "unsigned long"; do - AC_TRY_COMPILE([ -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -int getpeername (int, $arg2 *, $t *); -],[ -$t len; -getpeername(0,0,&len); -],[ - rb_cv_socklen_t="$t" - break -]) - done - done - - if test "x$rb_cv_socklen_t" = x; then - AC_MSG_WARN([Cannot find a type to use in place of socklen_t using int]) - rb_cv_socklen_t=int - fi - ]) - AC_MSG_RESULT($rb_cv_socklen_t)], - [#include -#include ]) - -rb_socklen_t=$rb_cv_socklen_t - - - - - -AC_CHECK_TYPES([struct sockaddr_storage],[ - rb_have_sockaddr_storage=yes - ],[], [ - #include - #include - ]) - - dnl Check for stdarg.h - if we cant find it, halt configure AC_CHECK_HEADER(stdarg.h, , [AC_MSG_ERROR([** stdarg.h could not be found - librb will not compile without it **])]) -AC_CHECK_TYPE([sa_family_t], [], -[AC_DEFINE(sa_family_t, [u_int16_t], [If system does not define sa_family_t, define it here.])], -[[#include -#include ]]) - - dnl check for various functions... -AC_CHECK_FUNCS([snprintf vsnprintf socketpair gettimeofday writev sendmsg gmtime_r strtok_r usleep posix_spawn getexecname strlcpy strlcat strnlen strcasestr strcasecmp strncasecmp fstat signalfd select poll kevent port_create epoll_ctl arc4random getrusage timerfd_create]) +AC_CHECK_FUNCS([getexecname strlcpy strlcat strcasestr signalfd kevent port_create epoll_ctl arc4random timerfd_create]) AC_SEARCH_LIBS(dlinfo, dl, AC_DEFINE(HAVE_DLINFO, 1, [Define if you have dlinfo])) AC_SEARCH_LIBS(nanosleep, rt posix4, AC_DEFINE(HAVE_NANOSLEEP, 1, [Define if you have nanosleep])) @@ -466,82 +406,40 @@ if test "x$rb_alloca_h" = "xyes"; then echo '#define RB_HAVE_ALLOCA_H 1' >> $outfile fi -if test "x$rb_header_stdc" = "xyes"; then - echo '#include ' >> $outfile - echo '#include ' >> $outfile -elif test "x$rb_header_stdlib" = "xyes"; then - echo '#include ' >> $outfile -fi - -if test "x$rb_header_string_h" = "xyes"; then - echo '#include ' >> $outfile -fi - -if test "x$rb_stdint_h" = "xyes"; then - echo '#include ' >> $outfile -fi - -if test "x$rb_inttypes_h" = "xyes"; then - echo '#include ' >> $outfile -fi - -if test "x$rb_sys_types_h" = "xyes"; then - echo '#include ' >> $outfile -fi -if test "x$rb_sys_time_h" = "xyes"; then - echo '#include ' >> $outfile -fi -if test "x$rb_sys_stat_h" = "xyes"; then - echo '#include ' >> $outfile -fi -if test "x$rb_time_h" = "xyes"; then - echo '#include ' >> $outfile -fi - -if test "x$rb_sys_socket_h" = "xyes"; then - echo '#include ' >> $outfile -fi - -if test "x$rb_netinet_in_h" = "xyes"; then - echo '#include ' >> $outfile -fi - -if test "x$rb_netinet_tcp_h" == "xyes"; then - echo '#include ' >> $outfile -fi +echo '#include ' >> $outfile +echo '#include ' >> $outfile +echo '#include ' >> $outfile +echo '#include ' >> $outfile +echo '#include ' >> $outfile +echo '#include ' >> $outfile +echo '#include ' >> $outfile +echo '#include ' >> $outfile +echo '#include ' >> $outfile +echo '#include ' >> $outfile +echo '#include ' >> $outfile +echo '#include ' >> $outfile if test "x$rb_netinet_sctp_h" == "xyes"; then echo '#include ' >> $outfile fi -if test "x$rb_arpa_inet_h" = "xyes"; then - echo '#include ' >> $outfile -fi - -if test "x$rb_unistd_h" = "xyes"; then - echo '#include ' >> $outfile -fi +echo '#include ' >> $outfile +echo '#include ' >> $outfile if test "x$rb_crypt_h" = "xyes"; then echo '#include ' >> $outfile fi -if test "x$rb_errno_h" = "xyes"; then - echo '#include ' >> $outfile -fi +echo '#include ' >> $outfile -echo "typedef $rb_socklen_t rb_socklen_t;" >> $outfile +echo "typedef socklen_t rb_socklen_t;" >> $outfile if test "x$rb_sockaddr_sa_len" = "xyes"; then echo '#define RB_SOCKADDR_HAS_SA_LEN 1' >> $outfile fi -if test "x$rb_sockaddr_storage" = "xyes"; then - echo '#define rb_sockaddr_storage sockaddr_storage' >> $outfile -else - echo 'struct rb_sockaddr_storage { uint8_t _padding[[128]]; };' >> $outfile -fi +echo '#define rb_sockaddr_storage sockaddr_storage' >> $outfile cat >> $outfile <<\_______EOF #endif /* __LIBRB_CONFIG_H */ @@ -555,15 +453,6 @@ else fi ],[ - if test x$ac_cv_header_stdc = xyes; then - rb_header_stdc=yes - fi - if test x$ac_cv_header_stdlib_h = xyes; then - rb_header_stdlib_h=yes - fi - if test x$ac_cv_header_string_h = xyes; then - rb_header_string_h=yes - fi if test x$ac_cv_header_memory_h = xyes; then rb_header_memory_h=yes fi @@ -575,34 +464,7 @@ fi if test x$ac_cv_member_struct_sockaddr_sa_len = xyes; then rb_sockaddr_sa_len=yes fi - if test x$ac_cv_header_sys_socket_h = xyes; then - rb_sys_socket_h=yes - fi - if test x$ac_cv_header_sys_types_h = xyes; then - rb_sys_types_h=yes - fi - if test x$ac_cv_header_sys_stat_h = xyes; then - rb_sys_stat_h=yes - fi - if test x$ac_cv_header_sys_time_h = xyes; then - rb_sys_time_h=yes - fi - if test x$ac_cv_header_time_h = xyes; then - rb_time_h=yes - fi - if test x$ac_cv_header_stdint_h = xyes; then - rb_stdint_h=yes - fi - if test x$ac_cv_header_inttypes_h = xyes; then - rb_inttypes_h=yes - fi - if test x$ac_cv_header_netinet_in_h = xyes; then - rb_netinet_in_h=yes - fi - if test x$ac_cv_header_netinet_tcp_h = xyes; then - rb_netinet_tcp_h=yes - fi if test x$ac_cv_header_netinet_sctp_h = xyes; then rb_netinet_sctp_h=yes fi @@ -610,27 +472,12 @@ fi if test x$ac_cv_header_crypt_h = xyes; then rb_crypt_h=yes fi - if test x$ac_cv_header_errno_h = xyes; then - rb_errno_h=yes - fi - if test x$ac_cv_header_unistd_h = xyes; then - rb_unistd_h=yes - fi - rb_socklen_t=$rb_socklen_t - - if test "x$rb_have_sockaddr_storage" = "xyes"; then - rb_sockaddr_storage="yes" - else - rb_sockaddr_storage="no" - fi + rb_socklen_t="socklen_t" rb_mv="$MV" rb_rm="$RM" - ] - - ) diff --git a/librb/include/commio-int.h b/librb/include/commio-int.h index 69951dc2..db3ed25c 100644 --- a/librb/include/commio-int.h +++ b/librb/include/commio-int.h @@ -34,7 +34,6 @@ #define rb_hash_fd(x) ((x ^ (x >> RB_FD_HASH_BITS) ^ (x >> (RB_FD_HASH_BITS * 2))) & RB_FD_HASH_MASK) -#ifdef HAVE_WRITEV #ifndef UIO_MAXIOV # if defined(__FreeBSD__) || defined(__APPLE__) || defined(__NetBSD__) /* FreeBSD 4.7 defines it in sys/uio.h only if _KERNEL is specified */ @@ -58,9 +57,6 @@ #else #define RB_UIO_MAXIOV UIO_MAXIOV #endif -#else -#define RB_UIO_MAXIOV 16 -#endif struct conndata { /* We don't need the host here ? */ diff --git a/librb/src/arc4random.c b/librb/src/arc4random.c index 4082d3ce..e183d32d 100644 --- a/librb/src/arc4random.c +++ b/librb/src/arc4random.c @@ -34,10 +34,7 @@ #include "arc4random.h" -#ifdef HAVE_GETRUSAGE #include -#endif - struct arc4_stream @@ -104,13 +101,11 @@ arc4_stir(struct arc4_stream *as) rb_gettimeofday(&tv, NULL); arc4_addrandom(as, (void *)&tv.tv_usec, sizeof(&tv.tv_usec)); -#if defined(HAVE_GETRUSAGE) && RUSAGE_SELF { struct rusage buf; getrusage(RUSAGE_SELF, &buf); arc4_addrandom(as, (void *)&buf, sizeof(buf)); memset(&buf, 0, sizeof(buf))} -#endif fd = open("/dev/urandom", O_RDONLY); if(fd != -1) diff --git a/librb/src/commio.c b/librb/src/commio.c index e2c12275..490706f9 100644 --- a/librb/src/commio.c +++ b/librb/src/commio.c @@ -28,9 +28,7 @@ #include #include #include -#ifdef HAVE_SYS_UIO_H #include -#endif #define HAVE_SSL 1 #ifndef MSG_NOSIGNAL @@ -71,11 +69,6 @@ static PF rb_connect_timeout; static PF rb_connect_outcome; static void mangle_mapped_sockaddr(struct sockaddr *in); -#ifndef HAVE_SOCKETPAIR -static int rb_inet_socketpair(int d, int type, int protocol, int sv[2]); -static int rb_inet_socketpair_udp(rb_fde_t **newF1, rb_fde_t **newF2); -#endif - static inline rb_fde_t * add_fd(int fd) { @@ -829,16 +822,7 @@ rb_socketpair(int family, int sock_type, int proto, rb_fde_t **F1, rb_fde_t **F2 return -1; } -#ifdef HAVE_SOCKETPAIR if(socketpair(family, sock_type, proto, nfd)) -#else - if(sock_type == SOCK_DGRAM) - { - return rb_inet_socketpair_udp(F1, F2); - } - - if(rb_inet_socketpair(AF_INET, sock_type, proto, nfd)) -#endif return -1; *F1 = rb_open(nfd[0], RB_FD_SOCKET, note); @@ -1274,7 +1258,7 @@ rb_write(rb_fde_t *F, const void *buf, int count) return write(F->fd, buf, count); } -#if defined(HAVE_SSL) || !defined(HAVE_WRITEV) +#ifdef HAVE_SSL static ssize_t rb_fake_writev(rb_fde_t *F, const struct rb_iovec *vp, size_t vpcount) { @@ -1298,14 +1282,6 @@ rb_fake_writev(rb_fde_t *F, const struct rb_iovec *vp, size_t vpcount) } #endif -#ifndef HAVE_WRITEV -ssize_t -rb_writev(rb_fde_t *F, struct rb_iovec * vecount, int count) -{ - return rb_fake_writev(F, vecount, count); -} - -#else ssize_t rb_writev(rb_fde_t *F, struct rb_iovec * vector, int count) { @@ -1320,7 +1296,6 @@ rb_writev(rb_fde_t *F, struct rb_iovec * vector, int count) return rb_fake_writev(F, vector, count); } #endif /* HAVE_SSL */ -#ifdef HAVE_SENDMSG if(F->type & RB_FD_SOCKET) { struct msghdr msg; @@ -1329,12 +1304,9 @@ rb_writev(rb_fde_t *F, struct rb_iovec * vector, int count) msg.msg_iovlen = count; return sendmsg(F->fd, &msg, MSG_NOSIGNAL); } -#endif /* HAVE_SENDMSG */ return writev(F->fd, (struct iovec *)vector, count); } -#endif - /* * From: Thomas Helvey @@ -1815,198 +1787,6 @@ rb_inet_pton(int af, const char *src, void *dst) } -#ifndef HAVE_SOCKETPAIR - -/* mostly based on perl's emulation of socketpair udp */ -static int -rb_inet_socketpair_udp(rb_fde_t **newF1, rb_fde_t **newF2) -{ - struct sockaddr_in addr[2]; - rb_socklen_t size = sizeof(struct sockaddr_in); - rb_fde_t *F[2]; - int fd[2]; - int i, got; - unsigned short port; - struct timeval wait = { 0, 100000 }; - int max; - fd_set rset; - struct sockaddr_in readfrom; - unsigned short buf[2]; - int o_errno; - - memset(&addr, 0, sizeof(addr)); - - for(i = 0; i < 2; i++) - { - F[i] = rb_socket(AF_INET, SOCK_DGRAM, 0, "udp socketpair"); - if(F[i] == NULL) - goto failed; - addr[i].sin_family = AF_INET; - addr[i].sin_addr.s_addr = htonl(INADDR_LOOPBACK); - addr[i].sin_port = 0; - if(bind(rb_get_fd(F[i]), (struct sockaddr *)&addr[i], sizeof(struct sockaddr_in))) - goto failed; - fd[i] = rb_get_fd(F[i]); - } - - for(i = 0; i < 2; i++) - { - if(getsockname(fd[i], (struct sockaddr *)&addr[i], &size)) - goto failed; - if(size != sizeof(struct sockaddr_in)) - goto failed; - if(connect(fd[!i], (struct sockaddr *)&addr[i], sizeof(struct sockaddr_in)) == -1) - goto failed; - } - - for(i = 0; i < 2; i++) - { - port = addr[i].sin_port; - got = rb_write(F[i], &port, sizeof(port)); - if(got != sizeof(port)) - { - if(got == -1) - goto failed; - goto abort_failed; - } - } - - max = fd[1] > fd[0] ? fd[1] : fd[0]; - FD_ZERO(&rset); - FD_SET(fd[0], &rset); - FD_SET(fd[1], &rset); - got = select(max + 1, &rset, NULL, NULL, &wait); - if(got != 2 || !FD_ISSET(fd[0], &rset) || !FD_ISSET(fd[1], &rset)) - { - if(got == -1) - goto failed; - goto abort_failed; - } - - for(i = 0; i < 2; i++) - { -#ifdef MSG_DONTWAIT - int flag = MSG_DONTWAIT -#else - int flag = 0; -#endif - got = recvfrom(rb_get_fd(F[i]), (char *)&buf, sizeof(buf), flag, - (struct sockaddr *)&readfrom, &size); - if(got == -1) - goto failed; - if(got != sizeof(port) - || size != sizeof(struct sockaddr_in) - || buf[0] != (unsigned short)addr[!i].sin_port - || readfrom.sin_family != addr[!i].sin_family - || readfrom.sin_addr.s_addr != addr[!i].sin_addr.s_addr - || readfrom.sin_port != addr[!i].sin_port) - goto abort_failed; - } - - *newF1 = F[0]; - *newF2 = F[1]; - return 0; - - abort_failed: - errno = ECONNABORTED; - failed: - o_errno = errno; - if(F[0] != NULL) - rb_close(F[0]); - if(F[1] != NULL) - rb_close(F[1]); - errno = o_errno; - return -1; -} - - -int -rb_inet_socketpair(int family, int type, int protocol, int fd[2]) -{ - int listener = -1; - int connector = -1; - int acceptor = -1; - struct sockaddr_in listen_addr; - struct sockaddr_in connect_addr; - rb_socklen_t size; - - if(protocol || family != AF_INET) - { - errno = EAFNOSUPPORT; - return -1; - } - if(!fd) - { - errno = EINVAL; - return -1; - } - - listener = socket(AF_INET, type, 0); - if(listener == -1) - return -1; - memset(&listen_addr, 0, sizeof(listen_addr)); - listen_addr.sin_family = AF_INET; - listen_addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK); - listen_addr.sin_port = 0; /* kernel choses port. */ - if(bind(listener, (struct sockaddr *)&listen_addr, sizeof(listen_addr)) == -1) - goto tidy_up_and_fail; - if(listen(listener, 1) == -1) - goto tidy_up_and_fail; - - connector = socket(AF_INET, type, 0); - if(connector == -1) - goto tidy_up_and_fail; - /* We want to find out the port number to connect to. */ - size = sizeof(connect_addr); - if(getsockname(listener, (struct sockaddr *)&connect_addr, &size) == -1) - goto tidy_up_and_fail; - if(size != sizeof(connect_addr)) - goto abort_tidy_up_and_fail; - if(connect(connector, (struct sockaddr *)&connect_addr, sizeof(connect_addr)) == -1) - goto tidy_up_and_fail; - - size = sizeof(listen_addr); - acceptor = accept(listener, (struct sockaddr *)&listen_addr, &size); - if(acceptor == -1) - goto tidy_up_and_fail; - if(size != sizeof(listen_addr)) - goto abort_tidy_up_and_fail; - close(listener); - /* Now check we are talking to ourself by matching port and host on the - two sockets. */ - if(getsockname(connector, (struct sockaddr *)&connect_addr, &size) == -1) - goto tidy_up_and_fail; - if(size != sizeof(connect_addr) - || listen_addr.sin_family != connect_addr.sin_family - || listen_addr.sin_addr.s_addr != connect_addr.sin_addr.s_addr - || listen_addr.sin_port != connect_addr.sin_port) - { - goto abort_tidy_up_and_fail; - } - fd[0] = connector; - fd[1] = acceptor; - return 0; - - abort_tidy_up_and_fail: - errno = EINVAL; /* I hope this is portable and appropriate. */ - - tidy_up_and_fail: - { - int save_errno = errno; - if(listener != -1) - close(listener); - if(connector != -1) - close(connector); - if(acceptor != -1) - close(acceptor); - errno = save_errno; - return -1; - } -} - -#endif - - static void (*setselect_handler) (rb_fde_t *, unsigned int, PF *, void *); static int (*select_handler) (long); static int (*setup_fd_handler) (rb_fde_t *); @@ -2282,7 +2062,6 @@ rb_ignore_errno(int error) } -#ifdef HAVE_SENDMSG int rb_recv_fd_buf(rb_fde_t *F, void *data, size_t datasize, rb_fde_t **xF, int nfds) { @@ -2397,21 +2176,6 @@ rb_send_fd_buf(rb_fde_t *xF, rb_fde_t **F, int count, void *data, size_t datasiz } return sendmsg(rb_get_fd(xF), &msg, MSG_NOSIGNAL); } -#else -int -rb_recv_fd_buf(rb_fde_t *F, void *data, size_t datasize, rb_fde_t **xF, int nfds) -{ - errno = ENOSYS; - return -1; -} - -int -rb_send_fd_buf(rb_fde_t *xF, rb_fde_t **F, int count, void *data, size_t datasize, pid_t pid) -{ - errno = ENOSYS; - return -1; -} -#endif int rb_ipv4_from_ipv6(const struct sockaddr_in6 *restrict ip6, struct sockaddr_in *restrict ip4) diff --git a/librb/src/epoll.c b/librb/src/epoll.c index b8c902d3..19287247 100644 --- a/librb/src/epoll.c +++ b/librb/src/epoll.c @@ -31,19 +31,19 @@ #include #include #include -#if defined(HAVE_EPOLL_CTL) && (HAVE_SYS_EPOLL_H) +#if defined(HAVE_EPOLL_CTL) && defined(HAVE_SYS_EPOLL_H) #define USING_EPOLL #include #include -#if defined(HAVE_SIGNALFD) && (HAVE_SYS_SIGNALFD_H) && (USE_TIMER_CREATE) && (HAVE_SYS_UIO_H) +#if defined(HAVE_SIGNALFD) && defined(HAVE_SYS_SIGNALFD_H) && defined(USE_TIMER_CREATE) #include #include #include #define EPOLL_SCHED_EVENT 1 #endif -#if defined(USE_TIMERFD_CREATE) +#ifdef USE_TIMERFD_CREATE #include #endif diff --git a/librb/src/linebuf.c b/librb/src/linebuf.c index d3b11652..455eeb7c 100644 --- a/librb/src/linebuf.c +++ b/librb/src/linebuf.c @@ -545,7 +545,6 @@ rb_linebuf_flush(rb_fde_t *F, buf_head_t * bufhead) * autoconf checks for this..but really just want to use it if we have a * native version even if libircd provides a fake version... */ -#ifdef HAVE_WRITEV if(!rb_fd_ssl(F)) { rb_dlink_node *ptr; @@ -624,7 +623,6 @@ rb_linebuf_flush(rb_fde_t *F, buf_head_t * bufhead) return retval; } -#endif /* this is the non-writev case */ diff --git a/librb/src/poll.c b/librb/src/poll.c index 39aab6ed..15351628 100644 --- a/librb/src/poll.c +++ b/librb/src/poll.c @@ -26,9 +26,11 @@ #include #include #include +#include -#if defined(HAVE_POLL) && (HAVE_SYS_POLL_H) +#ifdef HAVE_SYS_POLL_H #include +#endif /* I hate linux -- adrian */ @@ -228,34 +230,3 @@ rb_select_poll(long delay) } return 0; } - -#else /* poll not supported */ -int -rb_init_netio_poll(void) -{ - errno = ENOSYS; - return -1; -} - -void -rb_setselect_poll(rb_fde_t *F __attribute__((unused)), unsigned int type __attribute__((unused)), PF * handler __attribute__((unused)), void *client_data __attribute__((unused))) -{ - errno = ENOSYS; - return; -} - -int -rb_select_poll(long delay __attribute__((unused))) -{ - errno = ENOSYS; - return -1; -} - -int -rb_setup_fd_poll(rb_fde_t *F __attribute__((unused))) -{ - errno = ENOSYS; - return -1; -} - -#endif diff --git a/librb/src/rb_lib.c b/librb/src/rb_lib.c index e891bf8a..36fe5a1d 100644 --- a/librb/src/rb_lib.c +++ b/librb/src/rb_lib.c @@ -63,12 +63,9 @@ rb_ctime(const time_t t, char *buf, size_t len) struct tm *tp; static char timex[128]; size_t tlen; -#if defined(HAVE_GMTIME_R) struct tm tmr; tp = gmtime_r(&t, &tmr); -#else - tp = gmtime(&t); -#endif + if(buf == NULL) { p = timex; @@ -98,12 +95,8 @@ char * rb_date(const time_t t, char *buf, size_t len) { struct tm *gm; -#if defined(HAVE_GMTIME_R) struct tm gmbuf; gm = gmtime_r(&t, &gmbuf); -#else - gm = gmtime(&t); -#endif if(rb_unlikely(gm == NULL)) { @@ -249,44 +242,11 @@ rb_lib_loop(long delay) } } -#ifndef HAVE_STRTOK_R -char * -rb_strtok_r(char *s, const char *delim, char **save) -{ - char *token; - - if(s == NULL) - s = *save; - - /* Scan leading delimiters. */ - s += strspn(s, delim); - - if(*s == '\0') - { - *save = s; - return NULL; - } - - token = s; - s = strpbrk(token, delim); - - if(s == NULL) - *save = (token + strlen(token)); - else - { - *s = '\0'; - *save = s + 1; - } - return token; -} -#else char * rb_strtok_r(char *s, const char *delim, char **save) { return strtok_r(s, delim, save); } -#endif - static const char base64_table[] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', diff --git a/librb/src/sigio.c b/librb/src/sigio.c index e6ccf73d..4986a309 100644 --- a/librb/src/sigio.c +++ b/librb/src/sigio.c @@ -35,17 +35,16 @@ #include #include /* Yes this needs to be before the ifdef */ -#if defined(HAVE_SYS_POLL_H) && (HAVE_POLL) && (F_SETSIG) +#if defined(HAVE_SYS_POLL_H) && defined(F_SETSIG) #define USING_SIGIO #endif - #ifdef USING_SIGIO #include #include -#if defined(USE_TIMER_CREATE) +#ifdef USE_TIMER_CREATE #define SIGIO_SCHED_EVENT 1 #endif diff --git a/librb/src/tools.c b/librb/src/tools.c index ecc852fb..4a95d63c 100644 --- a/librb/src/tools.c +++ b/librb/src/tools.c @@ -133,57 +133,17 @@ rb_string_to_array(char *string, char **parv, int maxpara) return x; } -#ifndef HAVE_STRCASECMP -/* Fallback taken from FreeBSD. --Elizafox */ -int -rb_strcasecmp(const char *s1, const char *s2) -{ - const unsigned char *us1 = (const unsigned char *)s1; - const unsigned char *us2 = (const unsigned char *)s2; - - while (tolower(*us1) == tolower(*us2++)) - { - if (*us1++ == '\0') - return 0; - } - - return (tolower(*us1) - tolower(*--us2)); -} -#else int rb_strcasecmp(const char *s1, const char *s2) { return strcasecmp(s1, s2); } -#endif -#ifndef HAVE_STRNCASECMP -/* Fallback taken from FreeBSD. --Elizafox */ -int -rb_strncasecmp(const char *s1, const char *s2, size_t n) -{ - if (n != 0) - { - const unsigned char *us1 = (const unsigned char *)s1; - const unsigned char *us2 = (const unsigned char *)s2; - - do - { - if (tolower(*us1) != tolower(*us2++)) - return (tolower(*us1) - tolower(*--us2)); - if (*us1++ == '\0') - break; - } while (--n != 0); - } - return 0; -} -#else int rb_strncasecmp(const char *s1, const char *s2, size_t n) { return strncasecmp(s1, s2, n); } -#endif #ifndef HAVE_STRCASESTR /* Fallback taken from FreeBSD. --Elizafox */ @@ -261,22 +221,11 @@ rb_strlcpy(char *dest, const char *src, size_t size) #endif -#ifndef HAVE_STRNLEN -size_t -rb_strnlen(const char *s, size_t count) -{ - const char *sc; - for(sc = s; count-- && *sc != '\0'; ++sc) - ; - return sc - s; -} -#else size_t rb_strnlen(const char *s, size_t count) { return strnlen(s, count); } -#endif /* * rb_snprintf_append() diff --git a/librb/src/unix.c b/librb/src/unix.c index 4d125d57..e89bf277 100644 --- a/librb/src/unix.c +++ b/librb/src/unix.c @@ -42,7 +42,6 @@ #include #endif -#if defined(HAVE_SPAWN_H) && defined(HAVE_POSIX_SPAWN) #include #ifndef __APPLE__ @@ -74,56 +73,20 @@ rb_spawn_process(const char *path, const char **argv) } return pid; } -#else -pid_t -rb_spawn_process(const char *path, const char **argv) -{ - pid_t pid; - if(!(pid = vfork())) - { - execv(path, (const void *)argv); /* make gcc shut up */ - _exit(1); /* if we're still here, we're screwed */ - } - return (pid); -} -#endif -#ifndef HAVE_GETTIMEOFDAY -int -rb_gettimeofday(struct timeval *tv, void *tz) -{ - if(tv == NULL) - { - errno = EFAULT; - return -1; - } - tv->tv_usec = 0; - if(time(&tv->tv_sec) == -1) - return -1; - return 0; -} -#else int rb_gettimeofday(struct timeval *tv, void *tz) { return (gettimeofday(tv, tz)); } -#endif void rb_sleep(unsigned int seconds, unsigned int useconds) { -#ifdef HAVE_NANOSLEEP struct timespec tv; tv.tv_nsec = (useconds * 1000); tv.tv_sec = seconds; nanosleep(&tv, NULL); -#else - struct timeval tv; - tv.tv_sec = seconds; - tv.tv_usec = useconds; - select(0, NULL, NULL, NULL, &tv); -#endif } /* this is to keep some linkers from bitching about exporting a non-existant symbol..bleh */ diff --git a/ssld/ssld.c b/ssld/ssld.c index 4a009372..cd4219e0 100644 --- a/ssld/ssld.c +++ b/ssld/ssld.c @@ -518,14 +518,12 @@ conn_plain_write_sendq(rb_fde_t *fd, void *data) static int maxconn(void) { -#if defined(RLIMIT_NOFILE) && defined(HAVE_SYS_RESOURCE_H) struct rlimit limit; if(!getrlimit(RLIMIT_NOFILE, &limit)) { return limit.rlim_cur; } -#endif /* RLIMIT_FD_MAX */ return MAXCONNECTIONS; } diff --git a/wsockd/wsockd.c b/wsockd/wsockd.c index 7c8cec2c..66fa4efc 100644 --- a/wsockd/wsockd.c +++ b/wsockd/wsockd.c @@ -213,14 +213,12 @@ setup_signals() static int maxconn(void) { -#if defined(RLIMIT_NOFILE) && defined(HAVE_SYS_RESOURCE_H) struct rlimit limit; if(!getrlimit(RLIMIT_NOFILE, &limit)) { return limit.rlim_cur; } -#endif /* RLIMIT_FD_MAX */ return MAXCONNECTIONS; }