view mcabber/contrib/conv_log_dates.pl @ 478:47cfa3779549

MUC: log join/nick/leave/topic if log_muc_conf is set
author Mikael Berthe <mikael@lilotux.net>
date Mon, 03 Oct 2005 22:12:24 +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="":