diff options
Diffstat (limited to 'scripts/FIXME_list.sh')
-rwxr-xr-x | scripts/FIXME_list.sh | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/scripts/FIXME_list.sh b/scripts/FIXME_list.sh new file mode 100755 index 0000000..59ba3c0 --- /dev/null +++ b/scripts/FIXME_list.sh @@ -0,0 +1,113 @@ +#!/bin/sh +# +# FIXME_list.sh +# +# Display FIXME segments from man-pages source files +# +# (C) Copyright 2007 & 2013, Michael Kerrisk +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details +# (http://www.gnu.org/licenses/gpl-2.0.html). +# +###################################################################### +# +# (C) Copyright 2006 & 2013, Michael Kerrisk +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details +# (http://www.gnu.org/licenses/gpl-2.0.html). +# +# + +show_all="n" +while getopts "a" optname; do + case "$optname" in + + a) # "all" + # Even show FIXMEs that aren't generally interesting. (Typically + # these FIXMEs are notes to the maintainer to reverify something + # at a future date.) + + show_all="y" + ;; + + *) echo "Unknown option: $OPTARG" + exit 1 + ;; + + esac +done + +shift $(( $OPTIND - 1 )) + +if test $# -eq 0; then + echo "Usage: $0 [-a] pathname..." 1>&2 + exit 1; +fi + +for dir in "$@"; do + for page in $(find "$dir" -type f -name '*.[1-9]' \ + -exec grep -l FIXME {} \; | sort) + do + cat "$page" | awk -v SHOW_ALL=$show_all -v PAGE_NAME="$page" \ + ' + BEGIN { + page_FIXME_cnt = 0; + } + + /FIXME/ { + + # /.\" FIXME . / ==> do not display this FIXME, unless + # -a command-line option was supplied + + if ($0 ~ /^\.\\" FIXME \./ ) + FIXME_type = "hidden" + else if ($0 ~ /^\.\\" FIXME *\?/ ) + FIXME_type = "question" + else + FIXME_type = "normal"; + if (FIXME_type == "normal" || SHOW_ALL == "y") { + if (page_FIXME_cnt == 0) { + print "=========="; + print PAGE_NAME; + } + page_FIXME_cnt++; + + finished = 0; + do { + print $0; + + # Implicit end of FIXME is end-of-file or a line + # that is not a comment + + if (getline == 0) + finished = 1; + + if (!($0 ~ /^.\\"/)) + finished = 1; + + # /.\" .$/ ==> Explicit end of FIXME + + if ($0 ~ /^.\\" \.$/) + finished = 1; + } while (!finished); + + print ""; + } + } + ' + done | sed -e 's/^\.\\"/ /' | sed -e 's/ *$//' | cat -s +done |