209 VALUE lev, optname, val;
210 int family, level, option;
241 v = (
char*)&i; vlen = (int)
sizeof(i);
250 #define rb_sys_fail_path(path) rb_sys_fail(NIL_P(path) ? 0 : RSTRING_PTR(path))
253 if (setsockopt(fptr->
fd, level, option, v, vlen) < 0)
259 #if !defined(__BEOS__)
334 if (getsockopt(fptr->
fd, level, option, buf, &len) < 0)
340 #define bsock_getsockopt rb_f_notimplement
360 socklen_t
len = (socklen_t)
sizeof buf;
361 socklen_t len0 =
len;
365 if (getsockname(fptr->
fd, (
struct sockaddr*)&buf, &len) < 0)
367 if (len0 < len) len = len0;
391 socklen_t
len = (socklen_t)
sizeof buf;
392 socklen_t len0 =
len;
396 if (getpeername(fptr->
fd, (
struct sockaddr*)&buf, &len) < 0)
398 if (len0 < len) len = len0;
402 #if defined(HAVE_GETPEEREID) || defined(SO_PEERCRED) || defined(HAVE_GETPEERUCRED)
428 #if defined(HAVE_GETPEEREID)
433 if (getpeereid(fptr->
fd, &euid, &egid) == -1)
436 #elif defined(SO_PEERCRED)
439 socklen_t
len =
sizeof(cred);
441 if (getsockopt(fptr->
fd, SOL_SOCKET, SO_PEERCRED, &cred, &len) == -1)
444 #elif defined(HAVE_GETPEERUCRED)
449 if (getpeerucred(fptr->
fd, &uc) == -1)
457 #define bsock_getpeereid rb_f_notimplement
481 socklen_t len = (socklen_t)
sizeof buf;
482 socklen_t len0 =
len;
486 if (getsockname(fptr->
fd, (
struct sockaddr*)&buf, &len) < 0)
488 if (len0 < len) len = len0;
515 socklen_t len = (socklen_t)
sizeof buf;
516 socklen_t len0 =
len;
520 if (getpeername(fptr->
fd, (
struct sockaddr*)&buf, &len) < 0)
522 if (len0 < len) len = len0;