Cosmetic #734 » timestamp.patch
| src/bip.c | ||
|---|---|---|
| 	return -1; | ||
| } | ||
| enum BLTimestamp lex_backlog_timestamp(char * tdata) { | ||
| 	if (strcmp(tdata, "time") == 0) { | ||
| 		return BLTSTime; | ||
| 	} else if (strcmp(tdata, "datetime") == 0) { | ||
| 		return BLTSDateTime; | ||
| 	} else { | ||
| 		return BLTSNone; | ||
| 	} | ||
| } | ||
| struct historical_directives { | ||
| 	int always_backlog; | ||
| 	int backlog; | ||
| 	int bl_msg_only; | ||
| 	int backlog_lines; | ||
| 	int backlog_no_timestamp; | ||
| 	enum BLTimestamp backlog_timestamp; | ||
| 	int blreset_on_talk; | ||
| }; | ||
| ... | ... | |
| 		u->always_backlog = DEFAULT_ALWAYS_BACKLOG; | ||
| 		u->bl_msg_only = DEFAULT_BL_MSG_ONLY; | ||
| 		u->backlog_lines = DEFAULT_BACKLOG_LINES; | ||
| 		u->backlog_no_timestamp = DEFAULT_BACKLOG_NO_TIMESTAMP; | ||
| 		u->backlog_timestamp = DEFAULT_BACKLOG_TIMESTAMP; | ||
| 		u->blreset_on_talk = DEFAULT_BLRESET_ON_TALK; | ||
| 		u->blreset_connection = DEFAULT_BLRESET_CONNECTION; | ||
| 		u->bip_use_notice = DEFAULT_BIP_USE_NOTICE; | ||
| ... | ... | |
| 	u->always_backlog = hds->always_backlog; | ||
| 	u->bl_msg_only = hds->bl_msg_only; | ||
| 	u->backlog_lines = hds->backlog_lines; | ||
| 	u->backlog_no_timestamp = hds->backlog_no_timestamp; | ||
| 	u->backlog_timestamp = hds->backlog_timestamp; | ||
| 	u->blreset_on_talk = hds->blreset_on_talk; | ||
| 	while ((t = list_remove_first(data))) { | ||
| ... | ... | |
| 		case LEX_BACKLOG_LINES: | ||
| 			u->backlog_lines = t->ndata; | ||
| 			break; | ||
| 		case LEX_BACKLOG_NO_TIMESTAMP: | ||
| 			u->backlog_no_timestamp = t->ndata; | ||
| 		case LEX_BACKLOG_TIMESTAMP: | ||
| 			u->backlog_timestamp = lex_backlog_timestamp(t->pdata); | ||
| 			break; | ||
| 		case LEX_BLRESET_ON_TALK: | ||
| 			u->blreset_on_talk = t->ndata; | ||
| ... | ... | |
| 	SET_HV(hds.backlog, BACKLOG); | ||
| 	SET_HV(hds.bl_msg_only, BL_MSG_ONLY); | ||
| 	SET_HV(hds.backlog_lines, BACKLOG_LINES); | ||
| 	SET_HV(hds.backlog_no_timestamp, BACKLOG_NO_TIMESTAMP); | ||
| 	SET_HV(hds.backlog_timestamp, BACKLOG_TIMESTAMP); | ||
| 	SET_HV(hds.blreset_on_talk, BLRESET_ON_TALK); | ||
| #undef SET_HV | ||
| ... | ... | |
| 		case LEX_BACKLOG_LINES: | ||
| 			hds.backlog_lines = t->ndata; | ||
| 			break; | ||
| 		case LEX_BACKLOG_NO_TIMESTAMP: | ||
| 			hds.backlog_no_timestamp = t->ndata; | ||
| 		case LEX_BACKLOG_TIMESTAMP: | ||
| 			hds.backlog_timestamp = lex_backlog_timestamp(t->pdata); | ||
| 			break; | ||
| 		case LEX_BLRESET_ON_TALK: | ||
| 			hds.blreset_on_talk = t->ndata; | ||
| ... | ... | |
| 		   STRORNULL(u->default_nick), STRORNULL(u->default_username), | ||
| 		   STRORNULL(u->default_realname)); | ||
| 	if (u->backlog) { | ||
| 		bip_notify(ic, "Backlog enabled, lines: %d, no timestamp: %s," | ||
| 		bip_notify(ic, "Backlog enabled, lines: %d, timestamp: %s," | ||
| 			"  messages only: %s", u->backlog_lines, | ||
| 			bool2text(u->backlog_no_timestamp), | ||
| 			u->backlog_timestamp == BLTSNone ? "none" : | ||
| 				(u->backlog_timestamp == BLTSTime ? "time" : "datetime"), | ||
| 			bool2text(u->bl_msg_only)); | ||
| 		bip_notify(ic, "always backlog: %s, reset on talk: %s", | ||
| 			bool2text(u->always_backlog), | ||
| src/conf.y | ||
|---|---|---|
| %} | ||
| %token LEX_IP LEX_EQ LEX_PORT LEX_CSS LEX_SEMICOLON LEX_CONNECTION LEX_NETWORK LEX_LBRA LEX_RBRA LEX_USER LEX_NAME LEX_NICK LEX_SERVER LEX_PASSWORD LEX_SRCIP LEX_HOST LEX_VHOST LEX_SOURCE_PORT LEX_NONE LEX_COMMENT LEX_BUNCH LEX_REALNAME LEX_SSL LEX_SSL_CHECK_MODE LEX_SSL_CHECK_STORE LEX_SSL_CLIENT_CERTFILE  LEX_CIPHERS LEX_CSS_CIPHERS LEX_DEFAULT_CIPHERS LEX_DH_PARAM LEX_CHANNEL LEX_KEY LEX_LOG_ROOT LEX_LOG_FORMAT LEX_LOG_LEVEL LEX_BACKLOG_LINES LEX_BACKLOG_NO_TIMESTAMP LEX_BACKLOG LEX_LOG LEX_LOG_SYSTEM LEX_LOG_SYNC_INTERVAL LEX_FOLLOW_NICK LEX_ON_CONNECT_SEND LEX_AWAY_NICK LEX_PID_FILE LEX_WRITE_OIDENTD LEX_OIDENTD_FILE LEX_IGN_FIRST_NICK LEX_ALWAYS_BACKLOG LEX_BLRESET_ON_TALK LEX_BLRESET_CONNECTION LEX_DEFAULT_USER LEX_DEFAULT_NICK LEX_DEFAULT_REALNAME LEX_NO_CLIENT_AWAY_MSG LEX_BL_MSG_ONLY LEX_ADMIN LEX_BIP_USE_NOTICE LEX_CSS_PEM LEX_AUTOJOIN_ON_KICK LEX_IGNORE_CAPAB LEX_RECONN_TIMER | ||
| %token LEX_IP LEX_EQ LEX_PORT LEX_CSS LEX_SEMICOLON LEX_CONNECTION LEX_NETWORK LEX_LBRA LEX_RBRA LEX_USER LEX_NAME LEX_NICK LEX_SERVER LEX_PASSWORD LEX_SRCIP LEX_HOST LEX_VHOST LEX_SOURCE_PORT LEX_NONE LEX_COMMENT LEX_BUNCH LEX_REALNAME LEX_SSL LEX_SSL_CHECK_MODE LEX_SSL_CHECK_STORE LEX_SSL_CLIENT_CERTFILE  LEX_CIPHERS LEX_CSS_CIPHERS LEX_DEFAULT_CIPHERS LEX_DH_PARAM LEX_CHANNEL LEX_KEY LEX_LOG_ROOT LEX_LOG_FORMAT LEX_LOG_LEVEL LEX_BACKLOG_LINES LEX_BACKLOG_TIMESTAMP LEX_BACKLOG LEX_LOG LEX_LOG_SYSTEM LEX_LOG_SYNC_INTERVAL LEX_FOLLOW_NICK LEX_ON_CONNECT_SEND LEX_AWAY_NICK LEX_PID_FILE LEX_WRITE_OIDENTD LEX_OIDENTD_FILE LEX_IGN_FIRST_NICK LEX_ALWAYS_BACKLOG LEX_BLRESET_ON_TALK LEX_BLRESET_CONNECTION LEX_DEFAULT_USER LEX_DEFAULT_NICK LEX_DEFAULT_REALNAME LEX_NO_CLIENT_AWAY_MSG LEX_BL_MSG_ONLY LEX_ADMIN LEX_BIP_USE_NOTICE LEX_CSS_PEM LEX_AUTOJOIN_ON_KICK LEX_IGNORE_CAPAB LEX_RECONN_TIMER | ||
| %union { | ||
| 	int number; | ||
| ... | ... | |
|            | LEX_BACKLOG_LINES LEX_EQ LEX_INT { | ||
| 	           $$ = tuple_i_new(LEX_BACKLOG_LINES, $3); | ||
| 		  } | ||
|            | LEX_BACKLOG_NO_TIMESTAMP LEX_EQ LEX_BOOL { | ||
| 	       $$ = tuple_i_new(LEX_BACKLOG_NO_TIMESTAMP, $3); | ||
|            | LEX_BACKLOG_TIMESTAMP LEX_EQ LEX_STRING { | ||
| 	       $$ = tuple_s_new(LEX_BACKLOG_TIMESTAMP, $3); | ||
| 	       } | ||
|            | LEX_BACKLOG LEX_EQ LEX_BOOL { $$ = tuple_i_new(LEX_BACKLOG, $3); } | ||
|            | LEX_BLRESET_ON_TALK LEX_EQ LEX_BOOL { | ||
| ... | ... | |
|            | LEX_BACKLOG_LINES LEX_EQ LEX_INT { | ||
| 	           $$ = tuple_i_new(LEX_BACKLOG_LINES, $3); | ||
| 		  } | ||
|            | LEX_BACKLOG_NO_TIMESTAMP LEX_EQ LEX_BOOL { | ||
| 	       $$ = tuple_i_new(LEX_BACKLOG_NO_TIMESTAMP, $3); | ||
|            | LEX_BACKLOG_TIMESTAMP LEX_EQ LEX_STRING { | ||
| 	       $$ = tuple_s_new(LEX_BACKLOG_TIMESTAMP, $3); | ||
| 	       } | ||
|            | LEX_BACKLOG LEX_EQ LEX_BOOL { $$ = tuple_i_new(LEX_BACKLOG, $3); } | ||
|            | LEX_BLRESET_ON_TALK LEX_EQ LEX_BOOL { | ||
| src/defaults.h | ||
|---|---|---|
| #ifndef DEFAULTS_H | ||
| #define DEFAULTS_H | ||
| #include "irc.h" | ||
| #define DEFAULT_BACKLOG 1 | ||
| #define DEFAULT_ALWAYS_BACKLOG 0 | ||
| #define DEFAULT_BL_MSG_ONLY 0 | ||
| #define DEFAULT_BACKLOG_LINES 10 | ||
| #define DEFAULT_BACKLOG_NO_TIMESTAMP 0 | ||
| #define DEFAULT_BACKLOG_TIMESTAMP BLTSTime | ||
| #define DEFAULT_BLRESET_ON_TALK 0 | ||
| #define DEFAULT_BLRESET_CONNECTION 0 | ||
| #define DEFAULT_LOG 1 | ||
| src/irc.h | ||
|---|---|---|
| #define IRC_TYPE_LOGING_CLIENT (2) | ||
| #define IRC_TYPE_TRUST_CLIENT (3) | ||
| enum BLTimestamp { | ||
| 	BLTSNone = 0, | ||
| 	BLTSTime, | ||
| 	BLTSDateTime, | ||
| }; | ||
| struct bipuser { | ||
| 	/** client connection static data **/ | ||
| ... | ... | |
| 	int backlog_lines; | ||
| 	int always_backlog:1; | ||
| 	int bl_msg_only:1; | ||
| 	int backlog_no_timestamp:1; | ||
| 	int blreset_on_talk:1; | ||
| 	int blreset_connection:1; | ||
| 	enum BLTimestamp backlog_timestamp; | ||
| #ifdef HAVE_LIBSSL | ||
| 	int ssl_check_mode; | ||
| 	char *ssl_check_store; | ||
| src/lex.l | ||
|---|---|---|
| "log_root"		{ return LEX_LOG_ROOT; } | ||
| "log_format"		{ return LEX_LOG_FORMAT; } | ||
| "backlog_lines"		{ return LEX_BACKLOG_LINES; } | ||
| "backlog_no_timestamp"	{ return LEX_BACKLOG_NO_TIMESTAMP; } | ||
| "backlog_timestamp"     { return LEX_BACKLOG_TIMESTAMP; } | ||
| "backlog"		{ return LEX_BACKLOG; } | ||
| "backlog_always"	{ return LEX_ALWAYS_BACKLOG; } | ||
| "backlog_msg_only"	{ return LEX_BL_MSG_ONLY; } | ||
| src/log.c | ||
|---|---|---|
| 	if (!p || !p[0] || !p[1]) | ||
| 		return _log_wrap(dest, buf); | ||
| 	p++; | ||
| 	sots = p; | ||
| 	sots = logdata->user->backlog_timestamp == BLTSDateTime ? buf : p; | ||
| 	p = strchr(p, ' '); | ||
| 	if (!p || !p[0] || !p[1]) | ||
| 		return _log_wrap(dest, buf); | ||
| ... | ... | |
| 		strcpy(p, PMSG_ARROW); | ||
| 		p += strlen(PMSG_ARROW); | ||
| 	} | ||
| 	if (logdata->user->backlog_no_timestamp == 0) { | ||
| 	if (logdata->user->backlog_timestamp != BLTSNone) { | ||
| 		memcpy(p, sots, lots); | ||
| 		p += lots; | ||
| 		*p++ = '>'; | ||