jcs
/subtext
/amendments
/85
session: Print recent logins sorted by id descending
jcs made amendment 85 over 2 years ago
--- session.c Tue Mar 1 14:27:04 2022
+++ session.c Thu Mar 3 15:43:04 2022
@@ -1007,7 +1007,7 @@ session_recents(struct session *s)
struct session_log slog;
struct tm *date_tm;
unsigned long idle;
- size_t scount, rsize;
+ size_t scount, rsize, *ids;
char sdate[12];
short printed;
@@ -1015,16 +1015,12 @@ session_recents(struct session *s)
session_output_template(s,
"{{B}}Date Node User Via Speed{{/}}\r\n");
session_flush(s);
-
- scount = bile_count_by_type(db->sessions_bile, SL_LOG_RTYPE);
- for (printed = 0; printed < 10; printed++) {
- slog_obj = bile_get_nth_of_type(db->sessions_bile,
- scount - 1 - printed, SL_LOG_RTYPE);
- if (slog_obj == NULL)
- break;
- rsize = bile_read(db->sessions_bile, SL_LOG_RTYPE, slog_obj->id,
- (char *)&slog, sizeof(slog));
+ scount = bile_sorted_ids_by_type(db->sessions_bile, SL_LOG_RTYPE,
+ &ids);
+ for (printed = 0; printed < 10, printed < scount; printed++) {
+ rsize = bile_read(db->sessions_bile, SL_LOG_RTYPE,
+ ids[scount - 1 - printed], (char *)&slog, sizeof(slog));
if (rsize != sizeof(slog))
panic("unexpected bile_read response %d (read %ld, "
"expected %ld)", bile_error(db->sessions_bile), rsize,
@@ -1047,6 +1043,8 @@ session_recents(struct session *s)
session_output(s, "\r\n", 2);
session_flush(s);
session_pause_return(s, 0, NULL);
+
+ free(ids);
}
void