#!/usr/bin/perl # DeCSS v 0.06 -- a utility for stripping Cascading Style Sheet (CSS) # information from an HTML page # Copyright 2000, Mr. Bad of Pigdog Journal (http://www.pigdog.org/). # All Rights Reserved. # This software is distributed under the Artistic License, which should have # come with this file. Please distribute this software far and wide. # The original version can always be found on the World Wide Web at: # # http://www.pigdog.org/decss/ # THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. #use Getopt::Std; #use strict; # Choosy software uses strict! my($USAGE) = <<"END_OF_USAGE"; DeCSS 0.06: a utility to strip Cascading Style Sheets (CSS) tags from HTML documents USAGE: DeCSS [-h] [-i input file] [-o output file] options: -h print this help message -i input file input file to strip (default: standard input) -o output file place to put the output (default: standard output) END_OF_USAGE my(%options); local(*IN, *OUT); #getopts("hi:o:", \%options); if (exists $options{h}) { print $USAGE; exit(0); } if (exists $options{i}) { open(IN, "<$options{i}") or die "Can't open $options{i}: $!\n"; } else { open(IN, "<&STDIN") or die "Can't open STDIN: $!\n"; } if (exists $options{o}) { open(OUT, ">$options{o}") or die "Can't open $options{o}: $!\n"; } else { open(OUT, ">&STDOUT") or die "Can't open STDOUT: $!\n"; } decssify(*IN, *OUT); close(IN); close(OUT); sub decssify { local(*IN, *OUT) = @_; # Yeah, like -you- never slurp in entire files at a time. select(IN); undef $/; my($content) = ; # Here's where dmt made some changes # A problem I noted is that /g(lobal) isn't, I needed to put # some of the regexes inside a loop # Strip newlines inside tags # This makes things easier on the other regexes while($content =~ /<[^>]+\n/){ $content =~ s%(<[^>]+)\n+%$1%mig; } $content = demoronise($content); $content =~ s%%%mig; # Strip stylesheet links $content =~ s%%%mig; # Strip