[NeoStats-Devel] [Commits] rev 6 - trunk

[email protected]
Newsgroups gmane.comp.neostats.devel
Message-ID <[email protected]>
Author: DNB
Date: Thu Mar 17 15:10:18 2005
New Revision: 6

Added:
   trunk/ChangeLog
Modified:
   trunk/events.c
   trunk/seen.c
   trunk/seenserv.c
   trunk/seenserv.h
   trunk/seenserv_help.c
Log:
Add ChangeLog
code tidyups
data changes (SeenServseendata.gdbm must be deleted when updateing from previous revisions)
Extra data output on wildcarded seen.c
Verbose Option added

Added: trunk/ChangeLog
==============================================================================
--- (empty file)
+++ trunk/ChangeLog	Thu Mar 17 15:10:18 2005
@@ -0,0 +1,13 @@
+SeenServ Module for NeoStats Changelog.
+Fish (F), Mark (M), DeadNotBuried (D)
+==============================================================================
+3.0.a3-dev
+ - SEEN and SEENNICK now checks to see if passed data is a valid nickname,
+   and if the nick is online before traversing the Seen Data List (D)
+ - Added Verbose Setting. (D)
+ - SEENNICK now shows up to the last 5 Nicknames that match, but only shows
+   the full details for the last entry (D)
+ - Updated SeenData Strucure field sizes, this breaks the file so
+   SeenServseendata.gdbm must be removed when updating (D)
+ - Added This File (D)
+ - Added Win32 required files (M)

Modified: trunk/events.c
==============================================================================
--- trunk/events.c	(original)
+++ trunk/events.c	Thu Mar 17 15:10:18 2005
@@ -24,13 +24,13 @@
 #include "neostats.h"    /* Required for bot support */
 #include "seenserv.h"
 
+static char tmpmsg[SS_MESSAGESIZE];
+
 /*
  * Signon Events
 */
 int SeenSignon (CmdParams *cmdparams) {
-	char tmpmsg[512];
-
-	ircsnprintf(tmpmsg, 512, "%s", cmdparams->param);
+	strlcpy(tmpmsg, cmdparams->param, SS_MESSAGESIZE);
 	addseenentry(cmdparams->source->name, cmdparams->source->user->username, cmdparams->source->user->hostname, cmdparams->source->user->vhost, tmpmsg, SS_CONNECTED);
 	return NS_SUCCESS;
 }
@@ -39,9 +39,7 @@
  * Quit Events
 */
 int SeenQuit (CmdParams *cmdparams) {
-	char tmpmsg[512];
-
-	ircsnprintf(tmpmsg, 512, "(%s)", cmdparams->param);
+	ircsnprintf(tmpmsg, SS_MESSAGESIZE, "(%s)", cmdparams->param);
 	addseenentry(cmdparams->source->name, cmdparams->source->user->username, cmdparams->source->user->hostname, cmdparams->source->user->vhost, tmpmsg, SS_QUIT);
 	return NS_SUCCESS;
 }
@@ -50,9 +48,7 @@
  * Kill Events
 */
 int SeenKill (CmdParams *cmdparams) {
-	char tmpmsg[512];
-
-	ircsnprintf(tmpmsg, 512, "by %s (%s)", cmdparams->target->name, cmdparams->source->name, cmdparams->param);
+	ircsnprintf(tmpmsg, SS_MESSAGESIZE, "by %s (%s)", cmdparams->target->name, cmdparams->source->name, cmdparams->param);
 	addseenentry(cmdparams->target->name, cmdparams->target->user->username, cmdparams->target->user->hostname, cmdparams->target->user->vhost, tmpmsg, SS_KILLED);
 	return NS_SUCCESS;
 }
@@ -61,9 +57,7 @@
  * Nick Events
 */
 int SeenNickChange (CmdParams *cmdparams) {
-	char tmpmsg[512];
-
-	ircsnprintf(tmpmsg, 512, "%s", cmdparams->source->name);
+	strlcpy(tmpmsg, cmdparams->source->name, SS_MESSAGESIZE);
 	addseenentry(cmdparams->param, cmdparams->source->user->username, cmdparams->source->user->hostname, cmdparams->source->user->vhost, tmpmsg, SS_NICKCHANGE);
 	return NS_SUCCESS;
 }
@@ -72,12 +66,10 @@
  * Join Events
 */
 int SeenJoinChan (CmdParams *cmdparams) {
-	char tmpmsg[512];
-
 	if (is_hidden_chan(cmdparams->channel)) {
 		return NS_SUCCESS;
 	}
-	ircsnprintf(tmpmsg, 512, "%s", cmdparams->channel->name);
+	strlcpy(tmpmsg, cmdparams->channel->name, SS_MESSAGESIZE);
 	addseenentry(cmdparams->source->name, cmdparams->source->user->username, cmdparams->source->user->hostname, cmdparams->source->user->vhost, tmpmsg, SS_JOIN);
 	return NS_SUCCESS;
 }
@@ -86,15 +78,13 @@
  * Part Events
 */
 int SeenPartChan (CmdParams *cmdparams) {
-	char tmpmsg[512];
-
 	if (is_hidden_chan(cmdparams->channel)) {
 		return NS_SUCCESS;
 	}
 	if (cmdparams->param) {
-		ircsnprintf(tmpmsg, 512, "%s (%s)", cmdparams->channel->name, cmdparams->param);
+		ircsnprintf(tmpmsg, SS_MESSAGESIZE, "%s (%s)", cmdparams->channel->name, cmdparams->param);
 	} else {
-		ircsnprintf(tmpmsg, 512, "%s", cmdparams->channel->name);
+		strlcpy(tmpmsg, cmdparams->channel->name, SS_MESSAGESIZE);
 	}
 	addseenentry(cmdparams->source->name, cmdparams->source->user->username, cmdparams->source->user->hostname, cmdparams->source->user->vhost, tmpmsg, SS_PART);
 	return NS_SUCCESS;
@@ -104,12 +94,10 @@
  * Kick Events
 */
 int SeenKicked (CmdParams *cmdparams) {
-	char tmpmsg[512];
-
 	if (is_hidden_chan(cmdparams->channel)) {
 		return NS_SUCCESS;
 	}
-	ircsnprintf(tmpmsg, 512, "%s by %s (%s)", cmdparams->channel->name, cmdparams->source->name, cmdparams->param);
+	ircsnprintf(tmpmsg, SS_MESSAGESIZE, "%s by %s (%s)", cmdparams->channel->name, cmdparams->source->name, cmdparams->param);
 	addseenentry(cmdparams->target->name, cmdparams->target->user->username, cmdparams->target->user->hostname, cmdparams->target->user->vhost, tmpmsg, SS_KICKED);
 	return NS_SUCCESS;
 }

Modified: trunk/seen.c
==============================================================================
--- trunk/seen.c	(original)
+++ trunk/seen.c	Thu Mar 17 15:10:18 2005
@@ -26,6 +26,14 @@
 
 static list_t *seenlist;
 
+static char ttxt[4][12];
+static char th[SS_HOSTSIZE];
+static char dt[SS_GENCHARLEN];
+static char matchstr[SS_HOSTSIZE];
+static char cc[SS_GENCHARLEN];
+static char senf[5][MAXNICK+3];
+static char nickstr[SS_MESSAGESIZE];
+
 /*
  *  add new seen entry to list
 */
@@ -35,9 +43,9 @@
 	removepreviousnick(nick);
 	sd = ns_calloc(sizeof(SeenData));
 	strlcpy(sd->nick, nick, MAXNICK);
-	ircsnprintf(sd->userhost, 512, "%s!%s@%s", nick, user, host);
-	ircsnprintf(sd->uservhost, 512, "%s!%s@%s", nick, user, vhost);
-	strlcpy(sd->message, message, BUFSIZE);
+	ircsnprintf(sd->userhost, SS_HOSTSIZE, "%s!%s@%s", nick, user, host);
+	ircsnprintf(sd->uservhost, SS_HOSTSIZE, "%s!%s@%s", nick, user, vhost);
+	strlcpy(sd->message, message, SS_MESSAGESIZE);
 	sd->seentype = type;
 	sd->seentime = me.now;
 	lnode_create_append( seenlist, sd );
@@ -135,19 +143,37 @@
 int CheckSeenData(CmdParams *cmdparams, int checktype) {
 	lnode_t *ln;
 	SeenData *sd;
+	SeenData *sdo;
 	Client *u;
 	Channel *c;
-	int d, h, m, s, mf;
-	char ttxt[4][12];
-	char th[512];
-	char dt[128];
-	char matchstr[512];
-	char cc[128];
+	int d, h, m, s, mf, sef;
 	
-	if (!SeenServ.enable && cmdparams->channel == NULL) {
+	if ( SeenServ.verbose == 1 ) {
+		if (checktype == SS_CHECK_NICK) {
+			irc_chanalert (sns_bot, "SeenNick Command used by %s (SEENNICK %s)", cmdparams->source->name, cmdparams->av[0]);
+		} else if (checktype == SS_CHECK_WILDCARD) {
+			irc_chanalert (sns_bot, "Seen Command used by %s (SEEN %s)", cmdparams->source->name, cmdparams->av[0]);
+		}
+	}
+	if (!SeenServ.enable && cmdparams->channel == NULL && cmdparams->source->user->ulevel < NS_ULEVEL_LOCOPER) {
 		return NS_SUCCESS;
 	}
-	if (!SeenServ.enableseenchan && cmdparams->channel != NULL) {
+	if (!SeenServ.enableseenchan && cmdparams->channel != NULL && cmdparams->source->user->ulevel < NS_ULEVEL_LOCOPER) {
+		return NS_SUCCESS;
+	}
+	if (ValidateNick(cmdparams->av[0]) == NS_SUCCESS) {
+		u = FindUser(cmdparams->av[0]);
+		if (u) {
+			if (cmdparams->source->user->ulevel >= NS_ULEVEL_LOCOPER && cmdparams->channel == NULL) {
+				irc_prefmsg (sns_bot, cmdparams->source, "%s (%s@%s) is connected right now", u->name, u->user->username, u->user->hostname);
+			} else {
+				if (cmdparams->channel == NULL) {
+					irc_prefmsg (sns_bot, cmdparams->source, "%s (%s@%s) is connected right now", u->name, u->user->username, u->user->vhost);
+				} else {
+					irc_chanprivmsg (sns_bot, cmdparams->channel->name, "%s (%s@%s) is connected right now", u->name, u->user->username, u->user->vhost);
+				}
+			}
+		}
 		return NS_SUCCESS;
 	}
 	if (checktype == SS_CHECK_NICK) {
@@ -160,20 +186,24 @@
 			return NS_SUCCESS;
 		}
 	}
-	for ( d = 0 ; d < 4 ; d++ ) {
-		ttxt[d][0] = '\0';
+	for ( d = 0 ; d < 5 ; d++ ) {
+		senf[d][0] = '\0';
+		if (d < 4) {
+			ttxt[d][0] = '\0';
+		}
 	}
 	cc[0] = '\0';
-	h = m = s = mf = 0;
+	h = m = s = sef = 0;
 	if (checktype == SS_CHECK_WILDCARD) {
 		if (!strchr(cmdparams->av[0], '*') == NULL) {
-			ircsnprintf(matchstr, 512, "%s", cmdparams->av[0]);
+			ircsnprintf(matchstr, SS_HOSTSIZE, "%s", cmdparams->av[0]);
 		} else {
-			ircsnprintf(matchstr, 512, "*%s*", cmdparams->av[0]);
+			ircsnprintf(matchstr, SS_HOSTSIZE, "*%s*", cmdparams->av[0]);
 		}
 	}
 	ln = list_last(seenlist);
-	while (ln != NULL) {
+	while (ln != NULL && sef < 5) {
+		mf = 0;
 		sd = lnode_get(ln);
 		if (checktype == SS_CHECK_NICK) {
 			if (!ircstrcasecmp(cmdparams->av[0], sd->nick)) {
@@ -185,159 +215,158 @@
 			}
 		}
 		if (mf) {
-			d = (me.now - sd->seentime);
-			if (d) {
-				s = (d % 60);
-				if (s) {
-					ircsnprintf(ttxt[3], 12, "%d Seconds", s);
-					d -= s;
+			if (!sef) {
+				sdo = ns_calloc( sizeof( SeenData ) );
+				os_memcpy( sdo, sd, sizeof( SeenData ) );
+				if (checktype == SS_CHECK_NICK) {
+					sef = 4;
+				} else {
+					strlcpy(senf[sef], sd->nick, MAXNICK+3);
 				}
-				d = (d / 60);
 			} else {
-				ircsnprintf(ttxt[3], 12, "0 Seconds");
+				ircsnprintf(senf[sef], MAXNICK+3, ", %s", sd->nick);
 			}
-			if (d) {
-				m = (d % 60);
-				if (m) {
-					ircsnprintf(ttxt[2], 12, "%d Minutes", m);
-					d -= m;
-				}
-				d = (d / 60);
+			sef++;
+		}
+		ln = list_prev(seenlist, ln);
+	}
+	if (sef) {
+		d = (me.now - sdo->seentime);
+		if (d > 0) {
+			s = (d % 60);
+			if (s) {
+				ircsnprintf(ttxt[3], 12, "%d Seconds", s);
+				d -= s;
 			}
-			if (d) {
-				h = (d % 24);
-				if (h) {
-					ircsnprintf(ttxt[1], 12, "%d Hours", h);
-					d -= h;
-				}
-				d = (d / 24);
+			d = (d / 60);
+			m = (d % 60);
+			if (m) {
+				ircsnprintf(ttxt[2], 12, "%d Minutes ", m);
+				d -= m;
+			}
+			d = (d / 60);
+			h = (d % 24);
+			if (h) {
+				ircsnprintf(ttxt[1], 12, "%d Hours ", h);
+				d -= h;
 			}
+			d = (d / 24);
 			if (d) {
-				ircsnprintf(ttxt[0], 12, "%d Days", d);
+				ircsnprintf(ttxt[0], 12, "%d Days ", d);
 			}
-			ircsnprintf(dt, 128, "%s %s %s %s", ttxt[0], ttxt[1], ttxt[2], ttxt[3]);
-			if ( sd->seentype == SS_CONNECTED ) {
-				u = FindUser(sd->nick);
-				if (u) {
-					ircsnprintf(th, 512, "%s!%s@%s", u->name, u->user->username, u->user->hostname);
-					if (!ircstrcasecmp(sd->userhost, th)) {
-						ircsnprintf(cc, 128, ", %s is currently connected", u->name);
-					}
+		} else {
+			ircsnprintf(ttxt[3], 12, "0 Seconds");
+		}
+		ircsnprintf(dt, SS_GENCHARLEN, "%s%s%s%s", ttxt[0], ttxt[1], ttxt[2], ttxt[3]);
+		if (checktype == SS_CHECK_NICK) {
+			nickstr[0] = '\0';
+		} else if (checktype == SS_CHECK_WILDCARD) {
+			ircsnprintf(nickstr, SS_MESSAGESIZE, "The %d most recent matches are: %s%s%s%s%s , ", sef, senf[0], senf[1], senf[2], senf[3], senf[4]);
+		}
+		if ( sdo->seentype == SS_CONNECTED ) {
+			u = FindUser(sdo->nick);
+			if (u) {
+				ircsnprintf(th, SS_HOSTSIZE, "%s!%s@%s", u->name, u->user->username, u->user->hostname);
+				if (!ircstrcasecmp(sdo->userhost, th)) {
+					ircsnprintf(cc, SS_GENCHARLEN, ", %s is currently connected", u->name);
 				}
-				if (cmdparams->source->user->ulevel >= NS_ULEVEL_LOCOPER && cmdparams->channel == NULL) {
-					irc_prefmsg (sns_bot, cmdparams->source, "%s was last seen connecting %s ago%s", sd->userhost, dt, cc);
+			}
+			if (cmdparams->source->user->ulevel >= NS_ULEVEL_LOCOPER && cmdparams->channel == NULL) {
+				irc_prefmsg (sns_bot, cmdparams->source, "%s%s was last seen connecting %s ago%s", nickstr, sdo->userhost, dt, cc);
+			} else {
+				if (cmdparams->channel == NULL) {
+					irc_prefmsg (sns_bot, cmdparams->source, "%s%s was last seen connecting %s ago%s", nickstr, sdo->uservhost, dt, cc);
 				} else {
-					if (cmdparams->channel == NULL) {
-						irc_prefmsg (sns_bot, cmdparams->source, "%s was last seen connecting %s ago%s", sd->uservhost, dt, cc);
-					} else {
-						irc_chanprivmsg (sns_bot, cmdparams->channel->name, "%s was last seen connecting %s ago%s", sd->uservhost, dt, cc);
-					}
+					irc_chanprivmsg (sns_bot, cmdparams->channel->name, "%s%s was last seen connecting %s ago%s", nickstr, sdo->uservhost, dt, cc);
 				}
-				return NS_SUCCESS;
-			} else if ( sd->seentype == SS_QUIT ) {
-				if (cmdparams->source->user->ulevel >= NS_ULEVEL_LOCOPER && cmdparams->channel == NULL) {
-					irc_prefmsg (sns_bot, cmdparams->source, "%s was last seen quiting %s ago, stating %s", sd->userhost, dt, sd->message);
+			}
+		} else if ( sdo->seentype == SS_QUIT ) {
+			if (cmdparams->source->user->ulevel >= NS_ULEVEL_LOCOPER && cmdparams->channel == NULL) {
+				irc_prefmsg (sns_bot, cmdparams->source, "%s%s was last seen quiting %s ago, stating %s", nickstr, sdo->userhost, dt, sdo->message);
+			} else {
+				if (cmdparams->channel == NULL) {
+					irc_prefmsg (sns_bot, cmdparams->source, "%s%s was last seen quiting %s ago, stating %s", nickstr, sdo->uservhost, dt, sdo->message);
 				} else {
-					if (cmdparams->channel == NULL) {
-						irc_prefmsg (sns_bot, cmdparams->source, "%s was last seen quiting %s ago, stating %s", sd->uservhost, dt, sd->message);
-					} else {
-						irc_chanprivmsg (sns_bot, cmdparams->channel->name, "%s was last seen quiting %s ago, stating %s", sd->uservhost, dt, sd->message);
-					}
+					irc_chanprivmsg (sns_bot, cmdparams->channel->name, "%s%s was last seen quiting %s ago, stating %s", nickstr, sdo->uservhost, dt, sdo->message);
 				}
-				return NS_SUCCESS;
-			} else if ( sd->seentype == SS_KILLED ) {
-				if (cmdparams->source->user->ulevel >= NS_ULEVEL_LOCOPER && cmdparams->channel == NULL) {
-					irc_prefmsg (sns_bot, cmdparams->source, "%s was last seen being killed %s ago %s", sd->userhost, dt, sd->message);
+			}
+		} else if ( sdo->seentype == SS_KILLED ) {
+			if (cmdparams->source->user->ulevel >= NS_ULEVEL_LOCOPER && cmdparams->channel == NULL) {
+				irc_prefmsg (sns_bot, cmdparams->source, "%s%s was last seen being killed %s ago %s", nickstr, sdo->userhost, dt, sdo->message);
+			} else {
+				if (cmdparams->channel == NULL) {
+					irc_prefmsg (sns_bot, cmdparams->source, "%s%s was last seen being killed %s ago %s", nickstr, sdo->uservhost, dt, sdo->message);
 				} else {
-					if (cmdparams->channel == NULL) {
-						irc_prefmsg (sns_bot, cmdparams->source, "%s was last seen being killed %s ago %s", sd->uservhost, dt, sd->message);
-					} else {
-						irc_chanprivmsg (sns_bot, cmdparams->channel->name, "%s was last seen being killed %s ago %s", sd->uservhost, dt, sd->message);
-					}
+					irc_chanprivmsg (sns_bot, cmdparams->channel->name, "%s%s was last seen being killed %s ago %s", nickstr, sdo->uservhost, dt, sdo->message);
 				}
-				return NS_SUCCESS;
-			} else if ( sd->seentype == SS_NICKCHANGE ) {
-				u = FindUser(sd->message);
-				if (u) {
-					ircsnprintf(th, 512, "%s!%s@%s", u->name, u->user->username, u->user->hostname);
-					if (!ircstrcasecmp(sd->userhost, th)) {
-						ircsnprintf(cc, 128, ", %s is currently connected", u->name);
-					}
+			}
+		} else if ( sdo->seentype == SS_NICKCHANGE ) {
+			u = FindUser(sdo->message);
+			if (u) {
+				ircsnprintf(th, SS_HOSTSIZE, "%s!%s@%s", u->name, u->user->username, u->user->hostname);
+				if (!ircstrcasecmp(sdo->userhost, th)) {
+					ircsnprintf(cc, SS_GENCHARLEN, ", %s is currently connected", u->name);
 				}
-				if (cmdparams->source->user->ulevel >= NS_ULEVEL_LOCOPER && cmdparams->channel == NULL) {
-					irc_prefmsg (sns_bot, cmdparams->source, "%s was last seen changing Nickname %s ago to %s", sd->userhost, dt, sd->message, cc);
+			}
+			if (cmdparams->source->user->ulevel >= NS_ULEVEL_LOCOPER && cmdparams->channel == NULL) {
+				irc_prefmsg (sns_bot, cmdparams->source, "%s%s was last seen changing Nickname %s ago to %s%s", nickstr, sdo->userhost, dt, sdo->message, cc);
+			} else {
+				if (cmdparams->channel == NULL) {
+					irc_prefmsg (sns_bot, cmdparams->source, "%s%s was last seen changing Nickname %s ago to %s%s", nickstr, sdo->uservhost, dt, sdo->message, cc);
 				} else {
-					if (cmdparams->channel == NULL) {
-						irc_prefmsg (sns_bot, cmdparams->source, "%s was last seen changing Nickname %s ago to %s", sd->uservhost, dt, sd->message, cc);
-					} else {
-						irc_chanprivmsg (sns_bot, cmdparams->channel->name, "%s was last seen changing Nickname %s ago to %s", sd->uservhost, dt, sd->message, cc);
-					}
+					irc_chanprivmsg (sns_bot, cmdparams->channel->name, "%s%s was last seen changing Nickname %s ago to %s%s", nickstr, sdo->uservhost, dt, sdo->message, cc);
 				}
-				return NS_SUCCESS;
-			} else if ( sd->seentype == SS_JOIN ) {
-				u = FindUser(sd->nick);
-				if (u) {
-					ircsnprintf(th, 512, "%s!%s@%s", u->name, u->user->username, u->user->hostname);
-					if (!ircstrcasecmp(sd->userhost, th)) {
-						c = FindChannel(sd->message);
-						if (c) {
-							if (IsChannelMember(c, u) && !is_hidden_chan(c)) {
-								ircsnprintf(cc, 128, ", %s is currently in %s", u->name, c->name);
-							}
+			}
+		} else if ( sdo->seentype == SS_JOIN ) {
+			u = FindUser(sdo->nick);
+			if (u) {
+				ircsnprintf(th, SS_HOSTSIZE, "%s!%s@%s", u->name, u->user->username, u->user->hostname);
+				if (!ircstrcasecmp(sdo->userhost, th)) {
+					c = FindChannel(sdo->message);
+					if (c) {
+						if (IsChannelMember(c, u) && !is_hidden_chan(c)) {
+							ircsnprintf(cc, SS_GENCHARLEN, ", %s is currently in %s", u->name, c->name);
 						}
 					}
 				}
-				if (cmdparams->source->user->ulevel >= NS_ULEVEL_LOCOPER && cmdparams->channel == NULL) {
-					irc_prefmsg (sns_bot, cmdparams->source, "%s was last seen Joining %s %s ago%s", sd->userhost, sd->message, dt, cc);
+			}
+			if (cmdparams->source->user->ulevel >= NS_ULEVEL_LOCOPER && cmdparams->channel == NULL) {
+				irc_prefmsg (sns_bot, cmdparams->source, "%s%s was last seen Joining %s %s ago%s", nickstr, sdo->userhost, sdo->message, dt, cc);
+			} else {
+				if (cmdparams->channel == NULL) {
+					irc_prefmsg (sns_bot, cmdparams->source, "%s%s was last seen Joining %s %s ago%s", nickstr, sdo->uservhost, sdo->message, dt, cc);
 				} else {
-					if (cmdparams->channel == NULL) {
-						irc_prefmsg (sns_bot, cmdparams->source, "%s was last seen Joining %s %s ago%s", sd->uservhost, sd->message, dt, cc);
-					} else {
-						irc_chanprivmsg (sns_bot, cmdparams->channel->name, "%s was last seen Joining %s %s ago%s", sd->uservhost, sd->message, dt, cc);
-					}
+					irc_chanprivmsg (sns_bot, cmdparams->channel->name, "%s%s was last seen Joining %s %s ago%s", nickstr, sdo->uservhost, sdo->message, dt, cc);
 				}
-				return NS_SUCCESS;
-			} else if ( sd->seentype == SS_PART ) {
-				if (cmdparams->source->user->ulevel >= NS_ULEVEL_LOCOPER && cmdparams->channel == NULL) {
-					irc_prefmsg (sns_bot, cmdparams->source, "%s was last seen Parting %s %s ago", sd->userhost, sd->message, dt);
+			}
+		} else if ( sdo->seentype == SS_PART ) {
+			if (cmdparams->source->user->ulevel >= NS_ULEVEL_LOCOPER && cmdparams->channel == NULL) {
+				irc_prefmsg (sns_bot, cmdparams->source, "%s%s was last seen Parting %s %s ago", nickstr, sdo->userhost, sdo->message, dt);
+			} else {
+				if (cmdparams->channel == NULL) {
+					irc_prefmsg (sns_bot, cmdparams->source, "%s%s was last seen Parting %s %s ago", nickstr, sdo->uservhost, sdo->message, dt);
 				} else {
-					if (cmdparams->channel == NULL) {
-						irc_prefmsg (sns_bot, cmdparams->source, "%s was last seen Parting %s %s", sd->uservhost, sd->message, dt);
-					} else {
-						irc_chanprivmsg (sns_bot, cmdparams->channel->name, "%s was last seen Parting %s %s", sd->uservhost, sd->message, dt);
-					}
+					irc_chanprivmsg (sns_bot, cmdparams->channel->name, "%s%s was last seen Parting %s %s ago", nickstr, sdo->uservhost, sdo->message, dt);
 				}
-				return NS_SUCCESS;
-			} else if ( sd->seentype == SS_KICKED ) {
-				if (cmdparams->source->user->ulevel >= NS_ULEVEL_LOCOPER && cmdparams->channel == NULL) {
-					irc_prefmsg (sns_bot, cmdparams->source, "%s was last seen being Kicked From %s %s ago", sd->userhost, sd->message, dt);
+			}
+		} else if ( sdo->seentype == SS_KICKED ) {
+			if (cmdparams->source->user->ulevel >= NS_ULEVEL_LOCOPER && cmdparams->channel == NULL) {
+				irc_prefmsg (sns_bot, cmdparams->source, "%s%s was last seen being Kicked From %s %s ago", nickstr, sdo->userhost, sdo->message, dt);
+			} else {
+				if (cmdparams->channel == NULL) {
+					irc_prefmsg (sns_bot, cmdparams->source, "%s%s was last seen Kicked From %s %s", nickstr, sdo->uservhost, sdo->message, dt);
 				} else {
-					if (cmdparams->channel == NULL) {
-						irc_prefmsg (sns_bot, cmdparams->source, "%s was last seen Kicked From %s %s", sd->uservhost, sd->message, dt);
-					} else {
-						irc_chanprivmsg (sns_bot, cmdparams->channel->name, "%s was last seen Kicked From %s %s", sd->uservhost, sd->message, dt);
-					}
+					irc_chanprivmsg (sns_bot, cmdparams->channel->name, "%s%s was last seen Kicked From %s %s", nickstr, sdo->uservhost, sdo->message, dt);
 				}
-				return NS_SUCCESS;
 			}
-		} else {
-			ln = list_prev(seenlist, ln);
 		}
-	}
-	if (checktype == SS_CHECK_NICK) {
-		u = FindUser(cmdparams->av[0]);
-		if (u) {
-			if (cmdparams->channel == NULL) {
-				irc_prefmsg (sns_bot, cmdparams->source, "There is a %s connected right now", u->name);
-			} else {
-				irc_chanprivmsg (sns_bot, cmdparams->channel->name, "There is a %s connected right now", u->name);
-			}
+		ns_free(sdo);
+		return NS_SUCCESS;
+	} else if (checktype == SS_CHECK_NICK) {
+		if (cmdparams->channel == NULL) {
+			irc_prefmsg (sns_bot, cmdparams->source, "Sorry %s, I can't remember seeing anyone called %s", cmdparams->source->name, cmdparams->av[0]);
 		} else {
-			if (cmdparams->channel == NULL) {
-				irc_prefmsg (sns_bot, cmdparams->source, "Sorry %s, I can't remember seeing anyone called %s", cmdparams->source->name, cmdparams->av[0]);
-			} else {
-				irc_chanprivmsg (sns_bot, cmdparams->channel->name, "Sorry %s, I can't remember seeing anyone called %s", cmdparams->source->name, cmdparams->av[0]);
-			}
+			irc_chanprivmsg (sns_bot, cmdparams->channel->name, "Sorry %s, I can't remember seeing anyone called %s", cmdparams->source->name, cmdparams->av[0]);
 		}
 	} else if (checktype == SS_CHECK_WILDCARD) {
 		if (cmdparams->channel == NULL) {
@@ -357,6 +386,9 @@
 	SeenData *sd;
 	int i;
 	
+	if ( SeenServ.verbose == 1 ) {
+		irc_chanalert (sns_bot, "Remove Command used by %s (REMOVE %s)", cmdparams->source->name, cmdparams->av[0]);
+	}
 	i = 0;
 	ln = list_first(seenlist);
 	while (ln != NULL) {
@@ -377,6 +409,9 @@
 	} else {
 		irc_chanprivmsg (sns_bot, cmdparams->channel->name, "%d matching entries removed", i);
 	}
+	if ( SeenServ.verbose == 1 ) {
+		irc_chanalert (sns_bot, "%d matching entries removed", i);
+	}
 	return NS_SUCCESS;
 }
 
@@ -388,6 +423,9 @@
 	SeenData *sd;
 	int sc[10], i;
 
+	if ( SeenServ.verbose == 1 ) {
+		irc_chanalert (sns_bot, "Stats Command used by %s (STATS)", cmdparams->source->name);
+	}
 	for ( i = 0 ; i < 10 ; i++ ) {
 		sc[i] = 0;
 	}

Modified: trunk/seenserv.c
==============================================================================
--- trunk/seenserv.c	(original)
+++ trunk/seenserv.c	Thu Mar 17 15:10:18 2005
@@ -52,6 +52,7 @@
 
 static bot_setting sns_settings[]=
 {
+	{"VERBOSE",		&SeenServ.verbose,		SET_TYPE_BOOLEAN,	0,	0,		NS_ULEVEL_ADMIN,	NULL,	sns_help_set_verbose,		NULL,			(void *)0 },
 	{"EXCLUSIONS",		&SeenServ.exclusions,		SET_TYPE_BOOLEAN,	0,	0,		NS_ULEVEL_ADMIN,	NULL,	sns_help_set_exclusions,	sns_set_exclusions,	(void *)1 },
 	{"ENABLE",		&SeenServ.enable,		SET_TYPE_BOOLEAN,	0,	0,		NS_ULEVEL_ADMIN,	NULL,	sns_help_set_enable,		NULL,			(void *)0 },
 	{"ENABLESEENCHAN",	&SeenServ.enableseenchan,	SET_TYPE_BOOLEAN,	0,	0,		NS_ULEVEL_ADMIN,	NULL,	sns_help_set_enableseenchan,	NULL,			(void *)0 },

Modified: trunk/seenserv.h
==============================================================================
--- trunk/seenserv.h	(original)
+++ trunk/seenserv.h	Thu Mar 17 15:10:18 2005
@@ -21,9 +21,27 @@
 ** $Id$
 */
 
+/* Defines */
+#define SS_CHECK_WILDCARD	0x00000001	/* WildCard Entry Check */
+#define SS_CHECK_NICK		0x00000002	/* Nick Entry Check */
+
+#define SS_CONNECTED		0x00000001	/* Seen Connection Type */
+#define SS_QUIT			0x00000002	/* Seen Quit Type */
+#define SS_KILLED		0x00000003	/* Seen Killed Type */
+#define SS_NICKCHANGE		0x00000004	/* Seen Nick Change Type */
+#define SS_JOIN			0x00000005	/* Seen Join Channel Type */
+#define SS_PART			0x00000006	/* Seen Part Channel Type */
+#define SS_KICKED		0x00000007	/* Seen Kicked Channel Type */
+
+#define SS_HOSTSIZE		MAXNICK+MAXUSER+MAXHOST /* Max Length to store Nick!User@<Host|Vhost> */
+#define SS_MESSAGESIZE		300 /* Message Field Size */
+#define SS_GENCHARLEN		128 /* General Character Field Length */
+
+/* Variables And Structs */
 Bot *sns_bot;
 
 struct SeenServ {
+	int verbose;
 	int exclusions;
 	int enable;
 	int enableseenchan;
@@ -33,31 +51,20 @@
 
 typedef struct SeenData {
 	char nick[MAXNICK];
-	char userhost[PARAMSIZE];
-	char uservhost[PARAMSIZE];
-	char message[BUFSIZE];
+	char userhost[SS_HOSTSIZE];
+	char uservhost[SS_HOSTSIZE];
+	char message[SS_MESSAGESIZE];
 	int seentype;
 	time_t seentime;
 } SeenData;
 
-/* Defines */
-#define SS_CHECK_WILDCARD	0x00000001	/* WildCard Entry Check */
-#define SS_CHECK_NICK		0x00000002	/* Nick Entry Check */
-
-#define SS_CONNECTED		0x00000001	/* Seen Connection Type */
-#define SS_QUIT			0x00000002	/* Seen Quit Type */
-#define SS_KILLED		0x00000003	/* Seen Killed Type */
-#define SS_NICKCHANGE		0x00000004	/* Seen Nick Change Type */
-#define SS_JOIN			0x00000005	/* Seen Join Channel Type */
-#define SS_PART			0x00000006	/* Seen Part Channel Type */
-#define SS_KICKED		0x00000007	/* Seen Kicked Channel Type */
-
 /* SeenServ Module Help */
 extern const char *sns_help_set_exclusions[];
 extern const char *sns_help_set_enable[];
 extern const char *sns_help_set_enableseenchan[];
 extern const char *sns_help_set_seenchan[];
 extern const char *sns_help_set_maxentries[];
+extern const char *sns_help_set_verbose[];
 extern const char sns_help_seen_oneline[];
 extern const char sns_help_seennick_oneline[];
 extern const char sns_help_remove_oneline[];

Modified: trunk/seenserv_help.c
==============================================================================
--- trunk/seenserv_help.c	(original)
+++ trunk/seenserv_help.c	Thu Mar 17 15:10:18 2005
@@ -59,6 +59,12 @@
 	NULL
 };
 
+const char *sns_help_set_verbose[] = {
+	"\2VERBOSE <ON|OFF>\2",
+	"Enable verbose mode.",
+	NULL
+};
+
 const char sns_help_seen_oneline[] = "Displays Last Seen Nicks";
 const char sns_help_seennick_oneline[] = "Displays Last Seen Nicks";
 const char sns_help_remove_oneline[] = "Removes Entries that match nick!user@host";
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.