Exemple #1
0
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;
}
Exemple #2
0
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;
}