>>>>> "Peter" == Peter Korsgaard <pe...@korsgaard.com> writes:

Ping?

Comments, feedback?

 > Some syslog producers provide inconsistent timestamps, so provide an option
 > to ignore the message timestamps and always locally timestamp.  In order to
 > implement this, invert the valid-timestamp check, but only use the timestamp
 > if this option is not enabled.

 > This is in line with what what other syslogd implementations do:

 > From sysklogd syslogd.c:
 >  * Sun Nov  7 12:28:47 CET 2004: Martin Schulze <j...@infodrom.org>
 >  *      Discard any timestamp information found in received syslog
 >  *      messages.  This will affect local messages sent from a
 >  *      different timezone.

 > rsyslog's imuxsock module similary has an (enabled by default)
 > IgnoreTimestamp option:

 > https://www.rsyslog.com/doc/v8-stable/configuration/modules/imuxsock.html

 > function                                             old     new   delta
 > .rodata                                            14706   14738     +32
 > usage_messages                                      2342    2373     +31
 > timestamp_and_log                                    709     724     +15
 > syslogd_main                                        2187    2190      +3
 > ------------------------------------------------------------------------------
 > (add/remove: 0/0 grow/shrink: 4/0 up/down: 81/0)               Total: 81 
 > bytes

 > Signed-off-by: Peter Korsgaard <pe...@korsgaard.com>
 > ---
 >  sysklogd/syslogd.c | 25 +++++++++++++++++--------
 >  1 file changed, 17 insertions(+), 8 deletions(-)

 > diff --git a/sysklogd/syslogd.c b/sysklogd/syslogd.c
 > index 4265f4f90..e966208c2 100644
 > --- a/sysklogd/syslogd.c
 > +++ b/sysklogd/syslogd.c
 > @@ -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              Ignore message 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) {
 > -- 
 > 2.11.0


-- 
Bye, Peter Korsgaard
_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to