Re: usermode

From: Christian Rose (menthos_at_menthos.com)
Date: 2000-08-11 00:37:25

peter karlsson wrote:
> Eftersom det var en bilaga orkar jag inte citera den, men:
> 
> "Var vänlig och försök igen."
> 
> skulle jag vilja ändra till
> 
> "Var vänlig försök igen."
> 
> Det är ju trots allt bara en sak man skall utföra (vara så vänlig att
> man försöker igen), inte två (både vara vänlig OCH försöka igen).

Jag har alltid tolkat det som så att man ber någon att "vara så vänlig
OCH göra detta". Det är två saker man ber om. Eller är jag helt fel ute?
Jag tror och:et i alla fall hör hemma där för att hålla ihop meningen -
"var vänlig gör detta" har jag svårt att tolka som korrekt
meningsbyggnad med satser (även om jag vet att den formuleringen
förekommer).


> Vad är det förresten för program som genererar de där diffarna du
> skickade ut?

Jag fick det från Göran Uddeborg som i sin tur har fått det från Jan
Djärv...
Jag bifogar det här och hoppas att jag får lov att göra det...


Christian



#######################################################################
Christian Rose
http://www.menthos.com                    	    menthos@menthos.com
#######################################################################
#!/usr/bin/perl

#
# Speciell diff för PO-filer.
# $Id: extrDiffs,v 1.5 1997/04/14 19:44:21 jhd Exp $
#
require 5.000;
use Getopt::Long;

$0 =~ s:.*/::;

$Getopt::Long::bundling = 1;
&GetOptions("g|gammal=s", "n|ny=s") || &usage;

sub usage
{
  die "Usage: $0 [--gammal=prefix] [--ny=prefix] old-file new-file\n" .
      "  -g,  --gammal:  Prefix före gamla meddelanden (standardvärde \"G \")\n" .
      "  -n,  --ny:  Prefix före nya meddelanden (standardvärde \"N \").\n";
}

$opt_g = "G " unless $opt_g;
$opt_n = "N " unless $opt_n;
$pad = length($opt_g);
$pad = length($opt_n) if length($opt_n) > $pad;
$pad = " " x $pad;

&usage unless @ARGV == 2;

die "$0: Can't read $ARGV[0]: $!\n" unless -r $ARGV[0];
die "$0: Can't read $ARGV[1]: $!\n" unless -r $ARGV[1];

open(DIFFOUT, "diff -u0 -wBb -I '^#' $ARGV[0] $ARGV[1] |");

sub findClosest
{
    my($in, $lineno) = @_;
    while ($lineno > 0) {
      last if $in->[$lineno] =~ /^\s*$/;
      last if $lineno == 1;
      $lineno--;
    }
    $lineno;
}

open(IN, $ARGV[1]);
@in = <IN>;
unshift(@in, "");

OUTER:
while (<DIFFOUT>) {
  next if /^---/ || /^\+\+\+/;  # Skip headers.

  while (/@@\s+-\d+(,\d+)?\s+\+(\d+)(,\d+)?\s+@@/) {
    my $lineno = $2;
    my @hunk;
    my $valid;

    $_ = <DIFFOUT>;
    while ($_ && ! /^@@/) {
      push(@hunk, $_);
      $valid = 1 if /^\+[^#]/;
      $_ = <DIFFOUT>;
    }

    #print "\@\@ $lineno\n", @hunk;
    next if ! $valid;

    if ($l > 2) {
      until ($l == $lineno || $in[$l] =~ /^msgid / || $l > @in) {
	print "$pad$in[$l]";
	last if $in[$l++] =~ /^\s*$/;
      }
    }

    $close = &findClosest(\@in, $lineno);
    $close = $l if $close < $l;
    for ($l = $close; $l < $lineno; $l++) {
      $x = $in[$l];
      print "$pad$x";
    }

    foreach $line (@hunk) {
      $l++ unless $line =~ /^-/;
      $line =~ s/^\+#/  #/;
      next if $line =~ /^-#/;
      $line =~ s/^-/$opt_g/o;
      $line =~ s/^\+/$opt_n/o;
      print $line;
    }
  }
}

until ($in[$l] =~ /^\s*$/ || $in[$l] =~ /^msgid / || $l > @in) {
  print " $in[$l++]";
}

Arkiv genererat av hypermail 2.1.1.