[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