sysklogd: add timestamp option to ignore message timestamps
No binary (build failed)
—
(log yok)
| @@ -140,6 +140,7 @@ | |
| //usage: ) | |
| //usage: "\n -l N Log only messages more urgent than prio N (1-8)" | |
| //usage: "\n -S Smaller output" | |
| + | //usage: "\n -t Strip client-generated timestamps" |
| //usage: IF_FEATURE_SYSLOGD_DUP( | |
| //usage: "\n -D Drop duplicates" | |
| //usage: ) | |
| @@ -316,6 +317,7 @@ enum { | |
| OPTBIT_outfile, // -O | |
| OPTBIT_loglevel, // -l | |
| OPTBIT_small, // -S | |
| + | OPTBIT_timestamp, // -t |
| IF_FEATURE_ROTATE_LOGFILE(OPTBIT_filesize ,) // -s | |
| IF_FEATURE_ROTATE_LOGFILE(OPTBIT_rotatecnt ,) // -b | |
| IF_FEATURE_REMOTE_LOG( OPTBIT_remotelog ,) // -R | |
| @@ -330,6 +332,7 @@ enum { | |
| OPT_outfile = 1 << OPTBIT_outfile , | |
| OPT_loglevel = 1 << OPTBIT_loglevel, | |
| OPT_small = 1 << OPTBIT_small , | |
| + | OPT_timestamp = 1 << OPTBIT_timestamp, |
| OPT_filesize = IF_FEATURE_ROTATE_LOGFILE((1 << OPTBIT_filesize )) + 0, | |
| OPT_rotatecnt = IF_FEATURE_ROTATE_LOGFILE((1 << OPTBIT_rotatecnt )) + 0, | |
| OPT_remotelog = IF_FEATURE_REMOTE_LOG( (1 << OPTBIT_remotelog )) + 0, | |
| @@ -339,7 +342,7 @@ enum { | |
| OPT_cfg = IF_FEATURE_SYSLOGD_CFG( (1 << OPTBIT_cfg )) + 0, | |
| OPT_kmsg = IF_FEATURE_KMSG_SYSLOG( (1 << OPTBIT_kmsg )) + 0, | |
| }; | |
| - | #define OPTION_STR "m:nO:l:S" \ |
| + | #define OPTION_STR "m:nO:l:St" \ |
| IF_FEATURE_ROTATE_LOGFILE("s:" ) \ | |
| IF_FEATURE_ROTATE_LOGFILE("b:" ) \ | |
| IF_FEATURE_REMOTE_LOG( "R:*") \ | |
| @@ -813,21 +816,27 @@ static void parse_fac_prio_20(int pri, char *res20) | |
| * that there is no timestamp, short-circuiting the test. */ | |
| static void timestamp_and_log(int pri, char *msg, int len) | |
| { | |
| - | char *timestamp; |
| + | char *timestamp = NULL; |
| time_t now; | |
| /* Jan 18 00:11:22 msg... */ | |
| /* 01234567890123456 */ | |
| - | if (len < 16 || msg[3] != ' ' || msg[6] != ' ' |
| - | || msg[9] != ':' || msg[12] != ':' || msg[15] != ' ' |
| + | if (len >= 16 && msg[3] == ' ' && msg[6] == ' ' |
| + | && msg[9] == ':' && msg[12] == ':' && msg[15] == ' ' |
| ) { | |
| + | if (!(option_mask32 & OPT_timestamp)) { |
| + | /* use message timestamp */ |
| + | timestamp = msg; |
| + | now = 0; |
| + | } |
| + | msg += 16; |
| + | } |
| + | |
| + | if (!timestamp) { |
| time(&now); | |
| timestamp = ctime(&now) + 4; /* skip day of week */ | |
| - | } else { |
| - | now = 0; |
| - | timestamp = msg; |
| - | msg += 16; |
| } | |
| + | |
| timestamp[15] = '\0'; | |
| if (option_mask32 & OPT_kmsg) { | |