static logs_log_t *logs_log_new(logs_log_t *l, const char *session, const char *uid) { logs_log_t *ll; int created = 0; debug("[logs] log_new uid = %s session %s", __(uid), __(session)); ll = l ? l : logs_log_find(session, uid, 0); debug(" logs_log_t %x\n", ll); if (!ll) { ll = xmalloc(sizeof(logs_log_t)); ll->session = xstrdup(session); ll->uid = xstrdup(uid); created = 1; } if (!(ll->lw)) { ll->lw = xmalloc(sizeof(log_window_t)); logs_window_check(ll, time(NULL)); /* l->log_format i l->path, l->t */ ll->lw->file = logs_open_file(ll->lw->path, ll->lw->logformat); } if (created) { if (ll->lw->logformat == LOG_FORMAT_IRSSI && xstrlen(IRSSI_LOG_EKG2_OPENED)) { logs_irssi(ll->lw->file, session, NULL, prepare_timestamp_format(IRSSI_LOG_EKG2_OPENED, time(NULL)), 0, EKG_MSGCLASS_SYSTEM); } list_add(&log_logs, ll); } return ll; }
static logs_log_t *logs_log_new(const char *session, const char *target, gboolean raw) { logs_log_t *ll; log_format_t format; char *uid, *tmp; if (LOG_FORMAT_NONE == (format = raw ? LOG_FORMAT_RAW : logs_log_format(session_find(session)))) return NULL; if (!(uid = g_strdup(get_uid_any(session_find(session), target)))) uid = g_strdup(target); if ((tmp = xstrchr(uid, '/'))) *tmp = '\0'; // strip resource ll = logs_log_find(session, uid, raw); if (ll) { g_free(uid); return ll; } // Create new ll = xmalloc(sizeof(logs_log_t)); ll->session = g_strdup(session); ll->uid = uid; ll->format = format; ll->fname = logs_prepare_fname(ll); g_ptr_array_add(logs_logs, ll); if (ll->format == LOG_FORMAT_IRSSI && xstrlen(IRSSI_LOG_EKG2_OPENED)) { logs_open_file(ll); logs_irssi_sysmsg(ll, prepare_timestamp_format(IRSSI_LOG_EKG2_OPENED, time(NULL))); } debug("[logs] log_new s=%s uid=%s ff=%d logs_log_t %x\n", __(session), __(uid), ll->format, ll); return ll; }