[ekg2-commit] ekg2: logsqlite.c (HEAD) [peres]

CVS commit cvs w toxygen.net
Sob, 15 Wrz 2007, 08:16:49 CEST


Module name:	ekg2
Changes by:	peres	2007-09-15 08:16:46

Modified files:
	logsqlite.c

Log message:
Last-on-window-open shall print out message belonging to given session only.

Index: logsqlite.c
===================================================================
RCS file: /home/cvs/ekg2/plugins/logsqlite/logsqlite.c,v
diff -d -u -r1.48 -r1.49
--- logsqlite.c	6 Sep 2007 15:09:46 -0000	1.48
+++ logsqlite.c	15 Sep 2007 06:16:46 -0000	1.49
@@ -657,6 +657,7 @@
 
 static QUERY(logsqlite_newwin_handler) {
 	window_t	*w	= *(va_arg(ap, window_t **));
+	const char	*sess	= session_uid_get(w->session);
 	const char	*uid;
 	int		class;
 	time_t		ts;
@@ -686,15 +687,16 @@
 
 			/* these ones stolen from /last cmd */
 #ifdef HAVE_SQLITE3
-	sqlite3_prepare(db, "SELECT * FROM (SELECT ts, body, sent FROM log_msg WHERE uid = ?1 ORDER BY ts DESC LIMIT ?2) ORDER BY ts ASC", -1, &stmt, NULL);
+	sqlite3_prepare(db, "SELECT * FROM (SELECT ts, body, sent FROM log_msg WHERE uid = ?1 AND session = ?3 ORDER BY ts DESC LIMIT ?2) ORDER BY ts ASC", -1, &stmt, NULL);
 	sqlite3_bind_text(stmt, 1, uid, -1, SQLITE_STATIC);
+	sqlite3_bind_text(stmt, 3, sess, -1, SQLITE_STATIC);
 	sqlite3_bind_int(stmt, 2, config_logsqlite_last_limit);
 	while (sqlite3_step(stmt) == SQLITE_ROW) {
 		ts = (time_t) sqlite3_column_int(stmt, 0);
 
 		if (sqlite3_column_int(stmt, 2) == 0) {
 #else
-	sql = sqlite_mprintf("SELECT * FROM (SELECT ts, body, sent FROM log_msg WHERE uid = '%q' ORDER BY ts DESC LIMIT %i) ORDER BY ts ASC", uid, config_logsqlite_last_limit);
+	sql = sqlite_mprintf("SELECT * FROM (SELECT ts, body, sent FROM log_msg WHERE uid = '%q' AND session = '%q' ORDER BY ts DESC LIMIT %i) ORDER BY ts ASC", uid, config_logsqlite_last_limit, sess);
 	sqlite_compile(db, sql, NULL, &vm, &errors);
 	while (sqlite_step(vm, &count, &results, &fields) == SQLITE_ROW) {
 		ts = (time_t) atoi(results[0]);


Więcej informacji o liście dyskusyjnej ekg2-commit