You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
133 lines
4.9 KiB
133 lines
4.9 KiB
Index: slice.pod |
|
--- slice.pod.orig 2002-02-10 23:41:42.000000000 +0100 |
|
+++ slice.pod 2013-07-04 19:48:56.149262840 +0200 |
|
@@ -24,7 +24,7 @@ |
|
=head2 Input Principle |
|
|
|
The F<slice> program reads I<inputfile> (or from F<STDIN> if I<inputfile> is |
|
-not given or equal ``C<->'') and divides its already prepared ASCII contents |
|
+not given or equal C<->) and divides its already prepared ASCII contents |
|
into possibly overlapping areas, called I<slices>. These slices are |
|
determined by enclosing blocks defined by begin and end delimiters which have |
|
to be I<already> in the file. These block delimiters use the syntax |
|
@@ -38,7 +38,7 @@ |
|
|
|
|
|
The I<NAME> identifier has to match against the regular expression |
|
-``C<[_A-Z0-9]+>'', i.e. I<NAME> is a string consisting only of uppercase |
|
+C<[_A-Z0-9]+>, i.e. I<NAME> is a string consisting only of uppercase |
|
letters, digits or underscore characters. |
|
|
|
There can be as many such slice definitions as you like and there can be more |
|
@@ -57,7 +57,7 @@ |
|
=item SLICE_TERM ::= C<NAME> |
|
|
|
The slice NAME itself. This name has to match against the regex |
|
-``C<[_A-Z0-9*{}]+>''. Here two cases are possible: C<NAME> is either a plain |
|
+C<[_A-Z0-9*{}]+>. Here two cases are possible: C<NAME> is either a plain |
|
slice name consisting only of uppercase letters, digits or an underscore |
|
character. Or it is a wildcarded slice name indicated by an asterisk |
|
character. |
|
@@ -213,8 +213,8 @@ |
|
|
|
The optional I<chmodcmd> string is intended for specifying options for the |
|
F<chmod> command, which is applied to I<outputfile> after writing. For |
|
-instance use ``C<a+r>'' to make sure the file is readable by a webserver of |
|
-``C<u+x>'' to create a file with the execution bit set (usually used for SSI |
|
+instance use C<a+r> to make sure the file is readable by a webserver of |
|
+C<u+x> to create a file with the execution bit set (usually used for SSI |
|
files on a webserver with the C<XBitHack> option available). |
|
|
|
The optional I<outputpolicy> string allows changing output policy for |
|
@@ -335,7 +335,7 @@ |
|
|
|
=head1 RESTRICTION |
|
|
|
-The current implementation only handles anonymous end delimiters ``C<:]>'' |
|
+The current implementation only handles anonymous end delimiters C<:]> |
|
correct in clear cases where no mis-interpretation is possible, i.e. when no |
|
overlapping occurs. For instance in |
|
|
|
Index: slice_pass3.pl |
|
--- slice_pass3.pl.orig 2002-02-10 22:49:45.000000000 +0100 |
|
+++ slice_pass3.pl 2013-07-04 19:48:10.225096816 +0200 |
|
@@ -92,11 +92,13 @@ |
|
# skip file if requested by options |
|
if ($status->{z} > 0 and $out eq '') { |
|
printwarning("Empty output: skip generation of $outfile\n"); |
|
- next if $status->{z} > 1; |
|
+ main::error("Execution stopped\n") if $status->{z} > 2; |
|
+ next if $status->{z} == 2; |
|
} |
|
if ($status->{s} > 0 and ($out eq '' or $out !~ m/\S/)) { |
|
printwarning("Whitespace only: skip generation of $outfile\n"); |
|
- next if $status->{s} > 1; |
|
+ main::error("Execution stopped\n") if $status->{s} > 2; |
|
+ next if $status->{s} == 2; |
|
} |
|
|
|
# open output file |
|
@@ -104,9 +106,12 @@ |
|
print $out; |
|
} |
|
else { |
|
- open(OUT, ">$outfile"); |
|
- print OUT $out; |
|
- close(OUT); |
|
+ open(OUT, ">$outfile") |
|
+ or main::error("Unable to write into $outfile: $!\n"); |
|
+ print OUT $out |
|
+ or main::fileerror($outfile, "Unable to write into $outfile: $!\n"); |
|
+ close(OUT) |
|
+ or main::fileerror($outfile, "Unable to close $outfile: $!\n"); |
|
} |
|
|
|
# additionally run chmod on the output file |
|
Index: slice_setup.pl |
|
--- slice_setup.pl.orig 2002-01-12 22:22:18.000000000 +0100 |
|
+++ slice_setup.pl 2013-07-04 19:48:10.225096816 +0200 |
|
@@ -75,17 +75,21 @@ |
|
# read input file |
|
if (($#ARGV == 0 and $ARGV[0] eq '-') or $#ARGV == -1) { |
|
$fp = new IO::Handle; |
|
- $fp->fdopen(fileno(STDIN), "r"); |
|
+ $fp->fdopen(fileno(STDIN), "r") |
|
+ || error("Unable to load STDIN: $!\n"); |
|
local ($/) = undef; |
|
$INPUT = <$fp>; |
|
- $fp->close; |
|
+ $fp->close() |
|
+ || error("Unable to close STDIN: $!\n"); |
|
} |
|
elsif ($#ARGV == 0) { |
|
$fp = new IO::File; |
|
- $fp->open($ARGV[0]); |
|
+ $fp->open($ARGV[0]) |
|
+ || error("Unable to load $ARGV[0]: $!\n"); |
|
local ($/) = undef; |
|
$INPUT = <$fp>; |
|
- $fp->close; |
|
+ $fp->close() |
|
+ || error("Unable to close $ARGV[0]: $!\n"); |
|
} |
|
else { |
|
usage(); |
|
Index: slice_util.pl |
|
--- slice_util.pl.orig 2002-01-12 22:23:15.000000000 +0100 |
|
+++ slice_util.pl 2013-07-04 19:48:10.225096816 +0200 |
|
@@ -29,6 +29,15 @@ |
|
exit(1); |
|
} |
|
|
|
+sub fileerror { |
|
+ my $file = shift; |
|
+ my ($str) = @_; |
|
+ |
|
+ printerror($str); |
|
+ unlink $file; |
|
+ exit(1); |
|
+} |
|
+ |
|
sub printwarning { |
|
my ($str) = @_; |
|
|
|
|