⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gen-kdoc.sh

📁 xorp源码hg
💻 SH
字号:
#!/bin/sh## $XORP: xorp/docs/kdoc/gen-kdoc.sh,v 1.25 2007/03/14 01:33:58 pavlin Exp $### Script to generate kdoc documentation for XORP.### Defaults#DEBUG=0: ${KDOC_CMD:="kdoc"}## Kdoc format#DEFAULT_KDOC_FORMAT="html"KDOC_FORMAT="${DEFAULT_KDOC_FORMAT}"KDOC_FORMATS="html check man texinfo docbook latex"## Input and output directories#SRC_DIR="../.."KDOC_DEST_DIR="${SRC_DIR}/docs/kdoc"KDOC_LIB_DIR="${KDOC_DEST_DIR}/libdir"## Variable for HTML top-level index generation#HTML_TEMPLATES="html_templates"HTML_INDEX="html/index.html"HTML_INDEX_DATA="html/index.dat"HTML_CSS="--html-css http://www.xorp.org/xorp-kdoc.css"## Misc. pre-defined variables#HTML_LOGO="http://www.xorp.org/images/xorp-logo-medium.jpg"HTML_LOGO_LINK="http://www.xorp.org/"## Print message to stderr if DEBUG is set to non-zero value#dbg_echo(){    [ ${DEBUG:-0} -ne 0 ] && echo "$*" >&2}## glob_files [<glob_pattern1> [<glob pattern2> ...]]## Return glob expanded list of files# Takes glob patterns as arguments, eg#  glob_files *.hh *.h#glob_files(){    FILES=""    while [ $# -ne 0 ] ; do	RFILES=`ls ${SRC_DIR}/$1 2>/dev/null`	if [ -n "${RFILES}" ] ; then	    FILES="$FILES $RFILES"	fi	shift    done    echo $FILES}## exclude files <exclude_glob_pattern> <file_list>## Generates list of exclude files from <exclude_glob_pattern> and filters# them from <file_list>#exclude_files(){    if [ $# -eq 1 ] ; then    	echo "exclude file usage" >&2    fi    excluded=`glob_files $1`    printf "Excluded files:\n  list=\"$excluded\"\n\n" >&2    shift    if [ -z "$excluded" ] ; then	echo "$*"	return    fi    included=""    for i in $* ; do	ex=0	for x in $excluded ; do	    if [ "$i" = "$x" ] ; then		ex=1	    fi	done	if [ $ex -eq 0 ] ; then	    included="$included $i"	fi    done    echo "${included}"}## Generate xref arguments#xref(){    XREF=""    while [ $# -ne 0 ] ; do	XREF="$XREF --xref $1"	shift    done    echo ${XREF}}## Run kdoc# Expects variables "lib", "files", "excludes", "xref" to be set.#kdocify() {    title="Processing lib $lib"    rule=`echo $title | tr '[A-Za-z0-9_ -]' '='`    echo "$rule"    echo "$title"    echo "$rule"    printf "Parameters:\n  files=\"$files\" \n  excludes=\"$excludes\"\n  xref=\"$xref\"\n\n"    excludes=${excludes:-NONE}    FILES=`glob_files $files`    FILES=`exclude_files "$excludes" "$FILES"`    XREFS=`xref $xref`    OUTDIR=${KDOC_DEST_DIR}/${KDOC_FORMAT}/${lib}    mkdir -p $OUTDIR    echo "Created output directory $OUTDIR"    echo ${FILES} |							      \    ${KDOC_CMD} --outputdir ${OUTDIR}					      \	 ${XREFS}         						      \	 --format ${KDOC_FORMAT}					      \	 --strip-h-path        	       					      \	 --name $lib         						      \	 --libdir ${KDOC_LIB_DIR}					      \	 --html-logo ${HTML_LOGO}					      \	 --html-logo-link ${HTML_LOGO_LINK}				      \	 ${HTML_CSS}							      \	 --stdin							      \    | tee ${OUTDIR}/log    if [ "${KDOC_FORMAT}" = "html" ] ; then	html_index_add "${lib}" "${desc}" "${html_start_page}"    fi}html_index_start(){    mkdir -p html## All the html here is cut and paste from what kdoc generates, it will need# updating if we move to style sheets or kdoc changes.#    cat /dev/null > ${HTML_INDEX_DATA}}html_index_end(){    local DIR_NAME DESC START_PAGE START_URL WHO WHERE WHEN WITH ROW_BG i    OIFS="$IFS"    IFS="@"    echo "Generating ${HTML_INDEX}"    cat ${HTML_TEMPLATES}/index.html.top |				      \        sed -e "s<@HTML_LOGO@<${HTML_LOGO}<" > ${HTML_INDEX}    i=0    cat ${HTML_INDEX_DATA} | \	while read DIR_NAME DESC START_PAGE ; do	    # Frivalous coloring of cell background to match kdoc	    if [ `expr $i % 2` -eq 1 ] ; then		ROW_BG="class=\"leven\""	    else		ROW_BG="class=\"lodd\""	    fi	    START_URL=${DIR_NAME}/${START_PAGE}	    cat ${HTML_TEMPLATES}/index.html.entry | sed 		      \		-e "s<@START_URL@<${START_URL}<"			      \		-e "s<@DIR_NAME@<${DIR_NAME}<"				      \		-e "s<@DESC@<${DESC}<"					      \		-e "s<@ROW_BG@<$ROW_BG<"				      \		>> ${HTML_INDEX}	    i=`expr $i + 1`	done    WHO=`whoami`    WHEN=`date`    WHERE=`hostname`    WITH=`echo $0 | sed -e 's@.*/@@g'`    cat ${HTML_TEMPLATES}/index.html.bottom | sed			      \	-e "s<@WHO@<${WHO}<"						      \	-e "s<@WHERE@<${WHERE}<"					      \	-e "s<@WHEN@<${WHEN}<"						      \	-e "s<@WITH@<${WITH}<"						      \	>> ${HTML_INDEX}    # Clean up and restore    rm -f ${HTML_INDEX_DATA}    IFS="$OIFS"}html_index_add(){    echo "$1@$2@$3" >> ${HTML_INDEX_DATA}}## Print usage string#usage(){    cat >&2 <<EOFusage: gen-kdoc.sh [-f <format>]<format> must be one of "${KDOC_FORMATS}"  default="${DEFAULT_KDOC_FORMAT}"Note: option -f can be applied once.EOF    exit 1}validate_format(){    local FMT    for FMT in ${KDOC_FORMATS} ; do	if [ "X${FMT}" = "X${KDOC_FORMAT}" ] ; then	    return	fi    done    usage}## Main#while getopts "f:h?" chdo    case $ch in        f) KDOC_FORMAT=$OPTARG ;;        *) usage ;;    esacdonevalidate_formatif [ "${KDOC_FORMAT}" = "html" ] ; then    html_index_startfi################################################################################# Most of the work of this script is done by the kdocify routine.  kdocify# relies on the existence of a number of global variables to run correctly.## The following MUST  be set before calling kdocify:## lib		  := directory name as it appears under the top level#		     of the xorp tree.## desc 		  := textual description for the top-level html documentation.## html_start_page := html start page under the html/${lib}/ directory.  For#		     pure C code, the kdoc index.html file is not useful#		     since it normally lists classes and structures and not#		     globally defined functions.## files		  := files to parsed by kdoc under the top level of the xorp#		     tree.## excludes	  := files to excluded from from parsing.  Exists since#		     it's easier to wildcard include files, then exclude#		     a few.## xref		  := list of already kdoc'ed directories to cross reference#		     against.################################################################################## libxorp#kdoc_libxorp(){    lib="libxorp"    desc="XORP core type and utility library"    html_start_page="index.html"    files="libxorp/*.h libxorp/*.hh"    excludes="libxorp/callback.hh libxorp/callback_debug.hh libxorp/callback_nodebug.hh libxorp/old_trie.hh"    xref=""    kdocify}## callback.hh in libxorp#kdoc_callback(){    lib="libxorp-callback"    desc="XORP callback routines"    html_start_page="index.html"    files="libxorp/callback_nodebug.hh"    excludes=""    xref="libxorp"    kdocify}## libcomm#kdoc_libcomm(){    lib="libcomm"    desc="Socket library"    html_start_page="all-globals.html"    files="libcomm/*.h libcomm/*.hh"    excludes=""    xref="libxorp libxorp-callback"    kdocify}## libxipc#kdoc_libxipc(){    lib="libxipc"    desc="XORP interprocess communication library"    html_start_page="index.html"    files="libxipc/*.h libxipc/*.hh"    excludes=""    xref="libxorp libxorp-callback libcomm"    kdocify}## xrl_interfaces#kdoc_xrl_interfaces(){    lib="xrl-interfaces"    desc="Generated code for sending Xrl's to Targets"    html_start_page="index.html"    files="xrl/interfaces/*.hh"    excludes=""    xref="libxorp libxorp-callback libcomm libxipc"    kdocify}## xrl_targets#kdoc_xrl_targets(){    lib="xrl-targets"    desc="Generated Xrl Target base classes"    html_start_page="index.html"    files="xrl/targets/*.hh"    excludes=""    xref="libxorp libxorp-callback libcomm libxipc"    kdocify}## libproto#kdoc_libproto(){    lib="libproto"    desc="Protocol Node library used by XORP multicast processes"    html_start_page="index.html"    files="libproto/*.h libproto/*.hh"    excludes=""    xref="libxorp libxorp-callback libcomm libxipc"    kdocify}## mrt#kdoc_mrt(){    lib="mrt"    desc="Multicast Routing Table library"    html_start_page="index.html"    files="mrt/*.h mrt/*.hh"    excludes=""    xref="libxorp"    kdocify}## cli#kdoc_cli(){    lib="cli"    desc="Command Line Interface library"    html_start_page="index.html"    files="cli/*.h cli/*.hh"    excludes=""    xref="libxorp libxorp-callback libcomm libxipc xrl-interfaces xrl-targets libproto"    kdocify}## libfeaclient#kdoc_libfeaclient(){    lib="libfeaclient"    desc="Forwarind Engine Abstraction Client library"    html_start_page="index.html"    files="libfeaclient/*.h libfeaclient/*.hh"    excludes=""    xref="libxorp libxorp-callback libcomm libxipc xrl-interfaces xrl-targets"    kdocify}## fea#kdoc_fea(){    lib="fea"    desc="Forwarding Engine Abstraction daemon"    html_start_page="index.html"    files="fea/*.h fea/*.hh"    excludes=""    xref="libxorp libxorp-callback libcomm libxipc xrl-interfaces xrl-targets libproto mrt cli libfeaclient"    kdocify}## mld6igmp#kdoc_mld6igmp(){    lib="mld6igmp"    desc="Multicast Listener Discovery daemon"    html_start_page="index.html"    files="mld6igmp/*.h mld6igmp/*.hh"    excludes=""    xref="libxorp libxorp-callback libcomm libxipc libproto mrt cli fea xrl-interfaces xrl-targets"    kdocify}## pim#kdoc_pim(){    lib="pim"    desc="Protocol Independent Multicast (PIM) daemon"    html_start_page="index.html"    files="pim/*.h pim/*.hh"    excludes=""    xref="libxorp libxorp-callback libcomm libxipc xrl-interfaces xrl-targets libproto mrt cli fea mld6igmp"    kdocify}## Policy manager# kdoc_policy(){    lib="policy"    desc="Policy manager daemon"    html_start_page="index.html"    files="policy/*.h policy/*.hh"    excludes=""    xref="libxorp libxorp-callback libcomm libxipc xrl-interfaces xrl-targets libproto policy-common"    kdocify}## Policy backend# kdoc_libpolicybackend(){    lib="libpolicybackend"    desc="Policy backend filter"    html_start_page="index.html"    files="policy/backend/*.h policy/backend/*.hh"    excludes=""    xref="libxorp libxorp-callback libcomm libxipc xrl-interfaces xrl-targets libproto policy-common"    kdocify}## Policy common# kdoc_policycommon(){    lib="policy-common"    desc="Policy shared routines between backend/frontend"    html_start_page="index.html"    files="policy/common/*.h policy/common/*.hh"    excludes=""    xref="libxorp libxorp-callback libcomm libxipc xrl-interfaces xrl-targets libproto"    kdocify}## bgp#kdoc_bgp(){    lib="bgp"    desc="BGP4 daemon"    html_start_page="index.html"    files="bgp/*.h bgp/*.hh"    excludes="bgp/test_*.h bgp/test_*.hh"    xref="libxorp libxorp-callback libcomm libxipc xrl-interfaces xrl-targets libfeaclient libpolicybackend"    kdocify}## fib2mrib#kdoc_fib2mrib(){    lib="fib2mrib"    desc="FIB2MRIB daemon"    html_start_page="index.html"    files="fib2mrib/*.h fib2mrib/*.hh"    excludes=""    xref="libxorp libxorp-callback libcomm libxipc xrl-interfaces xrl-targets libfeaclient libpolicybackend"    kdocify}## mibs#kdoc_mibs(){    lib="mibs"    desc="MIB modules for Net-SNMP"    html_start_page="index.html"    files="mibs/*.h mibs/*.hh"    excludes="mibs/patched_container.h"    xref="libxorp libxipc xrl-interfaces xrl-targets"    kdocify}## ospf#kdoc_ospf(){    lib="ospf"    desc="Open Shortest Path First daemon"    html_start_page="index.html"    files="ospf/*.h ospf/*.hh"    excludes="ospf/test_*.h ospf/test_*.hh"    xref="libxorp libxorp-callback libxipc xrl-interfaces xrl-targets libproto libfeaclient libpolicybackend"    kdocify}## rib#kdoc_rib(){    lib="rib"    desc="Routing Information Base daemon"    html_start_page="index.html"    files="rib/*.h rib/*.hh"    excludes="rib/dummy_register_server.hh rib/parser_direct_cmds.hh rib/parser_xrl_cmds.hh rib/parser.hh"    xref="libxorp libxorp-callback xrl-interfaces xrl-targets libproto libfeaclient libpolicybackend"    kdocify}## rip#kdoc_rip(){    lib="rip"    desc="Routing Information Protocol"    html_start_page="index.html"    files="rip/*.h rip/*.hh"    excludes="rip/test_*.h rip/test_*.hh"    xref="libxorp libxorp-callback libxipc xrl-interfaces xrl-targets libfeaclient libpolicybackend"    kdocify}## rtrmgr#kdoc_rtrmgr(){    lib="rtrmgr"    desc="Router Manager"    html_start_page="index.html"    files="rtrmgr/*.h rtrmgr/*.hh"    excludes="rtrmgr/test_*.h rtrmgr/test_*.hh"    xref="libxorp libxorp-callback libcomm libxipc xrl-interfaces xrl-targets"    kdocify}## static_routes#kdoc_static_routes(){    lib="static_routes"    desc="Static Routes daemon"    html_start_page="index.html"    files="static_routes/*.h static_routes/*.hh"    excludes=""    xref="libxorp libxorp-callback libcomm libxipc xrl-interfaces xrl-targets libfeaclient libpolicybackend"    kdocify}KDOC_ALL_TGTS="libxorp callback libcomm libxipc libproto xrl_interfaces \	       xrl_targets mrt cli libfeaclient fea mld6igmp pim policycommon \	       libpolicybackend policy bgp fib2mrib mibs ospf rib rip rtrmgr static_routes": ${KDOC_TGTS:=${KDOC_ALL_TGTS}}for i in ${KDOC_TGTS} ; do    kdoc_$idone## Build html index if appropriate#if [ "${KDOC_FORMAT}" = "html" ] ; then    html_index_endfi

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -