1
0
Fork 0
screen/etc/newsyntax38
Daniel Baumann e88291c4cd
Adding upstream version 4.9.1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-06-22 15:19:57 +02:00

71 lines
2 KiB
Bash
Executable file

#! /bin/sh
#
# newsyntax38 -- update a screenrc file from 3.3 to 3.8 syntax
#
# Please bring your scripts up to syntax level 3.3 before running this script.
# Please check all comments after running this script and watch out
# for funny passages.
#
# * aka and shellaka are replaced by title and shelltitle.
#
# * Pairs of termcap and terminfo commands are folded into a single
# termcapinfo command where possible.
#
# * trailing blanks are zapped. Unintentionally.
#
# 12.10.95, jnweiger, use at your own risk.
#
if [ $# != 1 ]; then
echo "usage $0 screenrcfile"
echo ""
echo "The named file will be updated in place to the syntax of screen 3.8"
echo "A backup copy will be written to <screenrcfile>.bak"
exit 1;
fi
#Ultrix 4.2 /bin/sh does not handle "read a < $1"
#Dean Gaudet <dgaudet@watdragon.uwaterloo.ca>
exec < $1
read a
if [ "$a" = "#3.8" ]; then
echo "$1 already updated"
exit 0
fi
rm -f $1.old $1.dups
cp $1 $1.old
echo "#3.8" > $1
echo "# Do not remove the above line. This screen rc file was updated" >> $1
echo "# by the newsyntax script." >> $1
# termcap and terminfo lines can only be folded when there is no parameter
# expansion in the codes. Parameters are denoted differently in
# termcap and termcap syntax. Everything else is identical, I assume.
# Thus codes not containing '%' can be savely folded.
sed < $1.old > $1.dups \
-e 's/^\([ #]*\)aka/\1title/' \
-e 's/^\([ #]*\)shellaka/\1shelltitle/' \
-e 's/^\([ #]*\)termcap[ ][ ]*\([^%]*$\)/\1termcapinfo \2/' \
-e 's/^\([ #]*\)terminfo[ ][ ]*\([^%]*$\)/\1termcapinfo \2/' \
-e 's/\\/\\\\/g'
# Oh, my bourne shell seems to gobble backslashes while reading.
# Thus the sed above duplicates them in advance.
# Hope this is not just another silly bash featureism.
# It still zaps trailing blanks. I do not know why. But that is nice.
exec < $1.dups
while read a ; do
if [ "$a" = "$b" ]; then
case "$a" in
*termcapinfo*) continue ;;
esac
fi
echo "$a" >> $1
b="$a"
done
rm -f $1.dups