Directory moves. src/RTEMS/ => src/libCom/RTEMS/ src/as/ => src/ioc/as/ src/bpt/ => src/ioc/bpt/ src/ca/ => src/ca/client/ src/cap5/ => src/ca/client/perl/ src/cas/ => src/ca/legacy/pcas/ src/catools/ => src/ca/client/tools/ src/db/ => src/ioc/db/ src/dbStatic/ => src/ioc/dbStatic/ src/dbtools/ => src/ioc/dbtemplate/ src/dev/softDev/ => src/std/dev/ src/dev/testDev/ => src/std/test/ src/excas/ => src/ca/legacy/pcas/ex/ src/gdd/ => src/ca/legacy/gdd/ src/makeBaseApp/ => src/template/base/ src/makeBaseExt/ => src/template/ext/ src/misc/ => src/ioc/misc/ src/rec/ => src/std/rec/ src/registry/ => src/ioc/registry/ src/rsrv/ => src/ioc/rsrv/ src/softIoc/ => src/std/softIoc/ src/toolsComm/ => src/libCom/tools/
46 lines
1.4 KiB
C
46 lines
1.4 KiB
C
/*************************************************************************\
|
|
* Copyright (c) 2002 The University of Saskatchewan
|
|
* EPICS BASE Versions 3.13.7
|
|
* and higher are distributed subject to a Software License Agreement found
|
|
* in file LICENSE that is included with this distribution.
|
|
\*************************************************************************/
|
|
/*
|
|
* RTEMS utilitiy routines for EPICS
|
|
* $Revision-Id$
|
|
* Author: W. Eric Norum
|
|
* eric@cls.usask.ca
|
|
* (306) 966-6055
|
|
*
|
|
* Supplies routines that are present in vxWorks but missing in RTEMS.
|
|
*/
|
|
|
|
#include <string.h>
|
|
#include <netdb.h>
|
|
#include <sys/types.h>
|
|
#include <sys/socket.h>
|
|
#include <sys/time.h>
|
|
#include <netinet/in.h>
|
|
|
|
/*
|
|
* Like connect(), but with an explicit timeout
|
|
*/
|
|
int connectWithTimeout (int sfd,
|
|
struct sockaddr *addr,
|
|
int addrlen,
|
|
struct timeval *timeout)
|
|
{
|
|
struct timeval sv;
|
|
socklen_t svlen = sizeof sv;
|
|
int ret;
|
|
|
|
if (!timeout)
|
|
return connect (sfd, addr, addrlen);
|
|
if (getsockopt (sfd, SOL_SOCKET, SO_RCVTIMEO, (char *)&sv, &svlen) < 0)
|
|
return -1;
|
|
if (setsockopt (sfd, SOL_SOCKET, SO_RCVTIMEO, (char *)timeout, sizeof *timeout) < 0)
|
|
return -1;
|
|
ret = connect (sfd, addr, addrlen);
|
|
setsockopt (sfd, SOL_SOCKET, SO_RCVTIMEO, (char *)&sv, sizeof sv);
|
|
return ret;
|
|
}
|