void ICVM_IceTransSetOption(void){ R_R0=_IceTransSetOption( (ciptr)rSTKs32(0), rSTKs32(1), rSTKs32(2) ); icvm_SetErr(); }
Status IceListenForConnections ( int *countRet, IceListenObj **listenObjsRet, int errorLength, char *errorStringRet ) { struct _IceListenObj *listenObjs; char *networkId; int transCount, partial, i, j; Status status = 1; XtransConnInfo *transConns = NULL; if ((_IceTransMakeAllCOTSServerListeners (NULL, &partial, &transCount, &transConns) < 0) || (transCount < 1)) { *listenObjsRet = NULL; *countRet = 0; strncpy (errorStringRet, "Cannot establish any listening sockets", errorLength); return (0); } if ((listenObjs = (struct _IceListenObj *) malloc ( transCount * sizeof (struct _IceListenObj))) == NULL) { for (i = 0; i < transCount; i++) _IceTransClose (transConns[i]); free ((char *) transConns); return (0); } *countRet = 0; for (i = 0; i < transCount; i++) { _IceTransSetOption(transConns[i], TRANS_CLOSEONEXEC, 1); networkId = _IceTransGetMyNetworkId (transConns[i]); if (networkId) { listenObjs[*countRet].trans_conn = transConns[i]; listenObjs[*countRet].network_id = networkId; (*countRet)++; } } if (*countRet == 0) { *listenObjsRet = NULL; strncpy (errorStringRet, "Cannot establish any listening sockets", errorLength); status = 0; } else { *listenObjsRet = (IceListenObj *) malloc ( *countRet * sizeof (IceListenObj)); if (*listenObjsRet == NULL) { strncpy (errorStringRet, "Malloc failed", errorLength); status = 0; } else { for (i = 0; i < *countRet; i++) { (*listenObjsRet)[i] = (IceListenObj) malloc ( sizeof (struct _IceListenObj)); if ((*listenObjsRet)[i] == NULL) { strncpy (errorStringRet, "Malloc failed", errorLength); for (j = 0; j < i; j++) free ((char *) (*listenObjsRet)[j]); free ((char *) *listenObjsRet); *listenObjsRet = NULL; status = 0; break; } else { *((*listenObjsRet)[i]) = listenObjs[i]; } } } } if (status == 1) { if (errorStringRet && errorLength > 0) *errorStringRet = '\0'; for (i = 0; i < *countRet; i++) { (*listenObjsRet)[i]->host_based_auth_proc = NULL; } } else { for (i = 0; i < transCount; i++) _IceTransClose (transConns[i]); } free ((char *) listenObjs); free ((char *) transConns); return (status); }