1#!/usr/bin/perl 2# Copyright (c) 1996 Wolfram Schneider <wosch@FreeBSD.org>. Berlin. 3# 4# epfe - extract printing filter examples from printing.sgml 5# 6# usage: 7# $ cd /usr/share/examples/printing 8# $ epfe < ../../doc/handbook/printing.sgml 9# 10# $FreeBSD$ 11 12$in = 0; @a = (); 13sub Print { s/\&\;/&/g; push(@a,$_); } 14sub out { 15 local($name, *lines) = @_; 16 open(F, "> $name") || die "open $_[0]: $!\n"; 17 print F @lines; 18 close F; 19} 20 21while(<>) { 22 if (/^<code>/) { 23 $in = 1; 24 } elsif (m%</code>% && $in > 0) { 25 if ($in > 1) { 26 $name = 'unknown' if !$name; 27 while(1) { if ($d{$name}) { $name .= 'X'; } else { last } } 28 &out("$name", *a); 29 $d{$name} = $name; 30 } 31 $in = 0; $name = ''; @a = (); 32 } elsif ($in == 1 && /^\#\s*!/) { 33 $in++; &Print; 34 } elsif ($in > 1) { 35 $name = $1 if (!$name && /^\#\s+(\S+)\s+-\s+/); 36 $in++; &Print; 37 } 38} 39