# The following globals are used: # documented: maps documented entries (each key is an entry) # entries: maps ctl_table names and procnames to counts (so # enumerating the subkeys for a given ctl_table lists its # procnames) # curtable: the name of the current ctl_table struct # curentry: the name of the current proc entry (procname when parsing # a ctl_table, constructed path when parsing a ctl_path)
# Remove punctuation from the given value
function trimpunct(value) { while (value ~ /^["&]/) {
value = substr(value, 2)
} while (value ~ /[]["&,}]$/) {
value = substr(value, 1, length(value) - 1)
} return value
}
# Print the information for the given entry
function printentry(entry) {
seen[entry]++
printf "* %s from %s", entry, file[entry] if (documented[entry]) {
printf " (documented)"
}
print ""
}
# Stage 1: build the list of documented entries
FNR == NR && /^=+$/ { for (i in skiplist) { if (prevline ~ skiplist[i]) {
next
}
}
# The previous line is a section title, parse it
$0 = prevline if (debug) print "Parsing " $0
inbrackets = 0 for (i = 1; i <= NF; i++) { if (length($i) == 0) { continue
} if (!inbrackets && substr($i, 1, 1) == "(") {
inbrackets = 1
} if (!inbrackets) {
token = trimpunct($i) if (length(token) > 0 && token != "and") { if (debug) print trimpunct($i)
documented[trimpunct($i)]++
}
} if (inbrackets && substr($i, length($i), 1) == ")") {
inbrackets = 0
}
}
}
FNR == NR {
prevline = $0
next
}
# Stage 2: process each file and find all sysctl tables
BEGINFILE { delete entries
curtable = ""
curentry = "" delete vars if (debug) print "Processing file " FILENAME
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.