|
|
@@ -1,119 +0,0 @@
|
|
|
-#!/bin/sh
|
|
|
-# vi: ft=awk :
|
|
|
-#
|
|
|
-# Script to extract functions and external variables off SUS html docs
|
|
|
-#
|
|
|
-# Copyright (C) 2010 Bernhard Reutner-Fischer
|
|
|
-# Public Domain
|
|
|
-
|
|
|
-# Usage:
|
|
|
-# wget http://www.opengroup.org/onlinepubs/9699919799/download/susv4.tgz
|
|
|
-# tar xzf susv4.tgz
|
|
|
-# SUS=susv4 html2input.sh -vFULL_DECLARATIONS=1
|
|
|
-# or
|
|
|
-# SUS=susv4 html2input.sh -vFULL_DECLARATIONS=0 -vSTDNAME=SUSv4
|
|
|
-#
|
|
|
-# Bug in time.h.html of SUSv4:
|
|
|
-# It inconsistently reads "as variables" instead of "external variables" that
|
|
|
-# is used everywhere except in time.h.html
|
|
|
-
|
|
|
-test "x$SUS" = "x" && SUS="susv4"
|
|
|
-test "x$AWK" = "x" && AWK="AWK"
|
|
|
-test "x$GREP" = "x" && GREP="GREP"
|
|
|
-for h in \
|
|
|
- $($GREP -l "shall be declared as functions" $SUS/basedefs/*.h.html) \
|
|
|
- $($GREP -l "shall declare the following as variables" $SUS/basedefs/*.h.html) \
|
|
|
- $($GREP -l "shall declare the following external variables" $SUS/basedefs/*.h.html)
|
|
|
-do
|
|
|
-$AWK $* '
|
|
|
-function get_filename () {
|
|
|
- if (NR == 1) {
|
|
|
- x=FILENAME
|
|
|
- sub(".*/", "", x)
|
|
|
- split(x, f , ".")
|
|
|
- fname=f[1]
|
|
|
- if (STDNAME)
|
|
|
- fname=fname "." STDNAME
|
|
|
- fname=fname ".in"
|
|
|
- printf "" > fname
|
|
|
- }
|
|
|
-}
|
|
|
-function unhtml (l) {
|
|
|
- sub("<tt>", "", l)
|
|
|
- sub("</tt>", "", l)
|
|
|
- sub("<sup>", "", l)
|
|
|
- sub("</sup>", "", l)
|
|
|
- sub("<a [^>]*>", "", l)
|
|
|
- sub("</a>", "", l)
|
|
|
- if (l ~ /<img[^>]*Option[[:space:]][[:space:]]*Start[^>]*>/) {
|
|
|
- sub("<img[^>]*>", "[Option Start]", l)
|
|
|
- } else if (l ~ /<img[^>]*Option[[:space:]][[:space:]]*End[^>]*>/) {
|
|
|
- sub("<img[^>]*>", "[Option End]", l)
|
|
|
- }
|
|
|
- sub("<.*>", "", l)
|
|
|
- return l
|
|
|
-}
|
|
|
-function get_funcname (l) {
|
|
|
- if (FULL_DECLARATIONS)
|
|
|
- return l
|
|
|
- if (l !~ /;$/)
|
|
|
- return l
|
|
|
- cnt = split(l, foo, " ")
|
|
|
- if (cnt >= 2 && foo[2] ~ /^\(\*/) {
|
|
|
- cnt = split(l, foo, "(")
|
|
|
- # good enough for signal() and sigset()
|
|
|
- if (cnt >= 2)
|
|
|
- l=foo[2]
|
|
|
- } else {
|
|
|
- sub("\\(.*", "", l)
|
|
|
- }
|
|
|
- gsub("[[\\]\\*]", "", l)
|
|
|
- i = split(l, a, " ")
|
|
|
- if (i)
|
|
|
- l = a[i]
|
|
|
- return l
|
|
|
-}
|
|
|
-function get_varname (l) {
|
|
|
- if (FULL_DECLARATIONS)
|
|
|
- return l
|
|
|
- if (l !~ /;$/)
|
|
|
- return l
|
|
|
- gsub(",[[:space:]][[:space:]]*", ",", l)
|
|
|
- sub(";$", "", l)
|
|
|
- i = split(l, a, " ")
|
|
|
- if (i)
|
|
|
- l = a[i]
|
|
|
- gsub("[[\\]\\*]", "", l)
|
|
|
- gsub(",", "\n", l)
|
|
|
- return l
|
|
|
-}
|
|
|
-BEGIN{data=0;l=""}
|
|
|
-get_filename()
|
|
|
-/shall be declared as functions/{data=1;isvar=0;next;}
|
|
|
-/shall declare the following as variables/{data=1;isvar=1;next;}
|
|
|
-/shall declare the following external variables/{data=1;isvar=1;next;}
|
|
|
-/<pre>/{data++;next;}
|
|
|
-/<\/pre>/{data=0;next;}
|
|
|
-/.*/{
|
|
|
- if (data == 2 && fname) {
|
|
|
- tmp = $0
|
|
|
- sub("^[[:space:]][[:space:]]*", " ", tmp)
|
|
|
- l = l tmp
|
|
|
- tmp = unhtml(l)
|
|
|
- if (!tmp)
|
|
|
- next
|
|
|
- l = tmp
|
|
|
- if (tmp !~ /;$/ && tmp !~ />$/ &&
|
|
|
- tmp !~ /Option Start\]$/ && tmp !~ /Option End\]$/)
|
|
|
- next
|
|
|
- if (!isvar)
|
|
|
- l = get_funcname(l)
|
|
|
- else
|
|
|
- l = get_varname(l)
|
|
|
- if (l)
|
|
|
- print l >> fname
|
|
|
- l=""
|
|
|
- }
|
|
|
-}
|
|
|
-' $h
|
|
|
-done
|