Module Name: src Committed By: jakllsch Date: Tue Mar 23 19:19:03 UTC 2010
Added Files: src/share/man/man8: MAKEDEV2manpage.awk Log Message: This actually wasn't (completely) replaced by a shell script, restore. To generate a diff of this commit: cvs rdiff -u -r0 -r1.13 src/share/man/man8/MAKEDEV2manpage.awk Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Added files: Index: src/share/man/man8/MAKEDEV2manpage.awk diff -u /dev/null src/share/man/man8/MAKEDEV2manpage.awk:1.13 --- /dev/null Tue Mar 23 19:19:03 2010 +++ src/share/man/man8/MAKEDEV2manpage.awk Tue Mar 23 19:19:03 2010 @@ -0,0 +1,231 @@ +# $NetBSD: MAKEDEV2manpage.awk,v 1.13 2010/03/23 19:19:03 jakllsch Exp $ +# +# Copyright (c) 2002 +# Dieter Baron <di...@netbsd.org>. All rights reserved. +# Copyright (c) 1999 +# Hubert Feyrer <hube...@netbsd.org>. All rights reserved. +# [converted from Hubert's Perl version] +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. All advertising materials mentioning features or use of this software +# must display the following acknowledgement: +# This product includes software developed by Hubert Feyrer for +# the NetBSD Project. +# 4. Neither the name of the University nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# +# +########################################################################### +# +# Convert src/etc/MAKEDEV.tmpl and +# src/share/man/man8/MAKEDEV.8.template to +# src/share/man/man8/MAKEDEV.8, replacing +# - @@@SPECIAL@@@ with all targets in the first section (all, std, ...) +# - @@@DEVICES@@@ with the remaining targets +# - @@@ARCH@@@ with the architecture name +# + +# XXX: uses non-standard AWK function toupper() + +BEGIN { + MAKEDEV = "../../../etc/MAKEDEV.tmpl"; + print ".\\\" *** ------------------------------------------------------------------"; + print ".\\\" *** This file was generated automatically"; + print ".\\\" *** from src/etc/MAKEDEV.tmpl and"; + print ".\\\" *** src/share/man/man8/MAKEDEV.8.template"; + print ".\\\" ***"; + print ".\\\" *** DO NOT EDIT - any changes will be lost!!!"; + print ".\\\" *** ------------------------------------------------------------------"; + print ".\\\""; +} + +function read1line() { + if (r1kept) + r1l = r1last; + else + getline r1l < MAKEDEV; + + while (r1l ~ /^#[ \t]*$/) + getline r1l < MAKEDEV; + + if (r1l ~ /^#[ \t]/) { + if (r1l ~ /^# /) { + # Not a device/other target + r1kept = 0; + } + else { + # Continuation line (?) + getline r1ll < MAKEDEV; + while (r1ll ~ /^#\t[ \t]/) { + sub(/^#\t[ \t]/, " ", r1ll); + r1l = r1l r1ll; + getline r1ll < MAKEDEV; + } + r1last = r1ll; + r1kept = 1; + } + } + else + r1kept = 0; + + return 1; +} + +/^@@@SPECIAL@@@$/ { + print ".\\\" " $0; + print ".Bl -tag -width 01234567 -compact"; + + while (getline l < MAKEDEV > 0 && l !~ /^#.*Device.*Valid.*argument/) + ; + while (read1line() && r1l ~ /^#\t/) { + sub(/#[ \t]*/, "", r1l); + target=r1l; + sub(/[ \t].*/, "", target); + line=r1l; + sub(/[^ \t]*[ \t]/, "", line); + # replace "foo" with ``foo'' + gsub(/\"[^\"]*\"/, "``&''", line) + gsub(/\"/, "", line) + gsub(/[ \t]+/, " ", line); + print ".It Ar " target; + print toupper(substr(line, 1, 1)) substr(line, 2); + + } + r1last = r1l; + r1kept = 1; + print ".El"; + next; +} +/^@@@DEVICES@@@$/ { + print ".\\\" " $0; + print ".Bl -tag -width 01"; + + read1line(); + do { + sub(/^#[ \t]+/, "", r1l); + if (r1l ~ /[^ \t]:$/) + sub(/:$/, " :", r1l); + print ".It " r1l; # print section heading + + print ". Bl -tag -width 0123456789 -compact"; + while(read1line() && r1l ~ /^#\t/) { + gsub(/#[ \t]+/, "", r1l); + target=r1l; + sub(/[ \t].*/, "", target); + line=r1l; + sub(/[^ \t]*[ \t]+/, "", line); + sub(/\*/, "#", target); + # replace "foo" with ``foo'' + gsub(/\"[^\"]*\"/, "``&''", line) + gsub(/\"/, "", line) + # fix collateral damage of previous + sub(/5 1\/4''/, "5 1/4\"", line) + sub(/3 1\/2``/, "3 1/2\"", line) + # gc whitespace + sub(/\(XXX[^)]*\)/, "", line); + sub(/[ \t]*$/, "", line); + + # add manpage, if available + if (target == "fd#") + page = "fdc" + else if (target == "pms#") + page = "opms" + else if (target == "ed#") + page = "edc" + else if (target == "ttye#") + page = "ite" + else if (target == "ttyh#") + page = "sab" + else if (target == "ttyU#") + page = "ucom" + else if (target == "fd") + page = "-----" # force no .Xr + else if (target == "sysmon") + page = "envsys" + else if (target == "ttyZ#") + page = "zstty" + else if (target == "ttyCZ?") + page = "cz" + else if (target == "ttyCY?") + page = "cy" + else if (target == "ttyB?") + page = "scc" + else if (target == "random") + page = "rnd" + else if (target == "scsibus#") + page = "scsi" + else { + page=target; + sub(/[^a-zA-Z]+/, "", page); + } + + str = "ls ../man4/" page ".4 ../man4/man4.*/" page ".4 2>/dev/null" + while(str | getline) { + if (system("test -f " $0) != 0) + continue + + # get the manpage including opt. arch name + sub(/^\.\.\/man4\//, "") + sub(/^man4\./, "") + sub(/\.4$/, "") + + sub(/[ \t]*$/, "", line); + if (line ~ /see/) { + # already a manpage there, e.g. scsictl(8) + line = line " ,"; + } + else + line = line ", see"; + # Add .Xr \&foo 4 - ampersand to work around + # manpages that are *roff commands at the same + # time + line = line "\n.Xr \\&" $0 " 4"; + } + close(str) + + gsub(/[ \t]+$/, "", line); + gsub(/[ \t]+/, " ", line); + + print ". It Ar " target; + line2=toupper(substr(line, 1, 1)) substr(line, 2); + sub(/Wscons/, "wscons", line2); + sub(/Pccons/, "pccons", line2); + print line2; + } + print MANPAGE ". El"; + } while (r1l ~ /^# /); + + print ".El"; + next; +} +/@@@ARCH@@@/ { + gsub(/@@@ARCH@@@/, ARCH); +} +# date is substituted in the shell script +#/@@@DATE@@@/ { +# # date +#} +/\$NetBSD/ { + sub(/\$NetBSD.*\$/, "$""NetBSD$"); +} +{ print }