- } else if(!strncmp("PING", argv[TOK_CMD], 5)) {
- snprintf(message, MAXMSG, "PONG %s\r\n", argv[TOK_TEXT]);
- write(irc, message, strlen(message));
- return;
- } else if(!argv[TOK_NICKSRV] || !argv[TOK_USER]) { /* server command */
- snprintf(message, MAXMSG, "%s", argv[TOK_TEXT] ? argv[TOK_TEXT] : "");
- print_out(0, message);
- return;
- } else if(!strncmp("ERROR", argv[TOK_CMD], 6))
- snprintf(message, MAXMSG, "-!- error %s",
- argv[TOK_TEXT] ? argv[TOK_TEXT] : "unknown");
- else if(!strncmp("JOIN", argv[TOK_CMD], 5)) {
- if(argv[TOK_TEXT]!=NULL){
- p = strchr(argv[TOK_TEXT], ' ');
- if(p)
- *p = 0;
- }
- argv[TOK_CHAN] = argv[TOK_TEXT];
- snprintf(message, MAXMSG, "-!- %s(%s) has joined %s",
- argv[TOK_NICKSRV], argv[TOK_USER], argv[TOK_TEXT]);
- } else if(!strncmp("PART", argv[TOK_CMD], 5)) {
- snprintf(message, MAXMSG, "-!- %s(%s) has left %s",
- argv[TOK_NICKSRV], argv[TOK_USER], argv[TOK_CHAN]);
- } else if(!strncmp("MODE", argv[TOK_CMD], 5))
- snprintf(message, MAXMSG, "-!- %s changed mode/%s -> %s %s",
- argv[TOK_NICKSRV], argv[TOK_CMD + 1],
- argv[TOK_CMD + 2], argv[TOK_CMD + 3]);
- else if(!strncmp("QUIT", argv[TOK_CMD], 5))
- snprintf(message, MAXMSG, "-!- %s(%s) has quit \"%s\"",
- argv[TOK_NICKSRV], argv[TOK_USER],
- argv[TOK_TEXT] ? argv[TOK_TEXT] : "");
- else if(!strncmp("NICK", argv[TOK_CMD], 5))
- snprintf(message, MAXMSG, "-!- %s changed nick to %s",
- argv[TOK_NICKSRV], argv[TOK_TEXT]);
- else if(!strncmp("TOPIC", argv[TOK_CMD], 6))
- snprintf(message, MAXMSG, "-!- %s changed topic to \"%s\"",
- argv[TOK_NICKSRV], argv[TOK_TEXT] ? argv[TOK_TEXT] : "");
- else if(!strncmp("KICK", argv[TOK_CMD], 5))
- snprintf(message, MAXMSG, "-!- %s kicked %s (\"%s\")",
- argv[TOK_NICKSRV], argv[TOK_ARG],
- argv[TOK_TEXT] ? argv[TOK_TEXT] : "");
- else if(!strncmp("NOTICE", argv[TOK_CMD], 7))
- snprintf(message, MAXMSG, "-!- \"%s\")",
- argv[TOK_TEXT] ? argv[TOK_TEXT] : "");
- else if(!strncmp("PRIVMSG", argv[TOK_CMD], 8))
- snprintf(message, MAXMSG, "<%s> %s",
- argv[TOK_NICKSRV], argv[TOK_TEXT] ? argv[TOK_TEXT] : "");
- if(!argv[TOK_CHAN] || !strncmp(argv[TOK_CHAN], nick, strlen(nick)))
- print_out(argv[TOK_NICKSRV], message);
- else
- print_out(argv[TOK_CHAN], message);
+ if(!strncmp("PRIVMSG", cmd, 7) && txt) {
+ if(!(p = strchr(cmd, ' ')))
+ return;
+ *p = 0;
+ chan = ++p;
+ for(; *p && *p != ' '; p++);
+ *p = 0;
+ snprintf(bufout, sizeof bufout, "<%s> %s", usr, txt);
+ printl(chan, bufout);
+ }
+ else if(!strncmp("PING", cmd, 4) && txt) {
+ snprintf(bufout, sizeof bufout, "PONG %s\r\n", txt);
+ write(srv, bufout, strlen(bufout));
+ }
+ else {
+ snprintf(bufout, sizeof bufout, ">< %s: %s", cmd, txt ? txt : "");
+ printl(usr, bufout);
+ if(!strncmp("NICK", cmd, 4) && !strncmp(usr, nick, sizeof nick) && txt)
+ strncpy(nick, txt, sizeof nick);
+ }