pcw / patches / ii-1.4-joinuser.diff

diff -r d93eaacde742 ii.c
--- a/ii.c	Fri Jun 25 10:55:05 2010 +0200
+++ b/ii.c	Tue Jul 13 09:29:23 2010 -0700
@@ -105,6 +105,7 @@
 	return open(infile, O_RDONLY | O_NONBLOCK, 0);
 }
 
+static void print_out(char *channel, char *buf); // needs to be declared
 static void add_channel(char *name) {
 	Channel *c;
 	int fd;
@@ -130,6 +131,12 @@
 	}
 	c->fd = fd;
 	c->name = strdup(name);
+
+	if(name[0] && !((name[0]=='#')||(name[0]=='&')||(name[0]=='+')||(name[0]=='!'))) {
+		char msg[128];
+		snprintf(msg, sizeof(msg), "-!- %s has joined %s", nick, name);
+		print_out(name, msg);
+	}
 }
 
 static void rm_channel(Channel *c) {
@@ -210,6 +217,7 @@
 	if(channel) snprintf(server, sizeof(server), "-!- %s", channel);
 	if(strstr(buf, server)) channel="";
 	create_filepath(outfile, sizeof(outfile), channel, "out");
+	if(channel && channel[0]) add_channel(channel);
 	if(!(out = fopen(outfile, "a"))) return;
 
 	strftime(buft, sizeof(buft), "%F %R", localtime(&t));
@@ -237,17 +245,14 @@
 		case 'j':
 			p = strchr(&buf[3], ' ');
 			if(p) *p = 0;
+			add_channel(&buf[3]);
 			if((buf[3]=='#')||(buf[3]=='&')||(buf[3]=='+')||(buf[3]=='!')){
 				if(p) snprintf(message, PIPE_BUF, "JOIN %s %s\r\n", &buf[3], p + 1); /* password protected channel */
 				else snprintf(message, PIPE_BUF, "JOIN %s\r\n", &buf[3]);
-				add_channel(&buf[3]);
 			}
-			else {
-				if(p){
-					add_channel(&buf[3]);
-					proc_channels_privmsg(&buf[3], p + 1);
-					return;
-				}
+			else if(p) {
+				proc_channels_privmsg(&buf[3], p + 1);
+				return;
 			}
 			break;
 		case 't':
@@ -357,6 +362,8 @@
 		argv[TOK_CHAN] = argv[TOK_TEXT];
 		snprintf(message, PIPE_BUF, "-!- %s(%s) has joined %s", argv[TOK_NICKSRV], argv[TOK_USER], argv[TOK_TEXT]);
 	} else if(!strncmp("PART", argv[TOK_CMD], 5)) {
+		if (!strcmp(nick, argv[TOK_NICKSRV]))
+			return;
 		snprintf(message, PIPE_BUF, "-!- %s(%s) has left %s", argv[TOK_NICKSRV], argv[TOK_USER], argv[TOK_CHAN]);
 	} else if(!strncmp("MODE", argv[TOK_CMD], 5))
 		snprintf(message, PIPE_BUF, "-!- %s changed mode/%s -> %s %s", argv[TOK_NICKSRV], argv[TOK_CMD + 1] ? argv[TOK_CMD + 1] : "" , argv[TOK_CMD + 2]? argv[TOK_CMD + 2] : "", argv[TOK_CMD + 3] ? argv[TOK_CMD + 3] : "");
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.