view mcabber/contrib/conv_log_dates.pl @ 430:d03663d2e7d9

Display error messages as specified in RFC3920 (9.3) If possible, we display the child element corresponding to the stanza error conditions defined in RFC3920. Error code and error text will be displayed if available.
author Mikael Berthe <mikael@lilotux.net>
date Sun, 11 Sep 2005 22:01:57 +0200
parents c07fa9baca3f
children
line wrap: on
line source

#!/usr/bin/perl -w
#
# usage: conv_log_dates.pl historyfile.old > historyfile.new
# Convert the dates to the new logfile format (mcabber v. >= 0.6.1)
#
# See histolog.c for the mcabber format.
#
# MiKael, 2005/06/14

use strict;

my $line;
my $linesleft = 0;

while ($line = <>) {
  if ($linesleft) {
    print $line;
    $linesleft--;
    next;
  }
  my $type = substr($line, 0, 2);
  my $off_format = 0;
  my $date;

  if (substr($line, 11, 1) eq "T") {
    $off_format = 8; # Offset
  }

  if ($off_format) {
    # Already using the new format, nothing to do
    $date = substr($line, 3, 18);
  } else {
    # Date conversion to iso8601
    my ($ss,$mm,$hh,$DD,$MM,$YYYY) = gmtime(substr($line, 3, 10));
    $date = sprintf "%04d%02d%02dT%02d:%02d:%02dZ",
                    $YYYY+1900, $MM+1,$DD,$hh,$mm,$ss;
  }
  $linesleft = substr($line, 14 + $off_format, 3);
  $line      = substr($line, 14 + $off_format);

  print $type." ".$date." ".$line;

  # Is there something better to cast to integer?
  $linesleft = 0 + $linesleft;
}

# vim:set sw=2 sts=2 et si cinoptions="":