X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2FApplications%2Firc_src%2Fmain.c;h=a08553a03844bfd4ff491247b610e9b4eb49e515;hb=6c7e82169e66197939b83945812b02787ed0f52e;hp=aa0f2d488cdc7e737cbccd5e01993eb49122ee18;hpb=cbd92fadf52dbb8846384f46bff87e486a244765;p=tpg%2Facess2.git diff --git a/Usermode/Applications/irc_src/main.c b/Usermode/Applications/irc_src/main.c index aa0f2d48..a08553a0 100644 --- a/Usermode/Applications/irc_src/main.c +++ b/Usermode/Applications/irc_src/main.c @@ -116,6 +116,7 @@ int main(int argc, const char *argv[], const char *envp[]) // HACK: Static server entry // UCC (University [of Western Australia] Computer Club) IRC Server gWindow_Status.Server = Server_Connect( "UCC", "130.95.13.18", 6667 ); +// gWindow_Status.Server = Server_Connect( "Freenode", "89.16.176.16", 6667 ); // gWindow_Status.Server = Server_Connect( "Host", "10.0.2.2", 6667 ); // gWindow_Status.Server = Server_Connect( "BitlBee", "192.168.1.34", 6667 ); @@ -426,8 +427,17 @@ tMessage *Message_Append(tServer *Server, int Type, const char *Source, const ch int pos = SetCursorPos(giTerminal_Height-2, 0); #if 1 if( win == gpCurrentWindow ) { + int prefixlen = strlen(Source) + 3; + int avail = giTerminal_Width - prefixlen; + int msglen = strlen(Message); printf("\x1B[T"); // Scroll down 1 (free space below) - printf("[%s] %s\n", Source, Message); + printf("[%s] %.*s\n", Source, avail, Message); + while( msglen > avail ) { + msglen -= avail; + printf("\x1B[T"); + SetCursorPos(giTerminal_Height-2, prefixlen); + printf("%.*s\n", avail, Message); + } } #else if(win->Name[0]) @@ -497,8 +507,8 @@ void Redraw_Screen(void) while(done < msglen) { done += printf("%.*s", line_avail, msg->Data+done); - SetCursorPos(y+i, prefix_len); i ++; + SetCursorPos(y+i, prefix_len); } } @@ -517,7 +527,8 @@ void ParseServerLine(tServer *Server, char *Line) { int pos = 0; char *ident, *cmd; - + + _SysDebug("Server %s: Line = %s", Server->Name, Line); // Message? if( *Line == ':' ) @@ -547,13 +558,16 @@ void ParseServerLine(tServer *Server, char *Line) { case 353: // /NAMES list // = :list - GetValue(Line, &pos); // '=' +// GetValue(Line, &pos); // '=' user = GetValue(Line, &pos); // Actually channel message = Line + pos + 1; // List - Message_Append(Server, MSG_TYPE_SERVER, user, "", message); + Message_AppendF(Server, MSG_TYPE_SERVER, user, "", "Names: %s", message); break; case 366: // end of /NAMES list -// Message_Append() + // :msg + user = message; + message = Line + pos + 1; + Message_Append(Server, MSG_TYPE_SERVER, user, "", message); break; case 372: // MOTD Data case 376: // MOTD End @@ -564,6 +578,10 @@ void ParseServerLine(tServer *Server, char *Line) break; } } + else if( strcmp(cmd, "PING") == 0 ) + { + writef(Server->FD, "PONG %s\n", gsHostname); + } else if( strcmp(cmd, "NOTICE") == 0 ) { char *class, *message; @@ -591,7 +609,7 @@ void ParseServerLine(tServer *Server, char *Line) else { message = GetValue(Line, &pos); } - Cmd_PRIVMSG(Server, dest, ident, message); +// Cmd_PRIVMSG(Server, dest, ident, message); Message_Append(Server, MSG_TYPE_STANDARD, ident, dest, message); } else if( strcmp(cmd, "JOIN" ) == 0 ) @@ -629,7 +647,7 @@ int ProcessIncoming(tServer *Server) { #endif // Read data - len = read(Server->FD, BUFSIZ - Server->ReadPos, &Server->InBuf[Server->ReadPos]); + len = read(Server->FD, &Server->InBuf[Server->ReadPos], BUFSIZ - Server->ReadPos); if( len == -1 ) { return -1; } @@ -683,7 +701,7 @@ int writef(int FD, const char *Format, ...) vsnprintf(buf, len+1, Format, args); va_end(args); - return write(FD, len, buf); + return write(FD, buf, len); } }