diff --git a/edit_man.sh b/edit_man.sh
new file mode 100755
index 0000000..1fc4772
--- /dev/null
+++ b/edit_man.sh
@@ -0,0 +1,205 @@
+#! /bin/sh
+# this script is generated by the configure-script CF_MAN_PAGES macro.
+
+prefix="/usr"
+datarootdir="${prefix}/share"
+datadir="${datarootdir}"
+
+NCURSES_MAJOR="6"
+NCURSES_MINOR="5"
+NCURSES_PATCH="20240427"
+
+NCURSES_OSPEED="short"
+TERMINFO="/system_ext/etc/terminfo"
+TERMINFO_DIRS="/system_ext/etc/terminfo"
+
+INSTALL="/usr/bin/install -c"
+INSTALL_DATA="${INSTALL} -m 644"
+
+transform="s,x,x,"
+
+TMP=${TMPDIR:=/tmp}/man$$
+trap "rm -f $TMP; exit 1" 1 2 3 15
+trap "rm -f $TMP" 0
+
+form=$1
+shift || exit 1
+
+verb=$1
+shift || exit 1
+
+mandir=$1
+shift || exit 1
+
+srcdir=$1
+top_srcdir=$srcdir/..
+shift || exit 1
+
+if test "$form" = normal ; then
+	if test "no" = yes ; then
+	if test "no" = no ; then
+		/bin/sh "$0" format "$verb" "$mandir" "$srcdir" "$@"
+		exit 0
+	fi
+	fi
+	cf_subdir=$mandir/man
+	cf_tables=no
+else
+	cf_subdir=$mandir/cat
+	cf_tables=yes
+fi
+
+# process the list of source-files
+for i in "$@" ; do
+case $i in
+(*.orig|*.rej) ;;
+(*.[0-9]*)
+	section=`expr "$i" : '.*\.\([0-9]\)[xm]*'`;
+	if test "$verb" = installing ; then
+	if test ! -d "$cf_subdir${section}" ; then
+		mkdir -p "$cf_subdir$section"
+	fi
+	fi
+
+	# replace variables in man page
+	if test ! -f "/home/micky387/Omni/external/libncurses/man_alias.sed" ; then
+cat >>/home/micky387/Omni/external/libncurses/man_alias.sed <<-CF_EOF2
+		s,@DATADIR@,$datadir,g
+		s,@TERMINFO@,${TERMINFO:="no default value"},g
+		s,@TERMINFO_DIRS@,${TERMINFO_DIRS:="no default value"},g
+		s,@NCURSES_MAJOR@,${NCURSES_MAJOR:="no default value"},g
+		s,@NCURSES_MINOR@,${NCURSES_MINOR:="no default value"},g
+		s,@NCURSES_PATCH@,${NCURSES_PATCH:="no default value"},g
+		s,@NCURSES_OSPEED@,${NCURSES_OSPEED:="no default value"},g
+s,@CAPTOINFO@,captoinfo,g
+s,@CLEAR@,clear,g
+s,@INFOCMP@,infocmp,g
+s,@INFOTOCAP@,infotocap,g
+s,@RESET@,reset,g
+s,@TABS@,tabs,g
+s,@TIC@,tic,g
+s,@TOE@,toe,g
+s,@TPUT@,tput,g
+s,@TSET@,tset,g
+CF_EOF2
+		echo "...made /home/micky387/Omni/external/libncurses/man_alias.sed"
+	fi
+
+	aliases=
+	cf_source=`basename "$i"`
+	cf_full_alias=$cf_source
+	test ! -f "$cf_full_alias" && cf_full_alias="$srcdir/$cf_full_alias"
+	if test ! -f "$cf_full_alias" ; then
+		echo ".. skipped $cf_source"
+		continue
+	fi
+	nCurses=ignore.3x
+	cf_part_alias=`echo $cf_full_alias| sed -e 's,^.*/,,'`
+	test "yes" = yes && nCurses=ncurses.3x
+	aliases=`sed -f "$top_srcdir/man/manlinks.sed" "$cf_full_alias" |sed -f "/home/micky387/Omni/external/libncurses/man_alias.sed" | sort -u; test "$cf_part_alias" = "$nCurses" && echo curses`
+	cf_target=`grep "^$cf_source" /home/micky387/Omni/external/libncurses/man/man_db.renames | mawk '{print $2}'`
+	if test -z "$cf_target" ; then
+		echo "? missing rename for $cf_source"
+		cf_target="$cf_source"
+	fi
+	cf_target="$cf_subdir${section}/${cf_target}"
+
+	sed	-f "/home/micky387/Omni/external/libncurses/man_alias.sed" \
+		< "$i" | sed -f /home/micky387/Omni/external/libncurses/edit_man.sed >$TMP
+if test $cf_tables = yes ; then
+	tbl $TMP >$TMP.out
+	mv $TMP.out $TMP
+fi
+	if test "$form" = format ; then
+		nroff -man $TMP >$TMP.out
+		mv $TMP.out $TMP
+	fi
+	if test "$verb" = installing ; then
+	if ( "gzip" -f $TMP )
+	then
+		mv $TMP.gz $TMP
+	fi
+	fi
+	cf_target="$cf_target.gz"
+	suffix=`basename "$cf_target" | sed -e 's%^[^.]*%%'`
+	extra_suffix=
+	if test -n "" ; then
+		case $cf_target in
+		(*$suffix)
+			extra_suffix=""
+			;;
+		esac
+	fi
+	if test "$verb" = installing ; then
+		echo "$verb $cf_target"
+		$INSTALL_DATA $TMP "$cf_target"
+		test -d "$cf_subdir${section}" &&
+		test -n "$aliases" && (
+			cd "$cf_subdir${section}" && (
+				cf_source=`echo "$cf_target" |sed -e 's%^.*/\([^/][^/]*/[^/][^/]*$\)%\1%'`
+				test -n "gz" && cf_source=`echo "$cf_source" |sed -e 's%\.gz$%%'`
+				cf_target=`basename "$cf_target"`
+				for cf_alias in $aliases
+				do
+					if test "$section" = 1 ; then
+						cf_alias=`echo "$cf_alias" |sed "${transform}"`
+					fi
+					cf_alias="${cf_alias}${extra_suffix}"
+
+					if test "yes" = yes ; then
+						if test -f "$cf_alias${suffix}" ; then
+							if ( cmp -s "$cf_target" "$cf_alias${suffix}" )
+							then
+								continue
+							fi
+						fi
+						echo ".. $verb alias $cf_alias${suffix}"
+						ln -s -f "$cf_target" "$cf_alias${suffix}"
+					elif test "$cf_target" != "$cf_alias${suffix}" ; then
+						echo ".so $cf_source" >$TMP
+						if test -n "gz" ; then
+							"gzip" -n -f $TMP
+							mv $TMP.gz $TMP
+						fi
+						echo ".. $verb alias $cf_alias${suffix}"
+						rm -f "$cf_alias${suffix}"
+						$INSTALL_DATA $TMP "$cf_alias${suffix}"
+					fi
+				done
+			)
+		)
+	elif test "$verb" = removing ; then
+		test -f "$cf_target" && (
+			echo "$verb $cf_target"
+			rm -f "$cf_target"
+		)
+		test -d "$cf_subdir${section}" &&
+		test -n "$aliases" && (
+			cd "$cf_subdir${section}" && (
+				for cf_alias in $aliases
+				do
+					if test "$section" = 1 ; then
+						cf_alias=`echo "$cf_alias" |sed "${transform}"`
+					fi
+					cf_alias="${cf_alias}${extra_suffix}"
+
+					echo ".. $verb alias $cf_alias${suffix}"
+					rm -f "$cf_alias${suffix}"
+				done
+			)
+		)
+	else
+#		echo ".hy 0"
+		cat $TMP
+	fi
+	;;
+esac
+done
+
+if test "no" = yes ; then
+if test "$form" != format ; then
+	/bin/sh "$0" format "$verb" "$mandir" "$srcdir" "$@"
+fi
+fi
+
+exit 0
