]> git.donarmstrong.com Git - infobot.git/blobdiff - scripts/irclog2html.pl
don't die if can't create file
[infobot.git] / scripts / irclog2html.pl
index 20593b856833cbff0e6be29fbfc51af7700969bf..9cef0188cd11fd1b5844effc49035cbb15a5e963 100755 (executable)
@@ -107,7 +107,8 @@ sub add_footers {
        foreach $filename (@files) {
                chomp $filename;
                if (!open(OUTPUT, ">>$filename")) {
-                       die "Cannot open $filename for writing!\n\n";
+                       print "Cannot open $filename for writing!\n\n";
+                       return;
                }
                print OUTPUT footer();
                close OUTPUT;
@@ -126,7 +127,8 @@ sub output_line {
 
        mkdir($channel,oct('755')) if ($channel && ! -d $channel);
        if (!open(OUTPUT, ">>$filename")) {
-               die "Cannot open $filename for writing!\n\n";
+               #print "Cannot open $filename for writing!\n\n";
+               return;
        }
        # Begin output #
   print OUTPUT header($channel, $date) if -z $filename;
@@ -164,7 +166,7 @@ sub output_timenicktext {
 }
 
 sub output_timeservermsg {
-       my ($date, $time, $line) = @_;
+       my ($date, $time, $channel, $line) = @_;
        my $lineout = '';
 
        if ($STYLE =~ /table/) {
@@ -176,7 +178,7 @@ sub output_timeservermsg {
                $lineout .= "$time " if $time;
                $lineout .= "$line<br>\n";
        }
-       output_line($date, $time,'',$lineout);
+       output_line($date, $time, $channel, $lineout);
 }
 
 sub html_rgb
@@ -225,14 +227,13 @@ sub main {
                chomp $line;
 
                if (!$line eq "") {
-
-
                        # parse out the time
                        if ($line =~ s/^([0-9:\.]*) (.*)$/$2/) {
                                $time = $1;
                        } else {
-                               $time = "";
+                               $time = '';
                        }
+                       $channel = '';
 
                        # Replace ampersands, pointies, control characters #
                        $line =~ s/&/&amp\;/g;
@@ -250,7 +251,7 @@ sub main {
                                $nick = $line;
                                $nick =~ s/^&lt\;([^\/]*?)\/\#.*?&gt\; .*$/$1/;
                                $channel = $line;
-                               $channel =~ s/^&lt\;[^\/]*?\/\#(.*?)&gt\; .*$/$1/;
+                               $channel =~ s/^&lt\;[^\/]*?\/(\#.*?)&gt\; .*$/$1/;
 
                                # $nick =~ tr/[A-Z]/[a-z]/;
                                # <======= move this into another function when getting nick colour
@@ -271,45 +272,40 @@ sub main {
                                        $htmlcolour = $colour_nick{$nick} = html_rgb($nickcount, $NICKMAX);
                                }
                                output_timenicktext($date, $time, $channel, $nick, $text, $htmlcolour);
-                       }
-
-                       elsif ($line =~ /^&gt\;&gt\;&gt\; /) {
+                       } elsif ($line =~ /^&gt\;&gt\;&gt\; /) {
                                $line =~ s/^&gt\;&gt\;&gt\; /\*\*\* /;
 
                                # Process changed nick results, and remember colours accordingly #
-                               if ($line =~ /\*\*\* (.*?) are|is now known as (.*)/) {
-                                       my $nick_old;
-                                       my $nick_new;
-
-                                       $nick_old = $line;
-                                       $nick_old =~ s/\*\*\* (.*?) (are|is) now known as .*/$1/;
+                               if ($line =~ /\*\*\* (.*?) materializes into (.*)/) {
+                                       my $nick_old = $1;
+                                       my $nick_new = $2;
 
-                                       $nick_new = $line;
-                                       $nick_new =~ s/\*\*\* .*? (are|is) now known as (.*)/$2/;
+                                       #$nick_old = $line;
+                                       #$nick_old =~ s/\*\*\* (.*?) materializes into .*/$1/;
+                                       #$nick_new = $line;
+                                       #$nick_new =~ s/\*\*\* (.*?) materializes into (.*)/$2/;
 
                                        $colour_nick{$nick_new} = $colour_nick{$nick_old};
                                        $colour_nick{$nick_old} = undef;
 
                                        $line =~ s/(\*\*\* .*)/<font color=\"$colour_nickchange\">$1<\/font>/
-                               }
-
-                               # Colourise joined/left/server messages #
-                               elsif ($line =~ /\*\*\* .*left|quit/) {
-                                       $line =~ s/(\*\*\* .*)/<font color=\"$colour_left\">$1<\/font>/;
-                               }
-                               elsif ($line =~ /\*\*\* .*joined/) {
+                               } elsif ($line =~ /\*\*\* (join|mode|topic)\/(.*?) .*/) {
+                                       $channel = lc $2;
                                        $line =~ s/(\*\*\* .*)/<font color=\"$colour_joined\">$1<\/font>/;
-                               }
-                               elsif ($line =~ /\*\*\* /) {
+                               } elsif ($line =~ /\*\*\* (part|kick|banned)\/(.*?) .*/) {
+                                       $channel = lc $2;
+                                       $line =~ s/(\*\*\* .*)/<font color=\"$colour_left\">$1<\/font>/;
+                               } elsif ($line =~ /\*\*\* .* has signed off IRC .*/) {
+                                       # Colourise joined/left/server messages #
+                                       $line =~ s/(\*\*\* .*)/<font color=\"$colour_left\">$1<\/font>/;
+                               } elsif ($line =~ /\*\*\* /) {
                                        $line =~ s/(\*\*\* .*)$/<font color=\"$colour_server\">$1<\/font>/;
-                               }
-
-                               # Colourise the /me's #
-                               elsif ($line =~ /^\* .*$/) {
+                               } elsif ($line =~ /^\* .*$/) {
+                                 # Colourise the /me's #
                                        $line =~ s/^(\*.*)$/<font color=\"$colour_action\">$1<\/font>/;
                                }
 
-                               output_timeservermsg($date, $time, $line);
+                               output_timeservermsg($date, $time, $channel, $line);
                        }
                }
        }