Thread: [Codestriker-commits] CVS update: codestriker/html codestriker.css
                
                Brought to you by:
                
                    sits
                    
                
            
            
        
        
        
    | 
      
      
      From: <si...@us...> - 2008-06-13 07:16:25
       | 
|   User: sits    
  Date: 08/06/13 00:16:22
  Modified:    html     codestriker.css
  Log:
  Keep LXR entities in black, but draw an underline when hover over.
  
  
  
  Index: codestriker.css
  ===================================================================
  RCS file: /cvsroot/codestriker/codestriker/html/codestriker.css,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- codestriker.css	11 Mar 2008 06:01:12 -0000	1.16
  +++ codestriker.css	13 Jun 2008 07:16:21 -0000	1.17
  @@ -113,7 +113,11 @@
   TR.tl2 {background-color: #eeeeee; font-family: Helvetica, Arial}
   
   /* Colour to use for matching identifier */
  -A.fid {color: #777777; text-decoration: none}
  +/* A.fid {color: #777777; text-decoration: none} */
  +A.fid:link { color: inherit; text-decoration: none }
  +A.fid:visited { color: inherit; text-decoration: none }
  +A.fid:visited:hover { text-decoration: underline; }
  +A.fid:link:hover { text-decoration: underline; }
   
   /* Style comment listings. */
   TR.comments {background-color: #aaffaa; font-family: Helvetica, Arial} /* space */
  
  
  
 | 
| 
      
      
      From: <si...@us...> - 2008-06-17 11:09:39
       | 
|   User: sits    
  Date: 08/06/17 04:09:35
  Modified:    lib/Codestriker/Http DeltaRenderer.pm HighlightLineFilter.pm
               .        codestriker.conf
               html     codestriker.css
  Log:
  Rough integration with external highlighter working.  Need to still play around with proper integration and fallback if it is not present.
  
  
  
  Index: DeltaRenderer.pm
  ===================================================================
  RCS file: /cvsroot/codestriker/codestriker/lib/Codestriker/Http/DeltaRenderer.pm,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- DeltaRenderer.pm	16 Jun 2008 11:32:05 -0000	1.7
  +++ DeltaRenderer.pm	17 Jun 2008 11:09:34 -0000	1.8
  @@ -15,6 +15,7 @@
   use Codestriker::Http::TabToNbspLineFilter;
   use Codestriker::Http::LineBreakLineFilter;
   use Codestriker::Http::LxrLineFilter;
  +use Codestriker::Http::HighlightLineFilter;
   
   # Constructor.
   sub new {
  @@ -57,8 +58,10 @@
   		$Codestriker::lxr_map->{$repository->toString()} : undef;
       
       @{$self->{line_filters}} = ();
  -    push @{$self->{line_filters}}, Codestriker::Http::HtmlEntityLineFilter->new();
  -    push @{$self->{line_filters}}, Codestriker::Http::TabToNbspLineFilter->new($tabwidth);
  +    push @{$self->{line_filters}}, Codestriker::Http::HighlightLineFilter->new($Codestriker::highlight);
  +    
  +    #push @{$self->{line_filters}}, Codestriker::Http::HtmlEntityLineFilter->new();
  +    #push @{$self->{line_filters}}, Codestriker::Http::TabToNbspLineFilter->new($tabwidth);
       #push @{$self->{line_filters}}, Codestriker::Http::LineBreakLineFilter->new($brmode);
       #if (defined $lxr_config) {
   	#    push @{$self->{line_filters}}, Codestriker::Http::LxrLineFilter->new($lxr_config);
  
  
  
  
  
  Index: HighlightLineFilter.pm
  ===================================================================
  RCS file: /cvsroot/codestriker/codestriker/lib/Codestriker/Http/HighlightLineFilter.pm,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- HighlightLineFilter.pm	16 Jun 2008 11:32:05 -0000	1.1
  +++ HighlightLineFilter.pm	17 Jun 2008 11:09:34 -0000	1.2
  @@ -5,13 +5,15 @@
   # This program is free software; you can redistribute it and modify it under
   # the terms of the GPL.
   
  -# Line filter for converting tabs to the appropriate number of  
  -# entities.
  +# Line filter for highlighting code into xhtml using highlight, available from
  +#  http://www.andre-simon.de/.
   
   package Codestriker::Http::HighlightLineFilter;
   
   use strict;
   
  +use File::Temp qw/ tempfile /;
  +
   use Codestriker::Http::LineFilter;
   
   @Codestriker::Http::HighlightLineFilter::ISA =
  @@ -29,19 +31,43 @@
   
   # Convert tabs to the appropriate number of   entities.
   sub _filter {
  -    my ($self, $text) = @_;
  +    my ($self, $text, $extension) = @_;
   
  +	# Create a temporary file which will contain the delta text to highlight.
  +	my ($input_text_fh, $input_filename) = tempfile(SUFFIX => $extension);
  +	print $input_text_fh $text;
  +	close $input_text_fh;
   	
  -
  -    return $text;
  +	# Execute the highlight command, and store the stdout into $read_data.
  +	my $read_data;	
  +    my $read_stdout_fh = new FileHandle;
  +    open($read_stdout_fh, '>', \$read_data);
  +    my @args = ();
  +    push @args, '-i';
  +    push @args, $input_filename;
  +    push @args, '--xhtml';
  +    push @args, '-f';
  +    Codestriker::execute_command($read_stdout_fh, undef, $self->{highlight}, @args);
  +    
  +    # Delete the temp file.
  +    unlink $input_filename;
  +    
  +    return $read_data;
   }
   
   # Convert tabs to the appropriate number of   entities.
   sub filter {
       my ($self, $delta) = @_;
       
  -    $delta->{diff_old_lines} = $self->_filter($delta->{diff_old_lines});
  -    $delta->{diff_new_lines} = $self->_filter($delta->{diff_new_lines});
  +    # Determine the filename extension so the highlighter knows what language
  +    # to apply highlighting to.  Handle CVS files which might end in ,v.
  +    my $extension = ".txt";
  +    if ($delta->{filename} =~ /^.*(\..*),v$/o || $delta->{filename} =~ /^.*(\..*)$/o) {
  +    	$extension = $1;
  +    }
  +    
  +    $delta->{diff_old_lines} = $self->_filter($delta->{diff_old_lines}, $extension);
  +    $delta->{diff_new_lines} = $self->_filter($delta->{diff_new_lines}, $extension);
   }
   
   1;
  
  
  
  
  
  Index: codestriker.conf
  ===================================================================
  RCS file: /cvsroot/codestriker/codestriker/codestriker.conf,v
  retrieving revision 1.92
  retrieving revision 1.93
  diff -u -r1.92 -r1.93
  --- codestriker.conf	22 Feb 2008 00:31:55 -0000	1.92
  +++ codestriker.conf	17 Jun 2008 11:09:35 -0000	1.93
  @@ -76,6 +76,10 @@
   # use VSS (Visual Source Safe).
   $vss = 'C:/Program Files/Microsoft Visual Studio/VSS/win32/ss.exe';
   
  +# Location of the highlight binary, which is used for highlighting source code.
  +# Available from  http://www.andre-simon.de/.
  +$highlight = 'C:/Program Files/WinHighlight/highlight.exe'; 
  +
   # Temporary directory Codestriker can use.  For *NIX platforms, this will
   # /tmp by default, for Windows 2000 c:\winnt\temp and for XP, c:\windows\temp.
   # For Win32 deployments, these temp directories may not be accessible to
  
  
  
  
  
  Index: codestriker.css
  ===================================================================
  RCS file: /cvsroot/codestriker/codestriker/html/codestriker.css,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- codestriker.css	13 Jun 2008 07:16:21 -0000	1.17
  +++ codestriker.css	17 Jun 2008 11:09:35 -0000	1.18
  @@ -160,3 +160,20 @@
   
   span.feedback {color: red;}
   span.obsolete-header {color: red; font-weight: bold;}
  +
  +/* Styles for highlight program. */
  +pre.hl	{ color:#000000; background-color:#ffffff; font-size:10pt; font-family:'Courier New';}
  +.hl.num { color:#2928ff; }
  +.hl.esc { color:#ff00ff; }
  +.hl.str { color:#ff0000; }
  +.hl.dstr { color:#818100; }
  +.hl.slc { color:#838183; font-style:italic; }
  +.hl.com { color:#838183; font-style:italic; }
  +.hl.dir { color:#008200; }
  +.hl.sym { color:#000000; }
  +.hl.line { color:#555555; }
  +.hl.mark	{ background-color:#ffffbb;}
  +.hl.kwa { color:#000000; font-weight:bold; }
  +.hl.kwb { color:#830000; }
  +.hl.kwc { color:#000000; font-weight:bold; }
  +.hl.kwd { color:#010181; }
  \ No newline at end of file
  
  
  
 | 
| 
      
      
      From: <si...@us...> - 2008-06-18 05:01:12
       | 
|   User: sits    
  Date: 08/06/17 22:01:10
  Modified:    html     codestriker.css
  Log:
  Minor updates for highlighting.
  
  
  
  Index: codestriker.css
  ===================================================================
  RCS file: /cvsroot/codestriker/codestriker/html/codestriker.css,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- codestriker.css	18 Jun 2008 04:47:14 -0000	1.19
  +++ codestriker.css	18 Jun 2008 05:01:10 -0000	1.20
  @@ -161,17 +161,17 @@
   span.obsolete-header {color: red; font-weight: bold;}
   
   /* Styles for highlight program. */
  -.hl.num { color:#0000ff; }
  -.hl.esc { color:#000080; font-weight:bold; }
  -.hl.str { color:#008000; }
  -.hl.dstr { color:#008000; }
  -.hl.slc { color:#008080; }
  -.hl.com { color:#008080; }
  -.hl.dir { color:#008200; }
  -.hl.sym { color:#000000; }
  -.hl.line { color:#555555; }
  -.hl.mark	{ background-color:#ffffbb;}
  -.hl.kwa { color:#000080; font-weight:bold; }
  -.hl.kwb { color:#000080; font-weight:bold; }
  -.hl.kwc { color:#000000; }
  -.hl.kwd { color:#000000; }
  \ No newline at end of file
  +SPAN.num { color:#0000ff; }
  +SPAN.esc { color:#000080; font-weight:bold; }
  +SPAN.str { color:#008000; }
  +SPAN.dstr { color:#008000; }
  +SPAN.slc { color:#008080; }
  +SPAN.com { color:#008080; }
  +SPAN.dir { color:#008200; }
  +SPAN.sym { color:#000000; }
  +SPAN.line { color:#555555; }
  +SPAN.mark	{ background-color:#ffffbb;}
  +SPAN.kwa { color:#000080; font-weight:bold; }
  +SPAN.kwb { color:#000080; font-weight:bold; }
  +SPAN.kwc { color:#000000; }
  +SPAN.kwd { color:#000000; }
  \ No newline at end of file
  
  
  
 | 
| 
      
      
      From: <si...@us...> - 2008-06-18 05:30:53
       | 
|   User: sits    
  Date: 08/06/17 22:30:52
  Modified:    html     codestriker.css
  Log:
  Make string bolded.
  
  
  
  Index: codestriker.css
  ===================================================================
  RCS file: /cvsroot/codestriker/codestriker/html/codestriker.css,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- codestriker.css	18 Jun 2008 05:01:10 -0000	1.20
  +++ codestriker.css	18 Jun 2008 05:30:52 -0000	1.21
  @@ -163,8 +163,8 @@
   /* Styles for highlight program. */
   SPAN.num { color:#0000ff; }
   SPAN.esc { color:#000080; font-weight:bold; }
  -SPAN.str { color:#008000; }
  -SPAN.dstr { color:#008000; }
  +SPAN.str { color:#008000; font-weight:bold; }
  +SPAN.dstr { color:#008000; font-weight:bold; }
   SPAN.slc { color:#008080; }
   SPAN.com { color:#008080; }
   SPAN.dir { color:#008200; }
  
  
  
 | 
| 
      
      
      From: <si...@us...> - 2008-06-18 05:37:47
       | 
|   User: sits    
  Date: 08/06/17 22:37:47
  Modified:    html     codestriker.css
  Log:
  Now that there is syntax highlighting, a white background might actually be better.  Trying it out for now.
  
  
  
  Index: codestriker.css
  ===================================================================
  RCS file: /cvsroot/codestriker/codestriker/html/codestriker.css,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- codestriker.css	18 Jun 2008 05:30:52 -0000	1.21
  +++ codestriker.css	18 Jun 2008 05:37:46 -0000	1.22
  @@ -1,6 +1,6 @@
   /* CSS for codestriker */
   
  -BODY {background-color: #eeeeee;}
  +BODY {background-color: #ffffff;}
   
   /* Links */
   A:link    {color: blue;}
  
  
  
 | 
| 
      
      
      From: <si...@us...> - 2008-06-23 10:12:20
       | 
|   User: sits    
  Date: 08/06/23 03:12:16
  Modified:    template/en/default listprojects.html.tmpl
                        editproject.html.tmpl listtopics.html.tmpl
                        submitnewcomment.html.tmpl viewtopic.html.tmpl
                        editcomment.html.tmpl viewtopicheader.html.tmpl
                        createtopic.html.tmpl createproject.html.tmpl
                        search.html.tmpl metricsreport.html.tmpl
                        header.html.tmpl submitnewtopic.html.tmpl
                        viewtopicfile.html.tmpl
               html     codestriker.css
  Added:       bin      log_accum.pl.xml highlight.css log_accum.pl.html
                        test.pl zot.html
  Log:
  More CSS changes.
  
  
  
  Index: log_accum.pl.xml
  ===================================================================
  RCS file: log_accum.pl.xml
  diff -N log_accum.pl.xml
  --- /dev/null	1 Jan 1970 00:00:00 -0000
  +++ log_accum.pl.xml	23 Jun 2008 10:12:15 -0000	1.1
  @@ -0,0 +1,628 @@
  +<?xml version="1.0"?>
  +<document>
  +<title>log_accum.pl</title>
  +<style>
  +	<bgcolor value="eeeeee" />
  +	<font size="8" family="Courier New" />
  +	<class name="def" color="000000" bold="false" italic="false" underline="false" />
  +	<class name="num" color="800080" bold="true" italic="false" underline="false" />
  +	<class name="esc" color="ff00ff" bold="true" italic="false" underline="false" />
  +	<class name="str" color="a68500" bold="false" italic="false" underline="false" />
  +	<class name="dstr" color="0000ff" bold="false" italic="false" underline="false" />
  +	<class name="slc" color="f27900" bold="false" italic="false" underline="false" />
  +	<class name="com" color="ff8000" bold="false" italic="false" underline="false" />
  +	<class name="dir" color="0080c0" bold="true" italic="false" underline="false" />
  +	<class name="sym" color="ff0080" bold="true" italic="false" underline="false" />
  +	<class name="line" color="303030" bold="false" italic="false" underline="false" />
  +	<class name="kwa" color="bb7977" bold="true" italic="false" underline="false" />
  +	<class name="kwb" color="8080c0" bold="true" italic="false" underline="false" />
  +	<class name="kwc" color="0080c0" bold="false" italic="false" underline="false" />
  +	<class name="kwd" color="004466" bold="false" italic="false" underline="false" />
  +</style>
  +<source>
  +<def></def><slc>#!/usr/bin/perl</slc><br />
  +<def></def><slc>#</slc><br />
  +<def></def><slc># Perl filter to handle the log messages from the checkin of files in</slc><br />
  +<def></def><slc># a directory.  This script will group the lists of files by log</slc><br />
  +<def></def><slc># message, and mail a single consolidated log message at the end of</slc><br />
  +<def></def><slc># the commit.</slc><br />
  +<def></def><slc>#</slc><br />
  +<def></def><slc># This file assumes a pre-commit checking program that leaves the</slc><br />
  +<def></def><slc># names of the first and last commit directories in a temporary file.</slc><br />
  +<def></def><slc>#</slc><br />
  +<def></def><slc># Contributed by David Hampton <ha...@ci...></slc><br />
  +<def></def><slc># Roy Fielding removed useless code and added log/mail of new files</slc><br />
  +<def></def><slc># Ken Coar added special processing (i.e., no diffs) for binary files</slc><br />
  +<def></def><slc># Jon Stevens added a few new features and cleaned up some of the</slc><br />
  +<def></def><slc># output</slc><br />
  +<def></def><slc>#</slc><br />
  +<def></def><slc># David Sitsky modified this slightly so that it also creates a new</slc><br />
  +<def></def><slc># codestriker topic automatically.</slc><br />
  +<def></def><br />
  +<slc>############################################################</slc><br />
  +<def></def><slc>#</slc><br />
  +<def></def><slc># Setup instructions</slc><br />
  +<def></def><slc>#</slc><br />
  +<def></def><slc>############################################################</slc><br />
  +<def></def><slc>#</slc><br />
  +<def></def><slc># Create a directory $CVSROOT/commitlogs and allow</slc><br />
  +<def></def><slc># the cvs process to write to it.</slc><br />
  +<def></def><slc>#</slc><br />
  +<def></def><slc># Edit the options below.</slc><br />
  +<def></def><slc>#</slc><br />
  +<def></def><slc>############################################################</slc><br />
  +<def></def><slc>#</slc><br />
  +<def></def><slc># Configurable options</slc><br />
  +<def></def><slc>#</slc><br />
  +<def></def><slc>############################################################</slc><br />
  +<def></def><slc>#</slc><br />
  +<def></def><slc># Where do you want the RCS ID and delta info?</slc><br />
  +<def></def><slc># 0 = none,</slc><br />
  +<def></def><slc># 1 = in mail only,</slc><br />
  +<def></def><slc># 2 = rcsids in both mail and logs.</slc><br />
  +<def></def><slc>#</slc><br />
  +<def></def><kwb>$rcsidinfo</kwb> <def></def><sym>=</sym> <def></def><num>2</num><def></def><sym>;</sym><br />
  +<def></def><br />
  +<slc>############################################################</slc><br />
  +<def></def><slc>#</slc><br />
  +<def></def><slc># Constants</slc><br />
  +<def></def><slc>#</slc><br />
  +<def></def><slc>############################################################</slc><br />
  +<def></def><kwb>$STATE_NONE</kwb>    <def></def><sym>=</sym> <def></def><num>0</num><def></def><sym>;</sym><br />
  +<def></def><kwb>$STATE_CHANGED</kwb> <def></def><sym>=</sym> <def></def><num>1</num><def></def><sym>;</sym><br />
  +<def></def><kwb>$STATE_ADDED</kwb>   <def></def><sym>=</sym> <def></def><num>2</num><def></def><sym>;</sym><br />
  +<def></def><kwb>$STATE_REMOVED</kwb> <def></def><sym>=</sym> <def></def><num>3</num><def></def><sym>;</sym><br />
  +<def></def><kwb>$STATE_LOG</kwb>     <def></def><sym>=</sym> <def></def><num>4</num><def></def><sym>;</sym><br />
  +<def></def><br />
  +<kwb>$TMPDIR</kwb>        <def></def><sym>=</sym> <def></def><kwb>$ENV</kwb><def></def><sym>{</sym><def></def><str>'TMPDIR'</str><def></def><sym>} ||</sym> <def></def><str>'/tmp'</str><def></def><sym>;</sym><br />
  +<def></def><kwb>$FILE_PREFIX</kwb>   <def></def><sym>=</sym> <def></def><str>'#cvs.'</str><def></def><sym>;</sym><br />
  +<def></def><br />
  +<kwb>$LAST_FILE</kwb>     <def></def><sym>=</sym> <def></def><str>"$TMPDIR/${FILE_PREFIX}lastdir"</str><def></def><sym>;</sym><br />
  +<def></def><kwb>$CHANGED_FILE</kwb>  <def></def><sym>=</sym> <def></def><str>"$TMPDIR/${FILE_PREFIX}files.changed"</str><def></def><sym>;</sym><br />
  +<def></def><kwb>$ADDED_FILE</kwb>    <def></def><sym>=</sym> <def></def><str>"$TMPDIR/${FILE_PREFIX}files.added"</str><def></def><sym>;</sym><br />
  +<def></def><kwb>$REMOVED_FILE</kwb>  <def></def><sym>=</sym> <def></def><str>"$TMPDIR/${FILE_PREFIX}files.removed"</str><def></def><sym>;</sym><br />
  +<def></def><kwb>$LOG_FILE</kwb>      <def></def><sym>=</sym> <def></def><str>"$TMPDIR/${FILE_PREFIX}files.log"</str><def></def><sym>;</sym><br />
  +<def></def><kwb>$BRANCH_FILE</kwb>   <def></def><sym>=</sym> <def></def><str>"$TMPDIR/${FILE_PREFIX}files.branch"</str><def></def><sym>;</sym><br />
  +<def></def><kwb>$SUMMARY_FILE</kwb>  <def></def><sym>=</sym> <def></def><str>"$TMPDIR/${FILE_PREFIX}files.summary"</str><def></def><sym>;</sym><br />
  +<def></def><br />
  +<kwb>$CVSROOT</kwb>       <def></def><sym>=</sym> <def></def><kwb>$ENV</kwb><def></def><sym>{</sym><def></def><str>'CVSROOT'</str><def></def><sym>};</sym><br />
  +<def></def><br />
  +<kwb>$CVSBIN</kwb>        <def></def><sym>=</sym> <def></def><str>'/usr/bin'</str><def></def><sym>;</sym><br />
  +<def></def><kwb>$PATH</kwb>          <def></def><sym>=</sym> <def></def><str>"$PATH:/bin:/usr/bin"</str><def></def><sym>;</sym><br />
  +<def></def><kwb>$MAIL_CMD</kwb>      <def></def><sym>=</sym> <def></def><str>"| /usr/lib/sendmail -i -t"</str><def></def><sym>;</sym><br />
  +<def></def><kwb>$MAIL_TO</kwb>       <def></def><sym>=</sym> <def></def><str>'eng...@lo...'</str><def></def><sym>;</sym><br />
  +<def></def><kwb>$MAIL_FROM</kwb>     <def></def><sym>=</sym> <def></def><str>"$ENV{'USER'}\@localhost.localdomain"</str><def></def><sym>;</sym><br />
  +<def></def><kwb>$SUBJECT_PRE</kwb>   <def></def><sym>=</sym> <def></def><str>'CVS update:'</str><def></def><sym>;</sym><br />
  +<def></def><br />
  +<slc># Codestriker-specific imports.</slc><br />
  +<def></def><kwa>use</kwa> <def>lib</def> <str>'/var/www/codestriker-1.8.4/bin'</str><def></def><sym>;</sym><br />
  +<def></def><kwa>use</kwa> <def></def><kwd>CodestrikerClient</kwd><def></def><sym>;</sym><br />
  +<def></def><br />
  +<slc># Codestriker specific parameters for topic creation.</slc><br />
  +<def></def><kwb>$CODESTRIKER_URL</kwb> <def></def><sym>=</sym> <def></def><str>'http://localhost/codestriker/codestriker.pl'</str><def></def><sym>;</sym><br />
  +<def></def><kwb>$CODESTRIKER_PROJECT</kwb> <def></def><sym>=</sym> <def></def><str>'Project CVS'</str><def></def><sym>;</sym><br />
  +<def></def><kwb>$CODESTRIKER_REPOSITORY</kwb> <def></def><sym>=</sym> <def></def><str>'/var/lib/cvs'</str><def></def><sym>;</sym><br />
  +<def></def><kwb>$CODESTRIKER_REVIEWERS</kwb> <def></def><sym>=</sym> <def></def><str>'eng...@lo...'</str><def></def><sym>;</sym><br />
  +<def></def><kwb>$CODESTRIKER_CC</kwb> <def></def><sym>=</sym> <def></def><str>''</str><def></def><sym>;</sym><br />
  +<def></def><br />
  +<slc>############################################################</slc><br />
  +<def></def><slc>#</slc><br />
  +<def></def><slc># Subroutines</slc><br />
  +<def></def><slc>#</slc><br />
  +<def></def><slc>############################################################</slc><br />
  +<def></def><br />
  +<kwa>sub</kwa> <def>format_names</def> <sym>{</sym><br />
  +<def></def>    <kwc>local</kwc><def></def><sym>(</sym><def></def><kwb>$dir</kwb><def></def><sym>,</sym> <def></def><kwb>@files</kwb><def></def><sym>) =</sym> <def></def><kwb>@_</kwb><def></def><sym>;</sym><br />
  +<def></def>    <kwc>local</kwc><def></def><sym>(</sym><def></def><kwb>@lines</kwb><def></def><sym>);</sym><br />
  +<def></def><br />
  +    <kwb>$lines</kwb><def></def><sym>[</sym><def></def><num>0</num><def></def><sym>] =</sym> <def></def><kwd>sprintf</kwd><def></def><sym>(</sym><def></def><str>" %-08s"</str><def></def><sym>,</sym> <def></def><kwb>$dir</kwb><def></def><sym>);</sym><br />
  +<def></def>    <kwa>foreach</kwa> <def></def><kwb>$file</kwb> <def></def><sym>(</sym><def></def><kwb>@files</kwb><def></def><sym>) {</sym><br />
  +<def></def>        <kwa>if</kwa> <def></def><sym>(</sym><def></def><kwd>length</kwd><def></def><sym>(</sym><def></def><kwb>$lines</kwb><def></def><sym>[</sym><def></def><kwb>$#lines</kwb><def></def><sym>]) +</sym> <def></def><kwd>length</kwd><def></def><sym>(</sym><def></def><kwb>$file</kwb><def></def><sym>) ></sym> <def></def><num>60</num><def></def><sym>) {</sym><br />
  +<def></def>            <kwb>$lines</kwb><def></def><sym>[++</sym><def></def><kwb>$#lines</kwb><def></def><sym>] =</sym> <def></def><kwd>sprintf</kwd><def></def><sym>(</sym><def></def><str>" %8s"</str><def></def><sym>,</sym> <def></def><str>" "</str><def></def><sym>);</sym><br />
  +<def></def>        <sym>}</sym><br />
  +<def></def>        <kwb>$lines</kwb><def></def><sym>[</sym><def></def><kwb>$#lines</kwb><def></def><sym>] .=</sym> <def></def><str>" "</str><def></def><sym>.</sym><def></def><kwb>$file</kwb><def></def><sym>;</sym><br />
  +<def></def>    <sym>}</sym><br />
  +<def></def>    <kwb>@lines</kwb><def></def><sym>;</sym><br />
  +<def></def><sym>}</sym><br />
  +<def></def><br />
  +<kwa>sub</kwa> <def>cleanup_tmpfiles</def> <sym>{</sym><br />
  +<def></def>    <kwc>local</kwc><def></def><sym>(</sym><def></def><kwb>@files</kwb><def></def><sym>);</sym><br />
  +<def></def><br />
  +    <kwd>opendir</kwd><def></def><sym>(</sym><def>DIR</def><sym>,</sym> <def></def><kwb>$TMPDIR</kwb><def></def><sym>);</sym><br />
  +<def></def>    <kwd>push</kwd><def></def><sym>(</sym><def></def><kwb>@files</kwb><def></def><sym>,</sym> <def></def><kwd>grep</kwd><def></def><sym>(/^${</sym><def>FILE_PREFIX</def><sym>}.*</sym><def>\</def><sym>.${</sym><def>id</def><sym>}$/,</sym> <def></def><kwd>readdir</kwd><def></def><sym>(</sym><def>DIR</def><sym>)));</sym><br />
  +<def></def>    <kwd>closedir</kwd><def></def><sym>(</sym><def>DIR</def><sym>);</sym><br />
  +<def></def>    <kwa>foreach</kwa> <def></def><sym>(</sym><def></def><kwb>@files</kwb><def></def><sym>) {</sym><br />
  +<def>        unlink</def> <str>"$TMPDIR/$_"</str><def></def><sym>;</sym><br />
  +<def></def>    <sym>}</sym><br />
  +<def></def><sym>}</sym><br />
  +<def></def><br />
  +<kwa>sub</kwa> <def>write_logfile</def> <sym>{</sym><br />
  +<def></def>    <kwc>local</kwc><def></def><sym>(</sym><def></def><kwb>$filename</kwb><def></def><sym>,</sym> <def></def><kwb>@lines</kwb><def></def><sym>) =</sym> <def></def><kwb>@_</kwb><def></def><sym>;</sym><br />
  +<def></def><br />
  +    <kwd>open</kwd><def></def><sym>(</sym><def>FILE</def><sym>,</sym> <def></def><str>">$filename"</str><def></def><sym>) ||</sym> <def></def><kwd>die</kwd> <def></def><sym>(</sym><def></def><str>"Cannot open log file $filename: $!</str><esc>\n</esc><str>"</str><def></def><sym>);</sym><br />
  +<def></def>    <kwc>print</kwc><def></def><sym>(</sym><def>FILE</def> <kwd>join</kwd><def></def><sym>(</sym><def></def><str>"</str><esc>\n</esc><str>"</str><def></def><sym>,</sym> <def></def><kwb>@lines</kwb><def></def><sym>),</sym> <def></def><str>"</str><esc>\n</esc><str>"</str><def></def><sym>);</sym><br />
  +<def></def>    <kwd>close</kwd><def></def><sym>(</sym><def>FILE</def><sym>);</sym><br />
  +<def></def><sym>}</sym><br />
  +<def></def><br />
  +<kwa>sub</kwa> <def>append_to_file</def> <sym>{</sym><br />
  +<def></def>    <kwc>local</kwc><def></def><sym>(</sym><def></def><kwb>$filename</kwb><def></def><sym>,</sym> <def></def><kwb>$dir</kwb><def></def><sym>,</sym> <def></def><kwb>@files</kwb><def></def><sym>) =</sym> <def></def><kwb>@_</kwb><def></def><sym>;</sym><br />
  +<def></def><br />
  +    <kwa>if</kwa> <def></def><sym>(</sym><def></def><kwb>@files</kwb><def></def><sym>) {</sym><br />
  +<def></def>        <kwc>local</kwc><def></def><sym>(</sym><def></def><kwb>@lines</kwb><def></def><sym>) = &</sym><def></def><kwd>format_names</kwd><def></def><sym>(</sym><def></def><kwb>$dir</kwb><def></def><sym>,</sym> <def></def><kwb>@files</kwb><def></def><sym>);</sym><br />
  +<def></def>        <kwd>open</kwd><def></def><sym>(</sym><def>FILE</def><sym>,</sym> <def></def><str>">>$filename"</str><def></def><sym>) ||</sym> <def></def><kwd>die</kwd> <def></def><sym>(</sym><def></def><str>"Cannot open file $filename: $!</str><esc>\n</esc><str>"</str><def></def><sym>);</sym><br />
  +<def></def>        <kwc>print</kwc><def></def><sym>(</sym><def>FILE</def> <kwd>join</kwd><def></def><sym>(</sym><def></def><str>"</str><esc>\n</esc><str>"</str><def></def><sym>,</sym> <def></def><kwb>@lines</kwb><def></def><sym>),</sym> <def></def><str>"</str><esc>\n</esc><str>"</str><def></def><sym>);</sym><br />
  +<def></def>        <kwd>close</kwd><def></def><sym>(</sym><def>FILE</def><sym>);</sym><br />
  +<def></def>    <sym>}</sym><br />
  +<def></def><sym>}</sym><br />
  +<def></def><br />
  +<kwa>sub</kwa> <def>write_line</def> <sym>{</sym><br />
  +<def></def>    <kwc>local</kwc><def></def><sym>(</sym><def></def><kwb>$filename</kwb><def></def><sym>,</sym> <def></def><kwb>$line</kwb><def></def><sym>) =</sym> <def></def><kwb>@_</kwb><def></def><sym>;</sym><br />
  +<def></def><br />
  +    <kwd>open</kwd><def></def><sym>(</sym><def>FILE</def><sym>,</sym> <def></def><str>">$filename"</str><def></def><sym>) ||</sym> <def></def><kwd>die</kwd><def></def><sym>(</sym><def></def><str>"Cannot open file $filename: $!</str><esc>\n</esc><str>"</str><def></def><sym>);</sym><br />
  +<def></def>    <kwc>print</kwc><def></def><sym>(</sym><def>FILE</def> <kwb>$line</kwb><def></def><sym>,</sym> <def></def><str>"</str><esc>\n</esc><str>"</str><def></def><sym>);</sym><br />
  +<def></def>    <kwd>close</kwd><def></def><sym>(</sym><def>FILE</def><sym>);</sym><br />
  +<def></def><sym>}</sym><br />
  +<def></def><br />
  +<kwa>sub</kwa> <def>append_line</def> <sym>{</sym><br />
  +<def></def>    <kwc>local</kwc><def></def><sym>(</sym><def></def><kwb>$filename</kwb><def></def><sym>,</sym> <def></def><kwb>$line</kwb><def></def><sym>) =</sym> <def></def><kwb>@_</kwb><def></def><sym>;</sym><br />
  +<def></def><br />
  +    <kwd>open</kwd><def></def><sym>(</sym><def>FILE</def><sym>,</sym> <def></def><str>">>$filename"</str><def></def><sym>) ||</sym> <def></def><kwd>die</kwd><def></def><sym>(</sym><def></def><str>"Cannot open file $filename: $!</str><esc>\n</esc><str>"</str><def></def><sym>);</sym><br />
  +<def></def>    <kwc>print</kwc><def></def><sym>(</sym><def>FILE</def> <kwb>$line</kwb><def></def><sym>,</sym> <def></def><str>"</str><esc>\n</esc><str>"</str><def></def><sym>);</sym><br />
  +<def></def>    <kwd>close</kwd><def></def><sym>(</sym><def>FILE</def><sym>);</sym><br />
  +<def></def><sym>}</sym><br />
  +<def></def><br />
  +<kwa>sub</kwa> <def>read_line</def> <sym>{</sym><br />
  +<def></def>    <kwc>local</kwc><def></def><sym>(</sym><def></def><kwb>$filename</kwb><def></def><sym>) =</sym> <def></def><kwb>@_</kwb><def></def><sym>;</sym><br />
  +<def></def>    <kwc>local</kwc><def></def><sym>(</sym><def></def><kwb>$line</kwb><def></def><sym>);</sym><br />
  +<def></def><br />
  +    <kwd>open</kwd><def></def><sym>(</sym><def>FILE</def><sym>,</sym> <def></def><str>"<$filename"</str><def></def><sym>) ||</sym> <def></def><kwd>die</kwd><def></def><sym>(</sym><def></def><str>"Cannot open file $filename: $!</str><esc>\n</esc><str>"</str><def></def><sym>);</sym><br />
  +<def></def>    <kwb>$line</kwb> <def></def><sym>= <</sym><def>FILE</def><sym>>;</sym><br />
  +<def></def>    <kwd>close</kwd><def></def><sym>(</sym><def>FILE</def><sym>);</sym><br />
  +<def></def>    <kwd>chomp</kwd><def></def><sym>(</sym><def></def><kwb>$line</kwb><def></def><sym>);</sym><br />
  +<def></def>    <kwb>$line</kwb><def></def><sym>;</sym><br />
  +<def></def><sym>}</sym><br />
  +<def></def><br />
  +<kwa>sub</kwa> <def>read_file</def> <sym>{</sym><br />
  +<def></def>    <kwc>local</kwc><def></def><sym>(</sym><def></def><kwb>$filename</kwb><def></def><sym>,</sym> <def></def><kwb>$leader</kwb><def></def><sym>) =</sym> <def></def><kwb>@_</kwb><def></def><sym>;</sym><br />
  +<def></def>    <kwc>local</kwc><def></def><sym>(</sym><def></def><kwb>@text</kwb><def></def><sym>) = ();</sym><br />
  +<def></def><br />
  +    <kwd>open</kwd><def></def><sym>(</sym><def>FILE</def><sym>,</sym> <def></def><str>"<$filename"</str><def></def><sym>) ||</sym> <def></def><kwa>return</kwa> <def></def><sym>();</sym><br />
  +<def></def>    <kwa>while</kwa> <def></def><sym>(<</sym><def>FILE</def><sym>>) {</sym><br />
  +<def></def>        <kwd>chomp</kwd><def></def><sym>;</sym><br />
  +<def></def>        <kwd>push</kwd><def></def><sym>(</sym><def></def><kwb>@text</kwb><def></def><sym>,</sym> <def></def><kwd>sprintf</kwd><def></def><sym>(</sym><def></def><str>"  %-10s  %s"</str><def></def><sym>,</sym> <def></def><kwb>$leader</kwb><def></def><sym>,</sym> <def></def><kwb>$_</kwb><def></def><sym>));</sym><br />
  +<def></def>        <kwb>$leader</kwb> <def></def><sym>=</sym> <def></def><str>""</str><def></def><sym>;</sym><br />
  +<def></def>    <sym>}</sym><br />
  +<def></def>    <kwd>close</kwd><def></def><sym>(</sym><def>FILE</def><sym>);</sym><br />
  +<def></def>    <kwb>@text</kwb><def></def><sym>;</sym><br />
  +<def></def><sym>}</sym><br />
  +<def></def><br />
  +<kwa>sub</kwa> <def>read_logfile</def> <sym>{</sym><br />
  +<def></def>    <kwc>local</kwc><def></def><sym>(</sym><def></def><kwb>$filename</kwb><def></def><sym>,</sym> <def></def><kwb>$leader</kwb><def></def><sym>) =</sym> <def></def><kwb>@_</kwb><def></def><sym>;</sym><br />
  +<def></def>    <kwc>local</kwc><def></def><sym>(</sym><def></def><kwb>@text</kwb><def></def><sym>) = ();</sym><br />
  +<def></def><br />
  +    <kwd>open</kwd><def></def><sym>(</sym><def>FILE</def><sym>,</sym> <def></def><str>"<$filename"</str><def></def><sym>) ||</sym> <def></def><kwd>die</kwd> <def></def><sym>(</sym><def></def><str>"Cannot open log file $filename: $!</str><esc>\n</esc><str>"</str><def></def><sym>);</sym><br />
  +<def></def>    <kwa>while</kwa> <def></def><sym>(<</sym><def>FILE</def><sym>>) {</sym><br />
  +<def></def>        <kwd>chomp</kwd><def></def><sym>;</sym><br />
  +<def></def>        <kwd>push</kwd><def></def><sym>(</sym><def></def><kwb>@text</kwb><def></def><sym>,</sym> <def></def><kwb>$leader</kwb><def></def><sym>.</sym><def></def><kwb>$_</kwb><def></def><sym>);</sym><br />
  +<def></def>    <sym>}</sym><br />
  +<def></def>    <kwd>close</kwd><def></def><sym>(</sym><def>FILE</def><sym>);</sym><br />
  +<def></def>    <kwb>@text</kwb><def></def><sym>;</sym><br />
  +<def></def><sym>}</sym><br />
  +<def></def><br />
  +<slc>#</slc><br />
  +<def></def><slc># do an 'cvs -Qn status' on each file in the arguments, and extract info.</slc><br />
  +<def></def><slc>#</slc><br />
  +<def></def><kwa>sub</kwa> <def>change_summary</def> <sym>{</sym><br />
  +<def></def>    <kwc>local</kwc><def></def><sym>(</sym><def></def><kwb>$out</kwb><def></def><sym>,</sym> <def></def><kwb>@filenames</kwb><def></def><sym>) =</sym> <def></def><kwb>@_</kwb><def></def><sym>;</sym><br />
  +<def></def>    <kwc>local</kwc><def></def><sym>(</sym><def></def><kwb>@revline</kwb><def></def><sym>);</sym><br />
  +<def></def>    <kwc>local</kwc><def></def><sym>(</sym><def></def><kwb>$file</kwb><def></def><sym>,</sym> <def></def><kwb>$rev</kwb><def></def><sym>,</sym> <def></def><kwb>$rcsfile</kwb><def></def><sym>,</sym> <def></def><kwb>$line</kwb><def></def><sym>);</sym><br />
  +<def></def><br />
  +    <kwa>while</kwa> <def></def><sym>(</sym><def></def><kwb>@filenames</kwb><def></def><sym>) {</sym><br />
  +<def></def>        <kwb>$file</kwb> <def></def><sym>=</sym> <def>shift</def> <kwb>@filenames</kwb><def></def><sym>;</sym><br />
  +<def></def><br />
  +        <kwa>if</kwa> <def></def><sym>(</sym><def></def><str>"$file"</str><def></def> <kwa>eq</kwa> <def></def><str>""</str><def></def><sym>) {</sym><br />
  +<def></def>            <kwa>next</kwa><def></def><sym>;</sym><br />
  +<def></def>        <sym>}</sym><br />
  +<def></def><br />
  +        <kwd>open</kwd><def></def><sym>(</sym><def>RCS</def><sym>,</sym> <def></def><str>"-|"</str><def></def><sym>) ||</sym> <def>exec</def> <str>"$CVSBIN/cvs"</str><def></def><sym>,</sym> <def></def><str>'-Qn'</str><def></def><sym>,</sym> <def></def><str>'status'</str><def></def><sym>,</sym> <def></def><kwb>$file</kwb><def></def><sym>;</sym><br />
  +<def></def><br />
  +        <kwb>$rev</kwb> <def></def><sym>=</sym> <def></def><str>""</str><def></def><sym>;</sym><br />
  +<def></def>        <kwb>$delta</kwb> <def></def><sym>=</sym> <def></def><str>""</str><def></def><sym>;</sym><br />
  +<def></def>        <kwb>$rcsfile</kwb> <def></def><sym>=</sym> <def></def><str>""</str><def></def><sym>;</sym><br />
  +<def></def><br />
  +<br />
  +        <kwa>while</kwa> <def></def><sym>(<</sym><def>RCS</def><sym>>) {</sym><br />
  +<def></def>            <kwa>if</kwa> <def></def><sym>(/^[</sym> <def></def><esc>\t</esc><def></def><sym>]*</sym><def>Repository revision</def><sym>/) {</sym><br />
  +<def></def>                <kwd>chomp</kwd><def></def><sym>;</sym><br />
  +<def></def>                <kwb>@revline</kwb> <def></def><sym>=</sym> <def></def><kwd>split</kwd><def></def><sym>(</sym><def></def><str>' '</str><def></def><sym>,</sym> <def></def><kwb>$_</kwb><def></def><sym>);</sym><br />
  +<def></def>                <kwb>$rev</kwb> <def></def><sym>=</sym> <def></def><kwb>$revline</kwb><def></def><sym>[</sym><def></def><num>2</num><def></def><sym>];</sym><br />
  +<def></def>                <kwb>$rcsfile</kwb> <def></def><sym>=</sym> <def></def><kwb>$revline</kwb><def></def><sym>[</sym><def></def><num>3</num><def></def><sym>];</sym><br />
  +<def></def>                <kwb>$rcsfile</kwb> <def></def><sym>=~</sym> <def>s</def><sym>,^</sym><def></def><kwb>$CVSROOT</kwb><def></def><sym>/,,;</sym><br />
  +<def></def>                <kwb>$rcsfile</kwb> <def></def><sym>=~</sym> <def>s</def><sym>/,</sym><def>v</def><sym>$//;</sym><br />
  +<def></def>            <sym>}</sym><br />
  +<def></def>        <sym>}</sym><br />
  +<def></def>        <kwd>close</kwd><def></def><sym>(</sym><def>RCS</def><sym>);</sym><br />
  +<def></def><br />
  +<br />
  +        <kwa>if</kwa> <def></def><sym>(</sym><def></def><kwb>$rev</kwb> <def></def><kwa>ne</kwa> <def></def><str>''</str><def></def> <sym>&&</sym> <def></def><kwb>$rcsfile</kwb> <def></def><kwa>ne</kwa> <def></def><str>''</str><def></def><sym>) {</sym><br />
  +<def></def>            <kwd>open</kwd><def></def><sym>(</sym><def>RCS</def><sym>,</sym> <def></def><str>"-|"</str><def></def><sym>) ||</sym> <def>exec</def> <str>"$CVSBIN/cvs"</str><def></def><sym>,</sym> <def></def><str>'-Qn'</str><def></def><sym>,</sym> <def></def><str>'log'</str><def></def><sym>,</sym> <def></def><str>"-r$rev"</str><def></def><sym>,</sym> <def></def><kwb>$file</kwb><def></def><sym>;</sym><br />
  +<def></def>            <kwa>while</kwa> <def></def><sym>(<</sym><def>RCS</def><sym>>) {</sym><br />
  +<def></def>                <kwa>if</kwa> <def></def><sym>(/^</sym><def>date</def><sym>:/) {</sym><br />
  +<def></def>                    <kwd>chomp</kwd><def></def><sym>;</sym><br />
  +<def></def>                    <kwb>$delta</kwb> <def></def><sym>=</sym> <def></def><kwb>$_</kwb><def></def><sym>;</sym><br />
  +<def></def>                    <kwb>$delta</kwb> <def></def><sym>=~</sym> <def>s</def><sym>/^.*;//;</sym><br />
  +<def></def>                    <kwb>$delta</kwb> <def></def><sym>=~</sym> <def>s</def><sym>/^[</sym><def>\s</def><sym>]+</sym><def>lines</def><sym>://;</sym><br />
  +<def></def>                <sym>}</sym><br />
  +<def></def>            <sym>}</sym><br />
  +<def></def>            <kwd>close</kwd><def></def><sym>(</sym><def>RCS</def><sym>);</sym><br />
  +<def></def>        <sym>}</sym><br />
  +<def></def><br />
  +        <kwb>$diff</kwb> <def></def><sym>=</sym> <def></def><str>"</str><esc>\n\n</esc><str>"</str><def></def><sym>;</sym><br />
  +<def></def><br />
  +    <slc>#</slc><br />
  +<def></def>    <slc># Get the differences between this and the previous revision,</slc><br />
  +<def></def>    <slc># being aware that new files always have revision '1.1' and</slc><br />
  +<def></def>    <slc># new branches always end in '.n.1'.</slc><br />
  +<def></def>    <slc>#</slc><br />
  +<def></def>    <kwa>if</kwa> <def></def><sym>(</sym><def></def><kwb>$rev</kwb> <def></def><sym>=~ /^(.*)</sym><def>\</def><sym>.([</sym><def></def><num>0</num><def></def><sym>-</sym><def></def><num>9</num><def></def><sym>]+)$/) {</sym><br />
  +<def></def>        <kwb>$prev</kwb> <def></def><sym>=</sym> <def></def><kwb>$2</kwb> <def></def><sym>-</sym> <def></def><num>1</num><def></def><sym>;</sym><br />
  +<def></def>        <kwb>$prev_rev</kwb> <def></def><sym>=</sym> <def></def><kwb>$1</kwb> <def></def><sym>.</sym> <def></def><str>'.'</str><def></def> <sym>.</sym>  <def></def><kwb>$prev</kwb><def></def><sym>;</sym><br />
  +<def></def><br />
  +        <kwb>$prev_rev</kwb> <def></def><sym>=~</sym> <def>s</def><sym>/</sym><def>\</def><sym>.[</sym><def></def><num>0</num><def></def><sym>-</sym><def></def><num>9</num><def></def><sym>]+</sym><def>\</def><num>.0</num><def></def><sym>$//;</sym><def></def><slc># Truncate if first rev on branch</slc><br />
  +<def></def><br />
  +            <kwd>open</kwd><def></def><sym>(</sym><def>DIFF</def><sym>,</sym> <def></def><str>"-|"</str><def></def><sym>)</sym><br />
  +<def></def>        <sym>||</sym> <def>exec</def> <str>"$CVSBIN/cvs"</str><def></def><sym>,</sym> <def></def><str>'-Qn'</str><def></def><sym>,</sym> <def></def><str>'diff'</str><def></def><sym>,</sym> <def></def><str>'-uN'</str><def></def><sym>,</sym><br />
  +<def></def>                    <str>"-r$prev_rev"</str><def></def><sym>,</sym> <def></def><str>"-r$rev"</str><def></def><sym>,</sym> <def></def><kwb>$file</kwb><def></def><sym>;</sym><br />
  +<def></def><br />
  +        <kwa>while</kwa> <def></def><sym>(<</sym><def>DIFF</def><sym>>) {</sym><br />
  +<def></def>        <kwb>$diff</kwb> <def></def><sym>.=</sym> <def></def><kwb>$_</kwb><def></def><sym>;</sym><br />
  +<def></def>        <sym>}</sym><br />
  +<def></def>        <kwd>close</kwd><def></def><sym>(</sym><def>DIFF</def><sym>);</sym><br />
  +<def></def>        <kwb>$diff</kwb> <def></def><sym>.=</sym> <def></def><str>"</str><esc>\n\n</esc><str>"</str><def></def><sym>;</sym><br />
  +<def></def>    <sym>}</sym><br />
  +<def></def><br />
  +        <sym>&</sym><def></def><kwd>append_line</kwd><def></def><sym>(</sym><def></def><kwb>$out</kwb><def></def><sym>,</sym> <def></def><kwb>$diff</kwb><def></def><sym>);</sym><br />
  +<def></def>    <sym>}</sym><br />
  +<def></def><sym>}</sym><br />
  +<def></def><br />
  +<br />
  +<kwa>sub</kwa> <def>build_header</def> <sym>{</sym><br />
  +<def></def>    <kwc>local</kwc><def></def><sym>(</sym><def></def><kwb>$header</kwb><def></def><sym>);</sym><br />
  +<def>    delete</def> <kwb>$ENV</kwb><def></def><sym>{</sym><def></def><str>'TZ'</str><def></def><sym>};</sym><br />
  +<def></def>    <kwc>local</kwc><def></def><sym>(</sym><def></def><kwb>$sec</kwb><def></def><sym>,</sym><def></def><kwb>$min</kwb><def></def><sym>,</sym><def></d...
 
[truncated message content] | 
| 
      
      
      From: <si...@us...> - 2008-06-27 00:31:35
       | 
|   User: sits    
  Date: 08/06/26 17:31:33
  Modified:    html     codestriker.css
  Log:
  Missing CSS for removed monospace TD elements.  The fixed-width view will now display the removed "whitespace" on the right-hand side in the right colour.
  
  
  
  Index: codestriker.css
  ===================================================================
  RCS file: /cvsroot/codestriker/codestriker/html/codestriker.css,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- codestriker.css	24 Jun 2008 02:56:15 -0000	1.25
  +++ codestriker.css	27 Jun 2008 00:31:33 -0000	1.26
  @@ -47,6 +47,9 @@
   /* Removed blank text */
   TD.rb {white-space: pre; background-color: #cccccc; font-family: Georgia, serif; font-size: smaller}
   
  +/* Removed blank text monospaced */
  +TD.msrb {white-space: pre; background-color: #cccccc; font-family: Consolas, "Nimbus Mono L", LucidaConsole, "Bitstream Vera Sans Mono", monospace; font-size: smaller}
  +
   /* Changed text */
   TD.c {white-space: pre; background-color: #ffff77; font-family: Georgia, serif; font-size: smaller}
   
  
  
  
 | 
| 
      
      
      From: <si...@us...> - 2008-07-01 11:10:31
       | 
|   User: sits    
  Date: 08/07/01 04:10:29
  Modified:    html     codestriker.css
  Log:
  Workaround IE bug so that title appears in white.
  
  
  
  Index: codestriker.css
  ===================================================================
  RCS file: /cvsroot/codestriker/codestriker/html/codestriker.css,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- codestriker.css	27 Jun 2008 00:31:33 -0000	1.26
  +++ codestriker.css	1 Jul 2008 11:10:29 -0000	1.27
  @@ -162,7 +162,7 @@
   /* Codestriker heading */
   #header {margin-bottom: 1em; font-family: sans-serif;}
   #header .heading {background-color: #404D6C; color: white; font-size: 110%; -moz-border-radius-topleft: 5px; -moz-border-radius-topright: 5px; margin: 0; padding: 0.5em; vertical-align: bottom; font-weight: bold;}
  -#header .heading a {text-decoration: none; color: inherit; background-color: transparent;}
  +#header .heading a {text-decoration: none; color: white; background-color: transparent;}
   
   /* Codestriker top-level menu */
   #header .menu {font-size: 85%; border-left: 1px solid silver; border-right: 1px solid silver; border-bottom: 1px solid silver; -moz-border-radius-bottomleft: 5px; -moz-border-radius-bottomright: 5px; padding: 0.5em}
  
  
  
 |