void ICVM_IceTransWrite(void){ R_R0=_IceTransWrite( (ciptr)rSTKs32(0), (char *)rSTKs32(1), rSTKs32(2) ); icvm_SetErr(); }
void _IceWrite ( register IceConn iceConn, unsigned long nbytes, register char *ptr ) { register unsigned long nleft; nleft = nbytes; while (nleft > 0) { int nwritten; if (iceConn->io_ok) nwritten = _IceTransWrite (iceConn->trans_conn, ptr, (int) nleft); else return; if (nwritten <= 0) { #ifdef WIN32 errno = WSAGetLastError(); #endif /* * Fatal IO error. First notify each protocol's IceIOErrorProc * callback, then invoke the application IO error handler. */ iceConn->io_ok = False; if (iceConn->connection_status == IceConnectPending) { /* * Don't invoke IO error handler if we are in the * middle of a connection setup. */ return; } if (iceConn->process_msg_info) { int i; for (i = iceConn->his_min_opcode; i <= iceConn->his_max_opcode; i++) { _IceProcessMsgInfo *process; process = &iceConn->process_msg_info[ i - iceConn->his_min_opcode]; if (process->in_use) { IceIOErrorProc IOErrProc = process->accept_flag ? process->protocol->accept_client->io_error_proc : process->protocol->orig_client->io_error_proc; if (IOErrProc) (*IOErrProc) (iceConn); } } } (*_IceIOErrorHandler) (iceConn); return; } nleft -= nwritten; ptr += nwritten; } }