| #!/bin/sh |
| # |
| # unformat_parens.sh |
| # |
| # The manual pages before 2.10 format parentheses |
| # inconsistently. In some cases they are like: |
| # |
| # .B name() |
| # |
| # while in others they are like: |
| # |
| # .BR name () |
| # |
| # This script changes instances to the latter format. |
| # It does not fix all such instances: some will have to be |
| # done manually. |
| # |
| # Use the "-n" option for a dry run, in order to see what would be |
| # done, without actually doing it. |
| # |
| ###################################################################### |
| # |
| # (C) Copyright 2005 & 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). |
| # |
| # |
| |
| file_base="tmp.$(basename $0)" |
| |
| work_dst_file="$file_base.dst" |
| work_src_file="$file_base.src" |
| |
| all_files="$work_dst_file $work_src_file" |
| |
| # Command-line option processing |
| |
| really_do_it=1 |
| while getopts "n" optname; do |
| case "$optname" in |
| n) really_do_it=0; |
| ;; |
| *) echo "Unknown option: $OPTARG" |
| exit 1 |
| ;; |
| esac |
| done |
| |
| shift $(( $OPTIND - 1 )) |
| |
| # Only process files with > 1 line -- single-line files are link files |
| |
| for page in $(wc "$@" 2> /dev/null | awk '$1 > 1 {print $4}'| \ |
| grep -v '^total'); do |
| |
| cp $page $work_dst_file |
| |
| echo ">>>>>>>>>>>>>>>>>>>>>>>>>" $page "<<<<<<<<<<<<<<<<<<<<<<<<<" |
| |
| if false; then |
| grep '^\.I *[a-z0-9_][a-z0-9_]*()$' $page |
| grep '^\.B *[a-z0-9_][a-z0-9_]*()$' $page |
| echo '###' |
| grep '^\.[BIR][BIR] *[a-z0-9_][a-z0-9_]*()$' $page |
| echo '###' |
| grep '^\.[BIR][BIR] *[a-z0-9_][a-z0-9_]*() [^"]*$' $page |
| echo '###' |
| grep '()\\f[PR]' $page |
| echo '###' |
| fi |
| |
| cp $work_dst_file $work_src_file |
| cat $work_src_file | \ |
| sed \ |
| -e '/^\.B *[a-z0-9_][a-z0-9_]*() *$/s/^\.B/.BR/' \ |
| -e '/^\.I *[a-z0-9_][a-z0-9_]*() *$/s/^\.I/.IR/' \ |
| > $work_dst_file |
| |
| cp $work_dst_file $work_src_file |
| cat $work_src_file | \ |
| sed \ |
| -e '/^\.[BIR][BIR] *[a-z0-9_][a-z0-9_]*()$/s/()/ ()/' \ |
| > $work_dst_file |
| |
| cp $work_dst_file $work_src_file |
| cat $work_src_file | \ |
| sed \ |
| -e '/^\.[BIR][BIR] *[a-z0-9_][a-z0-9_]*() [^"]*$/s/() / ()/' \ |
| > $work_dst_file |
| |
| cp $work_dst_file $work_src_file |
| cat $work_src_file | \ |
| sed \ |
| -e '/()\\fP/s/()\\fP/\\fP()/g' \ |
| -e '/()\\fR/s/()\\fR/\\fR()/g' \ |
| > $work_dst_file |
| |
| if ! cmp -s $page $work_dst_file; then |
| diff -u $page $work_dst_file |
| |
| if test $really_do_it -ne 0; then |
| cat $work_dst_file > $page |
| fi |
| |
| else |
| echo "### NOTHING CHANGED" |
| fi |
| done |
| |
| # clean up |
| |
| rm -f $all_files |
| exit 0 |