+ r = getsockopt (sock, level, optname, (char *) &milliseconds,
+ &milliseconds_len);
+ tv.tv_sec = milliseconds / 1000;
+ tv.tv_usec = (milliseconds - 1000 * tv.tv_sec) * 1000;
+ n = sizeof (struct timeval);
+ if (n > *optlen)
+ n = *optlen;
+ memcpy (optval, &tv, n);
+ *optlen = n;
+ }
+ else
+ {
+ r = getsockopt (sock, level, optname, optval, optlen);
+ }