/* * post stuff to WWWDIR for web access * index generated from *.mm */ WWWDIR = wwwfiles public_html WWWSAVE = WWWSTYLE = WWWTYPES = .WWW.semaphore : .SEMAPHORE .EXPORT : WWWSTYLE WWWTYPES /* * item :WWW: [style=frame] [save=pattern] file ... * * `item'.mm generates index.html * other files copied to $(WWWDIR)/`item' * sets up www.bin */ ":WWW:" : .MAKE .OPERATOR local A B D I J L X E P R M .WWW.LOCAL .WWW.REMOTE : .DO.NOTHING WWWDIR := $(HOME:X=$(WWWDIR):T=F:O=1) B := $(*:N=*.mm::O=1:B) D := $(WWWDIR)/$(B) M := $(WWWDIR)/man/man1 R := $(>:N!=*=*) for I $(>:N=*=*) A := WWW$(I:/=.*//:F=%(upper)s) $(A) := $(I:/.*=//) end (html_info) : $$(MM2HTMLINFO) $$(MM2HTMLINIT) if WWWSTYLE == "frame" %.html %-index.html : %.mm (html_info) $(MM2HTML) $(MM2HTMLFLAGS) $(%:N=faq.*:?> $(<:O=1)?-f $(%) -x?) -o WWWTYPES=$(WWWTYPES:@Q:@Q) $(WWWSOURCE.$(%)) $(>) else %.html : %.mm (html_info) $(MM2HTML) $(MM2HTMLFLAGS) -o WWWTYPES=$(WWWTYPES:@Q:@Q) $(>) $(WWWSOURCE.$(%)) > $(<) end %.html : %.1 (html_info) $(MM2HTML) $(MM2HTMLFLAGS) $(>) $(WWWSOURCE.$(%)) > $(<) %-man.html : $(BINDIR)/% (html_info) ignore $(>) --html 2> $(<) .DO.WWW.MAN : .USE if { test '' = '$(*)' || { strings $(*) | egrep -q '\[\+NAME\?|libcmd\.|cmd[0-9][0-9]\.' ;} ;} && [[ "$( $(<:B) '--???html' -- 2>&1 )" == version=[1-9]* ]] then ( $(<:B) '--??html' -- 2>$(<) ) || true fi if 0 $(M)/%.html : .DONTCARE $(INSTALLROOT)/bin/% $(@.DO.WWW.MAN) end if "$(<)" D := $(<) elif ! "$(R)" return end .WWW .WWW.BIN : $(D) $(M) - $(D) $(M) : $(SILENT) test -d $(<) || mkdir $(<) if ( J = "$(R:N=*.mm)" ) for I $(J:G=%.html) if I == "*-index.html" O := $(D)/index.html else O := $(I:D=$(D):B:S) end .WWW : $(O) $(O) :COPY: $(I) end end .WWW.req : .FUNCTION return $(*$(%:T=SR):N=-l*:T=F:P=B:N!=-l*|/*) A = 0 for I $(R:N!=*.mm) if I == "-" let A = ! A elif I == "-l*" L := $(I:/-l//) if J = "$(.DLL.NAME. $(L) $($(L).VERSION):T=F)" X += $(J) end elif A || "$(I:A=.COMMAND|.ARCHIVE)" || "$(I:D:D:N=$(INSTALLROOT))" || "$(I:N=*-www)" X += $(I) if "$(I:A=.COMMAND)" X += $$(.WWW.req $(I)) J := $(I:/-www$//) eval .WWW : $(J:D=$(M):B:S=.html) $(J:D=$(M):B:S=.html) : $(I) $(I:B:S=.1:T=F:?$(I:B:S=.1)??) if strings $$(*:O=1) | egrep -q '\[\+NAME\?|libcmd\.|cmd[0-9][0-9]\.' then $$(IGNORE) $$(*:O=1) '--??html' -- 2>&1 elif test '' != '$$(*:N=*.1)' then $$(MM2HTML) $$(*:N=*.1) fi > $$(<) end end else if I == "*.html" $(I) : .TERMINAL end .WWW : $(D)/$(I) $(D)/$(I) :COPY: $(I) end end if "$(X:V)" .WWW.EDIT. : .FUNCTION local E I J for I $(.INSTALL.LIST.:C,^$(INSTALLROOT)/,,:N!=lib/lib/*) for J $(%) if "$(I:B:S)" == "$(J:B:S)" E += -s ',^$(J)$,$(I),' end end end return $(E) .WWW.LIST. : .FUNCTION local E I J for I $(.INSTALL.LIST.:C,^$(INSTALLROOT)/,,:N!=lib/lib/*) for J $(%) if "$(I:B:S)" == "$(J:B:S)" E += $(I) end end end return $(E) .WWW .WWW.BIN : $(D)/$(B)-$(CC.HOSTTYPE).tgz $(D)/$(B)-$(CC.HOSTTYPE).tgz : $(X:V) cat > X.$(tmp).X <) TYPE := $(HOST:/.*://) HOST := $(HOST:/:.*//) WWWTYPES += $(TYPE) ARCH := $(PWD:D:C,/$(CC.HOSTTYPE)/,/$(TYPE)/) BINS := DIRS := for ITEM $(<) if TYPE == "$(CC.HOSTTYPE)" G := $("index.mm":G=%.html:D=$(WWWDIR)/$(ITEM):B:S) .WWW.LOCAL : $(G) eval $(G) : .JOINT $(ARCH)/$(ITEM)/$(ITEM).mm (html_info) .WWW.semaphore .FORCE cd $$(*:D) $$(MAKE) $$(-) $$(=) www end else BINS += $(WWWDIR)/$(ITEM)/$(ITEM)-$(TYPE).tgz DIRS += $(ARCH)/$(ITEM) end end .WWW.REMOTE : $(BINS) ARCH := $(ARCH:C,/src/.*,,) eval $(BINS) :JOINT: .FORCE .WWW.semaphore rsh $(HOST) " eval \"\`bin/package debug use\`\" PATH=\$PATH:$(PATH):/usr/ccs/bin umask 022 for dir in $(DIRS) do cd \$dir $(MAKE) $(-) $(=) --errorid=\$dir www.bin done " end end /* * :WWWPOST: [ host [ dir [ tmp ] ] ] * * post local $(WWWDIR) to host:dir putting archives in host:tmp/www-*.pax * defaults: host=www dir=$(WWWDIR) tmp=tmp */ ":WWWPOST:" : .MAKE .OPERATOR local ( host dir tmp ignore ... ) $(>) www $(WWWDIR:B:S) tmp ignore :ALL: delta.pax .WWW.ALL : .WWW.REMOTE - .WWW.LOCAL eval .POST : .VIRTUAL base.pax delta.pax case "$$(>)" in '') ;; *) $$(>:C,.*,rcp & $(host):$(tmp)/$(dir)-&;,) rsh $(host) ' umask 022 PATH=$HOME/bin:$PATH cd $(dir) pax -rvf $HOME/$(tmp)/$(dir)-delta.pax -z $HOME/$(tmp)/$(dir)-base.pax ' ;; esac end base.pax : cd $(WWWDIR) pax -wvf $(<:P=A) . .base.list. : .FUNCTION local X X := $(sh pax -f $(%:N=*.pax):C,\n, ,G:C,^,$$(WWWDIR)/,) $(X) : .DONTCARE return $(X) delta.pax : .WWW.ALL base.pax $$(.base.list. $$(*)) cd $(WWWDIR) pax -wvf $(<:P=A) -z $(*:N=*.pax:P=A) . .WWW.FAQ : .USE { set -o noglob print .xx title=\"$(<:B:/\..*//) FAQ index\" print .MT 4 print .TL print print .H 1 \"$(<:B:/\..*//) FAQ index\" print .BL for i in $(*) do exec < $i || exit 1 e=0 l=0 x=y while read -r op a1 a2 do case $op in .H) case $e in 0) e=1 ;; 1) print .LE ;; esac print .sp print .LI a2=${a2//\"/} a2=${a2%\ [Ff][Aa][Qq]} f=${i%.*}.html f=${f#*/} print .xx link=\"$f' '$a2\" print .sp print .NL ;; .AL|.BL|.NL) case $x in y) x=x ;; *) x=xx$x ;; esac ;; .LE) x=${x%xx} ;; .LI) case $x in x) x= print .LI ;; esac ;; .sp) case $x in '') x=x ;; esac ;; *) case $x in '') print -r -- $op $a1 $a2 ;; esac ;; esac done case $e in 1) print .LE ;; esac done print .LE } > $(<) /* * [ dir ] :WWWPAGE: [ source ... ] file.mm file * * *.mm generates *.html * faq.*.mm generates faq.mm * other files copied to $(WWWDIR)[/dir] * files after - (toggle) are just asserted on :: */ ":WWWPAGE:" : .MAKE .OPERATOR local B D I J O P Q S X G A A = 0 D := $(<:O=1) P := $(>:N!=*=*) S := $(>:N=*=*) if X = "$(P:B:S:N=faq.*.mm)" Q := $(D:+$(D).)faq.mm $(Q) : .WWW.FAQ $(X) P += $(Q) end if D B := $(D:B) if D != "/*" D := $(WWWDIR)/$(D) $(D) :INSTALLDIR: .WWW.LOCAL : $(D) end for I $(<:B) .WWW.LOCAL : $(WWWDIR)/man/man1/$(I).html $(WWWDIR)/man/man1/$(I).html : .DONTCARE end for I $(P) if I == "-" let A = !A continue end if A || I == "$(WWWSAVE)" :: $(I) continue end if "$(I:T=FD)" .SOURCE : $(I) if "$(<)" WWWSOURCE.$(<:O=1) += $(I:T=F:P=L=*) end continue end if I == "*.html" $(I) : .TERMINAL O := $(I) X := $(I) elif ( G = "$(I:G=%.html)" ) $(G) : .IMPLICIT $(S) $(I) if $(G:O) > 1 for J $(G) if J == "*-index.html" if J == "faq.*.*" continue end O := index.html else O := $(J) end .WWW.LOCAL : $(D)/$(O) $(D)/$(O) :INSTALL: $(J) end continue end if X X := $(I) else X := index end I := $(I:B:S=.html) O := $(X:B:S=.html) else O := $(I) end $(D)/$(O) :INSTALL: $(I) .WWW.LOCAL : $(D)/$(O) end else for I $(P) if I == "-" let A = !A continue end if A || I == "$(WWWSAVE)" :: $(I) continue end if "$(I:T=FD)" .SOURCE : $(I) continue end if I == "*.html" $(I) : .TERMINAL O := $(I) elif ( O = "$(I:G=%.html)" ) $(O) : $(S) .IMPLICIT $(I) end for J $(O) if J == "*-index.html" X := index.html else X := $(J) end X := $(WWWDIR)/$(X) .WWW.LOCAL : $(X) $(X) :COPY: $(J) end end end /* * rhs done by default */ ":WWWALL:" : .MAKE .OPERATOR .WWW.ALL : $(>) ":WWWMAN:" : .MAKE .OPERATOR .INIT : .WWW.MAN .WWW.MAN. := $(>) .WWW.MAN : .MAKE .FORCE local H I for I $(.WWW.MAN.) .WWW.LOCAL : $(WWWDIR)/man/man1/$(I:B).html $(WWWDIR)/man/man1/$(I:B).html : .DO.WWW.MAN $(I) end for I $(sh builtin:B) .WWW.LOCAL : $(WWWDIR)/man/man1/$(I).html $(WWWDIR)/man/man1/$(I).html : .DO.WWW.MAN - end for I $("$(BINDIR)/*([!-.])":P=G:B) if I != "*_*" H := $(WWWDIR)/man/man1/$(I).html if ! "$(*$(H))" && I != "$(.WWW.NOMAN.:/ /|/G)" .WWW.LOCAL : $(H) end elif "$(PATH:/:/ /G:X=$(I:/.*_//):T=F:O=1)" H := $(WWWDIR)/man/man1/$(I:/.*_//).html .WWW.LOCAL : $(H) $(H) : .DO.WWW.MAN $(BINDIR)/$(I) end end .WWW.SED. : .FUNCTION local E T E = s/^\(\.xx.link=.*\)%HOSTTYPE%\(.*\)%HOSTTYPE%\(.*\)/ for T $(%) E := $(E:V)\$$("\n").LI\$$("\n")\1$(T)\2$(T)\3 end return $(E:V)/ /* * mm scan support */ .SCAN.mm : .SCAN O|S| I|.sn %|A.DONTCARE|M$$(%)| I|.so %|A.DONTCARE|M$$(%)| .ATTRIBUTE.%.mm : .SCAN.mm