diff --git a/Makefile b/Makefile index 7771ae0ef5..26eefda856 100644 --- a/Makefile +++ b/Makefile @@ -1,55 +1,60 @@ -# $FreeBSD: www/Makefile,v 1.12 2000/02/28 12:41:23 phantom Exp $ +# $FreeBSD: www/Makefile,v 1.13 2000/02/28 13:15:53 phantom Exp $ LINKS= en/ja en/es en/ru en/zh LINKS+= ja/web.mk es/web.mk ru/web.mk LINKS+= web.mk .if !defined(WEB_ONLY) || empty(WEB_ONLY) LINKS+= ../doc/en_US.ISO_8859-1/web.mk LINKS+= ../doc/en_US.ISO_8859-1/includes.sgml .endif SUBDIR= en +.if make(obj) +SUBDIR+= ja es ru zh +.endif + all: links links: ${LINKS} clean: rm -f ${LINKS} en/ja: - cd en; ln -sf ../ja + cd en; ln -sf ${.CURDIR}/ja en/es: - cd en; ln -sf ../es + cd en; ln -sf ${.CURDIR}/es en/ru: - cd en; ln -sf ../ru + cd en; ln -sf ${.CURDIR}/ru en/zh: - cd en; ln -sf ../zh + cd en; ln -sf ${.CURDIR}/zh ja/web.mk: - cd ja; ln -sf ../en/web.mk + cd ja; ln -sf ${.CURDIR}/en/web.mk es/web.mk: - cd es; ln -sf ../en/web.mk + cd es; ln -sf ${.CURDIR}/en/web.mk ru/web.mk: - cd ru; ln -sf ../en/web.mk + cd ru; ln -sf ${.CURDIR}/en/web.mk web.mk: - cd .; ln -sf en/web.mk + cd .; ln -sf ${.CURDIR}/en/web.mk .if !defined(WEB_ONLY) || empty(WEB_ONLY) ../doc/en_US.ISO_8859-1/web.mk: - cd ../doc/en_US.ISO_8859-1; ln -sf ../../www/en/web.mk + cd ../doc/en_US.ISO_8859-1; ln -sf ${.CURDIR}/en/web.mk ../doc/en_US.ISO_8859-1/includes.sgml: - cd ../doc/en_US.ISO_8859-1; ln -sf ../../www/en/includes.sgml + cd ../doc/en_US.ISO_8859-1; ln -sf ${.CURDIR}/en/includes.sgml .endif +.include .include diff --git a/en/Makefile b/en/Makefile index d8f980b454..446f38381c 100644 --- a/en/Makefile +++ b/en/Makefile @@ -1,77 +1,76 @@ -# $FreeBSD: www/en/Makefile,v 1.51 2000/01/29 14:18:17 wosch Exp $ +# $FreeBSD: www/en/Makefile,v 1.52 2000/06/07 00:03:33 nik Exp $ .if exists(Makefile.conf) .include "Makefile.conf" .endif # These are turned into validated, normalized HTML files. DOCS= applications.sgml DOCS+= auditors.sgml DOCS+= availability.sgml DOCS+= docs.sgml DOCS+= features.sgml DOCS+= register.sgml DOCS+= index.sgml DOCS+= internet.sgml DOCS+= mailto.sgml DOCS+= publish.sgml DOCS+= send-pr.sgml DOCS+= support.sgml DOCS+= where.sgml DOCS+= y2kbug.sgml CLEANFILES+=atoz.sgml site.sgml # These will be directly installed. #DATA= COPYING COPYING.LIB README.mirror robots.txt index.html DATA= robots.txt index.html # Subdirectories # SGML SUBDIR= security SUBDIR+= commercial SUBDIR+= docproj SUBDIR+= news SUBDIR+= alpha SUBDIR+= internal SUBDIR+= java SUBDIR+= copyright SUBDIR+= search SUBDIR+= gallery SUBDIR+= projects SUBDIR+= releases SUBDIR+= conspectus .if !defined(WEB_ONLY) || empty(WEB_ONLY) SUBDIR+= ports .endif # Non-SGML SUBDIR+= gifs SUBDIR+= cgi +WEB_LANG?= ja es ru zh + # Non-English + .if !defined(ENGLISH_ONLY) || empty(ENGLISH_ONLY) -.if !defined(WEB_LANG) || empty(WEB_LANG) -SUBDIR+= ja -SUBDIR+= es -SUBDIR+= ru -SUBDIR+= zh -.else -SUBDIR+= ${WEB_LANG} -.endif +.for DIR in ${WEB_LANG} +#SUBDIR+= ../${DIR} +SUBDIR+= ${DIR} +.endfor .endif .if !defined(WEB_ONLY) || empty(WEB_ONLY) # Extern SUBDIR+= tutorials DOCSUBDIR= FAQ handbook .endif SGMLOPTS+= -links -hdr ${.CURDIR}/doc.hdr -ftr ${.CURDIR}/doc.ftr WEBDIR= data .include "web.mk" diff --git a/en/commercial/Makefile b/en/commercial/Makefile index 1279335797..4c599ac8cf 100644 --- a/en/commercial/Makefile +++ b/en/commercial/Makefile @@ -1,51 +1,51 @@ -# $FreeBSD: www/en/commercial/Makefile,v 1.11 2000/03/12 21:41:52 phantom Exp $ +# $FreeBSD: www/en/commercial/Makefile,v 1.12 2000/04/04 09:21:21 kuriyama Exp $ .if exists(../Makefile.conf) .include "../Makefile.conf" .endif PERL= perl5 DOCS = commercial.sgml DOCS+= consulting.sgml DOCS+= consulting_bycat.sgml DOCS+= hardware.sgml DOCS+= misc.sgml DOCS+= software.sgml DOCS+= software_bycat.sgml INDEXLINK=commercial.html CLEANFILES+= consulting.inc consulting_bycat.inc hardware.inc CLEANFILES+= misc.inc software.inc software_bycat.inc consulting.html: consulting.sgml consulting.inc consulting_bycat.html: consulting_bycat.sgml consulting_bycat.inc hardware.html: hardware.sgml hardware.inc misc.html: misc.sgml misc.inc software.html: software.sgml software.inc software_bycat.html: software_bycat.sgml software_bycat.inc consulting.inc: gencommercial.pl commercial.desc consulting.raw - ${PERL} ./gencommercial.pl consulting + ${PERL} ${.CURDIR}/gencommercial.pl -s ${.CURDIR} consulting consulting_bycat.inc: gencommercial.pl commercial.desc consulting.raw - ${PERL} ./gencommercial.pl -c consulting + ${PERL} ${.CURDIR}/gencommercial.pl -s ${.CURDIR} -c consulting hardware.inc: gencommercial.pl commercial.desc hardware.raw - ${PERL} ./gencommercial.pl hardware + ${PERL} ${.CURDIR}/gencommercial.pl -s ${.CURDIR} hardware misc.inc: gencommercial.pl commercial.desc misc.raw - ${PERL} ./gencommercial.pl misc + ${PERL} ${.CURDIR}/gencommercial.pl -s ${.CURDIR} misc software.inc: gencommercial.pl commercial.desc software.raw - ${PERL} ./gencommercial.pl software + ${PERL} ${.CURDIR}/gencommercial.pl -s ${.CURDIR} software software_bycat.inc: gencommercial.pl commercial.desc software.raw - ${PERL} ./gencommercial.pl -c software + ${PERL} ${.CURDIR}/gencommercial.pl -s ${.CURDIR} -c software .include <../web.mk> diff --git a/en/commercial/gencommercial.pl b/en/commercial/gencommercial.pl index 26c6a1601b..42a748b442 100755 --- a/en/commercial/gencommercial.pl +++ b/en/commercial/gencommercial.pl @@ -1,363 +1,365 @@ #!/usr/bin/perl ####################################################################### # gencommercial.pl - # # A utility to help create FreeBSD's commercial gallery SGML files. # Processes "raw" data kept as raw files, one ".raw" file for each # commercial category (currently consulting, hardware, misc, and # software). A description file (by default, ./commercial.desc) # contains the definitions for each of the categories and its # sub-categories. # # Depending upon the flags passed on the command line (-a or -c), # this program creates an include file with a list of entries either # sorted alphabetically (-a or default) or by (sub-)category (-c.) # There is also a verbose option good for debugging (-v). The out- # put is suitable for inclusion into the gallery SMGL files. # # XXX The -v (verbose) option currently does not exist. # # This utility outputs to a file called either (category).inc # or (category)_bycat.inc respective to the -a or -c option. # # Author: Ade Barkah (mbarkah@FreeBSD.ORG) # # (c) 1999 by The FreeBSD Project, Inc. All Rights Reserved. # This program is made available to the general public under # the "BSD-style copyright" terms of agreement. # -# $FreeBSD: www/en/commercial/gencommercial.pl,v 1.5 1999/12/17 14:24:14 phantom Exp $ +# $FreeBSD: www/en/commercial/gencommercial.pl,v 1.6 2000/04/04 09:23:41 kuriyama Exp $ ####################################################################### ## Configuration Section ####################################################################### # The $description_file contains the definitions for each Category # and Sub-category. -$description_file = "./commercial.desc"; +$description_file = "commercial.desc"; # If you want to change the output file naming convention, # modify the two lines below. $alpha_suffix = ".inc"; $subcat_suffix = "_bycat.inc"; # IMPORTANT! # The program will only attempt to index by the following list. # In particular, if you have entries beginning with a character # other than ones listed here, you need modify this list. @index_list = qw(A B C D E F G H I J K L M N O P Q R S T U V W X Y Z); ####################################################################### # You should not need to modify anything below this line. ####################################################################### require 5.001; # Parse the command line sub usage_exit { - print STDERR "Usage: gencommercial.pl [-ac] category\n"; + print STDERR "Usage: gencommercial.pl [-ac] [-s directory] category\n"; exit (1); } use Getopt::Long; $good_result = GetOptions ("alphabetical" => \$opt_alpha, - "categorical" => \$opt_cat); + "categorical" => \$opt_cat, + "sourcedir=s" => \$opt_srcdir); &usage_exit() if (not $good_result); &usage_exit() if (@ARGV != 1); $opt_alpha = 1 if (! $opt_alpha && ! $opt_cat ); # -a is default; $category = $ARGV[0]; +$srcdir = $opt_srcdir || "."; ####################################################################### # Now, we parse the description file. # # We iterate through each line in the .desc file until we find the # CATEGORY description matching the category specified on the command # line. If found, then we save its short and long descriptions and # continue iterating through the file, reading the CATEGORY's # SUBCAT descriptions (if any) and DEFAULT_SUBCAT (if any.) We # continue either until we find another CATEGORY header ($finish # is set) or until the end of the file. # # Formats: # # CATEGORY="category" SHORT="short_description" LONG="long_description" # SUBCAT="sub-category" DESCRIPTION="description" # DEFAULT_SUBCAT="sub-category" # # A '#' at the *beginning* of a line marks a comment. -if (open (DESC, "< $description_file") == 0) +if (open (DESC, "< $srcdir/$description_file") == 0) { - print "ERROR: Unable to open $description_file file.\n"; + print "ERROR: Unable to open $srcdir/$description_file file.\n"; print "ERROR: $!. Exiting.\n"; exit 1; } $finish = 0; $in_cat = 0; while ((! $finish) && ($_ = )) { next if ((/^#/) || (/^$/)); # Skip comments and empty lines if ( m{\s*CATEGORY\s*=\s*"\s*(.+)\s*" # $1 = CATEGORY \s*SHORT\s*=\s*"\s*(.+)\s*" # $2 = SHORT (description) \s*LONG\s*=\s*"\s*(.+)\s*" }xio ) # $3 = LONG (description) { if ($in_cat) { $finish = 1; } else { $short = $2; $long = $3; if ($1 =~ /^($category)$/io) # category == the one we want? { $short_cat = $short; # Yes, save the descriptions $long_cat = $long; $in_cat = 1; } } } else { next if (! $in_cat); if (/DEFAULT_SUBCAT\s*=\s*"\s*(.+)\s*"/) { $default_subcat = $1; } elsif ( m{\s*SUBCAT\s*=\s*"\s*(.+)\s*" \s*DESCRIPTION\s*=\s*"\s*(.+)\s*"}xio ) { $subcat = $1; $subcat =~ tr/a-z/A-Z/; # Make uppercase $subcats{$1} = $2; # Store descriptions in hash } } } close (DESC); # We've read in the file, so let's do some sanity checking. For example, # make sure the category is actually valid. if ($in_cat == 0) { print "ERROR: Category $category is not in description file.\n"; print "ERROR: Exiting.\n"; exit 1; } # If %subcats == 0, then this CATEGORY does not have any sub-categories, # which is fine. However, if $default_subcat is defined, but the subcat # doesn't actually exist, we scream and quit. if (%subcats == 0) { if ($opt_cat) { print "ERROR: -c option specified, but category has no subcategories.\n"; print "ERROR: Exiting.\n"; exit 1; } $default_subcat = "DEFAULT"; } else { if ($subcats{$default_subcat} eq "") { print "ERROR: Default subcategory $default_subcat has no description.\n"; print "ERROR: Exiting.\n"; exit 1; } } ####################################################################### # Things look in order so far, so we'll read in the .raw file. Each # entry begins with a header that looks like below: # # <--! NAME="entry_name" CAT="entry_category" SUBCAT="sub-category"--> # # Anything before the first header is treated as comment, everything # else is treated as part of an entry. The $first_time flag below # marks if we've seen a header or not. # # In this version, the CATEGORY is actually determined by the name # of the .raw file, so it is not used. -if (open (RAW, "< ${category}.raw") == 0) +if (open (RAW, "< ${srcdir}/${category}.raw") == 0) { - print "ERROR: Unable to open ${category}.raw file.\n"; + print "ERROR: Unable to open ${srcdir}/${category}.raw file.\n"; print "ERROR: $!. Exiting.\n"; exit 1; } $first_time = 1; $entry_text = ""; while () { next if (/^$/); if ( m{}xio ) { if ($first_time == 0) { $entries {"$entry_name"} = "$entry_subcat|$entry_text"; $entry_text = ""; } $entry_name = $1; $entry_subcat = $2; $entry_subcat =~ tr/a-z/A-Z/; if ($subcats{$entry_subcat} eq "") { $entry_subcat = $default_subcat; } $first_time = 0; } else { $entry_text = "${entry_text}$_" if (not $first_time); } } if ($first_time == 0) { $entries {"$entry_name"} = "$entry_subcat|$entry_text"; } close (RAW); ####################################################################### # Generate alphabetical output if necessary. We first build a # $list_string containing a unique list of the first letters of # each entry. Then we compare this string to @index_list and # create the alphabetical index. Then we simply output the # entries in key sorted order. if ($opt_alpha) { if (open (OUTFILE, "> ${category}${alpha_suffix}") == 0) { print "ERROR: Unable to open ${category}${alpha_suffix}.\n"; print "ERROR: $!. Exiting.\n"; exit 1; } print OUTFILE "\n"; print OUTFILE "\n\n"; # Build unique first-letter list @index = (); $first_letter = ""; $list_string = ""; foreach $entry (sort keys %entries) { if ($first_letter ne substr($entry, 0, 1)) { $first_letter = uc(substr($entry, 0, 1)); # Ignore case $list_string = "$list_string$first_letter"; } } # Output alphabetical index print OUTFILE "
\n\n
\n"; foreach $letter (@index_list) { if ($list_string =~ /$letter/) { print OUTFILE "$letter\n"; } else { print OUTFILE "$letter\n"; } } print OUTFILE "
\n\n
\n\n"; # Output entries in key sort order, fold case print OUTFILE "
    \n"; $first_letter = ""; foreach $entry (sort { uc($a) cmp uc($b); } keys %entries) { print OUTFILE "
  • "; if ($first_letter ne substr($entry, 0, 1)) { $first_letter = substr($entry, 0, 1); print OUTFILE "\n\n\n"; } $link = $entry; $link =~ tr/ /_/; $text = $entries{$entry}; $text =~ /\|(.*)$/os; print OUTFILE "\n"; print OUTFILE "$1

  • \n\n"; } print OUTFILE "
\n"; # Ok, we're done. close (OUTFILE); } ####################################################################### # Generate output by category if necessary. We actually output an # index to the alphabetical HTML file, which we assume to be called # ${category}.html. The procedure is inefficient but simple. We use a # double-loop to iterate through each subcategory, and through each # entry, so we're looking at O(n^2). Considering the size of the # raw files, however, this method is still very fast. if ($opt_cat) { if (open (OUTFILE, "> ${category}${subcat_suffix}") == 0) { print "ERROR: Unable to open ${category}${subcat_suffix}.\n"; print "ERROR: $!. Exiting.\n"; exit 1; } print OUTFILE "\n"; print OUTFILE "\n\n"; # The following sort is by description (VALUE), not KEY foreach $subcat (sort {uc($subcats{$a}) cmp uc($subcats{$b});} keys %subcats) { print OUTFILE "\n"; print OUTFILE "

$subcats{$subcat}

\n\n
    \n"; # Here sorting by KEY is what we want. foreach $entry (sort { uc($a) cmp uc($b); } keys %entries) { $text = $entries {$entry}; $text =~ /^\s*(.+)\s*\|(.*)/o; if ($1 eq $subcat) { $link = $entry; $link =~ tr/ /_/; print OUTFILE "
  • $entry
  • \n"; } } print OUTFILE "
\n\n"; } close (OUTFILE); } ####################################################################### # Done! exit 0; diff --git a/en/gallery/Makefile b/en/gallery/Makefile index a656182991..b79713d0e4 100644 --- a/en/gallery/Makefile +++ b/en/gallery/Makefile @@ -1,36 +1,36 @@ -# $FreeBSD: www/en/gallery/Makefile,v 1.8 2000/04/07 13:09:21 phantom Exp $ +# $FreeBSD: www/en/gallery/Makefile,v 1.9 2000/04/20 16:40:58 phantom Exp $ .if exists(../Makefile.conf) .include "../Makefile.conf" .endif DOCS = gallery.sgml DOCS+= cgallery.sgml DOCS+= npgallery.sgml DOCS+= pgallery.sgml INDEXLINK= gallery.html CLEANFILES+= cgallery.inc npgallery.inc pgallery.inc gallery.inc cgallery.html: cgallery.sgml cgallery.inc cgallery.inc: gallery.db gengallery.pl - ${PERL} ./gengallery.pl commercial gallery.db > cgallery.inc + ${PERL} ${.CURDIR}/gengallery.pl commercial ${.CURDIR}/gallery.db > cgallery.inc npgallery.html: npgallery.sgml npgallery.inc npgallery.inc: gallery.db gengallery.pl - ${PERL} ./gengallery.pl nonprofit gallery.db > npgallery.inc + ${PERL} ${.CURDIR}/gengallery.pl nonprofit ${.CURDIR}/gallery.db > npgallery.inc pgallery.html: pgallery.sgml pgallery.inc pgallery.inc: gallery.db gengallery.pl - ${PERL} ./gengallery.pl personal gallery.db > pgallery.inc + ${PERL} ${.CURDIR}/gengallery.pl personal ${.CURDIR}/gallery.db > pgallery.inc gallery.html: gallery.sgml gallery.inc gallery.inc: gallery.db gallery.sgml - ${PERL} ./prune.pl gallery.db /dev/null | \ + ${PERL} ${.CURDIR}/prune.pl ${.CURDIR}/gallery.db /dev/null | \ ${PERL} -ne 'chomp; m/([-\w]+):\s+(\d+)/ and \ print qq/\n/' \ > gallery.inc .include "../web.mk" diff --git a/en/ports/Makefile b/en/ports/Makefile index 00ef356865..5296b0d1d7 100644 --- a/en/ports/Makefile +++ b/en/ports/Makefile @@ -1,66 +1,66 @@ -# $FreeBSD: www/en/ports/Makefile,v 1.26 1999/09/19 09:39:23 wosch Exp $ +# $FreeBSD: www/en/ports/Makefile,v 1.27 2000/02/28 12:46:46 phantom Exp $ .if exists(../Makefile.conf) .include "../Makefile.conf" .endif .if exists(Makefile.inc) .include "Makefile.inc" .endif CVS_READONLY?= YES CVS_OPT+= -Q .if !empty(CVS_READONLY) CVS_OPT+= -R .endif .if defined(NOPORTSCVS) ${INDEX}: $${PORTSBASE}/${PINDEX} cp ${PORTSBASE}/${PINDEX} ${INDEX} ${Y2K}: $${PORTSBASE}/${PY2K} cp ${PORTSBASE}/${PY2K} ${Y2K} .else ${INDEX}: ${cvsindex} cvs ${CVS_OPT} co -p ${PINDEX} > ${INDEX} ${Y2K}: ${cvsy2k} cvs ${CVS_OPT} co -p ${PY2K} > ${Y2K} .endif # build the list of available packages only on the # main FreeBSD machines hostname!= hostname .if defined(NOPORTSCVS) packages.exists: .else packages.exists: ${cvsindex} ${cvsy2k} .endif .if ${hostname} == "hub.freebsd.org" || ${hostname} == "freefall.freebsd.org" @if sh ${.CURDIR}/packages > ${.TARGET}.temp; then \ mv ${.TARGET}.temp ${.TARGET}; \ else \ rm ${.TARGET}.temp; touch ${.TARGET}; \ fi; .else touch ${.TARGET} .endif Makefile.gen: index.sgml .NOTMAIN echo DOCS= *.sgml > Makefile.gen index.sgml: ${INDEX} ${Y2K} categories packages.exists portindex ports.inc .NOTMAIN rm -f *.sgml - ${PORTINDEX} ${INDEX} ${Y2K} + ${PORTINDEX} ${INDEX} ${Y2K} ${.CURDIR} install: all all install clean: - ${MAKE} ${MAKEFLAGS} -f Makefile.inc0 ${.TARGET} + (cd ${.CURDIR} && ${MAKE} ${MAKEFLAGS} -f Makefile.inc0 ${.TARGET}) .include "../web.mk" diff --git a/en/ports/Makefile.inc0 b/en/ports/Makefile.inc0 index 2f300b8686..ee98c373d6 100644 --- a/en/ports/Makefile.inc0 +++ b/en/ports/Makefile.inc0 @@ -1,16 +1,16 @@ -# $FreeBSD$ +# $FreeBSD: www/en/ports/Makefile.inc0,v 1.2 1999/09/06 07:02:48 peter Exp $ -.if exists(../Makefile.conf) +.if exists(${.CURDIR}/../Makefile.conf) .include "../Makefile.conf" .endif -.if exists(Makefile.inc) +.if exists(${.CURDIR}/Makefile.inc) .include "Makefile.inc" .endif .if exists(Makefile.gen) .include "Makefile.gen" .endif .include "../web.mk" diff --git a/en/ports/portindex b/en/ports/portindex index 9bc6be7d34..905a780da5 100755 --- a/en/ports/portindex +++ b/en/ports/portindex @@ -1,293 +1,293 @@ #!/usr/bin/perl # convert a ports INDEX file to HTML # # by John Fieber # Mon May 13 10:31:58 EST 1996 ############################################################ # Load local config file. You can override in portindex.conf # the variables for the default web and the ftp server. This # make it easy to maintain a local web mirror and let the # URL point to yourself and not to the standard FreeBSD FTP server. $config = $0 . '.' . 'conf'; do $config if -f $config; # This is the base of where we ftp stuff from if ($ENV{'MASTER_FTP_SERVER'}) { $ftpserver = $ENV{'MASTER_FTP_SERVER'}; } else { $ftpserver = 'ftp://ftp.freebsd.org' if !$ftpserver; } $base = "$ftpserver/pub/FreeBSD/branches/-current" if !$base; $baseHTTP = $base if !$baseHTTP; $urlcgi = 'http://www.freebsd.org/cgi/url.cgi' if !$urlcgi; $packagesURL = "$ftpserver/pub/FreeBSD/ports/i386/packages-stable/All/" if !$packagesURL; # support tar on the fly or gzip'ed tar on the fly $ftparchive = 'tar' if !$ftparchive; # ports download sources script $pds = 'http://www.freebsd.org/cgi/pds.cgi'; # better layout and link to the sources if ($urlcgi) { $baseHTTP = $urlcgi . '?' . $baseHTTP; } $today = &getdate; &packages_exist('packages.exists', *packages); -&category_description('categories', *category_description); +&category_description(($ARGV[2] || '.') . '/categories', *category_description); &y2k_statements; &main; sub y2k_statements { open(Y2K, $ARGV[1]); while() { chop(); ( $dir, $url ) = split(/\s+/); $dir = $base . "/" . $dir; $y2k{$dir} = $url; } close(Y2K); } sub getdate { @months = ("January", "February", "March", "April", "May","June", "July", "August", "September", "October", "November", "December"); ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); $year += 1900; return "Last modified: $mday-$months[$mon]-$year"; } sub header { local ($fh, $htext) = @_; print $fh ""; print $fh "$today\">\n"; print $fh ""; print $fh "\n"; print $fh "\n"; print $fh ""; print $fh "%includes;\n"; print $fh "]>\n"; print $fh "&header;\n"; } sub footer { local ($fh, $ftext) = @_; print $fh "\n$ftext\n"; print $fh "&footer;\n"; print $fh "\n\n"; } sub packages_exist { local($file, *p) = @_; open(P, $file) || do { warn "open $file: $!\n"; warn "Cannot create packages links\n"; return 1; }; while(

) { chop; $p{$_} = 1; } close P; return 0; } sub category_description { local($file, *p) = @_; open(P, $file) || do { warn "open $file: $!\n"; warn "Cannot find category description\n"; return 1; }; local($category, $description); while(

) { # ignore comments next if /^\s*#/; ($category, $description) = /^\s*"([^"]+)",\s*"([^"]+)/; $p{$category} = $description; } close P; return 0; } sub main { $sep = ":"; open(INDEX, $ARGV[0]); while () { chop; s/&/&/g; s//>/g; # Read a record ($name, $loc, $prefix, $desc, $ldesc, $owner, $cats, $bdep, $rdep, $www) = split('\|'); # Check for double hyphens in the name (--). $name =~ s/--/-/g; # Split the categories into an array @cat = split("[ \t]+", $cats); $catkey{$name} = $cat[0]; local($sourcepath) = $loc; $sourcepath =~ s%/usr/%%; foreach $i (@cat) { $stats{$i}++; # figure out the FTP url $loc =~ s/\/usr/$base/; $ldesc =~ s/\/usr/$baseHTTP/; # The name description and maintainer $data{$i} .= "

$name "; $data{$i} .= "
$desc
Long description"; if ($packages{"$name.tgz"}) { $data{$i} .= qq{ | Package}; } $data{$i} .= qq{ | Sources}; if ($y2k{"$loc"}) { $data{$i} .= qq{ | Y2K}; } if ($www ne "") { $data{$i} .= qq{ | Main Web Site}; } $ownerurl = $owner; $ownerurl =~ s/<//g; $data{$i} .= "
Maintained by: $owner"; # If there are any dependencies, list them if ($bdep ne "" || $rdep ne "") { $data{$i} .= "
Requires: "; @dep = split(/ /, "$bdep $rdep"); local($last) = ''; foreach $j (sort @dep) { next if $j eq $last; $last = $j; $data{$i} .= " $j,"; } # remove the trailing comma chop $data{$i}; } # If the port is listed in more than one category, throw # in some cross references if ($#cat > 0) { $data{$i} .= "
Also listed in: "; foreach $j (@cat) { if ($j ne $i) { if ($j eq $cat[0]) { $data{$i} .= " \u$j,"; } else { $data{$i} .= " \u$j,"; } } } # remove the trailing comma chop($data{$i}); } $data{$i} .= "

\n" } # Add an entry to the master index # workaround for SGML bug, `--' is not allowed in comments local ($sname) = $name; $sname =~ s/--/-=/g; $master[$portnumber] = "$name " . " -- $desc
\n"; $portnumber++; } open(MOUTF, ">index.sgml"); &header(MOUTF, "FreeBSD Ports"); # print MOUTF "\n"; print MOUTF "&blurb;"; print MOUTF "

There are currently $portnumber ports in the FreeBSD Ports Collection.
Download a gzip'd tar file of all $portnumber ports (about 10 megabytes) or browse the following categories:\n"; print MOUTF "

    \n"; @foos = sort(keys %stats); foreach $key (@foos) { # For the master file... print MOUTF "
  • \u$key ($stats{$key})"; if ($category_description{$key}) { print MOUTF " -- " . $category_description{$key}; } # Someone forgot to add a category to the description file # or there is a typo in the category field. else { warn "No description found for category: ``$key''!\n"; warn "Please fix me or send an E-Mail to doc\@FreeBSD.org\a\n"; sleep(3); } print MOUTF "
  • \n"; # Create the category file open(OUTF, ">$key.sgml"); &header(OUTF, "FreeBSD Ports: \u$key"); if ($category_description{$key}) { print OUTF "

    ", $category_description{$key}, "

    \n"; } print OUTF "
    \n"; $d = join("\n", sort(split(/\n/, $data{$key}))); $d =~ s/##([^#]*)##/$catkey{$1}/g; print OUTF $d; print OUTF "
    \n"; &footer(OUTF, "

    Port Categories" . " -- Index"); close(OUTF); } print MOUTF "
\n"; print MOUTF "\n"; &footer(MOUTF, ""); close(MOUTF); # Create the master index file open(MINDEX, ">master-index.sgml"); &header(MINDEX, "FreeBSD Ports Collection Index"); print MINDEX "

\n"; print MINDEX sort @master; print MINDEX "

"; &footer(MINDEX, "Port Categories"); close(MINDEX); close(INDEX); } diff --git a/en/search/Makefile b/en/search/Makefile index bd917037f7..c95bed1ae3 100644 --- a/en/search/Makefile +++ b/en/search/Makefile @@ -1,24 +1,24 @@ -# $FreeBSD: www/en/search/Makefile,v 1.5 1999/09/06 07:02:57 peter Exp $ +# $FreeBSD: www/en/search/Makefile,v 1.6 2000/04/20 16:41:32 phantom Exp $ .if exists(../Makefile.conf) .include "../Makefile.conf" .endif DOCS+= index-site.sgml DOCS+= search.sgml DOCS+= searchhints.sgml DOCS+= search-mid.sgml INDEXLINK= search.html CLEANFILES+=atoz.sgml site.sgml -index-site.sgml: atoz.sgml site.sgml +index-site.html: atoz.sgml site.sgml atoz.sgml: web.atoz - sort -fu web.atoz | ${PERL} atoz.pl > ${.TARGET} + sort -fu ${.ALLSRC} | ${PERL} ${.CURDIR}/atoz.pl > ${.TARGET} site.sgml: site.map - ${PERL} site.pl < ${.ALLSRC} > ${.TARGET} + ${PERL} ${.CURDIR}/site.pl < ${.ALLSRC} > ${.TARGET} .include "../web.mk" diff --git a/en/tutorials/Makefile b/en/tutorials/Makefile index 42c516939f..0ccb776dbb 100644 --- a/en/tutorials/Makefile +++ b/en/tutorials/Makefile @@ -1,20 +1,20 @@ # -# $FreeBSD: www/en/tutorials/Makefile,v 1.7 2000/05/17 18:33:14 nik Exp $ +# $FreeBSD: www/en/tutorials/Makefile,v 1.8 2000/05/19 00:10:09 nik Exp $ # # Build the FreeBSD tutorials/articles outside of the www tree, and then # install them in to the right place. DOCS = index.sgml DIRS_TO_CLEAN = ../../../doc/en_US.ISO_8859-1/articles \ ../../../doc/en_US.ISO_8859-1/books/fdp-primer \ ../../../doc/en_US.ISO_8859-1/books/porters-handbook \ ../../../doc/en_US.ISO_8859-1/books/ppp-primer all afterinstall: index.html - (cd ../../../doc/en_US.ISO_8859-1/articles && ${MAKE} 'FORMATS=html html-split' 'DESTDIR=${DESTDIR}/data/tutorials/$${.CURDIR:T}' ${.TARGET:S/afterinstall/install/}) - (cd ../../../doc/en_US.ISO_8859-1/books/fdp-primer && ${MAKE} 'FORMATS=html html-split' DESTDIR=${DESTDIR}/data/tutorials/docproj-primer ${.TARGET:S/afterinstall/install/}) - (cd ../../../doc/en_US.ISO_8859-1/books/porters-handbook && ${MAKE} 'FORMATS=html html-split' DESTDIR=${DESTDIR}/data/porters-handbook ${.TARGET:S/afterinstall/install/}) - (cd ../../../doc/en_US.ISO_8859-1/books/ppp-primer && ${MAKE} 'FORMATS=html html-split' DESTDIR=${DESTDIR}/data/tutorials/ppp ${.TARGET:S/afterinstall/install/}) + (cd ${.CURDIR}/../../../doc/en_US.ISO_8859-1/articles && ${MAKE} 'FORMATS=html html-split' 'DESTDIR=${DESTDIR}/data/tutorials/$${.CURDIR:T}' ${.TARGET:S/afterinstall/install/}) + (cd ${.CURDIR}/../../../doc/en_US.ISO_8859-1/books/fdp-primer && ${MAKE} 'FORMATS=html html-split' DESTDIR=${DESTDIR}/data/tutorials/docproj-primer ${.TARGET:S/afterinstall/install/}) + (cd ${.CURDIR}/../../../doc/en_US.ISO_8859-1/books/porters-handbook && ${MAKE} 'FORMATS=html html-split' DESTDIR=${DESTDIR}/data/porters-handbook ${.TARGET:S/afterinstall/install/}) + (cd ${.CURDIR}/../../../doc/en_US.ISO_8859-1/books/ppp-primer && ${MAKE} 'FORMATS=html html-split' DESTDIR=${DESTDIR}/data/tutorials/ppp ${.TARGET:S/afterinstall/install/}) .include "../web.mk" diff --git a/en/web.mk b/en/web.mk index 9f7cdf2155..69ac6fe41e 100644 --- a/en/web.mk +++ b/en/web.mk @@ -1,232 +1,233 @@ # bsd.web.mk -# $FreeBSD: www/en/web.mk,v 1.29 2000/04/23 14:31:21 phantom Exp $ +# $FreeBSD: www/en/web.mk,v 1.30 2000/04/29 07:50:27 kuriyama Exp $ # # Build and install a web site. # # Basic targets: # # all (default) -- performs batch mode processing necessary # install -- Installs everything # clean -- remove anything generated by processing # .if exists(${.CURDIR}/../Makefile.inc) .include "${.CURDIR}/../Makefile.inc" .endif WEBDIR?= ${.CURDIR:T} CGIDIR?= ${.CURDIR:T} DESTDIR?= ${HOME}/public_html WEBOWN?= ${USER} WEBGRP?= www WEBMODE?= 664 CGIOWN?= ${USER} CGIGRP?= www CGIMODE?= 775 PERL?= perl5 # # Install dirs derived from the above. # DOCINSTALLDIR= ${DESTDIR}${WEBBASE}/${WEBDIR} CGIINSTALLDIR= ${DESTDIR}${WEBBASE}/${CGIDIR} # # The orphan list contains sources specified in DOCS that there # is no transform rule for. We start out with all of them, and # each rule below removes the ones it knows about. If any are # left over at the end, the user is warned about them. # ORPHANS:= ${DOCS} COPY= -C # # Where the ports live, if CVS isn't used (ie. NOPORTSCVS is defined) # PORTSBASE?= /usr ################################################################## # Transformation rules ### # file.sgml --> file.revinc # # Generate temporary file for translation revision checking .SUFFIXES: .sgml .revinc GENDOCS+= ${REVFILES} .sgml.revinc: if [ -f ${BUILDTOP}/en/${DIR_IN_LOCAL}/${.IMPSRC} ]; then \ ${BUILDTOP}/ja/revcheck ${BUILDTOP} ${DIR_IN_LOCAL} ${.IMPSRC} > ${.TARGET}; \ else \ touch ${.TARGET}; \ fi ### # file.sgml --> file.html # # Runs file.sgml through spam to validate and expand some entity # references are expanded. file.html is added to the list of # things to install. .SUFFIXES: .html SGMLNORM= sgmlnorm PREFIX?= /usr/local CATALOG?= ${PREFIX}/share/sgml/html/catalog -SGMLNORMFLAGS= -d ${SGMLNORMOPTS} -c ${CATALOG} +SGMLNORMFLAGS= -d ${SGMLNORMOPTS} -c ${CATALOG} -D ${.CURDIR} GENDOCS+= ${DOCS:M*.sgml:S/.sgml$/.html/g} ORPHANS:= ${ORPHANS:N*.sgml} DATESUBST= 's///' .sgml.html: sed -e ${DATESUBST} ${.IMPSRC} |\ SGML_CATALOG_FILES='' ${SGMLNORM} ${SGMLNORMFLAGS} > ${.TARGET} ### # file.docb --> file.html # # Generate HTML from docbook .SUFFIXES: .docb GENDOCS+= ${DOCS:M*.docb:S/.docb$/.html/g} ORPHANS:= ${ORPHANS:N*.docb} .docb.html: sgmlfmt -d docbook -f html ${SGMLOPTS} ${.IMPSRC} ################################################################## # Targets # # If no target is specified, .MAIN is made # .MAIN: all # # Build most everything # all: ${COOKIE} orphans ${GENDOCS} ${DATA} ${LOCAL} ${CGI} _PROGSUBDIR # # Warn about anything in DOCS that has no translation # .if !empty(ORPHANS) orphans: @echo Warning! I don\'t know what to do with: ${ORPHANS} .else orphans: .endif # # Clean things up # .if !target(clean) clean: _PROGSUBDIR .if defined(DIRS_TO_CLEAN) && !empty(DIRS_TO_CLEAN) .for dir in ${DIRS_TO_CLEAN} (cd ${dir} && ${MAKE} clean) .endfor .endif rm -f Errs errs mklog ${GENDOCS} ${LOCAL} ${CLEANFILES} .endif # # Really clean things up # .if !target(cleandir) cleandir: clean _PROGSUBDIR rm -f ${.CURDIR}/tags .depend cd ${.CURDIR}; rm -rf obj; .endif # # Install targets: before, real, and after. # .if !target(install) .if !target(beforeinstall) beforeinstall: .endif .if !target(afterinstall) afterinstall: .endif _ALLINSTALL+= ${GENDOCS} ${DATA} ${LOCAL} realinstall: ${COOKIE} ${GENDOCS} ${DATA} ${LOCAL} ${CGI} _PROGSUBDIR .if !empty(_ALLINSTALL) @mkdir -p ${DOCINSTALLDIR} for entry in ${_ALLINSTALL}; do \ ${INSTALL} ${COPY} -o ${WEBOWN} -g ${WEBGRP} -m ${WEBMODE} \ ${INSTALLFLAGS} $${entry} ${DOCINSTALLDIR}; \ done .if defined(INDEXLINK) && !empty(INDEXLINK) (cd ${DOCINSTALLDIR}; ln -s -f ${INDEXLINK} index.html) .endif .endif .if defined(CGI) && !empty(CGI) @mkdir -p ${CGIINSTALLDIR} for entry in ${CGI}; do \ ${INSTALL} ${COPY} -o ${CGIOWN} -g ${CGIGRP} -m ${CGIMODE} \ ${INSTALLFLAGS} $${entry} ${CGIINSTALLDIR}; \ done .endif .if defined(DOCSUBDIR) && !empty(DOCSUBDIR) for entry in ${DOCSUBDIR}; do \ mkdir -p ${DOCINSTALLDIR}/$$entry; \ done .endif # Set up install dependencies so they happen in the correct order. install: afterinstall afterinstall: realinstall2 realinstall: beforeinstall realinstall2: realinstall .endif # # This recursively calls make in subdirectories. # #SUBDIR+=${DOCSUBDIR} _PROGSUBDIR: .USE .if defined(SUBDIR) && !empty(SUBDIR) @for entry in ${SUBDIR}; do \ (${ECHODIR} "===> ${DIRPRFX}$$entry"; \ cd ${.CURDIR}/$${entry} && \ ${MAKE} ${.TARGET:S/realinstall/install/:S/.depend/depend/} DIRPRFX=${DIRPRFX}$$entry/); \ done .endif .if defined(DOCSUBDIR) && !empty(DOCSUBDIR) @for entry in ${DOCSUBDIR}; do \ (${ECHODIR} "===> ${DIRPRFX}$$entry"; \ cd ${.CURDIR}/$${entry} && \ if [ ${WEBDIR} = "data" -a $$entry = "handbook" -o $$entry = "docproj-primer" ]; then \ ${MAKE} ${.TARGET:S/realinstall/install/:S/.depend/depend/} DIRPRFX=${DIRPRFX}$$entry/ ${PARAMS} FORMATS="txt html html-split"; \ elif [ $$entry = "handbook" -a ${WEBDIR} = "data/ja" ]; then \ ${MAKE} ${.TARGET:S/realinstall/install/:S/.depend/depend/} DIRPRFX=${DIRPRFX}$$entry/ ${PARAMS} FORMATS="html html-split"; \ else \ ${MAKE} ${.TARGET:S/realinstall/install/:S/.depend/depend/} DIRPRFX=${DIRPRFX}$$entry/ ${PARAMS}; \ fi); \ done .endif # # cruft for generating linuxdoc stuff # .if defined (DOCSUBDIR) && !empty(DOCSUBDIR) FORMATS?= "html ps latin1 ascii" PARAMS= DESTDIR=${DESTDIR} DOCDIR=${WEBBASE}/${WEBDIR} PARAMS+= DOCOWN=${WEBOWN} DOCGRP=${WEBGRP} PARAMS+= FORMATS=${FORMATS} COPY="${COPY}" PARAMS+= SGMLOPTS="${SGMLOPTS}" .endif +.include # THE END diff --git a/share/mk/web.site.mk b/share/mk/web.site.mk index 9f7cdf2155..69ac6fe41e 100644 --- a/share/mk/web.site.mk +++ b/share/mk/web.site.mk @@ -1,232 +1,233 @@ # bsd.web.mk -# $FreeBSD: www/en/web.mk,v 1.29 2000/04/23 14:31:21 phantom Exp $ +# $FreeBSD: www/en/web.mk,v 1.30 2000/04/29 07:50:27 kuriyama Exp $ # # Build and install a web site. # # Basic targets: # # all (default) -- performs batch mode processing necessary # install -- Installs everything # clean -- remove anything generated by processing # .if exists(${.CURDIR}/../Makefile.inc) .include "${.CURDIR}/../Makefile.inc" .endif WEBDIR?= ${.CURDIR:T} CGIDIR?= ${.CURDIR:T} DESTDIR?= ${HOME}/public_html WEBOWN?= ${USER} WEBGRP?= www WEBMODE?= 664 CGIOWN?= ${USER} CGIGRP?= www CGIMODE?= 775 PERL?= perl5 # # Install dirs derived from the above. # DOCINSTALLDIR= ${DESTDIR}${WEBBASE}/${WEBDIR} CGIINSTALLDIR= ${DESTDIR}${WEBBASE}/${CGIDIR} # # The orphan list contains sources specified in DOCS that there # is no transform rule for. We start out with all of them, and # each rule below removes the ones it knows about. If any are # left over at the end, the user is warned about them. # ORPHANS:= ${DOCS} COPY= -C # # Where the ports live, if CVS isn't used (ie. NOPORTSCVS is defined) # PORTSBASE?= /usr ################################################################## # Transformation rules ### # file.sgml --> file.revinc # # Generate temporary file for translation revision checking .SUFFIXES: .sgml .revinc GENDOCS+= ${REVFILES} .sgml.revinc: if [ -f ${BUILDTOP}/en/${DIR_IN_LOCAL}/${.IMPSRC} ]; then \ ${BUILDTOP}/ja/revcheck ${BUILDTOP} ${DIR_IN_LOCAL} ${.IMPSRC} > ${.TARGET}; \ else \ touch ${.TARGET}; \ fi ### # file.sgml --> file.html # # Runs file.sgml through spam to validate and expand some entity # references are expanded. file.html is added to the list of # things to install. .SUFFIXES: .html SGMLNORM= sgmlnorm PREFIX?= /usr/local CATALOG?= ${PREFIX}/share/sgml/html/catalog -SGMLNORMFLAGS= -d ${SGMLNORMOPTS} -c ${CATALOG} +SGMLNORMFLAGS= -d ${SGMLNORMOPTS} -c ${CATALOG} -D ${.CURDIR} GENDOCS+= ${DOCS:M*.sgml:S/.sgml$/.html/g} ORPHANS:= ${ORPHANS:N*.sgml} DATESUBST= 's///' .sgml.html: sed -e ${DATESUBST} ${.IMPSRC} |\ SGML_CATALOG_FILES='' ${SGMLNORM} ${SGMLNORMFLAGS} > ${.TARGET} ### # file.docb --> file.html # # Generate HTML from docbook .SUFFIXES: .docb GENDOCS+= ${DOCS:M*.docb:S/.docb$/.html/g} ORPHANS:= ${ORPHANS:N*.docb} .docb.html: sgmlfmt -d docbook -f html ${SGMLOPTS} ${.IMPSRC} ################################################################## # Targets # # If no target is specified, .MAIN is made # .MAIN: all # # Build most everything # all: ${COOKIE} orphans ${GENDOCS} ${DATA} ${LOCAL} ${CGI} _PROGSUBDIR # # Warn about anything in DOCS that has no translation # .if !empty(ORPHANS) orphans: @echo Warning! I don\'t know what to do with: ${ORPHANS} .else orphans: .endif # # Clean things up # .if !target(clean) clean: _PROGSUBDIR .if defined(DIRS_TO_CLEAN) && !empty(DIRS_TO_CLEAN) .for dir in ${DIRS_TO_CLEAN} (cd ${dir} && ${MAKE} clean) .endfor .endif rm -f Errs errs mklog ${GENDOCS} ${LOCAL} ${CLEANFILES} .endif # # Really clean things up # .if !target(cleandir) cleandir: clean _PROGSUBDIR rm -f ${.CURDIR}/tags .depend cd ${.CURDIR}; rm -rf obj; .endif # # Install targets: before, real, and after. # .if !target(install) .if !target(beforeinstall) beforeinstall: .endif .if !target(afterinstall) afterinstall: .endif _ALLINSTALL+= ${GENDOCS} ${DATA} ${LOCAL} realinstall: ${COOKIE} ${GENDOCS} ${DATA} ${LOCAL} ${CGI} _PROGSUBDIR .if !empty(_ALLINSTALL) @mkdir -p ${DOCINSTALLDIR} for entry in ${_ALLINSTALL}; do \ ${INSTALL} ${COPY} -o ${WEBOWN} -g ${WEBGRP} -m ${WEBMODE} \ ${INSTALLFLAGS} $${entry} ${DOCINSTALLDIR}; \ done .if defined(INDEXLINK) && !empty(INDEXLINK) (cd ${DOCINSTALLDIR}; ln -s -f ${INDEXLINK} index.html) .endif .endif .if defined(CGI) && !empty(CGI) @mkdir -p ${CGIINSTALLDIR} for entry in ${CGI}; do \ ${INSTALL} ${COPY} -o ${CGIOWN} -g ${CGIGRP} -m ${CGIMODE} \ ${INSTALLFLAGS} $${entry} ${CGIINSTALLDIR}; \ done .endif .if defined(DOCSUBDIR) && !empty(DOCSUBDIR) for entry in ${DOCSUBDIR}; do \ mkdir -p ${DOCINSTALLDIR}/$$entry; \ done .endif # Set up install dependencies so they happen in the correct order. install: afterinstall afterinstall: realinstall2 realinstall: beforeinstall realinstall2: realinstall .endif # # This recursively calls make in subdirectories. # #SUBDIR+=${DOCSUBDIR} _PROGSUBDIR: .USE .if defined(SUBDIR) && !empty(SUBDIR) @for entry in ${SUBDIR}; do \ (${ECHODIR} "===> ${DIRPRFX}$$entry"; \ cd ${.CURDIR}/$${entry} && \ ${MAKE} ${.TARGET:S/realinstall/install/:S/.depend/depend/} DIRPRFX=${DIRPRFX}$$entry/); \ done .endif .if defined(DOCSUBDIR) && !empty(DOCSUBDIR) @for entry in ${DOCSUBDIR}; do \ (${ECHODIR} "===> ${DIRPRFX}$$entry"; \ cd ${.CURDIR}/$${entry} && \ if [ ${WEBDIR} = "data" -a $$entry = "handbook" -o $$entry = "docproj-primer" ]; then \ ${MAKE} ${.TARGET:S/realinstall/install/:S/.depend/depend/} DIRPRFX=${DIRPRFX}$$entry/ ${PARAMS} FORMATS="txt html html-split"; \ elif [ $$entry = "handbook" -a ${WEBDIR} = "data/ja" ]; then \ ${MAKE} ${.TARGET:S/realinstall/install/:S/.depend/depend/} DIRPRFX=${DIRPRFX}$$entry/ ${PARAMS} FORMATS="html html-split"; \ else \ ${MAKE} ${.TARGET:S/realinstall/install/:S/.depend/depend/} DIRPRFX=${DIRPRFX}$$entry/ ${PARAMS}; \ fi); \ done .endif # # cruft for generating linuxdoc stuff # .if defined (DOCSUBDIR) && !empty(DOCSUBDIR) FORMATS?= "html ps latin1 ascii" PARAMS= DESTDIR=${DESTDIR} DOCDIR=${WEBBASE}/${WEBDIR} PARAMS+= DOCOWN=${WEBOWN} DOCGRP=${WEBGRP} PARAMS+= FORMATS=${FORMATS} COPY="${COPY}" PARAMS+= SGMLOPTS="${SGMLOPTS}" .endif +.include # THE END