--- IO-AIO/AIO.xs 2019/04/03 03:03:53 1.276 +++ IO-AIO/AIO.xs 2020/02/26 15:47:22 1.281 @@ -1197,11 +1197,18 @@ const_iv (MREMAP_MAYMOVE) const_iv (MREMAP_FIXED) - const_iv (F_DUPFD_CLOEXEC) - const_iv (MSG_CMSG_CLOEXEC) const_iv (SOCK_CLOEXEC) + const_iv (F_DUPFD_CLOEXEC) + + const_iv (F_ADD_SEALS) + const_iv (F_GET_SEALS) + const_iv (F_SEAL_SEAL) + const_iv (F_SEAL_SHRINK) + const_iv (F_SEAL_GROW) + const_iv (F_SEAL_WRITE) + const_iv (F_OFD_GETLK) const_iv (F_OFD_SETLK) const_iv (F_OFD_GETLKW) @@ -2490,7 +2497,40 @@ OUTPUT: RETVAL -int +void +accept4 (aio_rfd rfh, SV *sockaddr, int salen, int flags) + PPCODE: +{ + SV *retval; +#if HAVE_ACCEPT4 + socklen_t salen_ = salen ? salen + 1 : 0; + + if (salen) + { + sv_upgrade (sockaddr, SVt_PV); + sv_grow (sockaddr, salen_); + } + + int res = accept4 (rfh, salen ? (struct sockaddr *)SvPVX (sockaddr) : 0, salen ? &salen_ : 0, flags); + + retval = newmortalFH (res, O_RDWR); + + if (res >= 0 && salen > 0) + { + if (salen_ > salen + 1) + salen_ = salen + 1; + + SvPOK_only (sockaddr); + SvCUR_set (sockaddr, salen_); + } +#else + errno = ENOSYS; + retval = &PL_sv_undef; +#endif + XPUSHs (retval); +} + +ssize_t splice (aio_rfd rfh, SV *off_in, aio_wfd wfh, SV *off_out, size_t length, unsigned int flags) CODE: { @@ -2508,7 +2548,7 @@ OUTPUT: RETVAL -int +ssize_t tee (aio_rfd rfh, aio_wfd wfh, size_t length, unsigned int flags) CODE: #if HAVE_LINUX_SPLICE @@ -2698,7 +2738,7 @@ rl.rlim_max |= bit; rl.rlim_cur = rl.rlim_max; - /* nevr decrease the hard limit */ + /* never decrease the hard limit */ if (rl.rlim_max < orig_rlim_max) break;