#!/bin/sh
# $LynxId: indent.sh,v 1.5 2018/07/08 15:22:44 tom Exp $
# Indent LYNX files (for reference).  See "lnx-indent" from
#	https://invisible-island.net/cindent/
NOOP=no
OPTS='
--blank-lines-after-declarations
--blank-lines-after-procedures
--braces-on-if-line
--continue-at-parentheses
--cuddle-else
--dont-break-procedure-type
--indent-level4
--leave-preprocessor-space
--line-length80
--no-space-after-function-call-names
--parameter-indentation4
--space-after-cast
--space-special-semicolon
--swallow-optional-blank-lines
-T AddressDefList 
-T BOOL
-T BOOLEAN
-T CSOfield_info 
-T DIR
-T DocAddress 
-T DocInfo 
-T DocObj
-T EntryInfo 
-T EditFieldData 
-T FILE
-T GCC_NORETURN 
-T GCC_UNUSED 
-T GLOBALREF 
-T GroupDef 
-T GroupDefList 
-T HTAAFailReasonType 
-T HTAAProt 
-T HTAARealm 
-T HTAAServer 
-T HTAssoc 
-T HTAssocList 
-T HTAtom 
-T HTBTElement 
-T HTBTree 
-T HTChildAnchor 
-T HTChunk 
-T HTConverter 
-T HTFormat 
-T HTLine 
-T HTLinkType 
-T HTList 
-T HTParentAnchor 
-T HTParentAnchor0 
-T HTPresentation 
-T HTStream
-T HTStyle 
-T HTStyleChange 
-T HTStyleSheet 
-T HText 
-T HyperDoc 
-T InitResponseAPDU 
-T Item 
-T ItemList 
-T LYNX_ADDRINFO
-T LYNX_HOSTENT
-T LYUCcharset 
-T LexItem 
-T ProgramPaths 
-T STable_cellinfo 
-T STable_info 
-T STable_rowinfo 
-T STable_states 
-T SearchAPDU 
-T SearchResponseAPDU 
-T TextAnchor 
-T UCode_t 
-T UserDefList 
-T WAISDocumentCodes 
-T WAISDocumentHeader 
-T WAISDocumentHeadlines 
-T WAISDocumentLongHeader 
-T WAISDocumentShortHeader 
-T WAISDocumentText 
-T WAISInitResponse 
-T WAISSearch 
-T _cdecl
-T any 
-T bit_map 
-T boolean 
-T bstring 
-T data_tag
-T eServerType 
-T lynx_list_item_type 
-T pdu_type
-T query_term 
-nbacc
'
for name in $*
do
	case $name in
	-n)	NOOP=yes
		OPTS="$OPTS -v"
		;;
	-*)
		OPTS="$OPTS $name"
		;;
	*.[ch])
		save="${name}".a$$
		test="${name}".b$$
		rm -f "$save" "$test"
		mv "$name" "$save"
		sed \
			-e '/MODULE_ID(/s/)$/);/' \
			-e 's,)[ 	]*\<GCC_PRINTFLIKE,);//GCC_PRINTFLIKE,' \
			-e 's,[ 	]*\<GCC_NORETURN;,;//GCC_NORETURN;,' \
			-e 's,[ 	]*\<GCC_UNUSED;,;//GCC_UNUSED;,' \
			"$save" >"$test"
		cp "$test" "$name"
		chmod u+w "$name"
		${INDENT_PROG-indent} -npro $OPTS "$name"
		sed \
			-e '/MODULE_ID(/s/);$/)/' \
			-e 's,;[ 	]*//GCC_UNUSED;, GCC_UNUSED;,' \
			-e 's,;[ 	]*//GCC_NORETURN;, GCC_NORETURN;,' \
			-e 's,);[ 	]*//GCC_PRINTFLIKE,) GCC_PRINTFLIKE,' \
			"$name" >"$test"
		mv "$test" "$name"
		rm -f "${name}~"
		if test $NOOP = yes ; then
			if ! ( cmp -s "$name" $save )
			then
				diff -u $save "$name"
			fi
			mv "$save" "$name"
			rm -f "${name}~"
		else
			if ( cmp -s "$name" "$save" )
			then
				echo "** unchanged $name"
				rm -f "${name}" "${name}~"
				mv "$save" "$name"
			else
				echo "** updated $name"
				rm -f "$save"
			fi
		fi
		;;
	*)
		echo "** ignored:   $name"
		;;
	esac
done
