Github messages for voidlinux
 help / color / mirror / Atom feed
* [PR PATCH] New package: hexcurse-1.60.0
@ 2024-07-27 18:28 MIvanchev
  2024-07-27 18:32 ` MIvanchev
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: MIvanchev @ 2024-07-27 18:28 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 671 bytes --]

There is a new pull request by MIvanchev against master on the void-packages repository

https://github.com/MIvanchev/void-packages ci-hexcurse
https://github.com/void-linux/void-packages/pull/51501

New package: hexcurse-1.60.0
#### Testing the changes
- I tested the changes in this PR: **YES**

#### New package
- This new package conforms to the [package requirements](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#package-requirements): **YES**

#### Local build testing
- I built this PR locally for my native architecture, (X86_64-GLIBC)


A patch file from https://github.com/void-linux/void-packages/pull/51501.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-ci-hexcurse-51501.patch --]
[-- Type: text/x-diff, Size: 178455 bytes --]

From deb2b09867c6921b0249826cc7c6e67eed3269e8 Mon Sep 17 00:00:00 2001
From: Mihail Ivanchev <contact@ivanchev.net>
Date: Sat, 27 Jul 2024 20:14:00 +0200
Subject: [PATCH] New package: hexcurse-1.60.0

---
 .../hexcurse/patches/3rdparty-support.patch   | 4998 +++++++++++++++++
 srcpkgs/hexcurse/te                           |   21 +
 srcpkgs/hexcurse/template                     |   13 +
 3 files changed, 5032 insertions(+)
 create mode 100644 srcpkgs/hexcurse/patches/3rdparty-support.patch
 create mode 100644 srcpkgs/hexcurse/te
 create mode 100644 srcpkgs/hexcurse/template

diff --git a/srcpkgs/hexcurse/patches/3rdparty-support.patch b/srcpkgs/hexcurse/patches/3rdparty-support.patch
new file mode 100644
index 00000000000000..d9a278ec500ee6
--- /dev/null
+++ b/srcpkgs/hexcurse/patches/3rdparty-support.patch
@@ -0,0 +1,4998 @@
+diff --git a/Makefile.in b/Makefile.in
+deleted file mode 100644
+index d47f3d8..0000000
+--- a/Makefile.in
++++ /dev/null
+@@ -1,776 +0,0 @@
+-# Makefile.in generated by automake 1.15 from Makefile.am.
+-# @configure_input@
+-
+-# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+-
+-# This Makefile.in is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+-# This program is distributed in the hope that it will be useful,
+-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+-# PARTICULAR PURPOSE.
+-
+-@SET_MAKE@
+-VPATH = @srcdir@
+-am__is_gnu_make = { \
+-  if test -z '$(MAKELEVEL)'; then \
+-    false; \
+-  elif test -n '$(MAKE_HOST)'; then \
+-    true; \
+-  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+-    true; \
+-  else \
+-    false; \
+-  fi; \
+-}
+-am__make_running_with_option = \
+-  case $${target_option-} in \
+-      ?) ;; \
+-      *) echo "am__make_running_with_option: internal error: invalid" \
+-              "target option '$${target_option-}' specified" >&2; \
+-         exit 1;; \
+-  esac; \
+-  has_opt=no; \
+-  sane_makeflags=$$MAKEFLAGS; \
+-  if $(am__is_gnu_make); then \
+-    sane_makeflags=$$MFLAGS; \
+-  else \
+-    case $$MAKEFLAGS in \
+-      *\\[\ \	]*) \
+-        bs=\\; \
+-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+-    esac; \
+-  fi; \
+-  skip_next=no; \
+-  strip_trailopt () \
+-  { \
+-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+-  }; \
+-  for flg in $$sane_makeflags; do \
+-    test $$skip_next = yes && { skip_next=no; continue; }; \
+-    case $$flg in \
+-      *=*|--*) continue;; \
+-        -*I) strip_trailopt 'I'; skip_next=yes;; \
+-      -*I?*) strip_trailopt 'I';; \
+-        -*O) strip_trailopt 'O'; skip_next=yes;; \
+-      -*O?*) strip_trailopt 'O';; \
+-        -*l) strip_trailopt 'l'; skip_next=yes;; \
+-      -*l?*) strip_trailopt 'l';; \
+-      -[dEDm]) skip_next=yes;; \
+-      -[JT]) skip_next=yes;; \
+-    esac; \
+-    case $$flg in \
+-      *$$target_option*) has_opt=yes; break;; \
+-    esac; \
+-  done; \
+-  test $$has_opt = yes
+-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+-pkgdatadir = $(datadir)/@PACKAGE@
+-pkgincludedir = $(includedir)/@PACKAGE@
+-pkglibdir = $(libdir)/@PACKAGE@
+-pkglibexecdir = $(libexecdir)/@PACKAGE@
+-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+-install_sh_DATA = $(install_sh) -c -m 644
+-install_sh_PROGRAM = $(install_sh) -c
+-install_sh_SCRIPT = $(install_sh) -c
+-INSTALL_HEADER = $(INSTALL_DATA)
+-transform = $(program_transform_name)
+-NORMAL_INSTALL = :
+-PRE_INSTALL = :
+-POST_INSTALL = :
+-NORMAL_UNINSTALL = :
+-PRE_UNINSTALL = :
+-POST_UNINSTALL = :
+-build_triplet = @build@
+-host_triplet = @host@
+-subdir = .
+-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+-	$(ACLOCAL_M4)
+-DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
+-	$(am__configure_deps) $(am__DIST_COMMON)
+-am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+- configure.lineno config.status.lineno
+-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+-CONFIG_HEADER = config.h
+-CONFIG_CLEAN_FILES =
+-CONFIG_CLEAN_VPATH_FILES =
+-AM_V_P = $(am__v_P_@AM_V@)
+-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+-am__v_P_0 = false
+-am__v_P_1 = :
+-AM_V_GEN = $(am__v_GEN_@AM_V@)
+-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+-am__v_GEN_0 = @echo "  GEN     " $@;
+-am__v_GEN_1 = 
+-AM_V_at = $(am__v_at_@AM_V@)
+-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+-am__v_at_0 = @
+-am__v_at_1 = 
+-SOURCES =
+-DIST_SOURCES =
+-RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+-	ctags-recursive dvi-recursive html-recursive info-recursive \
+-	install-data-recursive install-dvi-recursive \
+-	install-exec-recursive install-html-recursive \
+-	install-info-recursive install-pdf-recursive \
+-	install-ps-recursive install-recursive installcheck-recursive \
+-	installdirs-recursive pdf-recursive ps-recursive \
+-	tags-recursive uninstall-recursive
+-am__can_run_installinfo = \
+-  case $$AM_UPDATE_INFO_DIR in \
+-    n|no|NO) false;; \
+-    *) (install-info --version) >/dev/null 2>&1;; \
+-  esac
+-RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+-  distclean-recursive maintainer-clean-recursive
+-am__recursive_targets = \
+-  $(RECURSIVE_TARGETS) \
+-  $(RECURSIVE_CLEAN_TARGETS) \
+-  $(am__extra_recursive_targets)
+-AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+-	cscope distdir dist dist-all distcheck
+-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
+-	$(LISP)config.h.in
+-# Read a list of newline-separated strings from the standard input,
+-# and print each of them once, without duplicates.  Input order is
+-# *not* preserved.
+-am__uniquify_input = $(AWK) '\
+-  BEGIN { nonempty = 0; } \
+-  { items[$$0] = 1; nonempty = 1; } \
+-  END { if (nonempty) { for (i in items) print i; }; } \
+-'
+-# Make sure the list of sources is unique.  This is necessary because,
+-# e.g., the same source file might be shared among _SOURCES variables
+-# for different programs/libraries.
+-am__define_uniq_tagged_files = \
+-  list='$(am__tagged_files)'; \
+-  unique=`for i in $$list; do \
+-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+-  done | $(am__uniquify_input)`
+-ETAGS = etags
+-CTAGS = ctags
+-CSCOPE = cscope
+-DIST_SUBDIRS = $(SUBDIRS)
+-am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in AUTHORS \
+-	COPYING ChangeLog INSTALL NEWS README compile config.guess \
+-	config.sub depcomp install-sh missing mkinstalldirs
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+-distdir = $(PACKAGE)-$(VERSION)
+-top_distdir = $(distdir)
+-am__remove_distdir = \
+-  if test -d "$(distdir)"; then \
+-    find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+-      && rm -rf "$(distdir)" \
+-      || { sleep 5 && rm -rf "$(distdir)"; }; \
+-  else :; fi
+-am__post_remove_distdir = $(am__remove_distdir)
+-am__relativize = \
+-  dir0=`pwd`; \
+-  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+-  sed_rest='s,^[^/]*/*,,'; \
+-  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+-  sed_butlast='s,/*[^/]*$$,,'; \
+-  while test -n "$$dir1"; do \
+-    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+-    if test "$$first" != "."; then \
+-      if test "$$first" = ".."; then \
+-        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+-        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+-      else \
+-        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+-        if test "$$first2" = "$$first"; then \
+-          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+-        else \
+-          dir2="../$$dir2"; \
+-        fi; \
+-        dir0="$$dir0"/"$$first"; \
+-      fi; \
+-    fi; \
+-    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+-  done; \
+-  reldir="$$dir2"
+-DIST_ARCHIVES = $(distdir).tar.gz
+-GZIP_ENV = --best
+-DIST_TARGETS = dist-gzip
+-distuninstallcheck_listfiles = find . -type f -print
+-am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
+-  | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
+-distcleancheck_listfiles = find . -type f -print
+-ACLOCAL = @ACLOCAL@
+-AMTAR = @AMTAR@
+-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+-AUTOCONF = @AUTOCONF@
+-AUTOHEADER = @AUTOHEADER@
+-AUTOMAKE = @AUTOMAKE@
+-AWK = @AWK@
+-CC = @CC@
+-CCDEPMODE = @CCDEPMODE@
+-CFLAGS = @CFLAGS@
+-CPP = @CPP@
+-CPPFLAGS = @CPPFLAGS@
+-CYGPATH_W = @CYGPATH_W@
+-DEFS = @DEFS@
+-DEPDIR = @DEPDIR@
+-ECHO_C = @ECHO_C@
+-ECHO_N = @ECHO_N@
+-ECHO_T = @ECHO_T@
+-EGREP = @EGREP@
+-EXEEXT = @EXEEXT@
+-GREP = @GREP@
+-INSTALL = @INSTALL@
+-INSTALL_DATA = @INSTALL_DATA@
+-INSTALL_PROGRAM = @INSTALL_PROGRAM@
+-INSTALL_SCRIPT = @INSTALL_SCRIPT@
+-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+-LDFLAGS = @LDFLAGS@
+-LIBOBJS = @LIBOBJS@
+-LIBS = @LIBS@
+-LTLIBOBJS = @LTLIBOBJS@
+-MAKEINFO = @MAKEINFO@
+-MKDIR_P = @MKDIR_P@
+-OBJEXT = @OBJEXT@
+-PACKAGE = @PACKAGE@
+-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+-PACKAGE_NAME = @PACKAGE_NAME@
+-PACKAGE_STRING = @PACKAGE_STRING@
+-PACKAGE_TARNAME = @PACKAGE_TARNAME@
+-PACKAGE_URL = @PACKAGE_URL@
+-PACKAGE_VERSION = @PACKAGE_VERSION@
+-PATH_SEPARATOR = @PATH_SEPARATOR@
+-SET_MAKE = @SET_MAKE@
+-SHELL = @SHELL@
+-STRIP = @STRIP@
+-VERSION = @VERSION@
+-abs_builddir = @abs_builddir@
+-abs_srcdir = @abs_srcdir@
+-abs_top_builddir = @abs_top_builddir@
+-abs_top_srcdir = @abs_top_srcdir@
+-ac_ct_CC = @ac_ct_CC@
+-am__include = @am__include@
+-am__leading_dot = @am__leading_dot@
+-am__quote = @am__quote@
+-am__tar = @am__tar@
+-am__untar = @am__untar@
+-bindir = @bindir@
+-build = @build@
+-build_alias = @build_alias@
+-build_cpu = @build_cpu@
+-build_os = @build_os@
+-build_vendor = @build_vendor@
+-builddir = @builddir@
+-datadir = @datadir@
+-datarootdir = @datarootdir@
+-docdir = @docdir@
+-dvidir = @dvidir@
+-exec_prefix = @exec_prefix@
+-host = @host@
+-host_alias = @host_alias@
+-host_cpu = @host_cpu@
+-host_os = @host_os@
+-host_vendor = @host_vendor@
+-htmldir = @htmldir@
+-includedir = @includedir@
+-infodir = @infodir@
+-install_sh = @install_sh@
+-libdir = @libdir@
+-libexecdir = @libexecdir@
+-localedir = @localedir@
+-localstatedir = @localstatedir@
+-mandir = @mandir@
+-mkdir_p = @mkdir_p@
+-oldincludedir = @oldincludedir@
+-pdfdir = @pdfdir@
+-prefix = @prefix@
+-program_transform_name = @program_transform_name@
+-psdir = @psdir@
+-sbindir = @sbindir@
+-sharedstatedir = @sharedstatedir@
+-srcdir = @srcdir@
+-sysconfdir = @sysconfdir@
+-target_alias = @target_alias@
+-top_build_prefix = @top_build_prefix@
+-top_builddir = @top_builddir@
+-top_srcdir = @top_srcdir@
+-EXTRA_DIST = include/hex.h include/hgetopt.h README.Irix
+-SUBDIRS = src man
+-all: config.h
+-	$(MAKE) $(AM_MAKEFLAGS) all-recursive
+-
+-.SUFFIXES:
+-am--refresh: Makefile
+-	@:
+-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+-	@for dep in $?; do \
+-	  case '$(am__configure_deps)' in \
+-	    *$$dep*) \
+-	      echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
+-	      $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
+-		&& exit 0; \
+-	      exit 1;; \
+-	  esac; \
+-	done; \
+-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
+-	$(am__cd) $(top_srcdir) && \
+-	  $(AUTOMAKE) --gnu Makefile
+-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+-	@case '$?' in \
+-	  *config.status*) \
+-	    echo ' $(SHELL) ./config.status'; \
+-	    $(SHELL) ./config.status;; \
+-	  *) \
+-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+-	    cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+-	esac;
+-
+-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+-	$(SHELL) ./config.status --recheck
+-
+-$(top_srcdir)/configure:  $(am__configure_deps)
+-	$(am__cd) $(srcdir) && $(AUTOCONF)
+-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+-	$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+-$(am__aclocal_m4_deps):
+-
+-config.h: stamp-h1
+-	@test -f $@ || rm -f stamp-h1
+-	@test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1
+-
+-stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
+-	@rm -f stamp-h1
+-	cd $(top_builddir) && $(SHELL) ./config.status config.h
+-$(srcdir)/config.h.in:  $(am__configure_deps) 
+-	($(am__cd) $(top_srcdir) && $(AUTOHEADER))
+-	rm -f stamp-h1
+-	touch $@
+-
+-distclean-hdr:
+-	-rm -f config.h stamp-h1
+-
+-# This directory's subdirectories are mostly independent; you can cd
+-# into them and run 'make' without going through this Makefile.
+-# To change the values of 'make' variables: instead of editing Makefiles,
+-# (1) if the variable is set in 'config.status', edit 'config.status'
+-#     (which will cause the Makefiles to be regenerated when you run 'make');
+-# (2) otherwise, pass the desired values on the 'make' command line.
+-$(am__recursive_targets):
+-	@fail=; \
+-	if $(am__make_keepgoing); then \
+-	  failcom='fail=yes'; \
+-	else \
+-	  failcom='exit 1'; \
+-	fi; \
+-	dot_seen=no; \
+-	target=`echo $@ | sed s/-recursive//`; \
+-	case "$@" in \
+-	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+-	  *) list='$(SUBDIRS)' ;; \
+-	esac; \
+-	for subdir in $$list; do \
+-	  echo "Making $$target in $$subdir"; \
+-	  if test "$$subdir" = "."; then \
+-	    dot_seen=yes; \
+-	    local_target="$$target-am"; \
+-	  else \
+-	    local_target="$$target"; \
+-	  fi; \
+-	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+-	  || eval $$failcom; \
+-	done; \
+-	if test "$$dot_seen" = "no"; then \
+-	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+-	fi; test -z "$$fail"
+-
+-ID: $(am__tagged_files)
+-	$(am__define_uniq_tagged_files); mkid -fID $$unique
+-tags: tags-recursive
+-TAGS: tags
+-
+-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+-	set x; \
+-	here=`pwd`; \
+-	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+-	  include_option=--etags-include; \
+-	  empty_fix=.; \
+-	else \
+-	  include_option=--include; \
+-	  empty_fix=; \
+-	fi; \
+-	list='$(SUBDIRS)'; for subdir in $$list; do \
+-	  if test "$$subdir" = .; then :; else \
+-	    test ! -f $$subdir/TAGS || \
+-	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+-	  fi; \
+-	done; \
+-	$(am__define_uniq_tagged_files); \
+-	shift; \
+-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+-	  test -n "$$unique" || unique=$$empty_fix; \
+-	  if test $$# -gt 0; then \
+-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+-	      "$$@" $$unique; \
+-	  else \
+-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+-	      $$unique; \
+-	  fi; \
+-	fi
+-ctags: ctags-recursive
+-
+-CTAGS: ctags
+-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+-	$(am__define_uniq_tagged_files); \
+-	test -z "$(CTAGS_ARGS)$$unique" \
+-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+-	     $$unique
+-
+-GTAGS:
+-	here=`$(am__cd) $(top_builddir) && pwd` \
+-	  && $(am__cd) $(top_srcdir) \
+-	  && gtags -i $(GTAGS_ARGS) "$$here"
+-cscope: cscope.files
+-	test ! -s cscope.files \
+-	  || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
+-clean-cscope:
+-	-rm -f cscope.files
+-cscope.files: clean-cscope cscopelist
+-cscopelist: cscopelist-recursive
+-
+-cscopelist-am: $(am__tagged_files)
+-	list='$(am__tagged_files)'; \
+-	case "$(srcdir)" in \
+-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+-	  *) sdir=$(subdir)/$(srcdir) ;; \
+-	esac; \
+-	for i in $$list; do \
+-	  if test -f "$$i"; then \
+-	    echo "$(subdir)/$$i"; \
+-	  else \
+-	    echo "$$sdir/$$i"; \
+-	  fi; \
+-	done >> $(top_builddir)/cscope.files
+-
+-distclean-tags:
+-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-	-rm -f cscope.out cscope.in.out cscope.po.out cscope.files
+-
+-distdir: $(DISTFILES)
+-	$(am__remove_distdir)
+-	test -d "$(distdir)" || mkdir "$(distdir)"
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+-	  if test "$$subdir" = .; then :; else \
+-	    $(am__make_dryrun) \
+-	      || test -d "$(distdir)/$$subdir" \
+-	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+-	      || exit 1; \
+-	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+-	    $(am__relativize); \
+-	    new_distdir=$$reldir; \
+-	    dir1=$$subdir; dir2="$(top_distdir)"; \
+-	    $(am__relativize); \
+-	    new_top_distdir=$$reldir; \
+-	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+-	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+-	    ($(am__cd) $$subdir && \
+-	      $(MAKE) $(AM_MAKEFLAGS) \
+-	        top_distdir="$$new_top_distdir" \
+-	        distdir="$$new_distdir" \
+-		am__remove_distdir=: \
+-		am__skip_length_check=: \
+-		am__skip_mode_fix=: \
+-	        distdir) \
+-	      || exit 1; \
+-	  fi; \
+-	done
+-	-test -n "$(am__skip_mode_fix)" \
+-	|| find "$(distdir)" -type d ! -perm -755 \
+-		-exec chmod u+rwx,go+rx {} \; -o \
+-	  ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+-	  ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+-	  ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
+-	|| chmod -R a+r "$(distdir)"
+-dist-gzip: distdir
+-	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+-	$(am__post_remove_distdir)
+-
+-dist-bzip2: distdir
+-	tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
+-	$(am__post_remove_distdir)
+-
+-dist-lzip: distdir
+-	tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
+-	$(am__post_remove_distdir)
+-
+-dist-xz: distdir
+-	tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
+-	$(am__post_remove_distdir)
+-
+-dist-tarZ: distdir
+-	@echo WARNING: "Support for distribution archives compressed with" \
+-		       "legacy program 'compress' is deprecated." >&2
+-	@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
+-	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+-	$(am__post_remove_distdir)
+-
+-dist-shar: distdir
+-	@echo WARNING: "Support for shar distribution archives is" \
+-	               "deprecated." >&2
+-	@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
+-	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+-	$(am__post_remove_distdir)
+-
+-dist-zip: distdir
+-	-rm -f $(distdir).zip
+-	zip -rq $(distdir).zip $(distdir)
+-	$(am__post_remove_distdir)
+-
+-dist dist-all:
+-	$(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
+-	$(am__post_remove_distdir)
+-
+-# This target untars the dist file and tries a VPATH configuration.  Then
+-# it guarantees that the distribution is self-contained by making another
+-# tarfile.
+-distcheck: dist
+-	case '$(DIST_ARCHIVES)' in \
+-	*.tar.gz*) \
+-	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
+-	*.tar.bz2*) \
+-	  bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
+-	*.tar.lz*) \
+-	  lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
+-	*.tar.xz*) \
+-	  xz -dc $(distdir).tar.xz | $(am__untar) ;;\
+-	*.tar.Z*) \
+-	  uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+-	*.shar.gz*) \
+-	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
+-	*.zip*) \
+-	  unzip $(distdir).zip ;;\
+-	esac
+-	chmod -R a-w $(distdir)
+-	chmod u+w $(distdir)
+-	mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
+-	chmod a-w $(distdir)
+-	test -d $(distdir)/_build || exit 0; \
+-	dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+-	  && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+-	  && am__cwd=`pwd` \
+-	  && $(am__cd) $(distdir)/_build/sub \
+-	  && ../../configure \
+-	    $(AM_DISTCHECK_CONFIGURE_FLAGS) \
+-	    $(DISTCHECK_CONFIGURE_FLAGS) \
+-	    --srcdir=../.. --prefix="$$dc_install_base" \
+-	  && $(MAKE) $(AM_MAKEFLAGS) \
+-	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
+-	  && $(MAKE) $(AM_MAKEFLAGS) check \
+-	  && $(MAKE) $(AM_MAKEFLAGS) install \
+-	  && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+-	  && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+-	  && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+-	        distuninstallcheck \
+-	  && chmod -R a-w "$$dc_install_base" \
+-	  && ({ \
+-	       (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+-	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+-	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+-	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+-	            distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+-	      } || { rm -rf "$$dc_destdir"; exit 1; }) \
+-	  && rm -rf "$$dc_destdir" \
+-	  && $(MAKE) $(AM_MAKEFLAGS) dist \
+-	  && rm -rf $(DIST_ARCHIVES) \
+-	  && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
+-	  && cd "$$am__cwd" \
+-	  || exit 1
+-	$(am__post_remove_distdir)
+-	@(echo "$(distdir) archives ready for distribution: "; \
+-	  list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+-	  sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
+-distuninstallcheck:
+-	@test -n '$(distuninstallcheck_dir)' || { \
+-	  echo 'ERROR: trying to run $@ with an empty' \
+-	       '$$(distuninstallcheck_dir)' >&2; \
+-	  exit 1; \
+-	}; \
+-	$(am__cd) '$(distuninstallcheck_dir)' || { \
+-	  echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
+-	  exit 1; \
+-	}; \
+-	test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
+-	   || { echo "ERROR: files left after uninstall:" ; \
+-	        if test -n "$(DESTDIR)"; then \
+-	          echo "  (check DESTDIR support)"; \
+-	        fi ; \
+-	        $(distuninstallcheck_listfiles) ; \
+-	        exit 1; } >&2
+-distcleancheck: distclean
+-	@if test '$(srcdir)' = . ; then \
+-	  echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+-	  exit 1 ; \
+-	fi
+-	@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+-	  || { echo "ERROR: files left in build directory after distclean:" ; \
+-	       $(distcleancheck_listfiles) ; \
+-	       exit 1; } >&2
+-check-am: all-am
+-check: check-recursive
+-all-am: Makefile config.h
+-installdirs: installdirs-recursive
+-installdirs-am:
+-install: install-recursive
+-install-exec: install-exec-recursive
+-install-data: install-data-recursive
+-uninstall: uninstall-recursive
+-
+-install-am: all-am
+-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+-
+-installcheck: installcheck-recursive
+-install-strip:
+-	if test -z '$(STRIP)'; then \
+-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+-	      install; \
+-	else \
+-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+-	fi
+-mostlyclean-generic:
+-
+-clean-generic:
+-
+-distclean-generic:
+-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+-
+-maintainer-clean-generic:
+-	@echo "This command is intended for maintainers to use"
+-	@echo "it deletes files that may require special tools to rebuild."
+-clean: clean-recursive
+-
+-clean-am: clean-generic mostlyclean-am
+-
+-distclean: distclean-recursive
+-	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
+-	-rm -f Makefile
+-distclean-am: clean-am distclean-generic distclean-hdr distclean-tags
+-
+-dvi: dvi-recursive
+-
+-dvi-am:
+-
+-html: html-recursive
+-
+-html-am:
+-
+-info: info-recursive
+-
+-info-am:
+-
+-install-data-am:
+-
+-install-dvi: install-dvi-recursive
+-
+-install-dvi-am:
+-
+-install-exec-am:
+-
+-install-html: install-html-recursive
+-
+-install-html-am:
+-
+-install-info: install-info-recursive
+-
+-install-info-am:
+-
+-install-man:
+-
+-install-pdf: install-pdf-recursive
+-
+-install-pdf-am:
+-
+-install-ps: install-ps-recursive
+-
+-install-ps-am:
+-
+-installcheck-am:
+-
+-maintainer-clean: maintainer-clean-recursive
+-	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
+-	-rm -rf $(top_srcdir)/autom4te.cache
+-	-rm -f Makefile
+-maintainer-clean-am: distclean-am maintainer-clean-generic
+-
+-mostlyclean: mostlyclean-recursive
+-
+-mostlyclean-am: mostlyclean-generic
+-
+-pdf: pdf-recursive
+-
+-pdf-am:
+-
+-ps: ps-recursive
+-
+-ps-am:
+-
+-uninstall-am:
+-
+-.MAKE: $(am__recursive_targets) all install-am install-strip
+-
+-.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
+-	am--refresh check check-am clean clean-cscope clean-generic \
+-	cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \
+-	dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \
+-	distcheck distclean distclean-generic distclean-hdr \
+-	distclean-tags distcleancheck distdir distuninstallcheck dvi \
+-	dvi-am html html-am info info-am install install-am \
+-	install-data install-data-am install-dvi install-dvi-am \
+-	install-exec install-exec-am install-html install-html-am \
+-	install-info install-info-am install-man install-pdf \
+-	install-pdf-am install-ps install-ps-am install-strip \
+-	installcheck installcheck-am installdirs installdirs-am \
+-	maintainer-clean maintainer-clean-generic mostlyclean \
+-	mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \
+-	uninstall-am
+-
+-.PRECIOUS: Makefile
+-
+-
+-# Tell versions [3.59,3.63) of GNU make to not export all variables.
+-# Otherwise a system limit (for SysV at least) may be exceeded.
+-.NOEXPORT:
+diff --git a/README.md b/README.md
+index 3ead7a7..bda831c 100644
+--- a/README.md
++++ b/README.md
+@@ -1,15 +1,15 @@
+-hexcurse v1.60.0
++hexcurse
+ =====================================
+-[![Build Status](https://travis-ci.org/LonnyGomes/hexcurse.svg?branch=master)](https://travis-ci.org/LonnyGomes/hexcurse)
+ 
+-![hexcurse screenshot](http://lonnygomes.github.io/screenshots/hexcurse2-ss.jpg)
++Project: https://github.com/prso/hexcurse
+ 
+-Bug reports: https://github.com/LonnyGomes/hexcurse/issues
++![hexcurse screenshot](screenshots/hexcurse-screenshot.png)
+ 
++This is a fork from [LonnyGomes/hexcurse](https://github.com/LonnyGomes/hexcurse) with fixes and improvements.
+ 
+ Description
+ -----------
+-Hexcurse is a curses-base hex editing utility that can open, edit, and save files, editing both the hexadecimal and decimal values.
++Hexcurse is a curses-based hex editing utility that can open, edit, and save files, editing both the hexadecimal and decimal values.
+ 
+ It was written by [Lonny Gomes](https://twitter.com/lonnygomes) and [James Stephenson](https://plus.google.com/u/0/103174459258175070784/about) but we haven't maintained it for some time. We recently saw an old tarball of the code floating around the net and thought it would be good to start maintaining the codebase again.
+ 
+@@ -31,14 +31,21 @@ Installation
+ Usage
+ -----
+ 
+-    usage: hexcurse [-?|help] [-a] [-r rnum] [-o outputfile] [[-i] infile]
+-
+-        -a      Output addresses in decimal format initially
+-        -e      Output characters in EBCDIC format rather than ASCII
+-        -r rnum Resize the display to "rnum" bytes wide
+-        -o outfile  Write output to outfile by default
+-        -? | -help  Display usage and version of hexcurse program
+-        [-i] infile Read from data from infile (-i required if not last argument)
++    usage: hexcurse [-?|help] [-a] [-c colorlevel] [-e] [-f] [-o outputfile] [-r rnum] [-t] [[-i] infile]
++
++        -? | -help    Display usage and version of hexcurse program
++        -a            Output addresses in decimal format initially
++        -c colorlevel Set the color level:
++                        0: no colors
++                        1: only color for addresses
++                        2: 1 + color for 00 (default if terminal supports color)
++                        3: multicolor by FrankSansC
++        -e            Output characters in EBCDIC format rather than ASCII
++        -f            Show function key numbers in labels
++        -o outfile    Write output to outfile by default
++        -r rnum       Resize the display to "rnum" bytes wide
++        -t            Keep colors defined by terminal
++        [-i] infile   Read from data from infile (-i required if not last argument)
+ 
+ #### Keyboard shortcuts
+ 
+diff --git a/aclocal.m4 b/aclocal.m4
+deleted file mode 100644
+index f3018f6..0000000
+--- a/aclocal.m4
++++ /dev/null
+@@ -1,1152 +0,0 @@
+-# generated automatically by aclocal 1.15 -*- Autoconf -*-
+-
+-# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+-
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+-# This program is distributed in the hope that it will be useful,
+-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+-# PARTICULAR PURPOSE.
+-
+-m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
+-m4_ifndef([AC_AUTOCONF_VERSION],
+-  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+-m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
+-[m4_warning([this file was generated for autoconf 2.69.
+-You have another version of autoconf.  It may work, but is not guaranteed to.
+-If you have problems, you may need to regenerate the build system entirely.
+-To do so, use the procedure documented by the package, typically 'autoreconf'.])])
+-
+-# Copyright (C) 2002-2014 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+-# AM_AUTOMAKE_VERSION(VERSION)
+-# ----------------------------
+-# Automake X.Y traces this macro to ensure aclocal.m4 has been
+-# generated from the m4 files accompanying Automake X.Y.
+-# (This private macro should not be called outside this file.)
+-AC_DEFUN([AM_AUTOMAKE_VERSION],
+-[am__api_version='1.15'
+-dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
+-dnl require some minimum version.  Point them to the right macro.
+-m4_if([$1], [1.15], [],
+-      [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+-])
+-
+-# _AM_AUTOCONF_VERSION(VERSION)
+-# -----------------------------
+-# aclocal traces this macro to find the Autoconf version.
+-# This is a private macro too.  Using m4_define simplifies
+-# the logic in aclocal, which can simply ignore this definition.
+-m4_define([_AM_AUTOCONF_VERSION], [])
+-
+-# AM_SET_CURRENT_AUTOMAKE_VERSION
+-# -------------------------------
+-# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
+-# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
+-AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+-[AM_AUTOMAKE_VERSION([1.15])dnl
+-m4_ifndef([AC_AUTOCONF_VERSION],
+-  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+-_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
+-
+-# AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
+-
+-# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+-# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+-# $ac_aux_dir to '$srcdir/foo'.  In other projects, it is set to
+-# '$srcdir', '$srcdir/..', or '$srcdir/../..'.
+-#
+-# Of course, Automake must honor this variable whenever it calls a
+-# tool from the auxiliary directory.  The problem is that $srcdir (and
+-# therefore $ac_aux_dir as well) can be either absolute or relative,
+-# depending on how configure is run.  This is pretty annoying, since
+-# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+-# source directory, any form will work fine, but in subdirectories a
+-# relative path needs to be adjusted first.
+-#
+-# $ac_aux_dir/missing
+-#    fails when called from a subdirectory if $ac_aux_dir is relative
+-# $top_srcdir/$ac_aux_dir/missing
+-#    fails if $ac_aux_dir is absolute,
+-#    fails when called from a subdirectory in a VPATH build with
+-#          a relative $ac_aux_dir
+-#
+-# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+-# are both prefixed by $srcdir.  In an in-source build this is usually
+-# harmless because $srcdir is '.', but things will broke when you
+-# start a VPATH build or use an absolute $srcdir.
+-#
+-# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+-# iff we strip the leading $srcdir from $ac_aux_dir.  That would be:
+-#   am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+-# and then we would define $MISSING as
+-#   MISSING="\${SHELL} $am_aux_dir/missing"
+-# This will work as long as MISSING is not called from configure, because
+-# unfortunately $(top_srcdir) has no meaning in configure.
+-# However there are other variables, like CC, which are often used in
+-# configure, and could therefore not use this "fixed" $ac_aux_dir.
+-#
+-# Another solution, used here, is to always expand $ac_aux_dir to an
+-# absolute PATH.  The drawback is that using absolute paths prevent a
+-# configured tree to be moved without reconfiguration.
+-
+-AC_DEFUN([AM_AUX_DIR_EXPAND],
+-[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
+-# Expand $ac_aux_dir to an absolute path.
+-am_aux_dir=`cd "$ac_aux_dir" && pwd`
+-])
+-
+-# AM_CONDITIONAL                                            -*- Autoconf -*-
+-
+-# Copyright (C) 1997-2014 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+-# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+-# -------------------------------------
+-# Define a conditional.
+-AC_DEFUN([AM_CONDITIONAL],
+-[AC_PREREQ([2.52])dnl
+- m4_if([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
+-       [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+-AC_SUBST([$1_TRUE])dnl
+-AC_SUBST([$1_FALSE])dnl
+-_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+-_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+-m4_define([_AM_COND_VALUE_$1], [$2])dnl
+-if $2; then
+-  $1_TRUE=
+-  $1_FALSE='#'
+-else
+-  $1_TRUE='#'
+-  $1_FALSE=
+-fi
+-AC_CONFIG_COMMANDS_PRE(
+-[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+-  AC_MSG_ERROR([[conditional "$1" was never defined.
+-Usually this means the macro was only invoked conditionally.]])
+-fi])])
+-
+-# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+-
+-# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be
+-# written in clear, in which case automake, when reading aclocal.m4,
+-# will think it sees a *use*, and therefore will trigger all it's
+-# C support machinery.  Also note that it means that autoscan, seeing
+-# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+-
+-
+-# _AM_DEPENDENCIES(NAME)
+-# ----------------------
+-# See how the compiler implements dependency checking.
+-# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC".
+-# We try a few techniques and use that to set a single cache variable.
+-#
+-# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
+-# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
+-# dependency, and given that the user is not expected to run this macro,
+-# just rely on AC_PROG_CC.
+-AC_DEFUN([_AM_DEPENDENCIES],
+-[AC_REQUIRE([AM_SET_DEPDIR])dnl
+-AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+-AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+-AC_REQUIRE([AM_DEP_TRACK])dnl
+-
+-m4_if([$1], [CC],   [depcc="$CC"   am_compiler_list=],
+-      [$1], [CXX],  [depcc="$CXX"  am_compiler_list=],
+-      [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+-      [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'],
+-      [$1], [UPC],  [depcc="$UPC"  am_compiler_list=],
+-      [$1], [GCJ],  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
+-                    [depcc="$$1"   am_compiler_list=])
+-
+-AC_CACHE_CHECK([dependency style of $depcc],
+-               [am_cv_$1_dependencies_compiler_type],
+-[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+-  # We make a subdir and do the tests there.  Otherwise we can end up
+-  # making bogus files that we don't know about and never remove.  For
+-  # instance it was reported that on HP-UX the gcc test will end up
+-  # making a dummy file named 'D' -- because '-MD' means "put the output
+-  # in D".
+-  rm -rf conftest.dir
+-  mkdir conftest.dir
+-  # Copy depcomp to subdir because otherwise we won't find it if we're
+-  # using a relative directory.
+-  cp "$am_depcomp" conftest.dir
+-  cd conftest.dir
+-  # We will build objects and dependencies in a subdirectory because
+-  # it helps to detect inapplicable dependency modes.  For instance
+-  # both Tru64's cc and ICC support -MD to output dependencies as a
+-  # side effect of compilation, but ICC will put the dependencies in
+-  # the current directory while Tru64 will put them in the object
+-  # directory.
+-  mkdir sub
+-
+-  am_cv_$1_dependencies_compiler_type=none
+-  if test "$am_compiler_list" = ""; then
+-     am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+-  fi
+-  am__universal=false
+-  m4_case([$1], [CC],
+-    [case " $depcc " in #(
+-     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+-     esac],
+-    [CXX],
+-    [case " $depcc " in #(
+-     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+-     esac])
+-
+-  for depmode in $am_compiler_list; do
+-    # Setup a source with many dependencies, because some compilers
+-    # like to wrap large dependency lists on column 80 (with \), and
+-    # we should not choose a depcomp mode which is confused by this.
+-    #
+-    # We need to recreate these files for each test, as the compiler may
+-    # overwrite some of them when testing with obscure command lines.
+-    # This happens at least with the AIX C compiler.
+-    : > sub/conftest.c
+-    for i in 1 2 3 4 5 6; do
+-      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+-      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+-      # Solaris 10 /bin/sh.
+-      echo '/* dummy */' > sub/conftst$i.h
+-    done
+-    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+-
+-    # We check with '-c' and '-o' for the sake of the "dashmstdout"
+-    # mode.  It turns out that the SunPro C++ compiler does not properly
+-    # handle '-M -o', and we need to detect this.  Also, some Intel
+-    # versions had trouble with output in subdirs.
+-    am__obj=sub/conftest.${OBJEXT-o}
+-    am__minus_obj="-o $am__obj"
+-    case $depmode in
+-    gcc)
+-      # This depmode causes a compiler race in universal mode.
+-      test "$am__universal" = false || continue
+-      ;;
+-    nosideeffect)
+-      # After this tag, mechanisms are not by side-effect, so they'll
+-      # only be used when explicitly requested.
+-      if test "x$enable_dependency_tracking" = xyes; then
+-	continue
+-      else
+-	break
+-      fi
+-      ;;
+-    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+-      # This compiler won't grok '-c -o', but also, the minuso test has
+-      # not run yet.  These depmodes are late enough in the game, and
+-      # so weak that their functioning should not be impacted.
+-      am__obj=conftest.${OBJEXT-o}
+-      am__minus_obj=
+-      ;;
+-    none) break ;;
+-    esac
+-    if depmode=$depmode \
+-       source=sub/conftest.c object=$am__obj \
+-       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+-       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+-         >/dev/null 2>conftest.err &&
+-       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+-       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+-       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+-       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+-      # icc doesn't choke on unknown options, it will just issue warnings
+-      # or remarks (even with -Werror).  So we grep stderr for any message
+-      # that says an option was ignored or not supported.
+-      # When given -MP, icc 7.0 and 7.1 complain thusly:
+-      #   icc: Command line warning: ignoring option '-M'; no argument required
+-      # The diagnosis changed in icc 8.0:
+-      #   icc: Command line remark: option '-MP' not supported
+-      if (grep 'ignoring option' conftest.err ||
+-          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+-        am_cv_$1_dependencies_compiler_type=$depmode
+-        break
+-      fi
+-    fi
+-  done
+-
+-  cd ..
+-  rm -rf conftest.dir
+-else
+-  am_cv_$1_dependencies_compiler_type=none
+-fi
+-])
+-AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+-AM_CONDITIONAL([am__fastdep$1], [
+-  test "x$enable_dependency_tracking" != xno \
+-  && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+-])
+-
+-
+-# AM_SET_DEPDIR
+-# -------------
+-# Choose a directory name for dependency files.
+-# This macro is AC_REQUIREd in _AM_DEPENDENCIES.
+-AC_DEFUN([AM_SET_DEPDIR],
+-[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+-AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+-])
+-
+-
+-# AM_DEP_TRACK
+-# ------------
+-AC_DEFUN([AM_DEP_TRACK],
+-[AC_ARG_ENABLE([dependency-tracking], [dnl
+-AS_HELP_STRING(
+-  [--enable-dependency-tracking],
+-  [do not reject slow dependency extractors])
+-AS_HELP_STRING(
+-  [--disable-dependency-tracking],
+-  [speeds up one-time build])])
+-if test "x$enable_dependency_tracking" != xno; then
+-  am_depcomp="$ac_aux_dir/depcomp"
+-  AMDEPBACKSLASH='\'
+-  am__nodep='_no'
+-fi
+-AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+-AC_SUBST([AMDEPBACKSLASH])dnl
+-_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+-AC_SUBST([am__nodep])dnl
+-_AM_SUBST_NOTMAKE([am__nodep])dnl
+-])
+-
+-# Generate code to set up dependency tracking.              -*- Autoconf -*-
+-
+-# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+-
+-# _AM_OUTPUT_DEPENDENCY_COMMANDS
+-# ------------------------------
+-AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+-[{
+-  # Older Autoconf quotes --file arguments for eval, but not when files
+-  # are listed without --file.  Let's play safe and only enable the eval
+-  # if we detect the quoting.
+-  case $CONFIG_FILES in
+-  *\'*) eval set x "$CONFIG_FILES" ;;
+-  *)   set x $CONFIG_FILES ;;
+-  esac
+-  shift
+-  for mf
+-  do
+-    # Strip MF so we end up with the name of the file.
+-    mf=`echo "$mf" | sed -e 's/:.*$//'`
+-    # Check whether this is an Automake generated Makefile or not.
+-    # We used to match only the files named 'Makefile.in', but
+-    # some people rename them; so instead we look at the file content.
+-    # Grep'ing the first line is not enough: some people post-process
+-    # each Makefile.in and add a new line on top of each file to say so.
+-    # Grep'ing the whole file is not good either: AIX grep has a line
+-    # limit of 2048, but all sed's we know have understand at least 4000.
+-    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+-      dirpart=`AS_DIRNAME("$mf")`
+-    else
+-      continue
+-    fi
+-    # Extract the definition of DEPDIR, am__include, and am__quote
+-    # from the Makefile without running 'make'.
+-    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+-    test -z "$DEPDIR" && continue
+-    am__include=`sed -n 's/^am__include = //p' < "$mf"`
+-    test -z "$am__include" && continue
+-    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+-    # Find all dependency output files, they are included files with
+-    # $(DEPDIR) in their names.  We invoke sed twice because it is the
+-    # simplest approach to changing $(DEPDIR) to its actual value in the
+-    # expansion.
+-    for file in `sed -n "
+-      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+-	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
+-      # Make sure the directory exists.
+-      test -f "$dirpart/$file" && continue
+-      fdir=`AS_DIRNAME(["$file"])`
+-      AS_MKDIR_P([$dirpart/$fdir])
+-      # echo "creating $dirpart/$file"
+-      echo '# dummy' > "$dirpart/$file"
+-    done
+-  done
+-}
+-])# _AM_OUTPUT_DEPENDENCY_COMMANDS
+-
+-
+-# AM_OUTPUT_DEPENDENCY_COMMANDS
+-# -----------------------------
+-# This macro should only be invoked once -- use via AC_REQUIRE.
+-#
+-# This code is only required when automatic dependency tracking
+-# is enabled.  FIXME.  This creates each '.P' file that we will
+-# need in order to bootstrap the dependency handling code.
+-AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+-[AC_CONFIG_COMMANDS([depfiles],
+-     [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+-     [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+-])
+-
+-# Do all the work for Automake.                             -*- Autoconf -*-
+-
+-# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+-# This macro actually does too much.  Some checks are only needed if
+-# your package does certain things.  But this isn't really a big deal.
+-
+-dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O.
+-m4_define([AC_PROG_CC],
+-m4_defn([AC_PROG_CC])
+-[_AM_PROG_CC_C_O
+-])
+-
+-# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+-# AM_INIT_AUTOMAKE([OPTIONS])
+-# -----------------------------------------------
+-# The call with PACKAGE and VERSION arguments is the old style
+-# call (pre autoconf-2.50), which is being phased out.  PACKAGE
+-# and VERSION should now be passed to AC_INIT and removed from
+-# the call to AM_INIT_AUTOMAKE.
+-# We support both call styles for the transition.  After
+-# the next Automake release, Autoconf can make the AC_INIT
+-# arguments mandatory, and then we can depend on a new Autoconf
+-# release and drop the old call support.
+-AC_DEFUN([AM_INIT_AUTOMAKE],
+-[AC_PREREQ([2.65])dnl
+-dnl Autoconf wants to disallow AM_ names.  We explicitly allow
+-dnl the ones we care about.
+-m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+-AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+-AC_REQUIRE([AC_PROG_INSTALL])dnl
+-if test "`cd $srcdir && pwd`" != "`pwd`"; then
+-  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+-  # is not polluted with repeated "-I."
+-  AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+-  # test to see if srcdir already configured
+-  if test -f $srcdir/config.status; then
+-    AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+-  fi
+-fi
+-
+-# test whether we have cygpath
+-if test -z "$CYGPATH_W"; then
+-  if (cygpath --version) >/dev/null 2>/dev/null; then
+-    CYGPATH_W='cygpath -w'
+-  else
+-    CYGPATH_W=echo
+-  fi
+-fi
+-AC_SUBST([CYGPATH_W])
+-
+-# Define the identity of the package.
+-dnl Distinguish between old-style and new-style calls.
+-m4_ifval([$2],
+-[AC_DIAGNOSE([obsolete],
+-             [$0: two- and three-arguments forms are deprecated.])
+-m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+- AC_SUBST([PACKAGE], [$1])dnl
+- AC_SUBST([VERSION], [$2])],
+-[_AM_SET_OPTIONS([$1])dnl
+-dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+-m4_if(
+-  m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
+-  [ok:ok],,
+-  [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+-
+-_AM_IF_OPTION([no-define],,
+-[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
+- AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
+-
+-# Some tools Automake needs.
+-AC_REQUIRE([AM_SANITY_CHECK])dnl
+-AC_REQUIRE([AC_ARG_PROGRAM])dnl
+-AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
+-AM_MISSING_PROG([AUTOCONF], [autoconf])
+-AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
+-AM_MISSING_PROG([AUTOHEADER], [autoheader])
+-AM_MISSING_PROG([MAKEINFO], [makeinfo])
+-AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+-AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
+-AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+-# For better backward compatibility.  To be removed once Automake 1.9.x
+-# dies out for good.  For more background, see:
+-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+-AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
+-# We need awk for the "check" target (and possibly the TAP driver).  The
+-# system "awk" is bad on some platforms.
+-AC_REQUIRE([AC_PROG_AWK])dnl
+-AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+-AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+-_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+-	      [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+-			     [_AM_PROG_TAR([v7])])])
+-_AM_IF_OPTION([no-dependencies],,
+-[AC_PROVIDE_IFELSE([AC_PROG_CC],
+-		  [_AM_DEPENDENCIES([CC])],
+-		  [m4_define([AC_PROG_CC],
+-			     m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
+-AC_PROVIDE_IFELSE([AC_PROG_CXX],
+-		  [_AM_DEPENDENCIES([CXX])],
+-		  [m4_define([AC_PROG_CXX],
+-			     m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
+-AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+-		  [_AM_DEPENDENCIES([OBJC])],
+-		  [m4_define([AC_PROG_OBJC],
+-			     m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
+-AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
+-		  [_AM_DEPENDENCIES([OBJCXX])],
+-		  [m4_define([AC_PROG_OBJCXX],
+-			     m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
+-])
+-AC_REQUIRE([AM_SILENT_RULES])dnl
+-dnl The testsuite driver may need to know about EXEEXT, so add the
+-dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This
+-dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
+-AC_CONFIG_COMMANDS_PRE(dnl
+-[m4_provide_if([_AM_COMPILER_EXEEXT],
+-  [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
+-
+-# POSIX will say in a future version that running "rm -f" with no argument
+-# is OK; and we want to be able to make that assumption in our Makefile
+-# recipes.  So use an aggressive probe to check that the usage we want is
+-# actually supported "in the wild" to an acceptable degree.
+-# See automake bug#10828.
+-# To make any issue more visible, cause the running configure to be aborted
+-# by default if the 'rm' program in use doesn't match our expectations; the
+-# user can still override this though.
+-if rm -f && rm -fr && rm -rf; then : OK; else
+-  cat >&2 <<'END'
+-Oops!
+-
+-Your 'rm' program seems unable to run without file operands specified
+-on the command line, even when the '-f' option is present.  This is contrary
+-to the behaviour of most rm programs out there, and not conforming with
+-the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+-
+-Please tell bug-automake@gnu.org about your system, including the value
+-of your $PATH and any error possibly output before this message.  This
+-can help us improve future automake versions.
+-
+-END
+-  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+-    echo 'Configuration will proceed anyway, since you have set the' >&2
+-    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+-    echo >&2
+-  else
+-    cat >&2 <<'END'
+-Aborting the configuration process, to ensure you take notice of the issue.
+-
+-You can download and install GNU coreutils to get an 'rm' implementation
+-that behaves properly: <http://www.gnu.org/software/coreutils/>.
+-
+-If you want to complete the configuration process using your problematic
+-'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+-to "yes", and re-run configure.
+-
+-END
+-    AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
+-  fi
+-fi
+-dnl The trailing newline in this macro's definition is deliberate, for
+-dnl backward compatibility and to allow trailing 'dnl'-style comments
+-dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841.
+-])
+-
+-dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
+-dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
+-dnl mangled by Autoconf and run in a shell conditional statement.
+-m4_define([_AC_COMPILER_EXEEXT],
+-m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
+-
+-# When config.status generates a header, we must update the stamp-h file.
+-# This file resides in the same directory as the config header
+-# that is generated.  The stamp files are numbered to have different names.
+-
+-# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+-# loop where config.status creates the headers, so we can generate
+-# our stamp files there.
+-AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+-[# Compute $1's index in $config_headers.
+-_am_arg=$1
+-_am_stamp_count=1
+-for _am_header in $config_headers :; do
+-  case $_am_header in
+-    $_am_arg | $_am_arg:* )
+-      break ;;
+-    * )
+-      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+-  esac
+-done
+-echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
+-
+-# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+-# AM_PROG_INSTALL_SH
+-# ------------------
+-# Define $install_sh.
+-AC_DEFUN([AM_PROG_INSTALL_SH],
+-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+-if test x"${install_sh+set}" != xset; then
+-  case $am_aux_dir in
+-  *\ * | *\	*)
+-    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+-  *)
+-    install_sh="\${SHELL} $am_aux_dir/install-sh"
+-  esac
+-fi
+-AC_SUBST([install_sh])])
+-
+-# Copyright (C) 2003-2014 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+-# Check whether the underlying file-system supports filenames
+-# with a leading dot.  For instance MS-DOS doesn't.
+-AC_DEFUN([AM_SET_LEADING_DOT],
+-[rm -rf .tst 2>/dev/null
+-mkdir .tst 2>/dev/null
+-if test -d .tst; then
+-  am__leading_dot=.
+-else
+-  am__leading_dot=_
+-fi
+-rmdir .tst 2>/dev/null
+-AC_SUBST([am__leading_dot])])
+-
+-# Check to see how 'make' treats includes.	            -*- Autoconf -*-
+-
+-# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+-# AM_MAKE_INCLUDE()
+-# -----------------
+-# Check to see how make treats includes.
+-AC_DEFUN([AM_MAKE_INCLUDE],
+-[am_make=${MAKE-make}
+-cat > confinc << 'END'
+-am__doit:
+-	@echo this is the am__doit target
+-.PHONY: am__doit
+-END
+-# If we don't find an include directive, just comment out the code.
+-AC_MSG_CHECKING([for style of include used by $am_make])
+-am__include="#"
+-am__quote=
+-_am_result=none
+-# First try GNU make style include.
+-echo "include confinc" > confmf
+-# Ignore all kinds of additional output from 'make'.
+-case `$am_make -s -f confmf 2> /dev/null` in #(
+-*the\ am__doit\ target*)
+-  am__include=include
+-  am__quote=
+-  _am_result=GNU
+-  ;;
+-esac
+-# Now try BSD make style include.
+-if test "$am__include" = "#"; then
+-   echo '.include "confinc"' > confmf
+-   case `$am_make -s -f confmf 2> /dev/null` in #(
+-   *the\ am__doit\ target*)
+-     am__include=.include
+-     am__quote="\""
+-     _am_result=BSD
+-     ;;
+-   esac
+-fi
+-AC_SUBST([am__include])
+-AC_SUBST([am__quote])
+-AC_MSG_RESULT([$_am_result])
+-rm -f confinc confmf
+-])
+-
+-# Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
+-
+-# Copyright (C) 1997-2014 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+-# AM_MISSING_PROG(NAME, PROGRAM)
+-# ------------------------------
+-AC_DEFUN([AM_MISSING_PROG],
+-[AC_REQUIRE([AM_MISSING_HAS_RUN])
+-$1=${$1-"${am_missing_run}$2"}
+-AC_SUBST($1)])
+-
+-# AM_MISSING_HAS_RUN
+-# ------------------
+-# Define MISSING if not defined so far and test if it is modern enough.
+-# If it is, set am_missing_run to use it, otherwise, to nothing.
+-AC_DEFUN([AM_MISSING_HAS_RUN],
+-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+-AC_REQUIRE_AUX_FILE([missing])dnl
+-if test x"${MISSING+set}" != xset; then
+-  case $am_aux_dir in
+-  *\ * | *\	*)
+-    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+-  *)
+-    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+-  esac
+-fi
+-# Use eval to expand $SHELL
+-if eval "$MISSING --is-lightweight"; then
+-  am_missing_run="$MISSING "
+-else
+-  am_missing_run=
+-  AC_MSG_WARN(['missing' script is too old or missing])
+-fi
+-])
+-
+-# Helper functions for option handling.                     -*- Autoconf -*-
+-
+-# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+-# _AM_MANGLE_OPTION(NAME)
+-# -----------------------
+-AC_DEFUN([_AM_MANGLE_OPTION],
+-[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+-
+-# _AM_SET_OPTION(NAME)
+-# --------------------
+-# Set option NAME.  Presently that only means defining a flag for this option.
+-AC_DEFUN([_AM_SET_OPTION],
+-[m4_define(_AM_MANGLE_OPTION([$1]), [1])])
+-
+-# _AM_SET_OPTIONS(OPTIONS)
+-# ------------------------
+-# OPTIONS is a space-separated list of Automake options.
+-AC_DEFUN([_AM_SET_OPTIONS],
+-[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+-
+-# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+-# -------------------------------------------
+-# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+-AC_DEFUN([_AM_IF_OPTION],
+-[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+-
+-# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+-# _AM_PROG_CC_C_O
+-# ---------------
+-# Like AC_PROG_CC_C_O, but changed for automake.  We rewrite AC_PROG_CC
+-# to automatically call this.
+-AC_DEFUN([_AM_PROG_CC_C_O],
+-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+-AC_REQUIRE_AUX_FILE([compile])dnl
+-AC_LANG_PUSH([C])dnl
+-AC_CACHE_CHECK(
+-  [whether $CC understands -c and -o together],
+-  [am_cv_prog_cc_c_o],
+-  [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])])
+-  # Make sure it works both with $CC and with simple cc.
+-  # Following AC_PROG_CC_C_O, we do the test twice because some
+-  # compilers refuse to overwrite an existing .o file with -o,
+-  # though they will create one.
+-  am_cv_prog_cc_c_o=yes
+-  for am_i in 1 2; do
+-    if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \
+-         && test -f conftest2.$ac_objext; then
+-      : OK
+-    else
+-      am_cv_prog_cc_c_o=no
+-      break
+-    fi
+-  done
+-  rm -f core conftest*
+-  unset am_i])
+-if test "$am_cv_prog_cc_c_o" != yes; then
+-   # Losing compiler, so override with the script.
+-   # FIXME: It is wrong to rewrite CC.
+-   # But if we don't then we get into trouble of one sort or another.
+-   # A longer-term fix would be to have automake use am__CC in this case,
+-   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+-   CC="$am_aux_dir/compile $CC"
+-fi
+-AC_LANG_POP([C])])
+-
+-# For backward compatibility.
+-AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
+-
+-# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+-# AM_RUN_LOG(COMMAND)
+-# -------------------
+-# Run COMMAND, save the exit status in ac_status, and log it.
+-# (This has been adapted from Autoconf's _AC_RUN_LOG macro.)
+-AC_DEFUN([AM_RUN_LOG],
+-[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
+-   ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
+-   ac_status=$?
+-   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+-   (exit $ac_status); }])
+-
+-# Check to make sure that the build environment is sane.    -*- Autoconf -*-
+-
+-# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+-# AM_SANITY_CHECK
+-# ---------------
+-AC_DEFUN([AM_SANITY_CHECK],
+-[AC_MSG_CHECKING([whether build environment is sane])
+-# Reject unsafe characters in $srcdir or the absolute working directory
+-# name.  Accept space and tab only in the latter.
+-am_lf='
+-'
+-case `pwd` in
+-  *[[\\\"\#\$\&\'\`$am_lf]]*)
+-    AC_MSG_ERROR([unsafe absolute working directory name]);;
+-esac
+-case $srcdir in
+-  *[[\\\"\#\$\&\'\`$am_lf\ \	]]*)
+-    AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
+-esac
+-
+-# Do 'set' in a subshell so we don't clobber the current shell's
+-# arguments.  Must try -L first in case configure is actually a
+-# symlink; some systems play weird games with the mod time of symlinks
+-# (eg FreeBSD returns the mod time of the symlink's containing
+-# directory).
+-if (
+-   am_has_slept=no
+-   for am_try in 1 2; do
+-     echo "timestamp, slept: $am_has_slept" > conftest.file
+-     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+-     if test "$[*]" = "X"; then
+-	# -L didn't work.
+-	set X `ls -t "$srcdir/configure" conftest.file`
+-     fi
+-     if test "$[*]" != "X $srcdir/configure conftest.file" \
+-	&& test "$[*]" != "X conftest.file $srcdir/configure"; then
+-
+-	# If neither matched, then we have a broken ls.  This can happen
+-	# if, for instance, CONFIG_SHELL is bash and it inherits a
+-	# broken ls alias from the environment.  This has actually
+-	# happened.  Such a system could not be considered "sane".
+-	AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
+-  alias in your environment])
+-     fi
+-     if test "$[2]" = conftest.file || test $am_try -eq 2; then
+-       break
+-     fi
+-     # Just in case.
+-     sleep 1
+-     am_has_slept=yes
+-   done
+-   test "$[2]" = conftest.file
+-   )
+-then
+-   # Ok.
+-   :
+-else
+-   AC_MSG_ERROR([newly created file is older than distributed files!
+-Check your system clock])
+-fi
+-AC_MSG_RESULT([yes])
+-# If we didn't sleep, we still need to ensure time stamps of config.status and
+-# generated files are strictly newer.
+-am_sleep_pid=
+-if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+-  ( sleep 1 ) &
+-  am_sleep_pid=$!
+-fi
+-AC_CONFIG_COMMANDS_PRE(
+-  [AC_MSG_CHECKING([that generated files are newer than configure])
+-   if test -n "$am_sleep_pid"; then
+-     # Hide warnings about reused PIDs.
+-     wait $am_sleep_pid 2>/dev/null
+-   fi
+-   AC_MSG_RESULT([done])])
+-rm -f conftest.file
+-])
+-
+-# Copyright (C) 2009-2014 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+-# AM_SILENT_RULES([DEFAULT])
+-# --------------------------
+-# Enable less verbose build rules; with the default set to DEFAULT
+-# ("yes" being less verbose, "no" or empty being verbose).
+-AC_DEFUN([AM_SILENT_RULES],
+-[AC_ARG_ENABLE([silent-rules], [dnl
+-AS_HELP_STRING(
+-  [--enable-silent-rules],
+-  [less verbose build output (undo: "make V=1")])
+-AS_HELP_STRING(
+-  [--disable-silent-rules],
+-  [verbose build output (undo: "make V=0")])dnl
+-])
+-case $enable_silent_rules in @%:@ (((
+-  yes) AM_DEFAULT_VERBOSITY=0;;
+-   no) AM_DEFAULT_VERBOSITY=1;;
+-    *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
+-esac
+-dnl
+-dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
+-dnl do not support nested variable expansions.
+-dnl See automake bug#9928 and bug#10237.
+-am_make=${MAKE-make}
+-AC_CACHE_CHECK([whether $am_make supports nested variables],
+-   [am_cv_make_support_nested_variables],
+-   [if AS_ECHO([['TRUE=$(BAR$(V))
+-BAR0=false
+-BAR1=true
+-V=1
+-am__doit:
+-	@$(TRUE)
+-.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
+-  am_cv_make_support_nested_variables=yes
+-else
+-  am_cv_make_support_nested_variables=no
+-fi])
+-if test $am_cv_make_support_nested_variables = yes; then
+-  dnl Using '$V' instead of '$(V)' breaks IRIX make.
+-  AM_V='$(V)'
+-  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+-else
+-  AM_V=$AM_DEFAULT_VERBOSITY
+-  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+-fi
+-AC_SUBST([AM_V])dnl
+-AM_SUBST_NOTMAKE([AM_V])dnl
+-AC_SUBST([AM_DEFAULT_V])dnl
+-AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
+-AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
+-AM_BACKSLASH='\'
+-AC_SUBST([AM_BACKSLASH])dnl
+-_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
+-])
+-
+-# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+-# AM_PROG_INSTALL_STRIP
+-# ---------------------
+-# One issue with vendor 'install' (even GNU) is that you can't
+-# specify the program used to strip binaries.  This is especially
+-# annoying in cross-compiling environments, where the build's strip
+-# is unlikely to handle the host's binaries.
+-# Fortunately install-sh will honor a STRIPPROG variable, so we
+-# always use install-sh in "make install-strip", and initialize
+-# STRIPPROG with the value of the STRIP variable (set by the user).
+-AC_DEFUN([AM_PROG_INSTALL_STRIP],
+-[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+-# Installed binaries are usually stripped using 'strip' when the user
+-# run "make install-strip".  However 'strip' might not be the right
+-# tool to use in cross-compilation environments, therefore Automake
+-# will honor the 'STRIP' environment variable to overrule this program.
+-dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
+-if test "$cross_compiling" != no; then
+-  AC_CHECK_TOOL([STRIP], [strip], :)
+-fi
+-INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+-AC_SUBST([INSTALL_STRIP_PROGRAM])])
+-
+-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+-# _AM_SUBST_NOTMAKE(VARIABLE)
+-# ---------------------------
+-# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
+-# This macro is traced by Automake.
+-AC_DEFUN([_AM_SUBST_NOTMAKE])
+-
+-# AM_SUBST_NOTMAKE(VARIABLE)
+-# --------------------------
+-# Public sister of _AM_SUBST_NOTMAKE.
+-AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+-
+-# Check how to create a tarball.                            -*- Autoconf -*-
+-
+-# Copyright (C) 2004-2014 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+-# _AM_PROG_TAR(FORMAT)
+-# --------------------
+-# Check how to create a tarball in format FORMAT.
+-# FORMAT should be one of 'v7', 'ustar', or 'pax'.
+-#
+-# Substitute a variable $(am__tar) that is a command
+-# writing to stdout a FORMAT-tarball containing the directory
+-# $tardir.
+-#     tardir=directory && $(am__tar) > result.tar
+-#
+-# Substitute a variable $(am__untar) that extract such
+-# a tarball read from stdin.
+-#     $(am__untar) < result.tar
+-#
+-AC_DEFUN([_AM_PROG_TAR],
+-[# Always define AMTAR for backward compatibility.  Yes, it's still used
+-# in the wild :-(  We should find a proper way to deprecate it ...
+-AC_SUBST([AMTAR], ['$${TAR-tar}'])
+-
+-# We'll loop over all known methods to create a tar archive until one works.
+-_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+-
+-m4_if([$1], [v7],
+-  [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
+-
+-  [m4_case([$1],
+-    [ustar],
+-     [# The POSIX 1988 'ustar' format is defined with fixed-size fields.
+-      # There is notably a 21 bits limit for the UID and the GID.  In fact,
+-      # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
+-      # and bug#13588).
+-      am_max_uid=2097151 # 2^21 - 1
+-      am_max_gid=$am_max_uid
+-      # The $UID and $GID variables are not portable, so we need to resort
+-      # to the POSIX-mandated id(1) utility.  Errors in the 'id' calls
+-      # below are definitely unexpected, so allow the users to see them
+-      # (that is, avoid stderr redirection).
+-      am_uid=`id -u || echo unknown`
+-      am_gid=`id -g || echo unknown`
+-      AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
+-      if test $am_uid -le $am_max_uid; then
+-         AC_MSG_RESULT([yes])
+-      else
+-         AC_MSG_RESULT([no])
+-         _am_tools=none
+-      fi
+-      AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
+-      if test $am_gid -le $am_max_gid; then
+-         AC_MSG_RESULT([yes])
+-      else
+-        AC_MSG_RESULT([no])
+-        _am_tools=none
+-      fi],
+-
+-  [pax],
+-    [],
+-
+-  [m4_fatal([Unknown tar format])])
+-
+-  AC_MSG_CHECKING([how to create a $1 tar archive])
+-
+-  # Go ahead even if we have the value already cached.  We do so because we
+-  # need to set the values for the 'am__tar' and 'am__untar' variables.
+-  _am_tools=${am_cv_prog_tar_$1-$_am_tools}
+-
+-  for _am_tool in $_am_tools; do
+-    case $_am_tool in
+-    gnutar)
+-      for _am_tar in tar gnutar gtar; do
+-        AM_RUN_LOG([$_am_tar --version]) && break
+-      done
+-      am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+-      am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+-      am__untar="$_am_tar -xf -"
+-      ;;
+-    plaintar)
+-      # Must skip GNU tar: if it does not support --format= it doesn't create
+-      # ustar tarball either.
+-      (tar --version) >/dev/null 2>&1 && continue
+-      am__tar='tar chf - "$$tardir"'
+-      am__tar_='tar chf - "$tardir"'
+-      am__untar='tar xf -'
+-      ;;
+-    pax)
+-      am__tar='pax -L -x $1 -w "$$tardir"'
+-      am__tar_='pax -L -x $1 -w "$tardir"'
+-      am__untar='pax -r'
+-      ;;
+-    cpio)
+-      am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+-      am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+-      am__untar='cpio -i -H $1 -d'
+-      ;;
+-    none)
+-      am__tar=false
+-      am__tar_=false
+-      am__untar=false
+-      ;;
+-    esac
+-
+-    # If the value was cached, stop now.  We just wanted to have am__tar
+-    # and am__untar set.
+-    test -n "${am_cv_prog_tar_$1}" && break
+-
+-    # tar/untar a dummy directory, and stop if the command works.
+-    rm -rf conftest.dir
+-    mkdir conftest.dir
+-    echo GrepMe > conftest.dir/file
+-    AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+-    rm -rf conftest.dir
+-    if test -s conftest.tar; then
+-      AM_RUN_LOG([$am__untar <conftest.tar])
+-      AM_RUN_LOG([cat conftest.dir/file])
+-      grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+-    fi
+-  done
+-  rm -rf conftest.dir
+-
+-  AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+-  AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+-
+-AC_SUBST([am__tar])
+-AC_SUBST([am__untar])
+-]) # _AM_PROG_TAR
+-
+diff --git a/configure b/configure
+index c2baab4..0bd2afc 100755
+--- a/configure
++++ b/configure
+@@ -12,6 +12,9 @@
+ ## M4sh Initialization. ##
+ ## -------------------- ##
+ 
++aclocal
++automake
++
+ # Be more Bourne compatible
+ DUALCASE=1; export DUALCASE # for MKS sh
+ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+@@ -2135,7 +2138,6 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+ 
+ 
+ 
+-am__api_version='1.15'
+ 
+ ac_aux_dir=
+ for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
+diff --git a/include/hex.h b/include/hex.h
+index 57845c0..2b77d88 100644
+--- a/include/hex.h
++++ b/include/hex.h
+@@ -1,5 +1,6 @@
+ /******************************************************************************\
+  *  Copyright (C) 2001, hexcurse is written by Jewfish and Armoth             *
++ *  Copyright (C) 2020-2022 prso at github, fixes and improvements            *
+  *									      *
+  *  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      *
+@@ -74,7 +75,6 @@ struct Stack {					/* struct to be used for stack*/
+     int savedVal;
+     off_t currentLoc;
+     struct Stack *prev;
+-    struct LinkedList *llist;
+ };
+ 
+ /* typedefs */
+@@ -99,7 +99,12 @@ extern off_t LastLoc;
+ extern int  SIZE_CH;
+ extern bool USE_EBCDIC;
+ extern char EBCDIC[256];
++extern int ASCII_to_EBCDIC[256];
+ extern bool color_enabled;
++extern bool TERM_COLORS;
++extern bool FNUMBERS;
++extern int  color_level;
++extern bool saved;
+ 
+ /* macros */
+ /*#define currentLoc(line, col) ((line) * BASE +((col)/3)) */
+@@ -108,7 +113,6 @@ extern bool color_enabled;
+ 						/* cursor location in the file*/
+ #define cursorLoc(line,col,editHex,b) (((line)*(b)) + ((col)/((editHex)?3:1)))
+ #define llalloc() (struct LinkedList *) calloc(1, sizeof(struct LinkedList))
+-#define isEmptyStack(stack) (((stack) == NULL) ? TRUE : FALSE)
+ 
+ #define UNUSED(x) (void)(x)
+ 
+@@ -119,6 +123,11 @@ extern bool color_enabled;
+ #define MIN_COLS        70                      /* screen has to be 70< cols  */
+ #define MIN_LINES       7     /* 8 - 1 */       /* the slk crap minuses 1 line*/
+ #define KEY_TAB 		9			/* value for the tab key      */
++#define NODEF           0  /* value for not defined characters in ASCII_to_EBCDIC */
++#define SAVEPOINT      -1
++#define FILEBUFF    16384			/* buffer size to copy file */
++#define ALPHABET_LEN    256         /* for hexSearchBM */
++#define BUF_L           8192        /* for hexSearchBM */
+ 
+ #define AlphabetSize (UCHAR_MAX +1)		/* for portability            */
+ 
+@@ -126,26 +135,26 @@ extern bool color_enabled;
+ #define max(a,b) ((a) >(b) ? (a) : (b))
+ #endif
+ 
+-FILE *fpIN;		        		/* global file ptr           */
++extern FILE *fpIN;	        		/* global file ptr           */
+ 
+ /* function prototypes */
+ 
+ /* acceptch.c */
+ int wacceptch(WINS *windows, off_t len);
+ void restoreBorder(WINS *win);
+-char *inputLine(WINDOW *win, int line, int col);
++char *inputLine(WINDOW *win, int line, int col, bool allow_space);
+ 
+ /* file.c */
+ void outline(FILE *fp, off_t linenum);
+ off_t maxLoc(FILE *fp);
++void set_saved(bool sav, WINDOW *win);
+ void print_usage();
+ off_t maxLines(off_t len);
+ int openfile(WINS *win);
+ int savefile(WINS *win);
+-off_t hexSearch(FILE *fp, int ch[], off_t startfp, int length);
++off_t hexSearchBM(WINDOW *w, FILE *fp, int pat[], off_t startfp, int patlen);
+ off_t gotoLine(FILE *fp, off_t currLoc, off_t gotoLoc, off_t maxlines,  WINDOW *windows);
+ int getLocVal(off_t loc);
+-bool inHexList(off_t loc);
+ 
+ /* getopt.c */
+ int hgetopt(int argc, char *const *argv, const char *optstring);
+@@ -160,6 +169,8 @@ RETSIGTYPE catchSegfault(int sig);
+ hexList *deleteNode(hexList *head, off_t loc);
+ hexList *insertItem(hexList *head, off_t loc, int val);
+ int searchList(hexList *head, off_t loc);
++off_t countList(hexList *head, off_t loc);
++void updateBuf(hexList *head, char *buf, off_t pos1, off_t pos2);
+ int writeChanges();
+ hexList *freeList(hexList *head);
+ 
+@@ -181,8 +192,7 @@ void popupWin(char *msg, int time);
+ short int questionWin(char *msg);
+ 
+ /* stack.c */
+-void createStack(hexStack *stack);
+-void pushStack(hexStack **stack, hexStack *tmpStack);
++void pushStack(hexStack **stack, off_t cl, int val);
+ void popStack(hexStack **stack);
+ void smashDaStack(hexStack **stack);
+ 
+diff --git a/man/Makefile.in b/man/Makefile.in
+deleted file mode 100644
+index d68ed57..0000000
+--- a/man/Makefile.in
++++ /dev/null
+@@ -1,486 +0,0 @@
+-# Makefile.in generated by automake 1.15 from Makefile.am.
+-# @configure_input@
+-
+-# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+-
+-# This Makefile.in is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+-# This program is distributed in the hope that it will be useful,
+-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+-# PARTICULAR PURPOSE.
+-
+-@SET_MAKE@
+-VPATH = @srcdir@
+-am__is_gnu_make = { \
+-  if test -z '$(MAKELEVEL)'; then \
+-    false; \
+-  elif test -n '$(MAKE_HOST)'; then \
+-    true; \
+-  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+-    true; \
+-  else \
+-    false; \
+-  fi; \
+-}
+-am__make_running_with_option = \
+-  case $${target_option-} in \
+-      ?) ;; \
+-      *) echo "am__make_running_with_option: internal error: invalid" \
+-              "target option '$${target_option-}' specified" >&2; \
+-         exit 1;; \
+-  esac; \
+-  has_opt=no; \
+-  sane_makeflags=$$MAKEFLAGS; \
+-  if $(am__is_gnu_make); then \
+-    sane_makeflags=$$MFLAGS; \
+-  else \
+-    case $$MAKEFLAGS in \
+-      *\\[\ \	]*) \
+-        bs=\\; \
+-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+-    esac; \
+-  fi; \
+-  skip_next=no; \
+-  strip_trailopt () \
+-  { \
+-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+-  }; \
+-  for flg in $$sane_makeflags; do \
+-    test $$skip_next = yes && { skip_next=no; continue; }; \
+-    case $$flg in \
+-      *=*|--*) continue;; \
+-        -*I) strip_trailopt 'I'; skip_next=yes;; \
+-      -*I?*) strip_trailopt 'I';; \
+-        -*O) strip_trailopt 'O'; skip_next=yes;; \
+-      -*O?*) strip_trailopt 'O';; \
+-        -*l) strip_trailopt 'l'; skip_next=yes;; \
+-      -*l?*) strip_trailopt 'l';; \
+-      -[dEDm]) skip_next=yes;; \
+-      -[JT]) skip_next=yes;; \
+-    esac; \
+-    case $$flg in \
+-      *$$target_option*) has_opt=yes; break;; \
+-    esac; \
+-  done; \
+-  test $$has_opt = yes
+-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+-pkgdatadir = $(datadir)/@PACKAGE@
+-pkgincludedir = $(includedir)/@PACKAGE@
+-pkglibdir = $(libdir)/@PACKAGE@
+-pkglibexecdir = $(libexecdir)/@PACKAGE@
+-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+-install_sh_DATA = $(install_sh) -c -m 644
+-install_sh_PROGRAM = $(install_sh) -c
+-install_sh_SCRIPT = $(install_sh) -c
+-INSTALL_HEADER = $(INSTALL_DATA)
+-transform = $(program_transform_name)
+-NORMAL_INSTALL = :
+-PRE_INSTALL = :
+-POST_INSTALL = :
+-NORMAL_UNINSTALL = :
+-PRE_UNINSTALL = :
+-POST_UNINSTALL = :
+-build_triplet = @build@
+-host_triplet = @host@
+-subdir = man
+-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+-	$(ACLOCAL_M4)
+-DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+-CONFIG_HEADER = $(top_builddir)/config.h
+-CONFIG_CLEAN_FILES =
+-CONFIG_CLEAN_VPATH_FILES =
+-AM_V_P = $(am__v_P_@AM_V@)
+-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+-am__v_P_0 = false
+-am__v_P_1 = :
+-AM_V_GEN = $(am__v_GEN_@AM_V@)
+-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+-am__v_GEN_0 = @echo "  GEN     " $@;
+-am__v_GEN_1 = 
+-AM_V_at = $(am__v_at_@AM_V@)
+-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+-am__v_at_0 = @
+-am__v_at_1 = 
+-SOURCES =
+-DIST_SOURCES =
+-am__can_run_installinfo = \
+-  case $$AM_UPDATE_INFO_DIR in \
+-    n|no|NO) false;; \
+-    *) (install-info --version) >/dev/null 2>&1;; \
+-  esac
+-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+-am__vpath_adj = case $$p in \
+-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+-    *) f=$$p;; \
+-  esac;
+-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+-am__install_max = 40
+-am__nobase_strip_setup = \
+-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+-am__nobase_strip = \
+-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+-am__nobase_list = $(am__nobase_strip_setup); \
+-  for p in $$list; do echo "$$p $$p"; done | \
+-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+-    if (++n[$$2] == $(am__install_max)) \
+-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+-    END { for (dir in files) print dir, files[dir] }'
+-am__base_list = \
+-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+-am__uninstall_files_from_dir = { \
+-  test -z "$$files" \
+-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+-         $(am__cd) "$$dir" && rm -f $$files; }; \
+-  }
+-man1dir = $(mandir)/man1
+-am__installdirs = "$(DESTDIR)$(man1dir)"
+-NROFF = nroff
+-MANS = $(man_MANS)
+-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+-am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/mkinstalldirs
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+-ACLOCAL = @ACLOCAL@
+-AMTAR = @AMTAR@
+-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+-AUTOCONF = @AUTOCONF@
+-AUTOHEADER = @AUTOHEADER@
+-AUTOMAKE = @AUTOMAKE@
+-AWK = @AWK@
+-CC = @CC@
+-CCDEPMODE = @CCDEPMODE@
+-CFLAGS = @CFLAGS@
+-CPP = @CPP@
+-CPPFLAGS = @CPPFLAGS@
+-CYGPATH_W = @CYGPATH_W@
+-DEFS = @DEFS@
+-DEPDIR = @DEPDIR@
+-ECHO_C = @ECHO_C@
+-ECHO_N = @ECHO_N@
+-ECHO_T = @ECHO_T@
+-EGREP = @EGREP@
+-EXEEXT = @EXEEXT@
+-GREP = @GREP@
+-INSTALL = @INSTALL@
+-INSTALL_DATA = @INSTALL_DATA@
+-INSTALL_PROGRAM = @INSTALL_PROGRAM@
+-INSTALL_SCRIPT = @INSTALL_SCRIPT@
+-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+-LDFLAGS = @LDFLAGS@
+-LIBOBJS = @LIBOBJS@
+-LIBS = @LIBS@
+-LTLIBOBJS = @LTLIBOBJS@
+-MAKEINFO = @MAKEINFO@
+-MKDIR_P = @MKDIR_P@
+-OBJEXT = @OBJEXT@
+-PACKAGE = @PACKAGE@
+-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+-PACKAGE_NAME = @PACKAGE_NAME@
+-PACKAGE_STRING = @PACKAGE_STRING@
+-PACKAGE_TARNAME = @PACKAGE_TARNAME@
+-PACKAGE_URL = @PACKAGE_URL@
+-PACKAGE_VERSION = @PACKAGE_VERSION@
+-PATH_SEPARATOR = @PATH_SEPARATOR@
+-SET_MAKE = @SET_MAKE@
+-SHELL = @SHELL@
+-STRIP = @STRIP@
+-VERSION = @VERSION@
+-abs_builddir = @abs_builddir@
+-abs_srcdir = @abs_srcdir@
+-abs_top_builddir = @abs_top_builddir@
+-abs_top_srcdir = @abs_top_srcdir@
+-ac_ct_CC = @ac_ct_CC@
+-am__include = @am__include@
+-am__leading_dot = @am__leading_dot@
+-am__quote = @am__quote@
+-am__tar = @am__tar@
+-am__untar = @am__untar@
+-bindir = @bindir@
+-build = @build@
+-build_alias = @build_alias@
+-build_cpu = @build_cpu@
+-build_os = @build_os@
+-build_vendor = @build_vendor@
+-builddir = @builddir@
+-datadir = @datadir@
+-datarootdir = @datarootdir@
+-docdir = @docdir@
+-dvidir = @dvidir@
+-exec_prefix = @exec_prefix@
+-host = @host@
+-host_alias = @host_alias@
+-host_cpu = @host_cpu@
+-host_os = @host_os@
+-host_vendor = @host_vendor@
+-htmldir = @htmldir@
+-includedir = @includedir@
+-infodir = @infodir@
+-install_sh = @install_sh@
+-libdir = @libdir@
+-libexecdir = @libexecdir@
+-localedir = @localedir@
+-localstatedir = @localstatedir@
+-mandir = @mandir@
+-mkdir_p = @mkdir_p@
+-oldincludedir = @oldincludedir@
+-pdfdir = @pdfdir@
+-prefix = @prefix@
+-program_transform_name = @program_transform_name@
+-psdir = @psdir@
+-sbindir = @sbindir@
+-sharedstatedir = @sharedstatedir@
+-srcdir = @srcdir@
+-sysconfdir = @sysconfdir@
+-target_alias = @target_alias@
+-top_build_prefix = @top_build_prefix@
+-top_builddir = @top_builddir@
+-top_srcdir = @top_srcdir@
+-man_MANS = hexcurse.1
+-EXTRA_DIST = $(man_MANS)
+-all: all-am
+-
+-.SUFFIXES:
+-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+-	@for dep in $?; do \
+-	  case '$(am__configure_deps)' in \
+-	    *$$dep*) \
+-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+-	        && { if test -f $@; then exit 0; else break; fi; }; \
+-	      exit 1;; \
+-	  esac; \
+-	done; \
+-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu man/Makefile'; \
+-	$(am__cd) $(top_srcdir) && \
+-	  $(AUTOMAKE) --gnu man/Makefile
+-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+-	@case '$?' in \
+-	  *config.status*) \
+-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+-	  *) \
+-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+-	esac;
+-
+-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+-
+-$(top_srcdir)/configure:  $(am__configure_deps)
+-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+-$(am__aclocal_m4_deps):
+-install-man1: $(man_MANS)
+-	@$(NORMAL_INSTALL)
+-	@list1=''; \
+-	list2='$(man_MANS)'; \
+-	test -n "$(man1dir)" \
+-	  && test -n "`echo $$list1$$list2`" \
+-	  || exit 0; \
+-	echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \
+-	$(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \
+-	{ for i in $$list1; do echo "$$i"; done;  \
+-	if test -n "$$list2"; then \
+-	  for i in $$list2; do echo "$$i"; done \
+-	    | sed -n '/\.1[a-z]*$$/p'; \
+-	fi; \
+-	} | while read p; do \
+-	  if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+-	  echo "$$d$$p"; echo "$$p"; \
+-	done | \
+-	sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+-	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
+-	sed 'N;N;s,\n, ,g' | { \
+-	list=; while read file base inst; do \
+-	  if test "$$base" = "$$inst"; then list="$$list $$file"; else \
+-	    echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
+-	    $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \
+-	  fi; \
+-	done; \
+-	for i in $$list; do echo "$$i"; done | $(am__base_list) | \
+-	while read files; do \
+-	  test -z "$$files" || { \
+-	    echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \
+-	    $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \
+-	done; }
+-
+-uninstall-man1:
+-	@$(NORMAL_UNINSTALL)
+-	@list=''; test -n "$(man1dir)" || exit 0; \
+-	files=`{ for i in $$list; do echo "$$i"; done; \
+-	l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+-	  sed -n '/\.1[a-z]*$$/p'; \
+-	} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+-	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+-	dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir)
+-tags TAGS:
+-
+-ctags CTAGS:
+-
+-cscope cscopelist:
+-
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+-check-am: all-am
+-check: check-am
+-all-am: Makefile $(MANS)
+-installdirs:
+-	for dir in "$(DESTDIR)$(man1dir)"; do \
+-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+-	done
+-install: install-am
+-install-exec: install-exec-am
+-install-data: install-data-am
+-uninstall: uninstall-am
+-
+-install-am: all-am
+-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+-
+-installcheck: installcheck-am
+-install-strip:
+-	if test -z '$(STRIP)'; then \
+-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+-	      install; \
+-	else \
+-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+-	fi
+-mostlyclean-generic:
+-
+-clean-generic:
+-
+-distclean-generic:
+-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+-
+-maintainer-clean-generic:
+-	@echo "This command is intended for maintainers to use"
+-	@echo "it deletes files that may require special tools to rebuild."
+-clean: clean-am
+-
+-clean-am: clean-generic mostlyclean-am
+-
+-distclean: distclean-am
+-	-rm -f Makefile
+-distclean-am: clean-am distclean-generic
+-
+-dvi: dvi-am
+-
+-dvi-am:
+-
+-html: html-am
+-
+-html-am:
+-
+-info: info-am
+-
+-info-am:
+-
+-install-data-am: install-man
+-
+-install-dvi: install-dvi-am
+-
+-install-dvi-am:
+-
+-install-exec-am:
+-
+-install-html: install-html-am
+-
+-install-html-am:
+-
+-install-info: install-info-am
+-
+-install-info-am:
+-
+-install-man: install-man1
+-
+-install-pdf: install-pdf-am
+-
+-install-pdf-am:
+-
+-install-ps: install-ps-am
+-
+-install-ps-am:
+-
+-installcheck-am:
+-
+-maintainer-clean: maintainer-clean-am
+-	-rm -f Makefile
+-maintainer-clean-am: distclean-am maintainer-clean-generic
+-
+-mostlyclean: mostlyclean-am
+-
+-mostlyclean-am: mostlyclean-generic
+-
+-pdf: pdf-am
+-
+-pdf-am:
+-
+-ps: ps-am
+-
+-ps-am:
+-
+-uninstall-am: uninstall-man
+-
+-uninstall-man: uninstall-man1
+-
+-.MAKE: install-am install-strip
+-
+-.PHONY: all all-am check check-am clean clean-generic cscopelist-am \
+-	ctags-am distclean distclean-generic distdir dvi dvi-am html \
+-	html-am info info-am install install-am install-data \
+-	install-data-am install-dvi install-dvi-am install-exec \
+-	install-exec-am install-html install-html-am install-info \
+-	install-info-am install-man install-man1 install-pdf \
+-	install-pdf-am install-ps install-ps-am install-strip \
+-	installcheck installcheck-am installdirs maintainer-clean \
+-	maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
+-	pdf-am ps ps-am tags-am uninstall uninstall-am uninstall-man \
+-	uninstall-man1
+-
+-.PRECIOUS: Makefile
+-
+-
+-# Tell versions [3.59,3.63) of GNU make to not export all variables.
+-# Otherwise a system limit (for SysV at least) may be exceeded.
+-.NOEXPORT:
+diff --git a/man/hexcurse.1 b/man/hexcurse.1
+index c2c9def..61cc25b 100644
+--- a/man/hexcurse.1
++++ b/man/hexcurse.1
+@@ -1,20 +1,29 @@
+ .\" to process use the following command
+ .\" groff -man -Tascii manpagename.1
+-.TH HEXCURSE 1 "22 December 2003"
++.TH HEXCURSE 1 "15 April 2022"
+ .SH NAME
+ hexcurse \- an ncurses-based hex editor
+ .SH SYNOPSIS
+ .B hexcurse
+ [
+-.B \-? " | " \-help
++.B \-? | \-help
+ ] [
+ .B \-a
+ ] [
+-.B \-r
+-.I rnum
++.B \-c
++.I colorlevel
++] [
++.B \-e
++] [
++.B \-f
+ ] [
+ .B \-o
+ .I outputfile
++] [
++.B \-r
++.I rnum
++] [
++.B \-t
+ ] [ [
+ .BR \-i
+ ]
+@@ -31,6 +40,30 @@ Prints out the command usage info
+ .B -a
+ Specifies the addresses to be output in decimal format initially.
+ .TP 15
++.BI -c \ colorlevel
++Specifies the color level.
++.RS 18
++0: no colors
++.RE
++.RS 18
++1: only color for addresses
++.RE
++.RS 18
++2: 1 + color for 00 (default if terminal supports color)
++.RE
++.RS 18
++3: multicolor by FrankSansC
++.RE
++.TP 15
++.B -e
++Specifies the characters to be output in EBCDIC format rather than ASCII.
++.TP 15
++.B -f
++Specifies that function key numbers will be shown along names in the labels.
++.TP 15
++.BI \-o \ outputfile
++Specifies the output file to be written to by default.
++.TP 15
+ .BI \-r \ rnum
+ Specifies the number of characters per line that the hexeditor should output.  If
+ .I rnum
+@@ -40,10 +73,10 @@ will fill the terminal width, just as if the
+ .B \-r
+ was not specified.
+ .TP 15
+-.BI \-o \ outputfile
+-Specifies the output file to be written to by default.
++.B -t
++Specifies the colors set by the terminal should be kept (all background and normal foreground). Set this if you see ugly colors or don't see some colors at all.
+ .TP 15
+-.BI [ \-i ] \ inputfile
++.BI [\ \-i\ ] \ inputfile
+ Specifies the input file to be read in.
+ .B \-i
+ is not needed if
+@@ -64,7 +97,7 @@ Opens a file.
+ Goto a certain location in the current file.  Depending on which way the addresses are being viewed at the moment, the search will behave differently.  If the addresses are currently in hex format, the search will search as if the input was given in hexadecimal format.  If the addresses are in decimal format, the function will search for the address in decimal.
+ .TP 15
+ .B F5 | ctrl+f
+-Search for a certain string in the current file.  Depending on which window the user is currently editing in, this search will behave differently.  If editing in the hex window, the input should only be in hexadecimal, and it will search for the hexadecimal "string."  If the current editing window is the ASCII window, the input should be ASCII characters, and the search will find that ASCII string in the file.
++Search for a certain string in the current file starting at the next position to the cursor.  Depending on which window the user is currently editing in, this search will behave differently.  If editing in the hex window, the input should only be in hexadecimal, and it will search for the hexadecimal "string".  If the current editing window is the ASCII window, the input should be ASCII characters, and the search will find that ASCII string in the file.  The search string is limited to 80 bytes.
+ .TP 15
+ .B F6 | ctrl+a
+ Switch between hexadecimal address values and decimal address values.
+@@ -107,11 +140,14 @@ James Stephenson - https://plus.google.com/u/0/103174459258175070784/about
+ .RS
+ Lonny Gomes - hexcurse dot lonnygomes dot com
+ .RE
++.RS
++prso at Github - https://github.com/prso
++.RE
+ .LP
+ The current version of this software is always availabe at
+ .LP
+ .RS
+-.I https://github.com/LonnyGomes/hexcurse
++.I https://github.com/prso/hexcurse
+ .RE
+ .SH BUGS
+ On some terminals the function keys will not work.  
+@@ -122,10 +158,10 @@ This will be corrected in the next release.  There is also an issue where the
+ labels on the bottom of the screen do not resize correctly.  A fix for the
+ latter is in the works.
+ .LP
+-To report a bug or problem, please e-mail:
++To report a bug or problem, please open an issue:
+ .LP
+ .RS
+-devel@jewfish.net
++.I https://github.com/prso/hexcurse/issues
+ .RE
+ .SH TODO
+-When we get the time, we would like to implement the ability to insert and delete data from the file.  Please e-mail us with any additional suggestions.
++When we get the time, we would like to implement the ability to insert and delete data from the file.  Please send any additional suggestions.
+diff --git a/screenshots/hexcurse-screenshot.png b/screenshots/hexcurse-screenshot.png
+new file mode 100644
+index 0000000..6d3e229
+Binary files /dev/null and b/screenshots/hexcurse-screenshot.png differ
+diff --git a/src/Makefile.in b/src/Makefile.in
+deleted file mode 100644
+index c9635f0..0000000
+--- a/src/Makefile.in
++++ /dev/null
+@@ -1,581 +0,0 @@
+-# Makefile.in generated by automake 1.15 from Makefile.am.
+-# @configure_input@
+-
+-# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+-
+-# This Makefile.in is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+-# This program is distributed in the hope that it will be useful,
+-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+-# PARTICULAR PURPOSE.
+-
+-@SET_MAKE@
+-
+-VPATH = @srcdir@
+-am__is_gnu_make = { \
+-  if test -z '$(MAKELEVEL)'; then \
+-    false; \
+-  elif test -n '$(MAKE_HOST)'; then \
+-    true; \
+-  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+-    true; \
+-  else \
+-    false; \
+-  fi; \
+-}
+-am__make_running_with_option = \
+-  case $${target_option-} in \
+-      ?) ;; \
+-      *) echo "am__make_running_with_option: internal error: invalid" \
+-              "target option '$${target_option-}' specified" >&2; \
+-         exit 1;; \
+-  esac; \
+-  has_opt=no; \
+-  sane_makeflags=$$MAKEFLAGS; \
+-  if $(am__is_gnu_make); then \
+-    sane_makeflags=$$MFLAGS; \
+-  else \
+-    case $$MAKEFLAGS in \
+-      *\\[\ \	]*) \
+-        bs=\\; \
+-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+-    esac; \
+-  fi; \
+-  skip_next=no; \
+-  strip_trailopt () \
+-  { \
+-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+-  }; \
+-  for flg in $$sane_makeflags; do \
+-    test $$skip_next = yes && { skip_next=no; continue; }; \
+-    case $$flg in \
+-      *=*|--*) continue;; \
+-        -*I) strip_trailopt 'I'; skip_next=yes;; \
+-      -*I?*) strip_trailopt 'I';; \
+-        -*O) strip_trailopt 'O'; skip_next=yes;; \
+-      -*O?*) strip_trailopt 'O';; \
+-        -*l) strip_trailopt 'l'; skip_next=yes;; \
+-      -*l?*) strip_trailopt 'l';; \
+-      -[dEDm]) skip_next=yes;; \
+-      -[JT]) skip_next=yes;; \
+-    esac; \
+-    case $$flg in \
+-      *$$target_option*) has_opt=yes; break;; \
+-    esac; \
+-  done; \
+-  test $$has_opt = yes
+-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+-pkgdatadir = $(datadir)/@PACKAGE@
+-pkgincludedir = $(includedir)/@PACKAGE@
+-pkglibdir = $(libdir)/@PACKAGE@
+-pkglibexecdir = $(libexecdir)/@PACKAGE@
+-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+-install_sh_DATA = $(install_sh) -c -m 644
+-install_sh_PROGRAM = $(install_sh) -c
+-install_sh_SCRIPT = $(install_sh) -c
+-INSTALL_HEADER = $(INSTALL_DATA)
+-transform = $(program_transform_name)
+-NORMAL_INSTALL = :
+-PRE_INSTALL = :
+-POST_INSTALL = :
+-NORMAL_UNINSTALL = :
+-PRE_UNINSTALL = :
+-POST_UNINSTALL = :
+-build_triplet = @build@
+-host_triplet = @host@
+-bin_PROGRAMS = hexcurse$(EXEEXT)
+-subdir = src
+-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+-	$(ACLOCAL_M4)
+-DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+-CONFIG_HEADER = $(top_builddir)/config.h
+-CONFIG_CLEAN_FILES =
+-CONFIG_CLEAN_VPATH_FILES =
+-am__installdirs = "$(DESTDIR)$(bindir)"
+-PROGRAMS = $(bin_PROGRAMS)
+-am_hexcurse_OBJECTS = file.$(OBJEXT) llist.$(OBJEXT) screen.$(OBJEXT) \
+-	hexcurse.$(OBJEXT) stack.$(OBJEXT) getopt.$(OBJEXT) \
+-	acceptch.$(OBJEXT) color.$(OBJEXT)
+-hexcurse_OBJECTS = $(am_hexcurse_OBJECTS)
+-hexcurse_LDADD = $(LDADD)
+-AM_V_P = $(am__v_P_@AM_V@)
+-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+-am__v_P_0 = false
+-am__v_P_1 = :
+-AM_V_GEN = $(am__v_GEN_@AM_V@)
+-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+-am__v_GEN_0 = @echo "  GEN     " $@;
+-am__v_GEN_1 = 
+-AM_V_at = $(am__v_at_@AM_V@)
+-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+-am__v_at_0 = @
+-am__v_at_1 = 
+-DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+-depcomp = $(SHELL) $(top_srcdir)/depcomp
+-am__depfiles_maybe = depfiles
+-am__mv = mv -f
+-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+-AM_V_CC = $(am__v_CC_@AM_V@)
+-am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+-am__v_CC_0 = @echo "  CC      " $@;
+-am__v_CC_1 = 
+-CCLD = $(CC)
+-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+-AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+-am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+-am__v_CCLD_0 = @echo "  CCLD    " $@;
+-am__v_CCLD_1 = 
+-SOURCES = $(hexcurse_SOURCES)
+-DIST_SOURCES = $(hexcurse_SOURCES)
+-am__can_run_installinfo = \
+-  case $$AM_UPDATE_INFO_DIR in \
+-    n|no|NO) false;; \
+-    *) (install-info --version) >/dev/null 2>&1;; \
+-  esac
+-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+-# Read a list of newline-separated strings from the standard input,
+-# and print each of them once, without duplicates.  Input order is
+-# *not* preserved.
+-am__uniquify_input = $(AWK) '\
+-  BEGIN { nonempty = 0; } \
+-  { items[$$0] = 1; nonempty = 1; } \
+-  END { if (nonempty) { for (i in items) print i; }; } \
+-'
+-# Make sure the list of sources is unique.  This is necessary because,
+-# e.g., the same source file might be shared among _SOURCES variables
+-# for different programs/libraries.
+-am__define_uniq_tagged_files = \
+-  list='$(am__tagged_files)'; \
+-  unique=`for i in $$list; do \
+-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+-  done | $(am__uniquify_input)`
+-ETAGS = etags
+-CTAGS = ctags
+-am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \
+-	$(top_srcdir)/mkinstalldirs
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+-ACLOCAL = @ACLOCAL@
+-AMTAR = @AMTAR@
+-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+-AUTOCONF = @AUTOCONF@
+-AUTOHEADER = @AUTOHEADER@
+-AUTOMAKE = @AUTOMAKE@
+-AWK = @AWK@
+-CC = @CC@
+-CCDEPMODE = @CCDEPMODE@
+-CFLAGS = @CFLAGS@
+-CPP = @CPP@
+-CPPFLAGS = @CPPFLAGS@
+-CYGPATH_W = @CYGPATH_W@
+-DEFS = @DEFS@
+-DEPDIR = @DEPDIR@
+-ECHO_C = @ECHO_C@
+-ECHO_N = @ECHO_N@
+-ECHO_T = @ECHO_T@
+-EGREP = @EGREP@
+-EXEEXT = @EXEEXT@
+-GREP = @GREP@
+-INSTALL = @INSTALL@
+-INSTALL_DATA = @INSTALL_DATA@
+-INSTALL_PROGRAM = @INSTALL_PROGRAM@
+-INSTALL_SCRIPT = @INSTALL_SCRIPT@
+-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+-LDFLAGS = @LDFLAGS@
+-LIBOBJS = @LIBOBJS@
+-LIBS = @LIBS@
+-LTLIBOBJS = @LTLIBOBJS@
+-MAKEINFO = @MAKEINFO@
+-MKDIR_P = @MKDIR_P@
+-OBJEXT = @OBJEXT@
+-PACKAGE = @PACKAGE@
+-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+-PACKAGE_NAME = @PACKAGE_NAME@
+-PACKAGE_STRING = @PACKAGE_STRING@
+-PACKAGE_TARNAME = @PACKAGE_TARNAME@
+-PACKAGE_URL = @PACKAGE_URL@
+-PACKAGE_VERSION = @PACKAGE_VERSION@
+-PATH_SEPARATOR = @PATH_SEPARATOR@
+-SET_MAKE = @SET_MAKE@
+-SHELL = @SHELL@
+-STRIP = @STRIP@
+-VERSION = @VERSION@
+-abs_builddir = @abs_builddir@
+-abs_srcdir = @abs_srcdir@
+-abs_top_builddir = @abs_top_builddir@
+-abs_top_srcdir = @abs_top_srcdir@
+-ac_ct_CC = @ac_ct_CC@
+-am__include = @am__include@
+-am__leading_dot = @am__leading_dot@
+-am__quote = @am__quote@
+-am__tar = @am__tar@
+-am__untar = @am__untar@
+-bindir = @bindir@
+-build = @build@
+-build_alias = @build_alias@
+-build_cpu = @build_cpu@
+-build_os = @build_os@
+-build_vendor = @build_vendor@
+-builddir = @builddir@
+-datadir = @datadir@
+-datarootdir = @datarootdir@
+-docdir = @docdir@
+-dvidir = @dvidir@
+-exec_prefix = @exec_prefix@
+-host = @host@
+-host_alias = @host_alias@
+-host_cpu = @host_cpu@
+-host_os = @host_os@
+-host_vendor = @host_vendor@
+-htmldir = @htmldir@
+-includedir = @includedir@
+-infodir = @infodir@
+-install_sh = @install_sh@
+-libdir = @libdir@
+-libexecdir = @libexecdir@
+-localedir = @localedir@
+-localstatedir = @localstatedir@
+-mandir = @mandir@
+-mkdir_p = @mkdir_p@
+-oldincludedir = @oldincludedir@
+-pdfdir = @pdfdir@
+-prefix = @prefix@
+-program_transform_name = @program_transform_name@
+-psdir = @psdir@
+-sbindir = @sbindir@
+-sharedstatedir = @sharedstatedir@
+-srcdir = @srcdir@
+-sysconfdir = @sysconfdir@
+-target_alias = @target_alias@
+-top_build_prefix = @top_build_prefix@
+-top_builddir = @top_builddir@
+-top_srcdir = @top_srcdir@
+-AM_CPPFLAGS = -I$(top_srcdir)/include -Wall -Werror -Wextra
+-hexcurse_SOURCES = file.c llist.c screen.c hexcurse.c stack.c getopt.c acceptch.c color.c
+-all: all-am
+-
+-.SUFFIXES:
+-.SUFFIXES: .c .o .obj
+-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+-	@for dep in $?; do \
+-	  case '$(am__configure_deps)' in \
+-	    *$$dep*) \
+-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+-	        && { if test -f $@; then exit 0; else break; fi; }; \
+-	      exit 1;; \
+-	  esac; \
+-	done; \
+-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
+-	$(am__cd) $(top_srcdir) && \
+-	  $(AUTOMAKE) --gnu src/Makefile
+-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+-	@case '$?' in \
+-	  *config.status*) \
+-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+-	  *) \
+-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+-	esac;
+-
+-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+-
+-$(top_srcdir)/configure:  $(am__configure_deps)
+-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+-$(am__aclocal_m4_deps):
+-install-binPROGRAMS: $(bin_PROGRAMS)
+-	@$(NORMAL_INSTALL)
+-	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+-	if test -n "$$list"; then \
+-	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+-	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+-	fi; \
+-	for p in $$list; do echo "$$p $$p"; done | \
+-	sed 's/$(EXEEXT)$$//' | \
+-	while read p p1; do if test -f $$p \
+-	  ; then echo "$$p"; echo "$$p"; else :; fi; \
+-	done | \
+-	sed -e 'p;s,.*/,,;n;h' \
+-	    -e 's|.*|.|' \
+-	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+-	sed 'N;N;N;s,\n, ,g' | \
+-	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+-	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+-	    if ($$2 == $$4) files[d] = files[d] " " $$1; \
+-	    else { print "f", $$3 "/" $$4, $$1; } } \
+-	  END { for (d in files) print "f", d, files[d] }' | \
+-	while read type dir files; do \
+-	    if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+-	    test -z "$$files" || { \
+-	      echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+-	      $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+-	    } \
+-	; done
+-
+-uninstall-binPROGRAMS:
+-	@$(NORMAL_UNINSTALL)
+-	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+-	files=`for p in $$list; do echo "$$p"; done | \
+-	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+-	      -e 's/$$/$(EXEEXT)/' \
+-	`; \
+-	test -n "$$list" || exit 0; \
+-	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
+-	cd "$(DESTDIR)$(bindir)" && rm -f $$files
+-
+-clean-binPROGRAMS:
+-	-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
+-
+-hexcurse$(EXEEXT): $(hexcurse_OBJECTS) $(hexcurse_DEPENDENCIES) $(EXTRA_hexcurse_DEPENDENCIES) 
+-	@rm -f hexcurse$(EXEEXT)
+-	$(AM_V_CCLD)$(LINK) $(hexcurse_OBJECTS) $(hexcurse_LDADD) $(LIBS)
+-
+-mostlyclean-compile:
+-	-rm -f *.$(OBJEXT)
+-
+-distclean-compile:
+-	-rm -f *.tab.c
+-
+-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/acceptch.Po@am__quote@
+-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/color.Po@am__quote@
+-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file.Po@am__quote@
+-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt.Po@am__quote@
+-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hexcurse.Po@am__quote@
+-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/llist.Po@am__quote@
+-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/screen.Po@am__quote@
+-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack.Po@am__quote@
+-
+-.c.o:
+-@am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
+-
+-.c.obj:
+-@am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+-
+-ID: $(am__tagged_files)
+-	$(am__define_uniq_tagged_files); mkid -fID $$unique
+-tags: tags-am
+-TAGS: tags
+-
+-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+-	set x; \
+-	here=`pwd`; \
+-	$(am__define_uniq_tagged_files); \
+-	shift; \
+-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+-	  test -n "$$unique" || unique=$$empty_fix; \
+-	  if test $$# -gt 0; then \
+-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+-	      "$$@" $$unique; \
+-	  else \
+-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+-	      $$unique; \
+-	  fi; \
+-	fi
+-ctags: ctags-am
+-
+-CTAGS: ctags
+-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+-	$(am__define_uniq_tagged_files); \
+-	test -z "$(CTAGS_ARGS)$$unique" \
+-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+-	     $$unique
+-
+-GTAGS:
+-	here=`$(am__cd) $(top_builddir) && pwd` \
+-	  && $(am__cd) $(top_srcdir) \
+-	  && gtags -i $(GTAGS_ARGS) "$$here"
+-cscopelist: cscopelist-am
+-
+-cscopelist-am: $(am__tagged_files)
+-	list='$(am__tagged_files)'; \
+-	case "$(srcdir)" in \
+-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+-	  *) sdir=$(subdir)/$(srcdir) ;; \
+-	esac; \
+-	for i in $$list; do \
+-	  if test -f "$$i"; then \
+-	    echo "$(subdir)/$$i"; \
+-	  else \
+-	    echo "$$sdir/$$i"; \
+-	  fi; \
+-	done >> $(top_builddir)/cscope.files
+-
+-distclean-tags:
+-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+-check-am: all-am
+-check: check-am
+-all-am: Makefile $(PROGRAMS)
+-installdirs:
+-	for dir in "$(DESTDIR)$(bindir)"; do \
+-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+-	done
+-install: install-am
+-install-exec: install-exec-am
+-install-data: install-data-am
+-uninstall: uninstall-am
+-
+-install-am: all-am
+-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+-
+-installcheck: installcheck-am
+-install-strip:
+-	if test -z '$(STRIP)'; then \
+-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+-	      install; \
+-	else \
+-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+-	fi
+-mostlyclean-generic:
+-
+-clean-generic:
+-
+-distclean-generic:
+-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+-
+-maintainer-clean-generic:
+-	@echo "This command is intended for maintainers to use"
+-	@echo "it deletes files that may require special tools to rebuild."
+-clean: clean-am
+-
+-clean-am: clean-binPROGRAMS clean-generic mostlyclean-am
+-
+-distclean: distclean-am
+-	-rm -rf ./$(DEPDIR)
+-	-rm -f Makefile
+-distclean-am: clean-am distclean-compile distclean-generic \
+-	distclean-tags
+-
+-dvi: dvi-am
+-
+-dvi-am:
+-
+-html: html-am
+-
+-html-am:
+-
+-info: info-am
+-
+-info-am:
+-
+-install-data-am:
+-
+-install-dvi: install-dvi-am
+-
+-install-dvi-am:
+-
+-install-exec-am: install-binPROGRAMS
+-
+-install-html: install-html-am
+-
+-install-html-am:
+-
+-install-info: install-info-am
+-
+-install-info-am:
+-
+-install-man:
+-
+-install-pdf: install-pdf-am
+-
+-install-pdf-am:
+-
+-install-ps: install-ps-am
+-
+-install-ps-am:
+-
+-installcheck-am:
+-
+-maintainer-clean: maintainer-clean-am
+-	-rm -rf ./$(DEPDIR)
+-	-rm -f Makefile
+-maintainer-clean-am: distclean-am maintainer-clean-generic
+-
+-mostlyclean: mostlyclean-am
+-
+-mostlyclean-am: mostlyclean-compile mostlyclean-generic
+-
+-pdf: pdf-am
+-
+-pdf-am:
+-
+-ps: ps-am
+-
+-ps-am:
+-
+-uninstall-am: uninstall-binPROGRAMS
+-
+-.MAKE: install-am install-strip
+-
+-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
+-	clean-binPROGRAMS clean-generic cscopelist-am ctags ctags-am \
+-	distclean distclean-compile distclean-generic distclean-tags \
+-	distdir dvi dvi-am html html-am info info-am install \
+-	install-am install-binPROGRAMS install-data install-data-am \
+-	install-dvi install-dvi-am install-exec install-exec-am \
+-	install-html install-html-am install-info install-info-am \
+-	install-man install-pdf install-pdf-am install-ps \
+-	install-ps-am install-strip installcheck installcheck-am \
+-	installdirs maintainer-clean maintainer-clean-generic \
+-	mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \
+-	ps ps-am tags tags-am uninstall uninstall-am \
+-	uninstall-binPROGRAMS
+-
+-.PRECIOUS: Makefile
+-
+-
+-# Tell versions [3.59,3.63) of GNU make to not export all variables.
+-# Otherwise a system limit (for SysV at least) may be exceeded.
+-.NOEXPORT:
+diff --git a/src/acceptch.c b/src/acceptch.c
+index 1580645..19c3eb0 100644
+--- a/src/acceptch.c
++++ b/src/acceptch.c
+@@ -1,5 +1,6 @@
+ /******************************************************************************\
+  *  Copyright (C) 2001, hexcurse is  writen by Jewfish and Armoth             *
++ *  Copyright (C) 2020-2023 prso at github, fixes and improvements            *
+  *									      *
+  *  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      *
+@@ -35,11 +36,12 @@ int wacceptch(WINS *win, off_t len)
+     
+     off_t count;
+     int  col = 0, val, tmpval, 	    			/* counters, etc.     */   
+-         ch[17],					/* holds search string*/
++         ch[81],					/* holds search string*/
+ 	 eol = (BASE * 3) - 1,				/* end of line pos    */
+ 	 lastRow = 0, lastCol = 0,			/* last row/col coords*/
+ 	 curVal = 0,	        			/* vals @ cursor locs */
+-	 tmp = 0;
++	 tmp = 0,
++	 templen = 0;
+ 
+     off_t cl,						/* current loc in file*/
+ 	  gotoLoc = 0,					/* goto location      */
+@@ -49,13 +51,14 @@ int wacceptch(WINS *win, off_t len)
+ 
+     char *gotoLocStr,					/* convert to gotoLoc */
+          *temp,
++         *searchhex,
++         *searchascii,
+     	 *tmpstr,					/* tmp str 4 inputLine*/
+ 	 SearchStr[13];
+ 
+     short int key;					/* key capture        */
+     WINDOW *Winds;					/* window pointer     */
+     hexStack *stack;					/* used for stack     */
+-    hexStack *tmpStack;					/* used for stack     */
+     editHex = TRUE;					/* val for editing    */
+ 
+     SIZE_CH	= FALSE;				/* set winch to false */
+@@ -63,10 +66,11 @@ int wacceptch(WINS *win, off_t len)
+     maxlines    = maxLines(len);			/* lines in file      */
+     
+     bool shouldExit = false;
++    bool savedpoint = TRUE;
+ 
+-    /*createStack(stack);*/				/* init the stack     */
+     stack = NULL;
+-    temp = (char *)calloc(81, sizeof(char));
++    searchhex = (char *)calloc(81, sizeof(char));
++    searchascii = (char *)calloc(81, sizeof(char));
+ 
+     if (fpIN)						/* if file opened then*/
+     {							/* highlight 0,0 loc  */
+@@ -84,7 +88,6 @@ int wacceptch(WINS *win, off_t len)
+         
+ 							/* get keys til exit  */
+     while(!shouldExit)
+-    //while (!(save=quitProgram(isEmptyStack(stack),(key = wgetch(Winds)))))
+     {
+         key = wgetch(Winds);
+ 	lastRow = row;
+@@ -118,7 +121,7 @@ int wacceptch(WINS *win, off_t len)
+ 	case CTRL_AND('q'):
+ 	case CTRL_AND('x'):
+ 	case KEY_F(8):
+-		if (isEmptyStack(stack))
++		if (saved)
+ 		{
+ 			/* No pending changes */
+ 			shouldExit = true;
+@@ -165,6 +168,23 @@ int wacceptch(WINS *win, off_t len)
+ 		    if((row > MAXY) && (currentLine <= maxlines))
+ 		        winscroll(win, Winds, 1, currentLine);
+ 		}
++		else if (currentLine != maxlines)
++		{					/* move to EOF        */
++							/* scroll down...     */
++		    if (row >= MAXY)
++		        winscroll(win, Winds, 1, ++currentLine);
++		    else
++		    {
++		        currentLine++;
++		        row++;
++		    }
++							/* last column        */
++		    col = (editHex) ? 3 * ((len % BASE) - 1):(len % BASE) - 1;
++		    if (col < 0)
++		        col = (editHex) ? 3 * (BASE - 1) : BASE - 1;
++
++		    wmove(Winds, row, col);		/* move cursor        */
++		}
+ 		break;
+ 
+ 	case KEY_BACKSPACE:
+@@ -190,7 +210,11 @@ int wacceptch(WINS *win, off_t len)
+ 
+ 	default:					/* if other key...    */
+ 							/* if key we want...  */
+-		if (isprint(key) && ((editHex && isxdigit(key)) || !editHex))
++		if ( (editHex && isxdigit(key)) ||
++		     ( (!editHex && isprint(key)) &&
++		       ( (USE_EBCDIC) ? (ASCII_to_EBCDIC[key]!=NODEF) : TRUE )
++		     )
++		   )
+ 		{
+ 		    if ((cl=cursorLoc(currentLine, col, editHex,BASE))< len) 
+ 		    {   
+@@ -204,26 +228,43 @@ int wacceptch(WINS *win, off_t len)
+ 
+ 			wattron(win->hex, A_BOLD);
+ 			wattron(win->ascii, A_BOLD);
+-							/* output it          */
+-			wprintw(Winds, "%c", editHex ? toupper(key): key);
+ 
+ 			tmpval = val;			/* val b4 key press   */
+ 
+ 			if (editHex)			/* if in hex win...   */
+ 			{
+-			    if (key >= 65 && key <= 70)	/* get correct val    */
+-			    	key -= 7;
+-			    else if (key >= 97 && key <= 102)
+-			    	key -= 39;
+-			    key -= 48;
+-			
+-			    if ((col % 3) == 0)		/* compute byte val   */
+-                            val = (key * 16) + (val % 16);
+-			    else if ((col % 3) == 1)
+-			    	val = (val - ((val + 16) % 16) + key);
++				short int tmpkey = key;
++
++				if (tmpkey >= 65 && tmpkey <= 70)	/* get correct val    */
++					tmpkey -= 7;
++				else if (tmpkey >= 97 && tmpkey <= 102)
++					tmpkey -= 39;
++				tmpkey -= 48;
++
++				if ((col % 3) == 0)		/* compute byte val */
++				{                  		/* and update color */
++				        				/* first digit hex  */
++					val = (tmpkey * 16) + (val % 16);
++					byte_color_on((row * BASE) + col, val);
++					wprintw(Winds, "%02X", val);
++				}
++				else if ((col % 3) == 1)
++				     {					/* second digit hex */
++				     	val = (val - ((val + 16) % 16) + tmpkey);
++				     	byte_color_on((row * BASE) + col, val);
++				     	wmove(win->hex, row, col-1);
++				     	wprintw(Winds, "%02X", val);
++				     	wmove(win->hex, row, col);
++				     }
+ 			}
+ 			else				/* else...            */
+-			    val = key;			/* val is key pressed */
++			{
++					/* val is key pressed */
++				val = (USE_EBCDIC) ? ASCII_to_EBCDIC[key] : key;
++				          			/* output it          */
++				byte_color_on((row * BASE) + col, val);
++				wprintw(Winds, "%c", key);
++			}
+ 
+ 			if (editHex)			/* update ascii win   */
+ 			{
+@@ -240,19 +281,18 @@ int wacceptch(WINS *win, off_t len)
+ 			    wmove(win->ascii, row, col);
+ 			    wrefresh(win->hex);
+ 			}
++			byte_color_off((row * BASE) + col, val);
+ 
+ 			wattrset(win->hex, A_NORMAL);
+ 			wattrset(win->ascii, A_NORMAL);
+ 			
+ 							/* edit list          */
++							/* first add the original value for save+undo */
++			if (searchList(head, cl) == -1) head = insertItem(head, cl, tmpval);
++							/* then add the current value */
+ 			head = insertItem(head, cl, val);
+-		/* calloc() is used because it NULLS out all returned memory  */
+-    			tmpStack = (hexStack *) calloc(1, sizeof(hexStack));
+-			tmpStack->currentLoc = cl;
+-			tmpStack->llist	     = head;
+-			tmpStack->savedVal   = tmpval;
+-			tmpStack->prev       = NULL;
+-			pushStack(&stack, tmpStack);
++			pushStack(&stack, cl, tmpval);
++			set_saved(FALSE, Winds);
+ 		    }					/* continue to next
+ 							    case              */
+ 
+@@ -297,6 +337,7 @@ int wacceptch(WINS *win, off_t len)
+ 		}
+ 		else
+ 		    currentLine -= (2*MAXY);
++                /* fall through */
+ 
+ 	case CTRL_AND('d'):
+ 	case KEY_PGDN:					/* if KEY_PGDN...     */
+@@ -429,13 +470,23 @@ int wacceptch(WINS *win, off_t len)
+ 			MIN_ADDR_LENGTH = getMinimumAddressLength(maxLoc(fpIN));
+ 			curVal = getLocVal(0);
+                     }                
++	 	    set_saved(TRUE, Winds);
+ 	 	    return TRUE;			/* TRUE if worked     */
+ 		}
+ 		break;
+ 
+ 	case CTRL_AND('s'):				/* if F2 or ^s...     */
+ 	case KEY_F(2):					/* save the file      */
+-		savefile(win);
++		if (savefile(win) == 0)
++		{
++			set_saved(TRUE, Winds);
++			if (stack != NULL && stack->savedVal != SAVEPOINT)
++			{
++				pushStack(&stack, -1, SAVEPOINT);
++				savedpoint = TRUE;
++			}
++			else if (stack == NULL) savedpoint = TRUE;
++		}
+ 		break;
+ 
+ 	case CTRL_AND('f'):
+@@ -451,14 +502,16 @@ int wacceptch(WINS *win, off_t len)
+                     wrefresh(win->hex_outline);
+                     break;
+                 }
+- 
++
++		temp = editHex ? searchhex : searchascii;
+ 
+ 		if (temp != NULL)
+ 		{
+ 		    bzero(SearchStr, 13);
+ 		    strcat(SearchStr, "(");
+-		    if (strlen(temp) <= 10)
+-			strncat(SearchStr, temp, strlen(temp));
++		    templen = strlen(temp);
++		    if (templen <= 10)
++			strcat(SearchStr, temp);
+ 		    else
+ 		    {
+ 			strncat(SearchStr, temp, 7);
+@@ -478,7 +531,7 @@ int wacceptch(WINS *win, off_t len)
+ 		/* the third parameter positions the cursor in the correct loc*/
+ 		tmpstr = inputLine(win->hex_outline, LINES - 1, 
+ 			 ((editHex) ? 21 : 23) + 
+-			 ((strlen(temp) > 10) ? 10 : strlen(temp)));
++			 ((templen > 10) ? 10 : templen), !editHex);
+ 		noecho();
+ 
+ 		wmove(win->hex_outline, LINES - 1, 1);
+@@ -497,8 +550,16 @@ int wacceptch(WINS *win, off_t len)
+ 		if (tmpstr[0] != '\0' )			/* enter was hit so   */
+ 		{					/* don't change temp  */
+ 		    bzero(temp, 81);
+-		    strncpy(temp, tmpstr, (strlen(tmpstr) > 80) 
+-			    ? 80 : strlen(tmpstr));
++		    if (strlen(tmpstr) > 80)
++		    {
++			strncpy(temp, tmpstr, 80);
++
++			popupWin("Warning: search value truncated to the maximum 80 bytes", -1);
++			restoreBorder(win);			/* restore border     */
++			wrefresh(win->hex_outline);
++		    }
++		    else
++			strcpy(temp, tmpstr);
+ 		}
+ 
+ 		val = 0;
+@@ -527,24 +588,38 @@ int wacceptch(WINS *win, off_t len)
+ 		if ((count % 2 > 0) && (editHex))	/* add last byte on   */
+ 			    ch[(count + 1) / 2] = tmp;
+ 
++		gotoLoc = -1;
+ 		if (val != -1)				/* if val checks out  */
+ 							/* search for it      */
+-		    val = hexSearch(fpIN, ch, cursorLoc(currentLine, col,
+-			  editHex, BASE), (editHex) ? ((count+1)/2) : count);
++		    gotoLoc = hexSearchBM(win->hex_outline, fpIN, ch, (off_t) cursorLoc(currentLine, col,
++			      editHex, BASE), (int) (editHex) ? ((count+1)/2) : count);
++		else
++		{
++		    popupWin("Value is not hex!", -1);
++		    restoreBorder(win);			/* restore border     */
++		    wrefresh(win->hex_outline);
++		    break;
++		}
+ 
+-		if (val == -1) 				/* if nothing came up */
++		if (gotoLoc == -1) 				/* if nothing came up */
+ 		{
+ 		    popupWin("Value not found!", -1);
+                     restoreBorder(win);			/* restore border     */
+ 		    wrefresh(win->hex_outline);
+ 		}
+-		else 
++		else if (gotoLoc == -2)
++		{
++		    popupWin("Search canceled!", -1);
++                    restoreBorder(win);			/* restore border     */
++		    wrefresh(win->hex_outline);
++		}
++		else
+ 		{
+                     getyx(Winds, row, col);
+ 							/* goto found loc     */
+                     currentLine = gotoLine(fpIN,
+                                         cursorLoc(currentLine,col,editHex,BASE),
+-                                           val, maxlines, Winds);
++                                           gotoLoc, maxlines, Winds);
+ 
+ 		}
+ 		break;
+@@ -570,7 +645,10 @@ int wacceptch(WINS *win, off_t len)
+ 			       MIN_ADDR_LENGTH, (intmax_t)((count + row) * BASE));
+ 
+ 							/* update menu button */
+-		slk_set(6, (printHex) ? "Hex Addr":"Dec Addr", 1);
++		if (FNUMBERS)
++		    slk_set(6, (printHex) ? "6:Hex Ad":"6:Dec Ad", 1);
++		else
++		    slk_set(6, (printHex) ? "Hex Addr":"Dec Addr", 1);
+ 		slk_noutrefresh();			/* refresh            */
+ 		wnoutrefresh(win->address);
+ 		break;
+@@ -584,7 +662,7 @@ int wacceptch(WINS *win, off_t len)
+ 
+ 		echo();					/* echo chars         */
+ 		gotoLocStr = inputLine(win->hex_outline, LINES - 1, 
+-			              (printHex) ? 21 : 25);
++			              (printHex) ? 21 : 25, FALSE);
+ 		if (gotoLocStr[0] == 27)		/* escape was hit     */
+ 		{					/* restore & return   */
+ 		    restoreBorder(win);
+@@ -621,24 +699,31 @@ int wacceptch(WINS *win, off_t len)
+ 							/*switch the underline*/
+ 		getyx(Winds, row, col);			/* current location   */
+ 		wattrset((editHex) ? win->ascii : win->hex, A_NORMAL);
+-		mvwprintw((editHex) ? win->ascii : win->hex, row,
+-			  (editHex) ? col/3 : col*3, 
+-			  (editHex) ? "%c": "%02X", 
+-			  (editHex) ? ((isprint(curVal))?curVal : '.'):curVal);
++
++		byte_color_on((row * BASE) + col, curVal);
++
++		if (editHex)
++		   mvwprintw(win->ascii, row, col/3, "%c",
++		      (USE_EBCDIC) ? EBCDIC[curVal] : (isprint(curVal)) ? curVal : '.');
++		else
++		   mvwprintw(win->hex, row, col*3, "%02X", curVal);
++
++		byte_color_off((row * BASE) + col, curVal);
++
+ 		wnoutrefresh((editHex) ? win->ascii : win->hex);
+ 		if (editHex)				/* already in hex win */
+ 		{
+ 		    Winds = win->ascii;			/* change to ascii    */
+ 		    eol = BASE;
+ 	 	    wmove(Winds, row, (col/3));
+-		    slk_set(7, "Asc Edit", 1);
++		    slk_set(7, FNUMBERS ? "7:Asc Ed":"Asc Edit", 1);
+ 		}
+ 		else					/* already in ascii   */
+ 		{
+ 		    Winds = win->hex;			/* change to hex win  */
+ 		    eol = (BASE * 3) - 1;
+ 	 	    wmove(Winds, row, (col*3));	
+-		    slk_set(7, "Hex Edit", 1);
++		    slk_set(7, FNUMBERS ? "7:Hex Ed":"Hex Edit", 1);
+ 		}
+ 
+ 		editHex = (!editHex);			/* change test val    */
+@@ -646,7 +731,7 @@ int wacceptch(WINS *win, off_t len)
+ 
+ 		getyx(Winds, row, col);			/* current location   */
+ 		/* re-bold char if the value over the cursor is modified      */
+-		if (inHexList(cursorLoc(currentLine, col, editHex, BASE))) 
++		if (countList(head, cursorLoc(currentLine, col, editHex, BASE)) > 1)
+ 		{
+ 		    wattron((editHex) ? win->hex : win->ascii, A_BOLD);
+ 		    mvwprintw((editHex) ? win->hex : win->ascii , row, col, 
+@@ -672,14 +757,32 @@ int wacceptch(WINS *win, off_t len)
+ 	case CTRL_AND('z'):				/* ^z undo last mod   */
+ 		getyx(Winds, row, col);
+ 
+-							/* set previous loc   */
+-		cl = (stack == NULL) ? cl : stack->currentLoc;
++		if (stack != NULL && stack->savedVal == SAVEPOINT)
++		{
++		    popStack(&stack);
++		    savedpoint = FALSE;
++		}
+ 		if (stack != NULL)
+ 		{
+-
+-		    /*if (stack != NULL) val = stack->savedVal;               */
++		    cl = stack->currentLoc;
+ 		    val = stack->savedVal;
+ 		    popStack(&stack);
++		                                   /* if there is a save point in */
++		                                   /* the next value of the stack */
++		    if (stack != NULL && stack->savedVal == SAVEPOINT)
++		    {
++		        if (savedpoint)       /* and if it's the last (controlled */
++		        {                     /* by savedpoint) go to saved mode */
++		            savedpoint = FALSE;
++		            set_saved(TRUE, Winds);
++		        }
++		        else set_saved(FALSE, Winds);
++		        popStack(&stack);
++		    }
++		    else if (stack == NULL && savedpoint)
++		              set_saved(TRUE, Winds);
++		         else set_saved(FALSE, Winds);
++
+ 		    head = deleteNode(head,cl);
+ 
+ 
+@@ -699,39 +802,29 @@ int wacceptch(WINS *win, off_t len)
+ 		
+ 		    getyx(Winds, row, col);
+ 
+-   		    if ((searchList(head, cl)) != -1)
++   		    if (countList(head, cl) > 1)
+ 		    {	
+ 			wattron(win->hex, A_BOLD);
+ 			wattron(win->ascii, A_BOLD);
+ 		    }
++		    byte_color_on((row * BASE) + col, val);
++
+                     if (editHex)
+ 		    {
+-                        wmove(win->ascii, row, (col/3));    
+-			wprintw(win->ascii, "%c", (USE_EBCDIC) ? EBCDIC[val] :
+-			       (isprint(val) ? val : 46));
+-                        wmove(win->hex, row, col);
+-                        wrefresh(win->ascii);
+-
+                         wprintw(win->hex, "%02X", val);
+                         wmove(win->hex, row, col);      
+                         wrefresh(win->hex);
+ 		    }
+ 		    else
+ 		    {
+-                        wmove(win->hex, row, (col*3));      
+-                        wprintw(win->hex, "%02X", val);
+-                        wmove(win->ascii, row, col);
+-                        wrefresh(win->hex);
+-
+ 			wprintw(win->ascii, "%c", (USE_EBCDIC) ? EBCDIC[val] :
+ 			       (isprint(val) ? val : 46));
+                         wmove(win->ascii, row, col);    
+                         wrefresh(win->ascii);
+ 		    }
++		    byte_color_off((row * BASE) + col, val);
+ 		    wattrset(win->hex, A_NORMAL);
+ 		    wattrset(win->ascii, A_NORMAL);
+-
+-
+ 		}
+ 		break;
+ 
+@@ -740,7 +833,8 @@ int wacceptch(WINS *win, off_t len)
+ 	    printDebug(head, -1);
+ 	    break;
+ #endif
+-	}
++
++	} // switch
+ 
+ 	getyx(Winds, row, col);				/* get cur row/col    */
+ 	if (fpIN)
+@@ -764,27 +858,41 @@ int wacceptch(WINS *win, off_t len)
+ 	        curVal = getLocVal(cursorLoc(lastLine, lastCol, editHex, BASE));
+ 		wattrset((editHex) ? win->ascii : win->hex, A_NORMAL);
+ 		wattron((editHex) ? win->ascii : win->hex,
+-		  (inHexList(cursorLoc(lastLine, lastCol, editHex, BASE))) ?
++		  (countList(head, cursorLoc(lastLine, lastCol, editHex, BASE)) > 1) ?
+ 		  A_BOLD : A_NORMAL);
+-		mvwprintw((editHex) ? win->ascii : win->hex, lastRow, 
+-			  (editHex) ? lastCol/3 : lastCol*3, 
+-			  (editHex) ? "%c" : "%02X", 
+-			  (editHex) ? (isprint(curVal)) ? curVal : '.': curVal);
++
++		byte_color_on((lastRow * BASE) + lastCol, curVal);
++
++		if (editHex)
++		   mvwprintw(win->ascii, lastRow, lastCol/3, "%c",
++		      (USE_EBCDIC) ? EBCDIC[curVal] : (isprint(curVal)) ? curVal : '.');
++		else
++		   mvwprintw(win->hex, lastRow, lastCol*3, "%02X", curVal);
++
++		byte_color_off((lastRow * BASE) + lastCol, curVal);
++
+ 		wmove(Winds, row, col);
+ 		wattrset((editHex) ? win->ascii : win->hex, A_NORMAL);
+ 		wnoutrefresh((editHex) ? win->ascii : win->hex);
+ 	    }
++
+ 							/* highlight new char */
+ 	    wattron((editHex) ? win->ascii : win->hex, A_UNDERLINE);
+-	    if (inHexList(cursorLoc(currentLine, col, editHex, BASE)))
++	    if (countList(head, cursorLoc(currentLine, col, editHex, BASE)) > 1)
+ 	        wattron((editHex) ? win->ascii : win->hex, A_BOLD);
+ 
+ 	    curVal = getLocVal(cursorLoc(currentLine, col, editHex, BASE));
+ 
+-	    mvwprintw((editHex) ? win->ascii : win->hex, row, 
+-		      (editHex) ? col/3 : col*3,  
+-		      (editHex) ? "%c" : "%02X", 
+-		      (editHex) ? (isprint(curVal)) ? curVal : '.' : curVal); 
++	    byte_color_on((row * BASE) + col, curVal);
++
++	    if (editHex)
++	       mvwprintw(win->ascii, row, col/3, "%c",
++	          (USE_EBCDIC) ? EBCDIC[curVal] : (isprint(curVal)) ? curVal : '.');
++	    else
++	       mvwprintw(win->hex, row, col*3, "%02X", curVal);
++
++	    byte_color_off((row * BASE) + col, curVal);
++
+ 	    wattrset((editHex) ? win->ascii : win->hex, A_NORMAL);
+ 	    wnoutrefresh((editHex) ? win->ascii : win->hex);
+ 	}
+@@ -803,7 +911,8 @@ int wacceptch(WINS *win, off_t len)
+ 	doupdate();					/* update visual      */
+     }
+ 
+-    free(temp);
++    free(searchhex);
++    free(searchascii);
+     while (stack != NULL)
+ 	popStack(&stack);
+     
+@@ -828,27 +937,23 @@ void restoreBorder(WINS *win)
+  * Description:  gets a line of input from user		*
+  * Returns:	 received string			*
+ \********************************************************/
+-char *inputLine(WINDOW *win, int line, int col)
++char *inputLine(WINDOW *win, int line, int col, bool allow_space)
+ {
+     int x;
+-    unsigned long int c;
++    unsigned long int c, first_printable;
+     char *ch;
+-    int allocated = 81;
++    int allocated = 80;
++
++    first_printable = allow_space ? 32 : 33;
+ 
+     noecho();
+ 
+-    ch = (char *)malloc(allocated);				/* allocate space     */
++    ch = (char *)malloc(allocated+1);				/* allocate space     */
+ 
+     wmove(win, line, col);
+ 
+     for (x = 0; (c = wgetch(win)) != 10; x++) 
+     {
+-	if (x > 0 && x >= allocated)
+-	{
+-		ch = (char*)realloc(ch, x + 1);
+-		allocated = x + 1;
+-	}
+-	
+         wclrtoeol(win);					/* clear line         */
+         if (c == '\b' || c == 127) 			/* get backspace      */
+ 	{
+@@ -857,16 +962,21 @@ char *inputLine(WINDOW *win, int line, int col)
+             ch[x] = '\0';
+             x -= 2;					/* modify ptr         */
+         }
+-        else if (c > 32 && c < 127) 			/* if printable char  */
+-	{
+-            ch[x] = c;
+-            waddch(win, ch[x]);
+-        }
+ 	else if (c == 27)				/* if the escape key  */
+ 	{   						/* is pressed, return */
+ 	    ch[0] = 27;					/* setting ch to 0xff */
+ 	    return ch;					
+ 	}
++	else if (x == allocated)
++	{
++	    x--;
++	    continue;
++	}
++	else if (c >= first_printable && c < 127) 			/* if printable char  */
++	{
++	    ch[x] = c;
++	    waddch(win, ch[x]);
++	}
+         else 						/* if anything else   */
+ 	{
+             ch[x] = '\0';
+diff --git a/src/color.c b/src/color.c
+index 407c2c3..9f258b2 100644
+--- a/src/color.c
++++ b/src/color.c
+@@ -1,5 +1,6 @@
+ /*
+  * Copyright (c) 2015 Javier Escalada Gómez
++ * Copyright (C) 2020,2021 prso at github, fixes and improvements
+  */
+ 
+ #include "hex.h"
+@@ -13,18 +14,32 @@ bool color_enabled;
+ void init_colors(void)
+ {
+     color_enabled = has_colors();
+-    if(color_enabled)
++    if(color_enabled && color_level>0)
+     {
+         start_color();
+-        init_pair(1, COLOR_BLACK,   COLOR_BLACK);
+-        init_pair(2, COLOR_RED,     COLOR_BLACK);
+-        init_pair(3, COLOR_GREEN,   COLOR_BLACK);
+-        init_pair(4, COLOR_YELLOW,  COLOR_BLACK);
+-        init_pair(5, COLOR_BLUE,    COLOR_BLACK);
+-        init_pair(6, COLOR_MAGENTA, COLOR_BLACK);
+-        init_pair(7, COLOR_CYAN,    COLOR_BLACK);
+-        init_pair(8, COLOR_WHITE,   COLOR_BLACK);
+-
++        if (TERM_COLORS)
++        {
++            use_default_colors();
++            init_pair(1, COLOR_BLACK,   -1);
++            init_pair(2, COLOR_RED,     -1);
++            init_pair(3, COLOR_GREEN,   -1);
++            init_pair(4, COLOR_YELLOW,  -1);
++            init_pair(5, COLOR_BLUE,    -1);
++            init_pair(6, COLOR_MAGENTA, -1);
++            init_pair(7, COLOR_CYAN,    -1);
++            init_pair(8, COLOR_WHITE,   -1);
++        }
++        else
++        {
++            init_pair(1, COLOR_BLACK,   COLOR_BLACK);
++            init_pair(2, COLOR_RED,     COLOR_BLACK);
++            init_pair(3, COLOR_GREEN,   COLOR_BLACK);
++            init_pair(4, COLOR_YELLOW,  COLOR_BLACK);
++            init_pair(5, COLOR_BLUE,    COLOR_BLACK);
++            init_pair(6, COLOR_MAGENTA, COLOR_BLACK);
++            init_pair(7, COLOR_CYAN,    COLOR_BLACK);
++            init_pair(8, COLOR_WHITE,   COLOR_BLACK);
++        }
+     }
+ }
+ 
+@@ -35,10 +50,16 @@ void init_colors(void)
+ int get_byte_color(intmax_t address, char c)
+ {
+     UNUSED(address);
+-    if (c == 0x00) {
+-        return COLOR_PAIR(5);
+-    }
+-    return A_NORMAL;
++    if ((unsigned char) c == 0x00)
++        return ((color_level>1) ? COLOR_PAIR(5) : A_NORMAL);
++
++    if (color_level>2)
++      if (((unsigned char) c >= 0x20) && ((unsigned char) c <= 0x7E)) {
++          return COLOR_PAIR(8);
++      } else if ((unsigned char) c == 0xFF) {
++          return COLOR_PAIR(2);
++      } else return COLOR_PAIR(7);
++    else return A_NORMAL;
+ }
+ 
+ void byte_color_on(intmax_t address, char c)
+@@ -66,7 +87,7 @@ void byte_color_off(intmax_t address, char c)
+ int get_address_color(intmax_t address)
+ {
+   UNUSED(address);
+-  return COLOR_PAIR(4);
++  return ((color_level>0) ? COLOR_PAIR(4) : A_NORMAL);
+ }
+ 
+ void address_color_on(intmax_t address)
+@@ -81,4 +102,4 @@ void address_color_off(intmax_t address)
+   if(color_enabled) {
+       wattron(windows->address, get_address_color(address));
+   }
+-}
+\ No newline at end of file
++}
+diff --git a/src/file.c b/src/file.c
+index 8620a8e..1f569c1 100644
+--- a/src/file.c
++++ b/src/file.c
+@@ -1,5 +1,6 @@
+ /******************************************************************************\
+  *  Copyright (C) 2001, hexcurse is written by Jewfish and Armoth             *
++ *  Copyright (C) 2020-2022 prso at github, fixes and improvements            *
+  *									      *
+  *  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      *
+@@ -26,57 +27,78 @@
+ \*******************************************************/
+ void outline(FILE *fp, off_t linenum)
+ {
+-    int i, c, tmp[BASE];					/* holds char values  */
++    int i, c, tmp[BASE],					/* holds char values  */
++        clrstathex, clrstatascii;
++    bool bold[BASE];
+     hexList *tmpHead = head;					/* tmp linklist head  */
++    off_t locbase = linenum * BASE, locbasei;
+ 
+-    for (i = 0; i < BASE; i++)					/* set vals to EOF    */
+-		tmp[i] = -1;
+-
+-    while (tmpHead != NULL && tmpHead->loc < (linenum * BASE))
++    while (tmpHead != NULL && tmpHead->loc < locbase)
+ 		tmpHead = tmpHead->next;				/* advance temp head  */
+ 
+     for (i = 0; i < BASE; i++) 
+-	{
+-		while (tmpHead != NULL && (tmpHead->loc < ((linenum * BASE) + i)))
++    {
++		locbasei = locbase + i;
++		while (tmpHead != NULL && (tmpHead->loc < locbasei))
+ 			tmpHead = tmpHead->next;
+-		
+-		if (tmpHead != NULL && (tmpHead->loc == ((linenum * BASE) + i)))
++
++		if (tmpHead != NULL && (tmpHead->loc == locbasei))
+ 		{										/*store val from llist*/
+ 			tmp[i] = tmpHead->val;
+ 			tmpHead = tmpHead->next;
++			if (tmpHead != NULL && tmpHead->loc == locbasei)
++			     bold[i] = TRUE;       /* if there is at least 2 values set bold */
++			else bold[i] = FALSE;
++		}
++		else
++		{
++			tmp[i] = -1;        /* set val to EOF    */
++			bold[i] = FALSE;
+ 		}
+     }
+ 
+-    wclrtoeol(windows->hex);					/* clear lines        */
+-    wclrtoeol(windows->ascii);
++    clrstathex = wclrtoeol(windows->hex);					/* clear lines        */
++    clrstatascii = wclrtoeol(windows->ascii);
+ 
+     /*print line's address*/
+-    address_color_on((intmax_t)(linenum * BASE));
+-    wprintw(windows->address, (printHex) ? "%0*jX ":"%0*jd ", MIN_ADDR_LENGTH, (intmax_t)(linenum * BASE));
+-    address_color_off((intmax_t)(linenum * BASE));
++    address_color_on((intmax_t)(locbase));
++    wprintw(windows->address, (printHex) ? "%0*jX ":"%0*jd ", MIN_ADDR_LENGTH, (intmax_t)(locbase));
++    address_color_off((intmax_t)(locbase));
+ 
+     rewind(fp);									/* reset the file ptr */
+-    fseeko(fp, (linenum * BASE), 0);				/* set new pos for fp */
++    fseeko(fp, locbase, 0);				/* set new pos for fp */
+ 
+     for (i = 0; i < BASE && (c = getc(fp)) != EOF; i++)
+     {
++		locbasei = locbase + i;
+ 		if (tmp[i] != -1) 						/* while not EOF      */
+-		{	c = tmp[i];							/* store val in c     */
++			c = tmp[i];							/* store val in c     */
++		if (bold[i])
++		{
+ 			wattron(windows->ascii, A_BOLD);
+ 			wattron(windows->hex, A_BOLD);
+ 		}
+-        byte_color_on((linenum * BASE) + i, c);
++		byte_color_on(locbasei, c);
+ 		wprintw(windows->hex, "%02X ", c);		/* print out hex char */
+ 		if (USE_EBCDIC)
+ 			wprintw(windows->ascii, "%c", EBCDIC[c]);/* print EBCDIC char */
+-		else									/* print ASCII  char */
+-            wprintw(windows->ascii, (isprint(c)) ? "%c":".", c);
+-        byte_color_off((linenum * BASE) + i, c);
+-        if (tmp[i] != -1) {
+-            wattroff(windows->ascii, A_BOLD);
+-            wattroff(windows->hex, A_BOLD);
+-        }
++		else						/* print ASCII  char */
++			wprintw(windows->ascii, (isprint(c)) ? "%c":".", c);
++		byte_color_off(locbasei, c);
++		if (bold[i])
++		{
++			wattroff(windows->ascii, A_BOLD);
++			wattroff(windows->hex, A_BOLD);
++		}
+     }
++			/* workaround to a strange bug, in some cases */
++			/* wclrtoeol() doesn't work for the last line */
++    if (clrstathex==ERR || clrstatascii==ERR)
++		for (; i < BASE; i++)
++		{
++			wprintw(windows->hex, "   ");
++			wprintw(windows->ascii, " ");
++		}
+ }
+ 
+ /*******************************************************\
+@@ -90,6 +112,31 @@ off_t maxLoc(FILE *fp)
+     return(ftello(fp));				/* return val at EOF  */
+ }
+ 
++/*******************************************************\
++ * Description: enters or exits from modified mode:    *
++ *      set or reset saved, and write or restore       *
++ *      mode indicator (*) at top of hex window        *
++\*******************************************************/
++void set_saved(bool sav, WINDOW *win)
++{
++    int y, x;
++
++    getyx(win, y, x);
++    if ( (saved = sav) )  /* set, not compare */
++    {
++        mvwaddch(windows->hex_outline, 0, MIN_ADDR_LENGTH+3, ACS_HLINE);
++        mvwaddch(windows->hex_outline, 0, MIN_ADDR_LENGTH+4, ACS_HLINE);
++        mvwaddch(windows->hex_outline, 0, MIN_ADDR_LENGTH+5, ACS_HLINE);
++        wnoutrefresh(windows->hex_outline);
++    }
++    else
++    {
++        mvwprintw(windows->hex_outline, 0, MIN_ADDR_LENGTH+3, " * ");
++        wnoutrefresh(windows->hex_outline);
++    }
++    wmove(win, y, x);
++}
++
+ /******************************************************\
+  * Description: prints out the command line help info *
+  *		this function does not return anything*
+@@ -99,14 +146,21 @@ void print_usage()
+     char *ver = HVERSION; 
+ 
+     printf("hexcurse, version %s by James Stephenson and Lonny Gomes\n",ver);
+-    printf("\nusage: hexcurse [-?|help] [-a] [-r rnum] [-o outputfile] "); 
+-    printf("[[-i] infile]\n\n");
+-    printf("    -a\t\tOutput addresses in decimal format initially\n");
+-    printf("    -e\t\tOutput characters in EBCDIC format rather than ASCII\n"); 
+-    printf("    -r rnum\tResize the display to \"rnum\" bytes wide\n");
+-    printf("    -o outfile\tWrite output to outfile by default\n"); 
+-    printf("    -? | -help\tDisplay usage and version of hexcurse program\n");
+-    printf("    [-i] infile\tRead from data from infile (-i required if not last argument)\n\n");
++    printf("usage: hexcurse [-?|help] [-a] [-c colorlevel] [-e] [-f] [-o outputfile] ");
++    printf("[-r rnum] [-t] [[-i] infile]\n");
++    printf("    -? | -help\t\tDisplay usage and version of hexcurse program\n");
++    printf("    -a\t\t\tOutput addresses in decimal format initially\n");
++    printf("    -c colorlevel\tSet the color level\n");
++    printf("    \t\t\t\t0: no colors\n");
++    printf("    \t\t\t\t1: only color for addresses\n");
++    printf("    \t\t\t\t2: 1 + color for 00 (default if terminal supports color)\n");
++    printf("    \t\t\t\t3: multicolor by FrankSansC\n");
++    printf("    -e\t\t\tOutput characters in EBCDIC format rather than ASCII\n");
++    printf("    -f\t\t\tShow function key numbers in labels\n");
++    printf("    -o outfile\t\tWrite output to outfile by default\n");
++    printf("    -r rnum\t\tResize the display to \"rnum\" bytes wide\n");
++    printf("    -t\t\t\tKeep colors defined by terminal\n");
++    printf("    [-i] infile\t\tRead from data from infile (-i required if not last argument)\n\n");
+ }
+ 
+ /*******************************************************\
+@@ -143,7 +197,7 @@ int openfile(WINS *win)
+ 	if (!fpINfilename)
+         fpINfilename = (char *) malloc(81);             /* allocate if NULL   */
+ 
+-    ch = inputLine(win->hex_outline, LINES - 1, 21);	/* get filename       */
++    ch = inputLine(win->hex_outline, LINES - 1, 21, TRUE);	/* get filename       */
+ 
+     if (ch[0] == 27)									/* if escape was hit  */
+     {
+@@ -203,7 +257,7 @@ int savefile(WINS *win)
+ 
+     wrefresh(win->hex_outline);                         /* refresh window     */
+ 
+-    ch = inputLine(win->hex_outline, LINES - 1, 21);	/* get filename       */
++    ch = inputLine(win->hex_outline, LINES - 1, 21, TRUE);	/* get filename       */
+ 
+     if (ch[0] != 27)						/*if escape wasn't hit*/
+     {
+@@ -225,6 +279,7 @@ int savefile(WINS *win)
+ 	}
+ 	
+ 	/*write to file       */
++	popupWin("Saving file...", -2);
+ 	if (!writeChanges())
+ 	    popupWin("The file has been saved.", -1);
+ 	else
+@@ -241,66 +296,171 @@ int savefile(WINS *win)
+     return exitCode;
+ }
+ 
++void make_delta1(int *delta1, int *pat, size_t patlen) {
++    size_t i;
++    for (i=0; i < ALPHABET_LEN; i++) {
++        delta1[i] = patlen;
++    }
++    for (i=0; i < patlen-1; i++) {
++        delta1[pat[i]] = patlen-1 - i;
++    }
++}
++
++// true if the suffix of word starting from word[pos] is a prefix
++// of word
++int is_prefix(int *word, size_t wordlen, size_t pos) {
++    size_t i;
++    size_t suffixlen = wordlen - pos;
++
++    for (i = 0; i < suffixlen; i++) {
++        if (word[i] != word[pos+i]) {
++            return 0;
++        }
++    }
++    return 1;
++}
++
++// length of the longest suffix of word ending on word[pos].
++// suffix_length("dddbcabc", 8, 4) = 2
++size_t suffix_length(int *word, size_t wordlen, size_t pos) {
++    size_t i;
++    // increment suffix length i to the first mismatch or beginning
++    // of the word
++    for (i = 0; (word[pos-i] == word[wordlen-1-i]) && (i < pos); i++);
++    return i;
++}
++
++void make_delta2(int *delta2, int *pat, size_t patlen) {
++    size_t  p;
++    size_t  last_prefix_index = patlen-1;
++
++    // first loop
++    for (p=patlen-1; ;p--) {
++        if (is_prefix(pat, patlen, p+1)) {
++            last_prefix_index = p+1;
++        }
++        delta2[p] = (int) (last_prefix_index + (patlen-1 - p));
++        if (p == 0) break;
++    }
++
++    // second loop
++    for (p=0; p < patlen-1; p++) {
++        int slen = suffix_length(pat, patlen, p);
++        if (pat[p - slen] != pat[patlen-1 - slen]) {
++            delta2[patlen-1 - slen] = (int) (patlen-1 - p + slen);
++        }
++    }
++}
++
+ /********************************************************\
+  * Description: searches for a series of either hex or  *
+  *		ascii values of upto 16 bytes long.  The*
+  *		function returns the next location of   *
+  *		the specified string or -1 if not found *
++ *      algorithm based on the wikipedia example *
++ * http://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm *
+ \********************************************************/
+-off_t hexSearch(FILE *fp, int ch[], off_t startfp, int length)
++off_t hexSearchBM(WINDOW *w, FILE *fp, int pat[], off_t startfp, int patlen)
+ {
+-    int loop, tmp, c, flag=0;
+-    off_t currLoc, startLoc, foundLoc=-1;		/* init vars          */
+-
+-    fseeko(fp, startfp, SEEK_SET);			/* begin from loc     */
+-
+-    c = getc(fp);					/* get char from file */
+-    currLoc = ftello(fp);				/* get location       */
+-    if ((tmp = searchList(head, currLoc-1)) != -1)	/* check for val in ll*/
+-	c = tmp;
+-
+-    while (currLoc != startfp) 				/* while not back to  */
+-    {							/* beginning...       */
+-	if (c == ch[0]) 				/* if char we want... */
+-	{						
+-	    startLoc = ftello(fp);			/* get location       */
+-							/* loop to find rest  */
+-	    for (loop = 1; (loop < length) && (c != EOF); loop++)
+-	    {
+-		c = fgetc(fp); 
+-    		currLoc = ftello(fp);
+-    		if ((tmp = searchList(head, currLoc-1)) != -1)
+-		    c = tmp;
+-		if (c != ch[loop])
+-		    break;
+-		    
+-	    }
+-		fseeko(fp, startLoc, SEEK_SET);
+-
+-	    if ((loop == length) && (flag))		/* if found it        */
+-		return startLoc - 1;			/* return location    */
+-	    else if (loop == length)
+-		foundLoc = startLoc -1;			/* return if no others*/
+-		    	
+-	}
+-	flag = 1;    /* if cursor is on the search string, continue searching */
+-		
++    if (! (pat && patlen > 0)) return -2;
+ 
+-	if (c == EOF)					/* if EOF rewind      */
+-	    rewind(fp);
++    int         i, m = 1;
++    int         j = patlen - 1;
++    int         delta1 [ ALPHABET_LEN ];
++    int         *delta2 = (int *)malloc(patlen * sizeof(int));
+ 
+-        currLoc = ftello(fp);				/* current location   */
++    char        *buf;           // circular buffer
++    char        *patt = (char *) malloc(patlen);
+ 
+-	if (currLoc != startfp) 			/* if not at start... */
+-	{
+-	    c = fgetc(fp);				/* get another char   */
+-    	    currLoc = ftello(fp);
+-    	    if ((tmp = searchList(head, currLoc-1)) != -1)
+-	        c = tmp;
+-	}
+-    } 
++    int         n;              // number of bytes read by fread()
++    int         rem_bytes = 0;  // remaining bytes in the buffer
++    int         bytes_to_read = BUF_L;
++    int         full_length;    // full length of the current buffer
++    int         cur_percent, last_percent = -1;
++
++    off_t       pos1, pos2;     // lower and upper limit of the buffer
++    off_t       pos_max = -1;   // EOF position
++    off_t       rv = -1;        // return value: default = -1
++
++    if (posix_memalign((void **)&buf, getpagesize(), BUF_L) != 0)
++        return -1;
++
++    if (! (delta2 && patt)) return -1;
++
++    make_delta1(delta1, pat, patlen);
++    make_delta2(delta2, pat, patlen);
++    // converting int to (unsigned char) -> (unsigned char) is faster
++    for (i = 0; i < patlen; i++) patt[i] = (unsigned char) pat[i];
++
++    // get the pos_max
++    if (fseeko(fp, 0, SEEK_END) == 0) pos_max = ftello(fp);
++
++    // we ignore the current byte
++    startfp++;
++    if (fseeko(fp, startfp, SEEK_SET) != 0) {
++        goto end;
++    }
++
++    // set to non-blocking
++    wtimeout(w, 0);
++    pos1 = pos2 = startfp;
++
++    while (1) {
++        n = (int) fread(&buf[rem_bytes], 1, bytes_to_read, fp);
++        full_length = n + rem_bytes;
++        if (n == 0 || full_length < patlen) break;
++        pos2 = pos1 + (off_t) full_length;
++
++        // apply changes by user, if any
++        updateBuf(head, buf, pos1, pos2);
++
++        i = patlen - 1;
++        while (i < full_length) {
++            j = patlen - 1;
++            while (j >= 0 && (buf[i] == patt[j])) {
++                --i;
++                --j;
++            }
++            if (j < 0) {
++                // success
++                rv = pos1 + i + 1;
++                goto end;
++            }
++
++            m = max(delta1[(unsigned char) buf[i]], delta2[j]);
++            i += m;
++        }
++
++        rem_bytes = full_length + m - i - 1;
++        if (rem_bytes > full_length) rem_bytes = full_length;
++
++        bytes_to_read = BUF_L - rem_bytes;
++        memmove(buf, &buf[full_length - rem_bytes], rem_bytes);
++        pos1 = pos2 - rem_bytes;
+ 
+-    return foundLoc;					/* return not found   */
++        if (wgetch(w) == 27) { // escape
++            rv = -2;
++            goto end;
++        }
++
++        if (pos_max > 0) {
++            cur_percent = (int) ((pos2 * 100) / pos_max);
++            if (cur_percent != last_percent) {
++                mvwprintw(w, LINES - 1, 1, "Searching (hit Esc to cancel) ...%d%%", cur_percent);
++                wrefresh(w);
++                last_percent = cur_percent;
++            }
++        }
++    }
++
++    end:
++        // set back to blocking
++        wtimeout(w, -1);
++        free(buf);
++        free(patt);
++        free(delta2);
++
++    return rv;
+ }
+ 
+ /********************************************************\
+@@ -402,19 +562,3 @@ int getLocVal(off_t loc)
+     fseeko(fpIN, loc, SEEK_SET);				/* goto location      */
+     return(fgetc(fpIN));
+ }
+-
+-/********************************************************\
+- * Description: checks if a loc is in the linked list   *
+- * Returns:     returns TRUE if loc is in the llist     *
+-\********************************************************/
+-bool inHexList(off_t loc)
+-{
+-    hexList *tmpHead = head;				/* tmp linklist head  */
+-
+-    while (tmpHead != NULL && (tmpHead->loc < loc))
+-	tmpHead = tmpHead->next;
+-    if (tmpHead != NULL && (tmpHead->loc == loc))
+-	return(TRUE);
+-    else
+-	return(FALSE);
+-}
+diff --git a/src/hexcurse.c b/src/hexcurse.c
+index 9a275ee..9723c2f 100644
+--- a/src/hexcurse.c
++++ b/src/hexcurse.c
+@@ -1,5 +1,6 @@
+ /******************************************************************************\
+  *  Copyright (C) 2001 writen by Jewfish and Armoth                           *
++ *  Copyright (C) 2020-2022 prso at github, fixes and improvements            *
+  *									      *
+  *  Description: this codes allows a user to view and edit the hexadecimal and*
+  *		 and ascii values of a file.  The curses library is used to   *
+@@ -27,6 +28,8 @@
+ /*#define DEBUG_LLIST*/
+ /*#define DEBUG_GOTO*/
+ 
++FILE *fpIN;
++
+ int     BASE, MAXY, resize = 0;
+ int     MIN_ADDR_LENGTH;
+ hexList *head;						/* linked list struct */
+@@ -36,11 +39,15 @@ char    EBCDIC[256],
+         *fpOUTfilename = NULL;
+ bool 	printHex;					/* address format     */
+ bool    USE_EBCDIC;
++bool    TERM_COLORS;
++bool    FNUMBERS;
+ bool    IN_HELP;					/* if help displayed  */
++bool    saved = TRUE;
+ int     hex_win_width,
+         ascii_win_width,
+         hex_outline_width,
+-        ascii_outline_width;
++        ascii_outline_width,
++        color_level = 2;
+ 
+ 
+     /* partial EBCDIC table contributed by Ted (ted@php.net) */
+@@ -63,6 +70,25 @@ int     hex_win_width,
+       '.','R','S','T','U','V','W','X','Y','Z','.','.','.','.' ,'.','.', /* E */
+       '0','1','2','3','4','5','6','7','8','9','.','.','.','.' ,'.','.'};/* F */
+ 
++int ASCII_to_EBCDIC[] =
++{
++  NODEF, NODEF, NODEF, NODEF, NODEF, NODEF, NODEF, NODEF, NODEF, NODEF, NODEF,
++  NODEF, NODEF, NODEF, NODEF, NODEF, NODEF, NODEF, NODEF, NODEF, NODEF, NODEF,
++  NODEF, NODEF, NODEF, NODEF, NODEF, NODEF, NODEF, NODEF, NODEF, NODEF,
++
++  /* 32 */  0x40,  0x5a,  0x7f,  0x7b,  0x5b,  0x6c,  0x50,  0x7d,  0x4d,  0x5d,
++  /* 42 */  0x5c,  0x4e,  0x6b,  0x60, NODEF,  0x61,  0xf0,  0xf1,  0xf2,  0xf3,
++  /* 52 */  0xf4,  0xf5,  0xf6,  0xf7,  0xf8,  0xf9,  0x7a,  0x5e,  0x4c,  0x7e,
++  /* 62 */  0x6e,  0x6f,  0x7c,  0xc1,  0xc2,  0xc3,  0xc4,  0xc5,  0xc6,  0xc7,
++  /* 72 */  0xc8,  0xc9,  0xd2,  0xd3,  0xd4,  0xd5,  0xd6,  0xd7,  0xd8,  0xd9,
++  /* 82 */  0xe1,  0xe2,  0xe3,  0xe4,  0xe5,  0xe6,  0xe7,  0xe8,  0xe9, NODEF,
++  /* 92 */ NODEF, NODEF, NODEF,  0x6d,  0xb9,  0x81,  0x82,  0x83,  0x84,  0x85,
++  /* 102 */ 0x86,  0x87,  0x88,  0x89,  0x92,  0x93,  0x94,  0x95,  0x96,  0x97,
++  /* 112 */ 0x98,  0x99,  0xa1,  0xa2,  0xa3,  0xa4,  0xa5,  0xa6,  0xa7,  0xa8,
++  /* 122 */ 0xa9, NODEF,  0x4f, NODEF, NODEF /* 126 */
++};
++
++
+ int main(int argc, char *argv[])			/* main program       */
+ {
+ 
+@@ -75,6 +101,8 @@ int main(int argc, char *argv[])			/* main program       */
+     fpOUTfilename = NULL;			/* out file name ptrs */
+     printHex = TRUE;							/* address format     */
+     USE_EBCDIC = FALSE;							/*use ascii by default*/
++    TERM_COLORS = FALSE;                     /*don't use term defined colors by default */
++    FNUMBERS = FALSE;     /* keep old behaviour without function key numbers by default */
+ 
+ 							/* get cmd line args  */
+     len = parseArgs(argc, argv);
+@@ -93,7 +121,6 @@ int main(int argc, char *argv[])			/* main program       */
+ 	exit(-1);
+     }
+     
+-    slk_set(6, (printHex) ? "Hex Addr":"Dec Addr", 1);
+     init_fkeys();					/* define menu bar    */
+     
+ 
+@@ -179,33 +206,47 @@ off_t parseArgs(int argc, char *argv[])
+     int val;						/* counters, etc.     */
+ 
+ 							/* get args           */
+-    while ((val = hgetopt(argc, argv, "a:i:o:r:e")) != -1) 
++    while ((val = hgetopt(argc, argv, "c:ai:o:r:etf?h")) != -1)
+     {
+ 	switch (val)					/* test args          */
+         {
++            case 'c':   color_level = atoi(optarg);
++                        if (color_level<0 || color_level>3)
++                        {
++                            print_usage();
++                            exit(-1);
++                        }
++                        break;
++
+             case 'a':	printHex = FALSE;		/* decimal addresses  */
+                         break;
+ 							/* infile             */
+-	    case 'i':	free(fpINfilename);
+-			fpINfilename = strdup(optarg);
+-			break;
++            case 'i':	free(fpINfilename);
++                        fpINfilename = strdup(optarg);
++                        break;
+ 							/* outfile            */
+-	    case 'o':   free(fpOUTfilename);
+-			fpOUTfilename = strdup(optarg);
+-			break;
++            case 'o':   free(fpOUTfilename);
++                        fpOUTfilename = strdup(optarg);
++                        break;
+ 
+             case 'r':   resize = atoi(optarg);		/* don't resize screen*/
+                         break;
+ 
+             case 'e':   USE_EBCDIC=TRUE;		/*use instead of ascii*/
++                        break;
++
++            case 't':   TERM_COLORS=TRUE;       /* keep term defined colors */
++                        break;                  /* if defined and not set may look bad */
++
++            case 'f':   FNUMBERS=TRUE;          /* show numbers in labels for function keys */
+                         break;
+ 							/* help/invalid args  */
+-							/* help/invalid args  */
+-	    case '?':	print_usage();			/* output help        */
++            case '?':
++            case 'h':	print_usage();			/* output help        */
+                         if ((optopt == 'h') || (optopt == '?'))
+-			    exit(0);			/* exit               */
+-			else				/* illegal option     */
+-			    exit(-1);
++                           exit(0);			/* exit               */
++                        else				/* illegal option     */
++                           exit(-1);
+         }
+     }
+     argc -= optind;
+@@ -217,9 +258,13 @@ off_t parseArgs(int argc, char *argv[])
+         fpINfilename = strdup(argv[0]);
+     }
+ 
+-    if (fpINfilename && strcmp(fpINfilename, ""))
++    if (fpINfilename == NULL) {
++        print_usage();
++        exit(-1);
++    } else if (fpINfilename && strcmp(fpINfilename, "")) {
+         if ((fpIN = fopen(fpINfilename, "r")) == NULL)
+             exit_err("Could not open file");
++    }
+ 
+     return ((fpIN != NULL) ? maxLoc(fpIN):0);		/* return file length */
+ }
+@@ -231,10 +276,9 @@ off_t parseArgs(int argc, char *argv[])
+ \********************************************************/
+ int getMinimumAddressLength(off_t len)
+ {
+-        char buffer[1];
+         int min_address_length;
+         
+-        min_address_length = snprintf(buffer, 1, "%jd", (intmax_t)len);
++        min_address_length = snprintf(NULL, 0, "%jd", (intmax_t)len);
+         
+         /* At least 8 characters wide */
+         return min_address_length > 8 ? min_address_length : 8;
+diff --git a/src/llist.c b/src/llist.c
+index 9c617d8..9de9038 100644
+--- a/src/llist.c
++++ b/src/llist.c
+@@ -1,5 +1,6 @@
+ /******************************************************************************\
+  *  Copyright (C) 2001, hexcurse is written by Jewfish and Armoth             *
++ *  Copyright (C) 2020,2021,2023 prso at github, fixes and improvements       *
+  *									      *
+  *  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      *
+@@ -48,37 +49,24 @@ hexList *deleteNode(hexList *head, off_t loc)
+ \********************************************************/	
+ hexList *insertItem(hexList *head, off_t loc, int val)
+ {
+-    if (head == NULL)					/* if NULL create item*/
+-    {
+-	head = llalloc();                   		/* allocate space     */
+-        head->loc = loc;          			/* store current line */
+-	head->val = val;				/* store value        */
+-        head->next = NULL;				/* make next = NULL   */
+-    }
+-    else if (head-> loc == loc)
+-    {
+-	hexList *tmpHead;				/* create new tmp item*/
+-	tmpHead  = llalloc();				/* allocate space     */
+-	tmpHead->loc = loc;				/* store the location */
+-	tmpHead->val = val;				/* store the value    */
+-	tmpHead->next = head;				/* point next to head */
+-	head = tmpHead;					/* point head to tmp  */
+-    }
+-    else if (head->loc < loc || head->next == NULL) 	/* recursively call it*/
+-    	head->next = insertItem(head->next, loc, val);
+-							/* insert into list  */
+-    else if (head->next != NULL && head->next->loc >= loc)
+-    {
+-	hexList *tmpHead;				/* create new tmp item*/
+-	tmpHead  = llalloc();				/* allocate space     */
+-	tmpHead->loc = loc;				/* store the location */
+-	tmpHead->val = val;				/* store the value    */
+-	tmpHead->next = head;				/* point next to head */
+-	head = tmpHead;					/* point head to tmp  */
+-    }
++    hexList *curr = head,
++            *prev = NULL,
++            *newHead = head,
++            *newItem;
+ 
+-    return head;                               		/* return the head    */
+-}   
++    while (curr != NULL && loc > curr->loc)  /* iterate until correct */
++    {                                        /* position for loc      */
++        prev = curr;                         /* or end of list        */
++        curr = curr->next;
++    }
++    newItem  = llalloc();                  /* allocate space        */
++    if (prev == NULL) newHead = newItem;   /* new head of list      */
++    else prev->next = newItem;             /* or point to previous  */
++    newItem->loc = loc;                    /* store the location    */
++    newItem->val = val;                    /* store the value       */
++    newItem->next = curr;                  /* point next to current */
++    return newHead;
++}
+ 
+ /********************************************************\
+  * Description: Search through the linked list for to   *
+@@ -100,6 +88,47 @@ int searchList(hexList *head, off_t loc)
+     return -1;
+ }
+ 
++/********************************************************\
++ * Description: Count the number of items for a given   *
++ *      loc in the list and return it                   *
++\********************************************************/
++off_t countList(hexList *head, off_t loc)
++{
++    hexList *curr = head;
++    off_t count = 0;
++
++    while (curr != NULL && curr->loc < loc) curr = curr->next;
++    while (curr != NULL && curr->loc == loc)
++    {
++        count++;
++        curr = curr->next;
++    }
++    return count;
++}
++
++/********************************************************\
++ * Description: Search through the linked list to     *
++ *		find if there are values for locations        *
++ *		between pos1 and pos2. If there are, changes  *
++ *		the corresponding values inside the buffer    *
++\********************************************************/
++void updateBuf(hexList *head, char *buf, off_t pos1, off_t pos2)
++{
++    hexList *tmpHead;					/* allocate temp space*/
++    off_t   prev_loc = -1;
++
++    tmpHead = head;					/* temp points to head*/
++    while (tmpHead != NULL)				/* while not null     */
++    {
++        if (prev_loc != tmpHead->loc && tmpHead->loc >= pos1 && tmpHead->loc < pos2)
++        {
++            buf[tmpHead->loc - pos1] = (unsigned char) tmpHead->val;
++        }
++        prev_loc = tmpHead->loc;
++        tmpHead = tmpHead->next;	/* move to next item  */
++    }
++}
++
+ /********************************************************\
+  * Description: write the changes to either the current *
+  *		file or to a specified output file	*
+@@ -109,29 +138,58 @@ int writeChanges()
+     FILE *fpOUT = NULL;
+     FILE *fptmp = NULL;
+     
+-    off_t buff,prev_loc;					/* declare llist vars */
++    off_t prev_loc;					/* declare llist vars */
+     hexList *tmpHead = head;
++    int nread, fs, fp, errfile = 0;
++    char *buff;
++    bool errfpOUT = FALSE;
+ 
+-    if (fpOUTfilename && fpIN && (fpOUT = fopen(fpOUTfilename, "w+")))
++    if (fpOUTfilename && fpIN)
+     {							/* open the write file*/
+-	fptmp = fpOUT;
+-        rewind(fpIN);					/* set file loc to 0  */
+-	rewind(fpOUT);					
+-	while ((buff = fgetc(fpIN)) != EOF)		/*write to file buffer*/
+-		fputc(buff, fpOUT);
++	if ( (fpOUT = fopen(fpOUTfilename, "w+")) )
++	{
++		rewind(fpIN);				/* set file loc to 0  */
++		buff = malloc(FILEBUFF);		/* allocate buffer */
++		while (!feof(fpIN))
++		{			  /* copy original file to new one */
++			nread = fread(buff, 1, FILEBUFF, fpIN);
++			fwrite(buff, 1, nread, fpOUT);
++			if (ferror(fpOUT) || ferror(fpIN))
++			{
++				fclose(fpOUT);
++				remove(fpOUTfilename);
++				errfpOUT = TRUE;
++				break;
++			}
++		}
++		free(buff);
++		if (!errfpOUT)
++		{
++			fptmp = fpOUT;
++			rewind(fptmp);
++		}
++		fclose(fpIN);
++		free(fpINfilename);
++		fpINfilename = strdup(fpOUTfilename);
++		free(fpOUTfilename);
++		fpOUTfilename = NULL;
++	}
++	else errfpOUT = TRUE;
++	if (errfpOUT)
++	{
++		popupWin("Error writing to file", -1);
++		return 1;
++	}
+     }
+     else if (fpIN)				/* if no output file  */
+     {
+-	fptmp = fpIN;
+-	fpIN = fopen(fpINfilename, "r+");
+-	if (!fpIN)
++	fptmp = fopen(fpINfilename, "r+");
++	if (!fptmp)
+ 	{
+-		fpIN = fptmp;
+ 		popupWin("Cannot write to file: bad permissions", -1);
+ 		return 1;
+ 	}
+-	fclose(fptmp);
+-	fptmp = fpIN;
++	fclose(fpIN);
+     }
+     else
+     {
+@@ -139,28 +197,32 @@ int writeChanges()
+ 	return 1;
+     }
+     
+-    rewind(fpIN);
+-    rewind(fptmp);
+     prev_loc = -1;
+     while (tmpHead != NULL)		/* write to file      */
+     {
+ 	/* only print the latest change  from the linked list*/
+ 	if (prev_loc != tmpHead->loc) { 
+-		fseeko(fptmp, tmpHead->loc, SEEK_SET);
+-		fputc(tmpHead->val, fptmp);
++		fs = fseeko(fptmp, tmpHead->loc, SEEK_SET);
++		fp = fputc(tmpHead->val, fptmp);
++		if (fs != 0 || fp == EOF)
++		{
++			popupWin("Error writing to file", -1);
++			errfile = 1;
++			break;
++		}
+ 	}
+ 	prev_loc = tmpHead->loc;
+ 	tmpHead = tmpHead->next;
+     }
+-
+-    fflush(fptmp);					/* flush buffto disk  */
+-    
+-    rewind(fpIN);					/* reset file pointer */
+-    if (fpIN != fptmp)
++    if ( (fpIN = fopen(fpINfilename, "r")) )   /* reopen file readonly */
+ 	fclose(fptmp);
+-
+-    return 0;
+-
++    else
++    {
++	fpIN = fptmp;       /* if not possible, keep it readwrite */
++	fflush(fpIN);
++	rewind(fpIN);
++    }
++    return errfile;
+ } 
+ 
+ /********************************************************\
+diff --git a/src/screen.c b/src/screen.c
+index 2cef657..20f8068 100644
+--- a/src/screen.c
++++ b/src/screen.c
+@@ -1,5 +1,6 @@
+ /******************************************************************************\
+  *  Copyright (C) 2001, hexcurse is written by Jewfish and Armoth             *
++ *  Copyright (C) 2020-2022 prso at github, fixes and improvements            *
+  *									      *
+  *  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      *
+@@ -142,15 +143,28 @@ void screen_exit(int exit_val)
+ \******************************************************/ 
+ void init_fkeys()
+ {
+-    slk_set(1, "Help",		1);			/* init menu tabs     */
+-    slk_set(2, "Save",		1);
+-    slk_set(3, "Open",	 	1);
+-    slk_set(4, "Goto",		1);
+-    slk_set(5, "Find", 		1);
+-
+-    slk_set(7, "Hex Edit",	1);
+-    slk_set(8, "Quit",		1);
+-    slk_set(9, "Quit",		1);
++    if (FNUMBERS)
++    {
++        slk_set(1, "1:Help", 1);			/* init menu tabs     */
++        slk_set(2, "2:Save", 1);
++        slk_set(3, "3:Open", 1);
++        slk_set(4, "4:Goto", 1);
++        slk_set(5, "5:Find", 1);
++        slk_set(6, (printHex) ? "6:Hex Ad":"6:Dec Ad", 1);
++        slk_set(7, "7:Hex Ed", 1);
++        slk_set(8, "8:Quit", 1);
++    }
++    else
++    {
++        slk_set(1, "Help", 1);			/* init menu tabs     */
++        slk_set(2, "Save", 1);
++        slk_set(3, "Open", 1);
++        slk_set(4, "Goto", 1);
++        slk_set(5, "Find", 1);
++        slk_set(6, (printHex) ? "Hex Addr":"Dec Addr", 1);
++        slk_set(7, "Hex Edit", 1);
++        slk_set(8, "Quit", 1);
++    }
+     slk_noutrefresh();					/* refresh the screen */
+ }
+ 
+@@ -451,13 +465,15 @@ void popupWin(char *msg, int time)
+ 
+     keypad(tmpwin, TRUE);
+ 
+-    mvwprintw(tmpwin,2,3, msg);				/* output mesg        */
++    mvwprintw(tmpwin,2,3, "%s", msg);			/* output mesg        */
+     wmove(tmpwin,2,len+4);
+     wrefresh(tmpwin);
+ 
+     if (time == -1)
+         wgetch(tmpwin);
+-    else
++    else if (time == -2)      /* just print the popup and leave it there */
++        return;               /* when work finished, you should call */
++    else                      /* another popup to inform and restore */
+         sleep(time);					/* wait               */
+ 
+     delwin(tmpwin);
+@@ -492,7 +508,7 @@ short int questionWin(char *msg)
+ 
+     tmpwin = drawbox(y, x, 5, len + 6);			/* create window      */
+ 
+-    mvwprintw(tmpwin,2,3, msg);
++    mvwprintw(tmpwin,2,3, "%s", msg);
+     wmove(tmpwin,2,len+4);
+     wrefresh(tmpwin);
+ 
+diff --git a/src/stack.c b/src/stack.c
+index 2404bd9..b530f1a 100644
+--- a/src/stack.c
++++ b/src/stack.c
+@@ -1,5 +1,6 @@
+ /******************************************************************************\
+  *  Copyright (C) 2001, hexcurse is written by Jewfish and Armoth             *
++ *  Copyright (C) 2020,2021 prso at github, fixes and improvements            *
+  *									      *
+  *  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      *
+@@ -18,44 +19,30 @@
+ \******************************************************************************/
+ #include "hex.h"
+ 
+-/******************************************************\
+- * Description: the just sets the stack pointer to    *
+- * 		NULL; it really has no business being *
+- *		function anyways		      *
+-\******************************************************/
+-void createStack(hexStack *stack)
+-{
+-    /* calloc() is used because it NULLS out all returned memory */
+-    /* stack = (hexStack *) calloc(1, sizeof(hexStack));
+-    stack->llist = NULL;
+-    stack->prev = NULL;
+-    */
+-    stack = NULL;
+-    stack->llist = NULL;
+-    stack->prev = NULL;
+-}
+-
+ /******************************************************\
+  * Description: this pushes a structure of type       *
+  *		hexStack to the stack.  NULL being the*
+  *		initial state of the stack            *
+ \******************************************************/
+-void pushStack(hexStack **stack, hexStack *tmpStack)
++void pushStack(hexStack **stack, off_t cl, int val)
+ {
+-    hexStack *oldStack;
++    hexStack *oldStack, *newStack;
+     oldStack = *stack;
+ 
++    /* calloc() is used because it NULLS out all returned memory  */
++    newStack = (hexStack *) calloc(1, sizeof(hexStack));
++    newStack->currentLoc = cl;
++    newStack->savedVal = val;
++
+     if (oldStack == NULL)				/* begining of stack  */
+-        *stack = tmpStack;
++        *stack = newStack;
+     else 
+     {
+-        tmpStack->prev = oldStack;
+-        *stack = tmpStack;
+-
++        newStack->prev = oldStack;
++        *stack = newStack;
+     }
+ }
+ 
+-
+ /******************************************************\
+  * Description: This function pops a structure off of *
+  *		the stack and then free's it's        *
diff --git a/srcpkgs/hexcurse/te b/srcpkgs/hexcurse/te
new file mode 100644
index 00000000000000..226cc4f587b07d
--- /dev/null
+++ b/srcpkgs/hexcurse/te
@@ -0,0 +1,21 @@
+# Template file for 'dhex'
+pkgname=dhex
+version=0.69
+revision=1
+build_style=gnu-makefile
+makedepends="ncurses-devel"
+short_desc="Hex editor and diff tool using ncurses"
+maintainer="Alex Brem <alex@fluktuation.net>"
+license="GPL-2.0-or-later"
+homepage="http://www.dettus.net/dhex/"
+distfiles="${homepage}${pkgname}_${version}.tar.gz"
+checksum=52730bcd1cf16bd4dae0de42531be9a4057535ec61ca38c0804eb8246ea6c41b
+
+do_install() {
+	vbin dhex
+	vman dhex.1
+	vman dhexrc.5
+	vman dhex_markers.5
+	vman dhex_searchlog.5
+	vdoc README.txt
+}
diff --git a/srcpkgs/hexcurse/template b/srcpkgs/hexcurse/template
new file mode 100644
index 00000000000000..d2307737710ac2
--- /dev/null
+++ b/srcpkgs/hexcurse/template
@@ -0,0 +1,13 @@
+# Template file for 'hexcurse'
+pkgname=hexcurse
+version=1.60.0
+revision=1
+build_style=gnu-configure
+hostmakedepends="autoconf automake"
+makedepends="ncurses-devel"
+short_desc="Ncurses-based console hexeditor written in C"
+maintainer="Mihail Ivanchev <contact@ivanchev.net>"
+license="GPL-2.0-or-later"
+homepage="https://github.com/LonnyGomes/hexcurse"
+distfiles="https://github.com/LonnyGomes/hexcurse/archive/refs/tags/v${version}.tar.gz"
+checksum=f6919e4a824ee354f003f0c42e4c4cef98a93aa7e3aa449caedd13f9a2db5530

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: New package: hexcurse-1.60.0
  2024-07-27 18:28 [PR PATCH] New package: hexcurse-1.60.0 MIvanchev
@ 2024-07-27 18:32 ` MIvanchev
  2024-07-27 18:32 ` [PR PATCH] [Updated] " MIvanchev
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: MIvanchev @ 2024-07-27 18:32 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 620 bytes --]

New comment by MIvanchev on void-packages repository

https://github.com/void-linux/void-packages/pull/51501#issuecomment-2254222564

Comment:
I propose this package which is a **GREAT** hex editor for the CLI and quite known with low-level developers but it seems it has been abandoned after v1.60.0... A kind person has implemented a lot of patches and bug fixes here https://github.com/prso/hexcurse so I'm proposing adding https://github.com/LonnyGomes/hexcurse/compare/v1.60.0...prso:hexcurse:master as a patch.

I know this is quite unusual but I think hexcurse is really worth it and I'm open for a discussion.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PR PATCH] [Updated] New package: hexcurse-1.60.0
  2024-07-27 18:28 [PR PATCH] New package: hexcurse-1.60.0 MIvanchev
  2024-07-27 18:32 ` MIvanchev
@ 2024-07-27 18:32 ` MIvanchev
  2024-07-27 19:58 ` classabbyamp
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: MIvanchev @ 2024-07-27 18:32 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 676 bytes --]

There is an updated pull request by MIvanchev against master on the void-packages repository

https://github.com/MIvanchev/void-packages ci-hexcurse
https://github.com/void-linux/void-packages/pull/51501

New package: hexcurse-1.60.0
#### Testing the changes
- I tested the changes in this PR: **YES**

#### New package
- This new package conforms to the [package requirements](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#package-requirements): **YES**

#### Local build testing
- I built this PR locally for my native architecture, (X86_64-GLIBC)


A patch file from https://github.com/void-linux/void-packages/pull/51501.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-ci-hexcurse-51501.patch --]
[-- Type: text/x-diff, Size: 177643 bytes --]

From 509705950333c8002f6deebd641de45beeaac1d9 Mon Sep 17 00:00:00 2001
From: Mihail Ivanchev <contact@ivanchev.net>
Date: Sat, 27 Jul 2024 20:14:00 +0200
Subject: [PATCH] New package: hexcurse-1.60.0

---
 .../hexcurse/patches/3rdparty-support.patch   | 4998 +++++++++++++++++
 srcpkgs/hexcurse/template                     |   13 +
 2 files changed, 5011 insertions(+)
 create mode 100644 srcpkgs/hexcurse/patches/3rdparty-support.patch
 create mode 100644 srcpkgs/hexcurse/template

diff --git a/srcpkgs/hexcurse/patches/3rdparty-support.patch b/srcpkgs/hexcurse/patches/3rdparty-support.patch
new file mode 100644
index 00000000000000..d9a278ec500ee6
--- /dev/null
+++ b/srcpkgs/hexcurse/patches/3rdparty-support.patch
@@ -0,0 +1,4998 @@
+diff --git a/Makefile.in b/Makefile.in
+deleted file mode 100644
+index d47f3d8..0000000
+--- a/Makefile.in
++++ /dev/null
+@@ -1,776 +0,0 @@
+-# Makefile.in generated by automake 1.15 from Makefile.am.
+-# @configure_input@
+-
+-# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+-
+-# This Makefile.in is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+-# This program is distributed in the hope that it will be useful,
+-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+-# PARTICULAR PURPOSE.
+-
+-@SET_MAKE@
+-VPATH = @srcdir@
+-am__is_gnu_make = { \
+-  if test -z '$(MAKELEVEL)'; then \
+-    false; \
+-  elif test -n '$(MAKE_HOST)'; then \
+-    true; \
+-  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+-    true; \
+-  else \
+-    false; \
+-  fi; \
+-}
+-am__make_running_with_option = \
+-  case $${target_option-} in \
+-      ?) ;; \
+-      *) echo "am__make_running_with_option: internal error: invalid" \
+-              "target option '$${target_option-}' specified" >&2; \
+-         exit 1;; \
+-  esac; \
+-  has_opt=no; \
+-  sane_makeflags=$$MAKEFLAGS; \
+-  if $(am__is_gnu_make); then \
+-    sane_makeflags=$$MFLAGS; \
+-  else \
+-    case $$MAKEFLAGS in \
+-      *\\[\ \	]*) \
+-        bs=\\; \
+-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+-    esac; \
+-  fi; \
+-  skip_next=no; \
+-  strip_trailopt () \
+-  { \
+-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+-  }; \
+-  for flg in $$sane_makeflags; do \
+-    test $$skip_next = yes && { skip_next=no; continue; }; \
+-    case $$flg in \
+-      *=*|--*) continue;; \
+-        -*I) strip_trailopt 'I'; skip_next=yes;; \
+-      -*I?*) strip_trailopt 'I';; \
+-        -*O) strip_trailopt 'O'; skip_next=yes;; \
+-      -*O?*) strip_trailopt 'O';; \
+-        -*l) strip_trailopt 'l'; skip_next=yes;; \
+-      -*l?*) strip_trailopt 'l';; \
+-      -[dEDm]) skip_next=yes;; \
+-      -[JT]) skip_next=yes;; \
+-    esac; \
+-    case $$flg in \
+-      *$$target_option*) has_opt=yes; break;; \
+-    esac; \
+-  done; \
+-  test $$has_opt = yes
+-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+-pkgdatadir = $(datadir)/@PACKAGE@
+-pkgincludedir = $(includedir)/@PACKAGE@
+-pkglibdir = $(libdir)/@PACKAGE@
+-pkglibexecdir = $(libexecdir)/@PACKAGE@
+-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+-install_sh_DATA = $(install_sh) -c -m 644
+-install_sh_PROGRAM = $(install_sh) -c
+-install_sh_SCRIPT = $(install_sh) -c
+-INSTALL_HEADER = $(INSTALL_DATA)
+-transform = $(program_transform_name)
+-NORMAL_INSTALL = :
+-PRE_INSTALL = :
+-POST_INSTALL = :
+-NORMAL_UNINSTALL = :
+-PRE_UNINSTALL = :
+-POST_UNINSTALL = :
+-build_triplet = @build@
+-host_triplet = @host@
+-subdir = .
+-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+-	$(ACLOCAL_M4)
+-DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
+-	$(am__configure_deps) $(am__DIST_COMMON)
+-am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+- configure.lineno config.status.lineno
+-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+-CONFIG_HEADER = config.h
+-CONFIG_CLEAN_FILES =
+-CONFIG_CLEAN_VPATH_FILES =
+-AM_V_P = $(am__v_P_@AM_V@)
+-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+-am__v_P_0 = false
+-am__v_P_1 = :
+-AM_V_GEN = $(am__v_GEN_@AM_V@)
+-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+-am__v_GEN_0 = @echo "  GEN     " $@;
+-am__v_GEN_1 = 
+-AM_V_at = $(am__v_at_@AM_V@)
+-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+-am__v_at_0 = @
+-am__v_at_1 = 
+-SOURCES =
+-DIST_SOURCES =
+-RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+-	ctags-recursive dvi-recursive html-recursive info-recursive \
+-	install-data-recursive install-dvi-recursive \
+-	install-exec-recursive install-html-recursive \
+-	install-info-recursive install-pdf-recursive \
+-	install-ps-recursive install-recursive installcheck-recursive \
+-	installdirs-recursive pdf-recursive ps-recursive \
+-	tags-recursive uninstall-recursive
+-am__can_run_installinfo = \
+-  case $$AM_UPDATE_INFO_DIR in \
+-    n|no|NO) false;; \
+-    *) (install-info --version) >/dev/null 2>&1;; \
+-  esac
+-RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+-  distclean-recursive maintainer-clean-recursive
+-am__recursive_targets = \
+-  $(RECURSIVE_TARGETS) \
+-  $(RECURSIVE_CLEAN_TARGETS) \
+-  $(am__extra_recursive_targets)
+-AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+-	cscope distdir dist dist-all distcheck
+-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
+-	$(LISP)config.h.in
+-# Read a list of newline-separated strings from the standard input,
+-# and print each of them once, without duplicates.  Input order is
+-# *not* preserved.
+-am__uniquify_input = $(AWK) '\
+-  BEGIN { nonempty = 0; } \
+-  { items[$$0] = 1; nonempty = 1; } \
+-  END { if (nonempty) { for (i in items) print i; }; } \
+-'
+-# Make sure the list of sources is unique.  This is necessary because,
+-# e.g., the same source file might be shared among _SOURCES variables
+-# for different programs/libraries.
+-am__define_uniq_tagged_files = \
+-  list='$(am__tagged_files)'; \
+-  unique=`for i in $$list; do \
+-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+-  done | $(am__uniquify_input)`
+-ETAGS = etags
+-CTAGS = ctags
+-CSCOPE = cscope
+-DIST_SUBDIRS = $(SUBDIRS)
+-am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in AUTHORS \
+-	COPYING ChangeLog INSTALL NEWS README compile config.guess \
+-	config.sub depcomp install-sh missing mkinstalldirs
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+-distdir = $(PACKAGE)-$(VERSION)
+-top_distdir = $(distdir)
+-am__remove_distdir = \
+-  if test -d "$(distdir)"; then \
+-    find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+-      && rm -rf "$(distdir)" \
+-      || { sleep 5 && rm -rf "$(distdir)"; }; \
+-  else :; fi
+-am__post_remove_distdir = $(am__remove_distdir)
+-am__relativize = \
+-  dir0=`pwd`; \
+-  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+-  sed_rest='s,^[^/]*/*,,'; \
+-  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+-  sed_butlast='s,/*[^/]*$$,,'; \
+-  while test -n "$$dir1"; do \
+-    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+-    if test "$$first" != "."; then \
+-      if test "$$first" = ".."; then \
+-        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+-        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+-      else \
+-        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+-        if test "$$first2" = "$$first"; then \
+-          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+-        else \
+-          dir2="../$$dir2"; \
+-        fi; \
+-        dir0="$$dir0"/"$$first"; \
+-      fi; \
+-    fi; \
+-    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+-  done; \
+-  reldir="$$dir2"
+-DIST_ARCHIVES = $(distdir).tar.gz
+-GZIP_ENV = --best
+-DIST_TARGETS = dist-gzip
+-distuninstallcheck_listfiles = find . -type f -print
+-am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
+-  | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
+-distcleancheck_listfiles = find . -type f -print
+-ACLOCAL = @ACLOCAL@
+-AMTAR = @AMTAR@
+-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+-AUTOCONF = @AUTOCONF@
+-AUTOHEADER = @AUTOHEADER@
+-AUTOMAKE = @AUTOMAKE@
+-AWK = @AWK@
+-CC = @CC@
+-CCDEPMODE = @CCDEPMODE@
+-CFLAGS = @CFLAGS@
+-CPP = @CPP@
+-CPPFLAGS = @CPPFLAGS@
+-CYGPATH_W = @CYGPATH_W@
+-DEFS = @DEFS@
+-DEPDIR = @DEPDIR@
+-ECHO_C = @ECHO_C@
+-ECHO_N = @ECHO_N@
+-ECHO_T = @ECHO_T@
+-EGREP = @EGREP@
+-EXEEXT = @EXEEXT@
+-GREP = @GREP@
+-INSTALL = @INSTALL@
+-INSTALL_DATA = @INSTALL_DATA@
+-INSTALL_PROGRAM = @INSTALL_PROGRAM@
+-INSTALL_SCRIPT = @INSTALL_SCRIPT@
+-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+-LDFLAGS = @LDFLAGS@
+-LIBOBJS = @LIBOBJS@
+-LIBS = @LIBS@
+-LTLIBOBJS = @LTLIBOBJS@
+-MAKEINFO = @MAKEINFO@
+-MKDIR_P = @MKDIR_P@
+-OBJEXT = @OBJEXT@
+-PACKAGE = @PACKAGE@
+-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+-PACKAGE_NAME = @PACKAGE_NAME@
+-PACKAGE_STRING = @PACKAGE_STRING@
+-PACKAGE_TARNAME = @PACKAGE_TARNAME@
+-PACKAGE_URL = @PACKAGE_URL@
+-PACKAGE_VERSION = @PACKAGE_VERSION@
+-PATH_SEPARATOR = @PATH_SEPARATOR@
+-SET_MAKE = @SET_MAKE@
+-SHELL = @SHELL@
+-STRIP = @STRIP@
+-VERSION = @VERSION@
+-abs_builddir = @abs_builddir@
+-abs_srcdir = @abs_srcdir@
+-abs_top_builddir = @abs_top_builddir@
+-abs_top_srcdir = @abs_top_srcdir@
+-ac_ct_CC = @ac_ct_CC@
+-am__include = @am__include@
+-am__leading_dot = @am__leading_dot@
+-am__quote = @am__quote@
+-am__tar = @am__tar@
+-am__untar = @am__untar@
+-bindir = @bindir@
+-build = @build@
+-build_alias = @build_alias@
+-build_cpu = @build_cpu@
+-build_os = @build_os@
+-build_vendor = @build_vendor@
+-builddir = @builddir@
+-datadir = @datadir@
+-datarootdir = @datarootdir@
+-docdir = @docdir@
+-dvidir = @dvidir@
+-exec_prefix = @exec_prefix@
+-host = @host@
+-host_alias = @host_alias@
+-host_cpu = @host_cpu@
+-host_os = @host_os@
+-host_vendor = @host_vendor@
+-htmldir = @htmldir@
+-includedir = @includedir@
+-infodir = @infodir@
+-install_sh = @install_sh@
+-libdir = @libdir@
+-libexecdir = @libexecdir@
+-localedir = @localedir@
+-localstatedir = @localstatedir@
+-mandir = @mandir@
+-mkdir_p = @mkdir_p@
+-oldincludedir = @oldincludedir@
+-pdfdir = @pdfdir@
+-prefix = @prefix@
+-program_transform_name = @program_transform_name@
+-psdir = @psdir@
+-sbindir = @sbindir@
+-sharedstatedir = @sharedstatedir@
+-srcdir = @srcdir@
+-sysconfdir = @sysconfdir@
+-target_alias = @target_alias@
+-top_build_prefix = @top_build_prefix@
+-top_builddir = @top_builddir@
+-top_srcdir = @top_srcdir@
+-EXTRA_DIST = include/hex.h include/hgetopt.h README.Irix
+-SUBDIRS = src man
+-all: config.h
+-	$(MAKE) $(AM_MAKEFLAGS) all-recursive
+-
+-.SUFFIXES:
+-am--refresh: Makefile
+-	@:
+-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+-	@for dep in $?; do \
+-	  case '$(am__configure_deps)' in \
+-	    *$$dep*) \
+-	      echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
+-	      $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
+-		&& exit 0; \
+-	      exit 1;; \
+-	  esac; \
+-	done; \
+-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
+-	$(am__cd) $(top_srcdir) && \
+-	  $(AUTOMAKE) --gnu Makefile
+-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+-	@case '$?' in \
+-	  *config.status*) \
+-	    echo ' $(SHELL) ./config.status'; \
+-	    $(SHELL) ./config.status;; \
+-	  *) \
+-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+-	    cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+-	esac;
+-
+-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+-	$(SHELL) ./config.status --recheck
+-
+-$(top_srcdir)/configure:  $(am__configure_deps)
+-	$(am__cd) $(srcdir) && $(AUTOCONF)
+-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+-	$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+-$(am__aclocal_m4_deps):
+-
+-config.h: stamp-h1
+-	@test -f $@ || rm -f stamp-h1
+-	@test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1
+-
+-stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
+-	@rm -f stamp-h1
+-	cd $(top_builddir) && $(SHELL) ./config.status config.h
+-$(srcdir)/config.h.in:  $(am__configure_deps) 
+-	($(am__cd) $(top_srcdir) && $(AUTOHEADER))
+-	rm -f stamp-h1
+-	touch $@
+-
+-distclean-hdr:
+-	-rm -f config.h stamp-h1
+-
+-# This directory's subdirectories are mostly independent; you can cd
+-# into them and run 'make' without going through this Makefile.
+-# To change the values of 'make' variables: instead of editing Makefiles,
+-# (1) if the variable is set in 'config.status', edit 'config.status'
+-#     (which will cause the Makefiles to be regenerated when you run 'make');
+-# (2) otherwise, pass the desired values on the 'make' command line.
+-$(am__recursive_targets):
+-	@fail=; \
+-	if $(am__make_keepgoing); then \
+-	  failcom='fail=yes'; \
+-	else \
+-	  failcom='exit 1'; \
+-	fi; \
+-	dot_seen=no; \
+-	target=`echo $@ | sed s/-recursive//`; \
+-	case "$@" in \
+-	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+-	  *) list='$(SUBDIRS)' ;; \
+-	esac; \
+-	for subdir in $$list; do \
+-	  echo "Making $$target in $$subdir"; \
+-	  if test "$$subdir" = "."; then \
+-	    dot_seen=yes; \
+-	    local_target="$$target-am"; \
+-	  else \
+-	    local_target="$$target"; \
+-	  fi; \
+-	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+-	  || eval $$failcom; \
+-	done; \
+-	if test "$$dot_seen" = "no"; then \
+-	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+-	fi; test -z "$$fail"
+-
+-ID: $(am__tagged_files)
+-	$(am__define_uniq_tagged_files); mkid -fID $$unique
+-tags: tags-recursive
+-TAGS: tags
+-
+-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+-	set x; \
+-	here=`pwd`; \
+-	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+-	  include_option=--etags-include; \
+-	  empty_fix=.; \
+-	else \
+-	  include_option=--include; \
+-	  empty_fix=; \
+-	fi; \
+-	list='$(SUBDIRS)'; for subdir in $$list; do \
+-	  if test "$$subdir" = .; then :; else \
+-	    test ! -f $$subdir/TAGS || \
+-	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+-	  fi; \
+-	done; \
+-	$(am__define_uniq_tagged_files); \
+-	shift; \
+-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+-	  test -n "$$unique" || unique=$$empty_fix; \
+-	  if test $$# -gt 0; then \
+-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+-	      "$$@" $$unique; \
+-	  else \
+-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+-	      $$unique; \
+-	  fi; \
+-	fi
+-ctags: ctags-recursive
+-
+-CTAGS: ctags
+-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+-	$(am__define_uniq_tagged_files); \
+-	test -z "$(CTAGS_ARGS)$$unique" \
+-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+-	     $$unique
+-
+-GTAGS:
+-	here=`$(am__cd) $(top_builddir) && pwd` \
+-	  && $(am__cd) $(top_srcdir) \
+-	  && gtags -i $(GTAGS_ARGS) "$$here"
+-cscope: cscope.files
+-	test ! -s cscope.files \
+-	  || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
+-clean-cscope:
+-	-rm -f cscope.files
+-cscope.files: clean-cscope cscopelist
+-cscopelist: cscopelist-recursive
+-
+-cscopelist-am: $(am__tagged_files)
+-	list='$(am__tagged_files)'; \
+-	case "$(srcdir)" in \
+-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+-	  *) sdir=$(subdir)/$(srcdir) ;; \
+-	esac; \
+-	for i in $$list; do \
+-	  if test -f "$$i"; then \
+-	    echo "$(subdir)/$$i"; \
+-	  else \
+-	    echo "$$sdir/$$i"; \
+-	  fi; \
+-	done >> $(top_builddir)/cscope.files
+-
+-distclean-tags:
+-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-	-rm -f cscope.out cscope.in.out cscope.po.out cscope.files
+-
+-distdir: $(DISTFILES)
+-	$(am__remove_distdir)
+-	test -d "$(distdir)" || mkdir "$(distdir)"
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+-	  if test "$$subdir" = .; then :; else \
+-	    $(am__make_dryrun) \
+-	      || test -d "$(distdir)/$$subdir" \
+-	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+-	      || exit 1; \
+-	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+-	    $(am__relativize); \
+-	    new_distdir=$$reldir; \
+-	    dir1=$$subdir; dir2="$(top_distdir)"; \
+-	    $(am__relativize); \
+-	    new_top_distdir=$$reldir; \
+-	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+-	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+-	    ($(am__cd) $$subdir && \
+-	      $(MAKE) $(AM_MAKEFLAGS) \
+-	        top_distdir="$$new_top_distdir" \
+-	        distdir="$$new_distdir" \
+-		am__remove_distdir=: \
+-		am__skip_length_check=: \
+-		am__skip_mode_fix=: \
+-	        distdir) \
+-	      || exit 1; \
+-	  fi; \
+-	done
+-	-test -n "$(am__skip_mode_fix)" \
+-	|| find "$(distdir)" -type d ! -perm -755 \
+-		-exec chmod u+rwx,go+rx {} \; -o \
+-	  ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+-	  ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+-	  ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
+-	|| chmod -R a+r "$(distdir)"
+-dist-gzip: distdir
+-	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+-	$(am__post_remove_distdir)
+-
+-dist-bzip2: distdir
+-	tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
+-	$(am__post_remove_distdir)
+-
+-dist-lzip: distdir
+-	tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
+-	$(am__post_remove_distdir)
+-
+-dist-xz: distdir
+-	tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
+-	$(am__post_remove_distdir)
+-
+-dist-tarZ: distdir
+-	@echo WARNING: "Support for distribution archives compressed with" \
+-		       "legacy program 'compress' is deprecated." >&2
+-	@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
+-	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+-	$(am__post_remove_distdir)
+-
+-dist-shar: distdir
+-	@echo WARNING: "Support for shar distribution archives is" \
+-	               "deprecated." >&2
+-	@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
+-	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+-	$(am__post_remove_distdir)
+-
+-dist-zip: distdir
+-	-rm -f $(distdir).zip
+-	zip -rq $(distdir).zip $(distdir)
+-	$(am__post_remove_distdir)
+-
+-dist dist-all:
+-	$(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
+-	$(am__post_remove_distdir)
+-
+-# This target untars the dist file and tries a VPATH configuration.  Then
+-# it guarantees that the distribution is self-contained by making another
+-# tarfile.
+-distcheck: dist
+-	case '$(DIST_ARCHIVES)' in \
+-	*.tar.gz*) \
+-	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
+-	*.tar.bz2*) \
+-	  bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
+-	*.tar.lz*) \
+-	  lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
+-	*.tar.xz*) \
+-	  xz -dc $(distdir).tar.xz | $(am__untar) ;;\
+-	*.tar.Z*) \
+-	  uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+-	*.shar.gz*) \
+-	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
+-	*.zip*) \
+-	  unzip $(distdir).zip ;;\
+-	esac
+-	chmod -R a-w $(distdir)
+-	chmod u+w $(distdir)
+-	mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
+-	chmod a-w $(distdir)
+-	test -d $(distdir)/_build || exit 0; \
+-	dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+-	  && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+-	  && am__cwd=`pwd` \
+-	  && $(am__cd) $(distdir)/_build/sub \
+-	  && ../../configure \
+-	    $(AM_DISTCHECK_CONFIGURE_FLAGS) \
+-	    $(DISTCHECK_CONFIGURE_FLAGS) \
+-	    --srcdir=../.. --prefix="$$dc_install_base" \
+-	  && $(MAKE) $(AM_MAKEFLAGS) \
+-	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
+-	  && $(MAKE) $(AM_MAKEFLAGS) check \
+-	  && $(MAKE) $(AM_MAKEFLAGS) install \
+-	  && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+-	  && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+-	  && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+-	        distuninstallcheck \
+-	  && chmod -R a-w "$$dc_install_base" \
+-	  && ({ \
+-	       (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+-	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+-	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+-	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+-	            distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+-	      } || { rm -rf "$$dc_destdir"; exit 1; }) \
+-	  && rm -rf "$$dc_destdir" \
+-	  && $(MAKE) $(AM_MAKEFLAGS) dist \
+-	  && rm -rf $(DIST_ARCHIVES) \
+-	  && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
+-	  && cd "$$am__cwd" \
+-	  || exit 1
+-	$(am__post_remove_distdir)
+-	@(echo "$(distdir) archives ready for distribution: "; \
+-	  list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+-	  sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
+-distuninstallcheck:
+-	@test -n '$(distuninstallcheck_dir)' || { \
+-	  echo 'ERROR: trying to run $@ with an empty' \
+-	       '$$(distuninstallcheck_dir)' >&2; \
+-	  exit 1; \
+-	}; \
+-	$(am__cd) '$(distuninstallcheck_dir)' || { \
+-	  echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
+-	  exit 1; \
+-	}; \
+-	test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
+-	   || { echo "ERROR: files left after uninstall:" ; \
+-	        if test -n "$(DESTDIR)"; then \
+-	          echo "  (check DESTDIR support)"; \
+-	        fi ; \
+-	        $(distuninstallcheck_listfiles) ; \
+-	        exit 1; } >&2
+-distcleancheck: distclean
+-	@if test '$(srcdir)' = . ; then \
+-	  echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+-	  exit 1 ; \
+-	fi
+-	@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+-	  || { echo "ERROR: files left in build directory after distclean:" ; \
+-	       $(distcleancheck_listfiles) ; \
+-	       exit 1; } >&2
+-check-am: all-am
+-check: check-recursive
+-all-am: Makefile config.h
+-installdirs: installdirs-recursive
+-installdirs-am:
+-install: install-recursive
+-install-exec: install-exec-recursive
+-install-data: install-data-recursive
+-uninstall: uninstall-recursive
+-
+-install-am: all-am
+-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+-
+-installcheck: installcheck-recursive
+-install-strip:
+-	if test -z '$(STRIP)'; then \
+-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+-	      install; \
+-	else \
+-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+-	fi
+-mostlyclean-generic:
+-
+-clean-generic:
+-
+-distclean-generic:
+-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+-
+-maintainer-clean-generic:
+-	@echo "This command is intended for maintainers to use"
+-	@echo "it deletes files that may require special tools to rebuild."
+-clean: clean-recursive
+-
+-clean-am: clean-generic mostlyclean-am
+-
+-distclean: distclean-recursive
+-	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
+-	-rm -f Makefile
+-distclean-am: clean-am distclean-generic distclean-hdr distclean-tags
+-
+-dvi: dvi-recursive
+-
+-dvi-am:
+-
+-html: html-recursive
+-
+-html-am:
+-
+-info: info-recursive
+-
+-info-am:
+-
+-install-data-am:
+-
+-install-dvi: install-dvi-recursive
+-
+-install-dvi-am:
+-
+-install-exec-am:
+-
+-install-html: install-html-recursive
+-
+-install-html-am:
+-
+-install-info: install-info-recursive
+-
+-install-info-am:
+-
+-install-man:
+-
+-install-pdf: install-pdf-recursive
+-
+-install-pdf-am:
+-
+-install-ps: install-ps-recursive
+-
+-install-ps-am:
+-
+-installcheck-am:
+-
+-maintainer-clean: maintainer-clean-recursive
+-	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
+-	-rm -rf $(top_srcdir)/autom4te.cache
+-	-rm -f Makefile
+-maintainer-clean-am: distclean-am maintainer-clean-generic
+-
+-mostlyclean: mostlyclean-recursive
+-
+-mostlyclean-am: mostlyclean-generic
+-
+-pdf: pdf-recursive
+-
+-pdf-am:
+-
+-ps: ps-recursive
+-
+-ps-am:
+-
+-uninstall-am:
+-
+-.MAKE: $(am__recursive_targets) all install-am install-strip
+-
+-.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
+-	am--refresh check check-am clean clean-cscope clean-generic \
+-	cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \
+-	dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \
+-	distcheck distclean distclean-generic distclean-hdr \
+-	distclean-tags distcleancheck distdir distuninstallcheck dvi \
+-	dvi-am html html-am info info-am install install-am \
+-	install-data install-data-am install-dvi install-dvi-am \
+-	install-exec install-exec-am install-html install-html-am \
+-	install-info install-info-am install-man install-pdf \
+-	install-pdf-am install-ps install-ps-am install-strip \
+-	installcheck installcheck-am installdirs installdirs-am \
+-	maintainer-clean maintainer-clean-generic mostlyclean \
+-	mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \
+-	uninstall-am
+-
+-.PRECIOUS: Makefile
+-
+-
+-# Tell versions [3.59,3.63) of GNU make to not export all variables.
+-# Otherwise a system limit (for SysV at least) may be exceeded.
+-.NOEXPORT:
+diff --git a/README.md b/README.md
+index 3ead7a7..bda831c 100644
+--- a/README.md
++++ b/README.md
+@@ -1,15 +1,15 @@
+-hexcurse v1.60.0
++hexcurse
+ =====================================
+-[![Build Status](https://travis-ci.org/LonnyGomes/hexcurse.svg?branch=master)](https://travis-ci.org/LonnyGomes/hexcurse)
+ 
+-![hexcurse screenshot](http://lonnygomes.github.io/screenshots/hexcurse2-ss.jpg)
++Project: https://github.com/prso/hexcurse
+ 
+-Bug reports: https://github.com/LonnyGomes/hexcurse/issues
++![hexcurse screenshot](screenshots/hexcurse-screenshot.png)
+ 
++This is a fork from [LonnyGomes/hexcurse](https://github.com/LonnyGomes/hexcurse) with fixes and improvements.
+ 
+ Description
+ -----------
+-Hexcurse is a curses-base hex editing utility that can open, edit, and save files, editing both the hexadecimal and decimal values.
++Hexcurse is a curses-based hex editing utility that can open, edit, and save files, editing both the hexadecimal and decimal values.
+ 
+ It was written by [Lonny Gomes](https://twitter.com/lonnygomes) and [James Stephenson](https://plus.google.com/u/0/103174459258175070784/about) but we haven't maintained it for some time. We recently saw an old tarball of the code floating around the net and thought it would be good to start maintaining the codebase again.
+ 
+@@ -31,14 +31,21 @@ Installation
+ Usage
+ -----
+ 
+-    usage: hexcurse [-?|help] [-a] [-r rnum] [-o outputfile] [[-i] infile]
+-
+-        -a      Output addresses in decimal format initially
+-        -e      Output characters in EBCDIC format rather than ASCII
+-        -r rnum Resize the display to "rnum" bytes wide
+-        -o outfile  Write output to outfile by default
+-        -? | -help  Display usage and version of hexcurse program
+-        [-i] infile Read from data from infile (-i required if not last argument)
++    usage: hexcurse [-?|help] [-a] [-c colorlevel] [-e] [-f] [-o outputfile] [-r rnum] [-t] [[-i] infile]
++
++        -? | -help    Display usage and version of hexcurse program
++        -a            Output addresses in decimal format initially
++        -c colorlevel Set the color level:
++                        0: no colors
++                        1: only color for addresses
++                        2: 1 + color for 00 (default if terminal supports color)
++                        3: multicolor by FrankSansC
++        -e            Output characters in EBCDIC format rather than ASCII
++        -f            Show function key numbers in labels
++        -o outfile    Write output to outfile by default
++        -r rnum       Resize the display to "rnum" bytes wide
++        -t            Keep colors defined by terminal
++        [-i] infile   Read from data from infile (-i required if not last argument)
+ 
+ #### Keyboard shortcuts
+ 
+diff --git a/aclocal.m4 b/aclocal.m4
+deleted file mode 100644
+index f3018f6..0000000
+--- a/aclocal.m4
++++ /dev/null
+@@ -1,1152 +0,0 @@
+-# generated automatically by aclocal 1.15 -*- Autoconf -*-
+-
+-# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+-
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+-# This program is distributed in the hope that it will be useful,
+-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+-# PARTICULAR PURPOSE.
+-
+-m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
+-m4_ifndef([AC_AUTOCONF_VERSION],
+-  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+-m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
+-[m4_warning([this file was generated for autoconf 2.69.
+-You have another version of autoconf.  It may work, but is not guaranteed to.
+-If you have problems, you may need to regenerate the build system entirely.
+-To do so, use the procedure documented by the package, typically 'autoreconf'.])])
+-
+-# Copyright (C) 2002-2014 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+-# AM_AUTOMAKE_VERSION(VERSION)
+-# ----------------------------
+-# Automake X.Y traces this macro to ensure aclocal.m4 has been
+-# generated from the m4 files accompanying Automake X.Y.
+-# (This private macro should not be called outside this file.)
+-AC_DEFUN([AM_AUTOMAKE_VERSION],
+-[am__api_version='1.15'
+-dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
+-dnl require some minimum version.  Point them to the right macro.
+-m4_if([$1], [1.15], [],
+-      [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+-])
+-
+-# _AM_AUTOCONF_VERSION(VERSION)
+-# -----------------------------
+-# aclocal traces this macro to find the Autoconf version.
+-# This is a private macro too.  Using m4_define simplifies
+-# the logic in aclocal, which can simply ignore this definition.
+-m4_define([_AM_AUTOCONF_VERSION], [])
+-
+-# AM_SET_CURRENT_AUTOMAKE_VERSION
+-# -------------------------------
+-# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
+-# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
+-AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+-[AM_AUTOMAKE_VERSION([1.15])dnl
+-m4_ifndef([AC_AUTOCONF_VERSION],
+-  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+-_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
+-
+-# AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
+-
+-# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+-# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+-# $ac_aux_dir to '$srcdir/foo'.  In other projects, it is set to
+-# '$srcdir', '$srcdir/..', or '$srcdir/../..'.
+-#
+-# Of course, Automake must honor this variable whenever it calls a
+-# tool from the auxiliary directory.  The problem is that $srcdir (and
+-# therefore $ac_aux_dir as well) can be either absolute or relative,
+-# depending on how configure is run.  This is pretty annoying, since
+-# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+-# source directory, any form will work fine, but in subdirectories a
+-# relative path needs to be adjusted first.
+-#
+-# $ac_aux_dir/missing
+-#    fails when called from a subdirectory if $ac_aux_dir is relative
+-# $top_srcdir/$ac_aux_dir/missing
+-#    fails if $ac_aux_dir is absolute,
+-#    fails when called from a subdirectory in a VPATH build with
+-#          a relative $ac_aux_dir
+-#
+-# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+-# are both prefixed by $srcdir.  In an in-source build this is usually
+-# harmless because $srcdir is '.', but things will broke when you
+-# start a VPATH build or use an absolute $srcdir.
+-#
+-# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+-# iff we strip the leading $srcdir from $ac_aux_dir.  That would be:
+-#   am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+-# and then we would define $MISSING as
+-#   MISSING="\${SHELL} $am_aux_dir/missing"
+-# This will work as long as MISSING is not called from configure, because
+-# unfortunately $(top_srcdir) has no meaning in configure.
+-# However there are other variables, like CC, which are often used in
+-# configure, and could therefore not use this "fixed" $ac_aux_dir.
+-#
+-# Another solution, used here, is to always expand $ac_aux_dir to an
+-# absolute PATH.  The drawback is that using absolute paths prevent a
+-# configured tree to be moved without reconfiguration.
+-
+-AC_DEFUN([AM_AUX_DIR_EXPAND],
+-[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
+-# Expand $ac_aux_dir to an absolute path.
+-am_aux_dir=`cd "$ac_aux_dir" && pwd`
+-])
+-
+-# AM_CONDITIONAL                                            -*- Autoconf -*-
+-
+-# Copyright (C) 1997-2014 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+-# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+-# -------------------------------------
+-# Define a conditional.
+-AC_DEFUN([AM_CONDITIONAL],
+-[AC_PREREQ([2.52])dnl
+- m4_if([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
+-       [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+-AC_SUBST([$1_TRUE])dnl
+-AC_SUBST([$1_FALSE])dnl
+-_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+-_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+-m4_define([_AM_COND_VALUE_$1], [$2])dnl
+-if $2; then
+-  $1_TRUE=
+-  $1_FALSE='#'
+-else
+-  $1_TRUE='#'
+-  $1_FALSE=
+-fi
+-AC_CONFIG_COMMANDS_PRE(
+-[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+-  AC_MSG_ERROR([[conditional "$1" was never defined.
+-Usually this means the macro was only invoked conditionally.]])
+-fi])])
+-
+-# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+-
+-# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be
+-# written in clear, in which case automake, when reading aclocal.m4,
+-# will think it sees a *use*, and therefore will trigger all it's
+-# C support machinery.  Also note that it means that autoscan, seeing
+-# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+-
+-
+-# _AM_DEPENDENCIES(NAME)
+-# ----------------------
+-# See how the compiler implements dependency checking.
+-# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC".
+-# We try a few techniques and use that to set a single cache variable.
+-#
+-# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
+-# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
+-# dependency, and given that the user is not expected to run this macro,
+-# just rely on AC_PROG_CC.
+-AC_DEFUN([_AM_DEPENDENCIES],
+-[AC_REQUIRE([AM_SET_DEPDIR])dnl
+-AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+-AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+-AC_REQUIRE([AM_DEP_TRACK])dnl
+-
+-m4_if([$1], [CC],   [depcc="$CC"   am_compiler_list=],
+-      [$1], [CXX],  [depcc="$CXX"  am_compiler_list=],
+-      [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+-      [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'],
+-      [$1], [UPC],  [depcc="$UPC"  am_compiler_list=],
+-      [$1], [GCJ],  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
+-                    [depcc="$$1"   am_compiler_list=])
+-
+-AC_CACHE_CHECK([dependency style of $depcc],
+-               [am_cv_$1_dependencies_compiler_type],
+-[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+-  # We make a subdir and do the tests there.  Otherwise we can end up
+-  # making bogus files that we don't know about and never remove.  For
+-  # instance it was reported that on HP-UX the gcc test will end up
+-  # making a dummy file named 'D' -- because '-MD' means "put the output
+-  # in D".
+-  rm -rf conftest.dir
+-  mkdir conftest.dir
+-  # Copy depcomp to subdir because otherwise we won't find it if we're
+-  # using a relative directory.
+-  cp "$am_depcomp" conftest.dir
+-  cd conftest.dir
+-  # We will build objects and dependencies in a subdirectory because
+-  # it helps to detect inapplicable dependency modes.  For instance
+-  # both Tru64's cc and ICC support -MD to output dependencies as a
+-  # side effect of compilation, but ICC will put the dependencies in
+-  # the current directory while Tru64 will put them in the object
+-  # directory.
+-  mkdir sub
+-
+-  am_cv_$1_dependencies_compiler_type=none
+-  if test "$am_compiler_list" = ""; then
+-     am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+-  fi
+-  am__universal=false
+-  m4_case([$1], [CC],
+-    [case " $depcc " in #(
+-     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+-     esac],
+-    [CXX],
+-    [case " $depcc " in #(
+-     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+-     esac])
+-
+-  for depmode in $am_compiler_list; do
+-    # Setup a source with many dependencies, because some compilers
+-    # like to wrap large dependency lists on column 80 (with \), and
+-    # we should not choose a depcomp mode which is confused by this.
+-    #
+-    # We need to recreate these files for each test, as the compiler may
+-    # overwrite some of them when testing with obscure command lines.
+-    # This happens at least with the AIX C compiler.
+-    : > sub/conftest.c
+-    for i in 1 2 3 4 5 6; do
+-      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+-      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+-      # Solaris 10 /bin/sh.
+-      echo '/* dummy */' > sub/conftst$i.h
+-    done
+-    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+-
+-    # We check with '-c' and '-o' for the sake of the "dashmstdout"
+-    # mode.  It turns out that the SunPro C++ compiler does not properly
+-    # handle '-M -o', and we need to detect this.  Also, some Intel
+-    # versions had trouble with output in subdirs.
+-    am__obj=sub/conftest.${OBJEXT-o}
+-    am__minus_obj="-o $am__obj"
+-    case $depmode in
+-    gcc)
+-      # This depmode causes a compiler race in universal mode.
+-      test "$am__universal" = false || continue
+-      ;;
+-    nosideeffect)
+-      # After this tag, mechanisms are not by side-effect, so they'll
+-      # only be used when explicitly requested.
+-      if test "x$enable_dependency_tracking" = xyes; then
+-	continue
+-      else
+-	break
+-      fi
+-      ;;
+-    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+-      # This compiler won't grok '-c -o', but also, the minuso test has
+-      # not run yet.  These depmodes are late enough in the game, and
+-      # so weak that their functioning should not be impacted.
+-      am__obj=conftest.${OBJEXT-o}
+-      am__minus_obj=
+-      ;;
+-    none) break ;;
+-    esac
+-    if depmode=$depmode \
+-       source=sub/conftest.c object=$am__obj \
+-       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+-       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+-         >/dev/null 2>conftest.err &&
+-       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+-       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+-       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+-       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+-      # icc doesn't choke on unknown options, it will just issue warnings
+-      # or remarks (even with -Werror).  So we grep stderr for any message
+-      # that says an option was ignored or not supported.
+-      # When given -MP, icc 7.0 and 7.1 complain thusly:
+-      #   icc: Command line warning: ignoring option '-M'; no argument required
+-      # The diagnosis changed in icc 8.0:
+-      #   icc: Command line remark: option '-MP' not supported
+-      if (grep 'ignoring option' conftest.err ||
+-          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+-        am_cv_$1_dependencies_compiler_type=$depmode
+-        break
+-      fi
+-    fi
+-  done
+-
+-  cd ..
+-  rm -rf conftest.dir
+-else
+-  am_cv_$1_dependencies_compiler_type=none
+-fi
+-])
+-AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+-AM_CONDITIONAL([am__fastdep$1], [
+-  test "x$enable_dependency_tracking" != xno \
+-  && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+-])
+-
+-
+-# AM_SET_DEPDIR
+-# -------------
+-# Choose a directory name for dependency files.
+-# This macro is AC_REQUIREd in _AM_DEPENDENCIES.
+-AC_DEFUN([AM_SET_DEPDIR],
+-[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+-AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+-])
+-
+-
+-# AM_DEP_TRACK
+-# ------------
+-AC_DEFUN([AM_DEP_TRACK],
+-[AC_ARG_ENABLE([dependency-tracking], [dnl
+-AS_HELP_STRING(
+-  [--enable-dependency-tracking],
+-  [do not reject slow dependency extractors])
+-AS_HELP_STRING(
+-  [--disable-dependency-tracking],
+-  [speeds up one-time build])])
+-if test "x$enable_dependency_tracking" != xno; then
+-  am_depcomp="$ac_aux_dir/depcomp"
+-  AMDEPBACKSLASH='\'
+-  am__nodep='_no'
+-fi
+-AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+-AC_SUBST([AMDEPBACKSLASH])dnl
+-_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+-AC_SUBST([am__nodep])dnl
+-_AM_SUBST_NOTMAKE([am__nodep])dnl
+-])
+-
+-# Generate code to set up dependency tracking.              -*- Autoconf -*-
+-
+-# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+-
+-# _AM_OUTPUT_DEPENDENCY_COMMANDS
+-# ------------------------------
+-AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+-[{
+-  # Older Autoconf quotes --file arguments for eval, but not when files
+-  # are listed without --file.  Let's play safe and only enable the eval
+-  # if we detect the quoting.
+-  case $CONFIG_FILES in
+-  *\'*) eval set x "$CONFIG_FILES" ;;
+-  *)   set x $CONFIG_FILES ;;
+-  esac
+-  shift
+-  for mf
+-  do
+-    # Strip MF so we end up with the name of the file.
+-    mf=`echo "$mf" | sed -e 's/:.*$//'`
+-    # Check whether this is an Automake generated Makefile or not.
+-    # We used to match only the files named 'Makefile.in', but
+-    # some people rename them; so instead we look at the file content.
+-    # Grep'ing the first line is not enough: some people post-process
+-    # each Makefile.in and add a new line on top of each file to say so.
+-    # Grep'ing the whole file is not good either: AIX grep has a line
+-    # limit of 2048, but all sed's we know have understand at least 4000.
+-    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+-      dirpart=`AS_DIRNAME("$mf")`
+-    else
+-      continue
+-    fi
+-    # Extract the definition of DEPDIR, am__include, and am__quote
+-    # from the Makefile without running 'make'.
+-    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+-    test -z "$DEPDIR" && continue
+-    am__include=`sed -n 's/^am__include = //p' < "$mf"`
+-    test -z "$am__include" && continue
+-    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+-    # Find all dependency output files, they are included files with
+-    # $(DEPDIR) in their names.  We invoke sed twice because it is the
+-    # simplest approach to changing $(DEPDIR) to its actual value in the
+-    # expansion.
+-    for file in `sed -n "
+-      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+-	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
+-      # Make sure the directory exists.
+-      test -f "$dirpart/$file" && continue
+-      fdir=`AS_DIRNAME(["$file"])`
+-      AS_MKDIR_P([$dirpart/$fdir])
+-      # echo "creating $dirpart/$file"
+-      echo '# dummy' > "$dirpart/$file"
+-    done
+-  done
+-}
+-])# _AM_OUTPUT_DEPENDENCY_COMMANDS
+-
+-
+-# AM_OUTPUT_DEPENDENCY_COMMANDS
+-# -----------------------------
+-# This macro should only be invoked once -- use via AC_REQUIRE.
+-#
+-# This code is only required when automatic dependency tracking
+-# is enabled.  FIXME.  This creates each '.P' file that we will
+-# need in order to bootstrap the dependency handling code.
+-AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+-[AC_CONFIG_COMMANDS([depfiles],
+-     [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+-     [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+-])
+-
+-# Do all the work for Automake.                             -*- Autoconf -*-
+-
+-# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+-# This macro actually does too much.  Some checks are only needed if
+-# your package does certain things.  But this isn't really a big deal.
+-
+-dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O.
+-m4_define([AC_PROG_CC],
+-m4_defn([AC_PROG_CC])
+-[_AM_PROG_CC_C_O
+-])
+-
+-# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+-# AM_INIT_AUTOMAKE([OPTIONS])
+-# -----------------------------------------------
+-# The call with PACKAGE and VERSION arguments is the old style
+-# call (pre autoconf-2.50), which is being phased out.  PACKAGE
+-# and VERSION should now be passed to AC_INIT and removed from
+-# the call to AM_INIT_AUTOMAKE.
+-# We support both call styles for the transition.  After
+-# the next Automake release, Autoconf can make the AC_INIT
+-# arguments mandatory, and then we can depend on a new Autoconf
+-# release and drop the old call support.
+-AC_DEFUN([AM_INIT_AUTOMAKE],
+-[AC_PREREQ([2.65])dnl
+-dnl Autoconf wants to disallow AM_ names.  We explicitly allow
+-dnl the ones we care about.
+-m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+-AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+-AC_REQUIRE([AC_PROG_INSTALL])dnl
+-if test "`cd $srcdir && pwd`" != "`pwd`"; then
+-  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+-  # is not polluted with repeated "-I."
+-  AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+-  # test to see if srcdir already configured
+-  if test -f $srcdir/config.status; then
+-    AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+-  fi
+-fi
+-
+-# test whether we have cygpath
+-if test -z "$CYGPATH_W"; then
+-  if (cygpath --version) >/dev/null 2>/dev/null; then
+-    CYGPATH_W='cygpath -w'
+-  else
+-    CYGPATH_W=echo
+-  fi
+-fi
+-AC_SUBST([CYGPATH_W])
+-
+-# Define the identity of the package.
+-dnl Distinguish between old-style and new-style calls.
+-m4_ifval([$2],
+-[AC_DIAGNOSE([obsolete],
+-             [$0: two- and three-arguments forms are deprecated.])
+-m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+- AC_SUBST([PACKAGE], [$1])dnl
+- AC_SUBST([VERSION], [$2])],
+-[_AM_SET_OPTIONS([$1])dnl
+-dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+-m4_if(
+-  m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
+-  [ok:ok],,
+-  [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+-
+-_AM_IF_OPTION([no-define],,
+-[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
+- AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
+-
+-# Some tools Automake needs.
+-AC_REQUIRE([AM_SANITY_CHECK])dnl
+-AC_REQUIRE([AC_ARG_PROGRAM])dnl
+-AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
+-AM_MISSING_PROG([AUTOCONF], [autoconf])
+-AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
+-AM_MISSING_PROG([AUTOHEADER], [autoheader])
+-AM_MISSING_PROG([MAKEINFO], [makeinfo])
+-AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+-AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
+-AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+-# For better backward compatibility.  To be removed once Automake 1.9.x
+-# dies out for good.  For more background, see:
+-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+-AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
+-# We need awk for the "check" target (and possibly the TAP driver).  The
+-# system "awk" is bad on some platforms.
+-AC_REQUIRE([AC_PROG_AWK])dnl
+-AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+-AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+-_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+-	      [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+-			     [_AM_PROG_TAR([v7])])])
+-_AM_IF_OPTION([no-dependencies],,
+-[AC_PROVIDE_IFELSE([AC_PROG_CC],
+-		  [_AM_DEPENDENCIES([CC])],
+-		  [m4_define([AC_PROG_CC],
+-			     m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
+-AC_PROVIDE_IFELSE([AC_PROG_CXX],
+-		  [_AM_DEPENDENCIES([CXX])],
+-		  [m4_define([AC_PROG_CXX],
+-			     m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
+-AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+-		  [_AM_DEPENDENCIES([OBJC])],
+-		  [m4_define([AC_PROG_OBJC],
+-			     m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
+-AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
+-		  [_AM_DEPENDENCIES([OBJCXX])],
+-		  [m4_define([AC_PROG_OBJCXX],
+-			     m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
+-])
+-AC_REQUIRE([AM_SILENT_RULES])dnl
+-dnl The testsuite driver may need to know about EXEEXT, so add the
+-dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This
+-dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
+-AC_CONFIG_COMMANDS_PRE(dnl
+-[m4_provide_if([_AM_COMPILER_EXEEXT],
+-  [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
+-
+-# POSIX will say in a future version that running "rm -f" with no argument
+-# is OK; and we want to be able to make that assumption in our Makefile
+-# recipes.  So use an aggressive probe to check that the usage we want is
+-# actually supported "in the wild" to an acceptable degree.
+-# See automake bug#10828.
+-# To make any issue more visible, cause the running configure to be aborted
+-# by default if the 'rm' program in use doesn't match our expectations; the
+-# user can still override this though.
+-if rm -f && rm -fr && rm -rf; then : OK; else
+-  cat >&2 <<'END'
+-Oops!
+-
+-Your 'rm' program seems unable to run without file operands specified
+-on the command line, even when the '-f' option is present.  This is contrary
+-to the behaviour of most rm programs out there, and not conforming with
+-the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+-
+-Please tell bug-automake@gnu.org about your system, including the value
+-of your $PATH and any error possibly output before this message.  This
+-can help us improve future automake versions.
+-
+-END
+-  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+-    echo 'Configuration will proceed anyway, since you have set the' >&2
+-    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+-    echo >&2
+-  else
+-    cat >&2 <<'END'
+-Aborting the configuration process, to ensure you take notice of the issue.
+-
+-You can download and install GNU coreutils to get an 'rm' implementation
+-that behaves properly: <http://www.gnu.org/software/coreutils/>.
+-
+-If you want to complete the configuration process using your problematic
+-'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+-to "yes", and re-run configure.
+-
+-END
+-    AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
+-  fi
+-fi
+-dnl The trailing newline in this macro's definition is deliberate, for
+-dnl backward compatibility and to allow trailing 'dnl'-style comments
+-dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841.
+-])
+-
+-dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
+-dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
+-dnl mangled by Autoconf and run in a shell conditional statement.
+-m4_define([_AC_COMPILER_EXEEXT],
+-m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
+-
+-# When config.status generates a header, we must update the stamp-h file.
+-# This file resides in the same directory as the config header
+-# that is generated.  The stamp files are numbered to have different names.
+-
+-# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+-# loop where config.status creates the headers, so we can generate
+-# our stamp files there.
+-AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+-[# Compute $1's index in $config_headers.
+-_am_arg=$1
+-_am_stamp_count=1
+-for _am_header in $config_headers :; do
+-  case $_am_header in
+-    $_am_arg | $_am_arg:* )
+-      break ;;
+-    * )
+-      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+-  esac
+-done
+-echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
+-
+-# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+-# AM_PROG_INSTALL_SH
+-# ------------------
+-# Define $install_sh.
+-AC_DEFUN([AM_PROG_INSTALL_SH],
+-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+-if test x"${install_sh+set}" != xset; then
+-  case $am_aux_dir in
+-  *\ * | *\	*)
+-    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+-  *)
+-    install_sh="\${SHELL} $am_aux_dir/install-sh"
+-  esac
+-fi
+-AC_SUBST([install_sh])])
+-
+-# Copyright (C) 2003-2014 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+-# Check whether the underlying file-system supports filenames
+-# with a leading dot.  For instance MS-DOS doesn't.
+-AC_DEFUN([AM_SET_LEADING_DOT],
+-[rm -rf .tst 2>/dev/null
+-mkdir .tst 2>/dev/null
+-if test -d .tst; then
+-  am__leading_dot=.
+-else
+-  am__leading_dot=_
+-fi
+-rmdir .tst 2>/dev/null
+-AC_SUBST([am__leading_dot])])
+-
+-# Check to see how 'make' treats includes.	            -*- Autoconf -*-
+-
+-# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+-# AM_MAKE_INCLUDE()
+-# -----------------
+-# Check to see how make treats includes.
+-AC_DEFUN([AM_MAKE_INCLUDE],
+-[am_make=${MAKE-make}
+-cat > confinc << 'END'
+-am__doit:
+-	@echo this is the am__doit target
+-.PHONY: am__doit
+-END
+-# If we don't find an include directive, just comment out the code.
+-AC_MSG_CHECKING([for style of include used by $am_make])
+-am__include="#"
+-am__quote=
+-_am_result=none
+-# First try GNU make style include.
+-echo "include confinc" > confmf
+-# Ignore all kinds of additional output from 'make'.
+-case `$am_make -s -f confmf 2> /dev/null` in #(
+-*the\ am__doit\ target*)
+-  am__include=include
+-  am__quote=
+-  _am_result=GNU
+-  ;;
+-esac
+-# Now try BSD make style include.
+-if test "$am__include" = "#"; then
+-   echo '.include "confinc"' > confmf
+-   case `$am_make -s -f confmf 2> /dev/null` in #(
+-   *the\ am__doit\ target*)
+-     am__include=.include
+-     am__quote="\""
+-     _am_result=BSD
+-     ;;
+-   esac
+-fi
+-AC_SUBST([am__include])
+-AC_SUBST([am__quote])
+-AC_MSG_RESULT([$_am_result])
+-rm -f confinc confmf
+-])
+-
+-# Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
+-
+-# Copyright (C) 1997-2014 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+-# AM_MISSING_PROG(NAME, PROGRAM)
+-# ------------------------------
+-AC_DEFUN([AM_MISSING_PROG],
+-[AC_REQUIRE([AM_MISSING_HAS_RUN])
+-$1=${$1-"${am_missing_run}$2"}
+-AC_SUBST($1)])
+-
+-# AM_MISSING_HAS_RUN
+-# ------------------
+-# Define MISSING if not defined so far and test if it is modern enough.
+-# If it is, set am_missing_run to use it, otherwise, to nothing.
+-AC_DEFUN([AM_MISSING_HAS_RUN],
+-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+-AC_REQUIRE_AUX_FILE([missing])dnl
+-if test x"${MISSING+set}" != xset; then
+-  case $am_aux_dir in
+-  *\ * | *\	*)
+-    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+-  *)
+-    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+-  esac
+-fi
+-# Use eval to expand $SHELL
+-if eval "$MISSING --is-lightweight"; then
+-  am_missing_run="$MISSING "
+-else
+-  am_missing_run=
+-  AC_MSG_WARN(['missing' script is too old or missing])
+-fi
+-])
+-
+-# Helper functions for option handling.                     -*- Autoconf -*-
+-
+-# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+-# _AM_MANGLE_OPTION(NAME)
+-# -----------------------
+-AC_DEFUN([_AM_MANGLE_OPTION],
+-[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+-
+-# _AM_SET_OPTION(NAME)
+-# --------------------
+-# Set option NAME.  Presently that only means defining a flag for this option.
+-AC_DEFUN([_AM_SET_OPTION],
+-[m4_define(_AM_MANGLE_OPTION([$1]), [1])])
+-
+-# _AM_SET_OPTIONS(OPTIONS)
+-# ------------------------
+-# OPTIONS is a space-separated list of Automake options.
+-AC_DEFUN([_AM_SET_OPTIONS],
+-[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+-
+-# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+-# -------------------------------------------
+-# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+-AC_DEFUN([_AM_IF_OPTION],
+-[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+-
+-# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+-# _AM_PROG_CC_C_O
+-# ---------------
+-# Like AC_PROG_CC_C_O, but changed for automake.  We rewrite AC_PROG_CC
+-# to automatically call this.
+-AC_DEFUN([_AM_PROG_CC_C_O],
+-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+-AC_REQUIRE_AUX_FILE([compile])dnl
+-AC_LANG_PUSH([C])dnl
+-AC_CACHE_CHECK(
+-  [whether $CC understands -c and -o together],
+-  [am_cv_prog_cc_c_o],
+-  [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])])
+-  # Make sure it works both with $CC and with simple cc.
+-  # Following AC_PROG_CC_C_O, we do the test twice because some
+-  # compilers refuse to overwrite an existing .o file with -o,
+-  # though they will create one.
+-  am_cv_prog_cc_c_o=yes
+-  for am_i in 1 2; do
+-    if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \
+-         && test -f conftest2.$ac_objext; then
+-      : OK
+-    else
+-      am_cv_prog_cc_c_o=no
+-      break
+-    fi
+-  done
+-  rm -f core conftest*
+-  unset am_i])
+-if test "$am_cv_prog_cc_c_o" != yes; then
+-   # Losing compiler, so override with the script.
+-   # FIXME: It is wrong to rewrite CC.
+-   # But if we don't then we get into trouble of one sort or another.
+-   # A longer-term fix would be to have automake use am__CC in this case,
+-   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+-   CC="$am_aux_dir/compile $CC"
+-fi
+-AC_LANG_POP([C])])
+-
+-# For backward compatibility.
+-AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
+-
+-# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+-# AM_RUN_LOG(COMMAND)
+-# -------------------
+-# Run COMMAND, save the exit status in ac_status, and log it.
+-# (This has been adapted from Autoconf's _AC_RUN_LOG macro.)
+-AC_DEFUN([AM_RUN_LOG],
+-[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
+-   ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
+-   ac_status=$?
+-   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+-   (exit $ac_status); }])
+-
+-# Check to make sure that the build environment is sane.    -*- Autoconf -*-
+-
+-# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+-# AM_SANITY_CHECK
+-# ---------------
+-AC_DEFUN([AM_SANITY_CHECK],
+-[AC_MSG_CHECKING([whether build environment is sane])
+-# Reject unsafe characters in $srcdir or the absolute working directory
+-# name.  Accept space and tab only in the latter.
+-am_lf='
+-'
+-case `pwd` in
+-  *[[\\\"\#\$\&\'\`$am_lf]]*)
+-    AC_MSG_ERROR([unsafe absolute working directory name]);;
+-esac
+-case $srcdir in
+-  *[[\\\"\#\$\&\'\`$am_lf\ \	]]*)
+-    AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
+-esac
+-
+-# Do 'set' in a subshell so we don't clobber the current shell's
+-# arguments.  Must try -L first in case configure is actually a
+-# symlink; some systems play weird games with the mod time of symlinks
+-# (eg FreeBSD returns the mod time of the symlink's containing
+-# directory).
+-if (
+-   am_has_slept=no
+-   for am_try in 1 2; do
+-     echo "timestamp, slept: $am_has_slept" > conftest.file
+-     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+-     if test "$[*]" = "X"; then
+-	# -L didn't work.
+-	set X `ls -t "$srcdir/configure" conftest.file`
+-     fi
+-     if test "$[*]" != "X $srcdir/configure conftest.file" \
+-	&& test "$[*]" != "X conftest.file $srcdir/configure"; then
+-
+-	# If neither matched, then we have a broken ls.  This can happen
+-	# if, for instance, CONFIG_SHELL is bash and it inherits a
+-	# broken ls alias from the environment.  This has actually
+-	# happened.  Such a system could not be considered "sane".
+-	AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
+-  alias in your environment])
+-     fi
+-     if test "$[2]" = conftest.file || test $am_try -eq 2; then
+-       break
+-     fi
+-     # Just in case.
+-     sleep 1
+-     am_has_slept=yes
+-   done
+-   test "$[2]" = conftest.file
+-   )
+-then
+-   # Ok.
+-   :
+-else
+-   AC_MSG_ERROR([newly created file is older than distributed files!
+-Check your system clock])
+-fi
+-AC_MSG_RESULT([yes])
+-# If we didn't sleep, we still need to ensure time stamps of config.status and
+-# generated files are strictly newer.
+-am_sleep_pid=
+-if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+-  ( sleep 1 ) &
+-  am_sleep_pid=$!
+-fi
+-AC_CONFIG_COMMANDS_PRE(
+-  [AC_MSG_CHECKING([that generated files are newer than configure])
+-   if test -n "$am_sleep_pid"; then
+-     # Hide warnings about reused PIDs.
+-     wait $am_sleep_pid 2>/dev/null
+-   fi
+-   AC_MSG_RESULT([done])])
+-rm -f conftest.file
+-])
+-
+-# Copyright (C) 2009-2014 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+-# AM_SILENT_RULES([DEFAULT])
+-# --------------------------
+-# Enable less verbose build rules; with the default set to DEFAULT
+-# ("yes" being less verbose, "no" or empty being verbose).
+-AC_DEFUN([AM_SILENT_RULES],
+-[AC_ARG_ENABLE([silent-rules], [dnl
+-AS_HELP_STRING(
+-  [--enable-silent-rules],
+-  [less verbose build output (undo: "make V=1")])
+-AS_HELP_STRING(
+-  [--disable-silent-rules],
+-  [verbose build output (undo: "make V=0")])dnl
+-])
+-case $enable_silent_rules in @%:@ (((
+-  yes) AM_DEFAULT_VERBOSITY=0;;
+-   no) AM_DEFAULT_VERBOSITY=1;;
+-    *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
+-esac
+-dnl
+-dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
+-dnl do not support nested variable expansions.
+-dnl See automake bug#9928 and bug#10237.
+-am_make=${MAKE-make}
+-AC_CACHE_CHECK([whether $am_make supports nested variables],
+-   [am_cv_make_support_nested_variables],
+-   [if AS_ECHO([['TRUE=$(BAR$(V))
+-BAR0=false
+-BAR1=true
+-V=1
+-am__doit:
+-	@$(TRUE)
+-.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
+-  am_cv_make_support_nested_variables=yes
+-else
+-  am_cv_make_support_nested_variables=no
+-fi])
+-if test $am_cv_make_support_nested_variables = yes; then
+-  dnl Using '$V' instead of '$(V)' breaks IRIX make.
+-  AM_V='$(V)'
+-  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+-else
+-  AM_V=$AM_DEFAULT_VERBOSITY
+-  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+-fi
+-AC_SUBST([AM_V])dnl
+-AM_SUBST_NOTMAKE([AM_V])dnl
+-AC_SUBST([AM_DEFAULT_V])dnl
+-AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
+-AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
+-AM_BACKSLASH='\'
+-AC_SUBST([AM_BACKSLASH])dnl
+-_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
+-])
+-
+-# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+-# AM_PROG_INSTALL_STRIP
+-# ---------------------
+-# One issue with vendor 'install' (even GNU) is that you can't
+-# specify the program used to strip binaries.  This is especially
+-# annoying in cross-compiling environments, where the build's strip
+-# is unlikely to handle the host's binaries.
+-# Fortunately install-sh will honor a STRIPPROG variable, so we
+-# always use install-sh in "make install-strip", and initialize
+-# STRIPPROG with the value of the STRIP variable (set by the user).
+-AC_DEFUN([AM_PROG_INSTALL_STRIP],
+-[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+-# Installed binaries are usually stripped using 'strip' when the user
+-# run "make install-strip".  However 'strip' might not be the right
+-# tool to use in cross-compilation environments, therefore Automake
+-# will honor the 'STRIP' environment variable to overrule this program.
+-dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
+-if test "$cross_compiling" != no; then
+-  AC_CHECK_TOOL([STRIP], [strip], :)
+-fi
+-INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+-AC_SUBST([INSTALL_STRIP_PROGRAM])])
+-
+-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+-# _AM_SUBST_NOTMAKE(VARIABLE)
+-# ---------------------------
+-# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
+-# This macro is traced by Automake.
+-AC_DEFUN([_AM_SUBST_NOTMAKE])
+-
+-# AM_SUBST_NOTMAKE(VARIABLE)
+-# --------------------------
+-# Public sister of _AM_SUBST_NOTMAKE.
+-AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+-
+-# Check how to create a tarball.                            -*- Autoconf -*-
+-
+-# Copyright (C) 2004-2014 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+-# _AM_PROG_TAR(FORMAT)
+-# --------------------
+-# Check how to create a tarball in format FORMAT.
+-# FORMAT should be one of 'v7', 'ustar', or 'pax'.
+-#
+-# Substitute a variable $(am__tar) that is a command
+-# writing to stdout a FORMAT-tarball containing the directory
+-# $tardir.
+-#     tardir=directory && $(am__tar) > result.tar
+-#
+-# Substitute a variable $(am__untar) that extract such
+-# a tarball read from stdin.
+-#     $(am__untar) < result.tar
+-#
+-AC_DEFUN([_AM_PROG_TAR],
+-[# Always define AMTAR for backward compatibility.  Yes, it's still used
+-# in the wild :-(  We should find a proper way to deprecate it ...
+-AC_SUBST([AMTAR], ['$${TAR-tar}'])
+-
+-# We'll loop over all known methods to create a tar archive until one works.
+-_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+-
+-m4_if([$1], [v7],
+-  [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
+-
+-  [m4_case([$1],
+-    [ustar],
+-     [# The POSIX 1988 'ustar' format is defined with fixed-size fields.
+-      # There is notably a 21 bits limit for the UID and the GID.  In fact,
+-      # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
+-      # and bug#13588).
+-      am_max_uid=2097151 # 2^21 - 1
+-      am_max_gid=$am_max_uid
+-      # The $UID and $GID variables are not portable, so we need to resort
+-      # to the POSIX-mandated id(1) utility.  Errors in the 'id' calls
+-      # below are definitely unexpected, so allow the users to see them
+-      # (that is, avoid stderr redirection).
+-      am_uid=`id -u || echo unknown`
+-      am_gid=`id -g || echo unknown`
+-      AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
+-      if test $am_uid -le $am_max_uid; then
+-         AC_MSG_RESULT([yes])
+-      else
+-         AC_MSG_RESULT([no])
+-         _am_tools=none
+-      fi
+-      AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
+-      if test $am_gid -le $am_max_gid; then
+-         AC_MSG_RESULT([yes])
+-      else
+-        AC_MSG_RESULT([no])
+-        _am_tools=none
+-      fi],
+-
+-  [pax],
+-    [],
+-
+-  [m4_fatal([Unknown tar format])])
+-
+-  AC_MSG_CHECKING([how to create a $1 tar archive])
+-
+-  # Go ahead even if we have the value already cached.  We do so because we
+-  # need to set the values for the 'am__tar' and 'am__untar' variables.
+-  _am_tools=${am_cv_prog_tar_$1-$_am_tools}
+-
+-  for _am_tool in $_am_tools; do
+-    case $_am_tool in
+-    gnutar)
+-      for _am_tar in tar gnutar gtar; do
+-        AM_RUN_LOG([$_am_tar --version]) && break
+-      done
+-      am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+-      am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+-      am__untar="$_am_tar -xf -"
+-      ;;
+-    plaintar)
+-      # Must skip GNU tar: if it does not support --format= it doesn't create
+-      # ustar tarball either.
+-      (tar --version) >/dev/null 2>&1 && continue
+-      am__tar='tar chf - "$$tardir"'
+-      am__tar_='tar chf - "$tardir"'
+-      am__untar='tar xf -'
+-      ;;
+-    pax)
+-      am__tar='pax -L -x $1 -w "$$tardir"'
+-      am__tar_='pax -L -x $1 -w "$tardir"'
+-      am__untar='pax -r'
+-      ;;
+-    cpio)
+-      am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+-      am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+-      am__untar='cpio -i -H $1 -d'
+-      ;;
+-    none)
+-      am__tar=false
+-      am__tar_=false
+-      am__untar=false
+-      ;;
+-    esac
+-
+-    # If the value was cached, stop now.  We just wanted to have am__tar
+-    # and am__untar set.
+-    test -n "${am_cv_prog_tar_$1}" && break
+-
+-    # tar/untar a dummy directory, and stop if the command works.
+-    rm -rf conftest.dir
+-    mkdir conftest.dir
+-    echo GrepMe > conftest.dir/file
+-    AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+-    rm -rf conftest.dir
+-    if test -s conftest.tar; then
+-      AM_RUN_LOG([$am__untar <conftest.tar])
+-      AM_RUN_LOG([cat conftest.dir/file])
+-      grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+-    fi
+-  done
+-  rm -rf conftest.dir
+-
+-  AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+-  AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+-
+-AC_SUBST([am__tar])
+-AC_SUBST([am__untar])
+-]) # _AM_PROG_TAR
+-
+diff --git a/configure b/configure
+index c2baab4..0bd2afc 100755
+--- a/configure
++++ b/configure
+@@ -12,6 +12,9 @@
+ ## M4sh Initialization. ##
+ ## -------------------- ##
+ 
++aclocal
++automake
++
+ # Be more Bourne compatible
+ DUALCASE=1; export DUALCASE # for MKS sh
+ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+@@ -2135,7 +2138,6 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+ 
+ 
+ 
+-am__api_version='1.15'
+ 
+ ac_aux_dir=
+ for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
+diff --git a/include/hex.h b/include/hex.h
+index 57845c0..2b77d88 100644
+--- a/include/hex.h
++++ b/include/hex.h
+@@ -1,5 +1,6 @@
+ /******************************************************************************\
+  *  Copyright (C) 2001, hexcurse is written by Jewfish and Armoth             *
++ *  Copyright (C) 2020-2022 prso at github, fixes and improvements            *
+  *									      *
+  *  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      *
+@@ -74,7 +75,6 @@ struct Stack {					/* struct to be used for stack*/
+     int savedVal;
+     off_t currentLoc;
+     struct Stack *prev;
+-    struct LinkedList *llist;
+ };
+ 
+ /* typedefs */
+@@ -99,7 +99,12 @@ extern off_t LastLoc;
+ extern int  SIZE_CH;
+ extern bool USE_EBCDIC;
+ extern char EBCDIC[256];
++extern int ASCII_to_EBCDIC[256];
+ extern bool color_enabled;
++extern bool TERM_COLORS;
++extern bool FNUMBERS;
++extern int  color_level;
++extern bool saved;
+ 
+ /* macros */
+ /*#define currentLoc(line, col) ((line) * BASE +((col)/3)) */
+@@ -108,7 +113,6 @@ extern bool color_enabled;
+ 						/* cursor location in the file*/
+ #define cursorLoc(line,col,editHex,b) (((line)*(b)) + ((col)/((editHex)?3:1)))
+ #define llalloc() (struct LinkedList *) calloc(1, sizeof(struct LinkedList))
+-#define isEmptyStack(stack) (((stack) == NULL) ? TRUE : FALSE)
+ 
+ #define UNUSED(x) (void)(x)
+ 
+@@ -119,6 +123,11 @@ extern bool color_enabled;
+ #define MIN_COLS        70                      /* screen has to be 70< cols  */
+ #define MIN_LINES       7     /* 8 - 1 */       /* the slk crap minuses 1 line*/
+ #define KEY_TAB 		9			/* value for the tab key      */
++#define NODEF           0  /* value for not defined characters in ASCII_to_EBCDIC */
++#define SAVEPOINT      -1
++#define FILEBUFF    16384			/* buffer size to copy file */
++#define ALPHABET_LEN    256         /* for hexSearchBM */
++#define BUF_L           8192        /* for hexSearchBM */
+ 
+ #define AlphabetSize (UCHAR_MAX +1)		/* for portability            */
+ 
+@@ -126,26 +135,26 @@ extern bool color_enabled;
+ #define max(a,b) ((a) >(b) ? (a) : (b))
+ #endif
+ 
+-FILE *fpIN;		        		/* global file ptr           */
++extern FILE *fpIN;	        		/* global file ptr           */
+ 
+ /* function prototypes */
+ 
+ /* acceptch.c */
+ int wacceptch(WINS *windows, off_t len);
+ void restoreBorder(WINS *win);
+-char *inputLine(WINDOW *win, int line, int col);
++char *inputLine(WINDOW *win, int line, int col, bool allow_space);
+ 
+ /* file.c */
+ void outline(FILE *fp, off_t linenum);
+ off_t maxLoc(FILE *fp);
++void set_saved(bool sav, WINDOW *win);
+ void print_usage();
+ off_t maxLines(off_t len);
+ int openfile(WINS *win);
+ int savefile(WINS *win);
+-off_t hexSearch(FILE *fp, int ch[], off_t startfp, int length);
++off_t hexSearchBM(WINDOW *w, FILE *fp, int pat[], off_t startfp, int patlen);
+ off_t gotoLine(FILE *fp, off_t currLoc, off_t gotoLoc, off_t maxlines,  WINDOW *windows);
+ int getLocVal(off_t loc);
+-bool inHexList(off_t loc);
+ 
+ /* getopt.c */
+ int hgetopt(int argc, char *const *argv, const char *optstring);
+@@ -160,6 +169,8 @@ RETSIGTYPE catchSegfault(int sig);
+ hexList *deleteNode(hexList *head, off_t loc);
+ hexList *insertItem(hexList *head, off_t loc, int val);
+ int searchList(hexList *head, off_t loc);
++off_t countList(hexList *head, off_t loc);
++void updateBuf(hexList *head, char *buf, off_t pos1, off_t pos2);
+ int writeChanges();
+ hexList *freeList(hexList *head);
+ 
+@@ -181,8 +192,7 @@ void popupWin(char *msg, int time);
+ short int questionWin(char *msg);
+ 
+ /* stack.c */
+-void createStack(hexStack *stack);
+-void pushStack(hexStack **stack, hexStack *tmpStack);
++void pushStack(hexStack **stack, off_t cl, int val);
+ void popStack(hexStack **stack);
+ void smashDaStack(hexStack **stack);
+ 
+diff --git a/man/Makefile.in b/man/Makefile.in
+deleted file mode 100644
+index d68ed57..0000000
+--- a/man/Makefile.in
++++ /dev/null
+@@ -1,486 +0,0 @@
+-# Makefile.in generated by automake 1.15 from Makefile.am.
+-# @configure_input@
+-
+-# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+-
+-# This Makefile.in is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+-# This program is distributed in the hope that it will be useful,
+-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+-# PARTICULAR PURPOSE.
+-
+-@SET_MAKE@
+-VPATH = @srcdir@
+-am__is_gnu_make = { \
+-  if test -z '$(MAKELEVEL)'; then \
+-    false; \
+-  elif test -n '$(MAKE_HOST)'; then \
+-    true; \
+-  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+-    true; \
+-  else \
+-    false; \
+-  fi; \
+-}
+-am__make_running_with_option = \
+-  case $${target_option-} in \
+-      ?) ;; \
+-      *) echo "am__make_running_with_option: internal error: invalid" \
+-              "target option '$${target_option-}' specified" >&2; \
+-         exit 1;; \
+-  esac; \
+-  has_opt=no; \
+-  sane_makeflags=$$MAKEFLAGS; \
+-  if $(am__is_gnu_make); then \
+-    sane_makeflags=$$MFLAGS; \
+-  else \
+-    case $$MAKEFLAGS in \
+-      *\\[\ \	]*) \
+-        bs=\\; \
+-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+-    esac; \
+-  fi; \
+-  skip_next=no; \
+-  strip_trailopt () \
+-  { \
+-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+-  }; \
+-  for flg in $$sane_makeflags; do \
+-    test $$skip_next = yes && { skip_next=no; continue; }; \
+-    case $$flg in \
+-      *=*|--*) continue;; \
+-        -*I) strip_trailopt 'I'; skip_next=yes;; \
+-      -*I?*) strip_trailopt 'I';; \
+-        -*O) strip_trailopt 'O'; skip_next=yes;; \
+-      -*O?*) strip_trailopt 'O';; \
+-        -*l) strip_trailopt 'l'; skip_next=yes;; \
+-      -*l?*) strip_trailopt 'l';; \
+-      -[dEDm]) skip_next=yes;; \
+-      -[JT]) skip_next=yes;; \
+-    esac; \
+-    case $$flg in \
+-      *$$target_option*) has_opt=yes; break;; \
+-    esac; \
+-  done; \
+-  test $$has_opt = yes
+-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+-pkgdatadir = $(datadir)/@PACKAGE@
+-pkgincludedir = $(includedir)/@PACKAGE@
+-pkglibdir = $(libdir)/@PACKAGE@
+-pkglibexecdir = $(libexecdir)/@PACKAGE@
+-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+-install_sh_DATA = $(install_sh) -c -m 644
+-install_sh_PROGRAM = $(install_sh) -c
+-install_sh_SCRIPT = $(install_sh) -c
+-INSTALL_HEADER = $(INSTALL_DATA)
+-transform = $(program_transform_name)
+-NORMAL_INSTALL = :
+-PRE_INSTALL = :
+-POST_INSTALL = :
+-NORMAL_UNINSTALL = :
+-PRE_UNINSTALL = :
+-POST_UNINSTALL = :
+-build_triplet = @build@
+-host_triplet = @host@
+-subdir = man
+-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+-	$(ACLOCAL_M4)
+-DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+-CONFIG_HEADER = $(top_builddir)/config.h
+-CONFIG_CLEAN_FILES =
+-CONFIG_CLEAN_VPATH_FILES =
+-AM_V_P = $(am__v_P_@AM_V@)
+-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+-am__v_P_0 = false
+-am__v_P_1 = :
+-AM_V_GEN = $(am__v_GEN_@AM_V@)
+-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+-am__v_GEN_0 = @echo "  GEN     " $@;
+-am__v_GEN_1 = 
+-AM_V_at = $(am__v_at_@AM_V@)
+-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+-am__v_at_0 = @
+-am__v_at_1 = 
+-SOURCES =
+-DIST_SOURCES =
+-am__can_run_installinfo = \
+-  case $$AM_UPDATE_INFO_DIR in \
+-    n|no|NO) false;; \
+-    *) (install-info --version) >/dev/null 2>&1;; \
+-  esac
+-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+-am__vpath_adj = case $$p in \
+-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+-    *) f=$$p;; \
+-  esac;
+-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+-am__install_max = 40
+-am__nobase_strip_setup = \
+-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+-am__nobase_strip = \
+-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+-am__nobase_list = $(am__nobase_strip_setup); \
+-  for p in $$list; do echo "$$p $$p"; done | \
+-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+-    if (++n[$$2] == $(am__install_max)) \
+-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+-    END { for (dir in files) print dir, files[dir] }'
+-am__base_list = \
+-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+-am__uninstall_files_from_dir = { \
+-  test -z "$$files" \
+-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+-         $(am__cd) "$$dir" && rm -f $$files; }; \
+-  }
+-man1dir = $(mandir)/man1
+-am__installdirs = "$(DESTDIR)$(man1dir)"
+-NROFF = nroff
+-MANS = $(man_MANS)
+-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+-am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/mkinstalldirs
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+-ACLOCAL = @ACLOCAL@
+-AMTAR = @AMTAR@
+-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+-AUTOCONF = @AUTOCONF@
+-AUTOHEADER = @AUTOHEADER@
+-AUTOMAKE = @AUTOMAKE@
+-AWK = @AWK@
+-CC = @CC@
+-CCDEPMODE = @CCDEPMODE@
+-CFLAGS = @CFLAGS@
+-CPP = @CPP@
+-CPPFLAGS = @CPPFLAGS@
+-CYGPATH_W = @CYGPATH_W@
+-DEFS = @DEFS@
+-DEPDIR = @DEPDIR@
+-ECHO_C = @ECHO_C@
+-ECHO_N = @ECHO_N@
+-ECHO_T = @ECHO_T@
+-EGREP = @EGREP@
+-EXEEXT = @EXEEXT@
+-GREP = @GREP@
+-INSTALL = @INSTALL@
+-INSTALL_DATA = @INSTALL_DATA@
+-INSTALL_PROGRAM = @INSTALL_PROGRAM@
+-INSTALL_SCRIPT = @INSTALL_SCRIPT@
+-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+-LDFLAGS = @LDFLAGS@
+-LIBOBJS = @LIBOBJS@
+-LIBS = @LIBS@
+-LTLIBOBJS = @LTLIBOBJS@
+-MAKEINFO = @MAKEINFO@
+-MKDIR_P = @MKDIR_P@
+-OBJEXT = @OBJEXT@
+-PACKAGE = @PACKAGE@
+-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+-PACKAGE_NAME = @PACKAGE_NAME@
+-PACKAGE_STRING = @PACKAGE_STRING@
+-PACKAGE_TARNAME = @PACKAGE_TARNAME@
+-PACKAGE_URL = @PACKAGE_URL@
+-PACKAGE_VERSION = @PACKAGE_VERSION@
+-PATH_SEPARATOR = @PATH_SEPARATOR@
+-SET_MAKE = @SET_MAKE@
+-SHELL = @SHELL@
+-STRIP = @STRIP@
+-VERSION = @VERSION@
+-abs_builddir = @abs_builddir@
+-abs_srcdir = @abs_srcdir@
+-abs_top_builddir = @abs_top_builddir@
+-abs_top_srcdir = @abs_top_srcdir@
+-ac_ct_CC = @ac_ct_CC@
+-am__include = @am__include@
+-am__leading_dot = @am__leading_dot@
+-am__quote = @am__quote@
+-am__tar = @am__tar@
+-am__untar = @am__untar@
+-bindir = @bindir@
+-build = @build@
+-build_alias = @build_alias@
+-build_cpu = @build_cpu@
+-build_os = @build_os@
+-build_vendor = @build_vendor@
+-builddir = @builddir@
+-datadir = @datadir@
+-datarootdir = @datarootdir@
+-docdir = @docdir@
+-dvidir = @dvidir@
+-exec_prefix = @exec_prefix@
+-host = @host@
+-host_alias = @host_alias@
+-host_cpu = @host_cpu@
+-host_os = @host_os@
+-host_vendor = @host_vendor@
+-htmldir = @htmldir@
+-includedir = @includedir@
+-infodir = @infodir@
+-install_sh = @install_sh@
+-libdir = @libdir@
+-libexecdir = @libexecdir@
+-localedir = @localedir@
+-localstatedir = @localstatedir@
+-mandir = @mandir@
+-mkdir_p = @mkdir_p@
+-oldincludedir = @oldincludedir@
+-pdfdir = @pdfdir@
+-prefix = @prefix@
+-program_transform_name = @program_transform_name@
+-psdir = @psdir@
+-sbindir = @sbindir@
+-sharedstatedir = @sharedstatedir@
+-srcdir = @srcdir@
+-sysconfdir = @sysconfdir@
+-target_alias = @target_alias@
+-top_build_prefix = @top_build_prefix@
+-top_builddir = @top_builddir@
+-top_srcdir = @top_srcdir@
+-man_MANS = hexcurse.1
+-EXTRA_DIST = $(man_MANS)
+-all: all-am
+-
+-.SUFFIXES:
+-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+-	@for dep in $?; do \
+-	  case '$(am__configure_deps)' in \
+-	    *$$dep*) \
+-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+-	        && { if test -f $@; then exit 0; else break; fi; }; \
+-	      exit 1;; \
+-	  esac; \
+-	done; \
+-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu man/Makefile'; \
+-	$(am__cd) $(top_srcdir) && \
+-	  $(AUTOMAKE) --gnu man/Makefile
+-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+-	@case '$?' in \
+-	  *config.status*) \
+-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+-	  *) \
+-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+-	esac;
+-
+-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+-
+-$(top_srcdir)/configure:  $(am__configure_deps)
+-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+-$(am__aclocal_m4_deps):
+-install-man1: $(man_MANS)
+-	@$(NORMAL_INSTALL)
+-	@list1=''; \
+-	list2='$(man_MANS)'; \
+-	test -n "$(man1dir)" \
+-	  && test -n "`echo $$list1$$list2`" \
+-	  || exit 0; \
+-	echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \
+-	$(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \
+-	{ for i in $$list1; do echo "$$i"; done;  \
+-	if test -n "$$list2"; then \
+-	  for i in $$list2; do echo "$$i"; done \
+-	    | sed -n '/\.1[a-z]*$$/p'; \
+-	fi; \
+-	} | while read p; do \
+-	  if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+-	  echo "$$d$$p"; echo "$$p"; \
+-	done | \
+-	sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+-	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
+-	sed 'N;N;s,\n, ,g' | { \
+-	list=; while read file base inst; do \
+-	  if test "$$base" = "$$inst"; then list="$$list $$file"; else \
+-	    echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
+-	    $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \
+-	  fi; \
+-	done; \
+-	for i in $$list; do echo "$$i"; done | $(am__base_list) | \
+-	while read files; do \
+-	  test -z "$$files" || { \
+-	    echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \
+-	    $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \
+-	done; }
+-
+-uninstall-man1:
+-	@$(NORMAL_UNINSTALL)
+-	@list=''; test -n "$(man1dir)" || exit 0; \
+-	files=`{ for i in $$list; do echo "$$i"; done; \
+-	l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+-	  sed -n '/\.1[a-z]*$$/p'; \
+-	} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+-	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+-	dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir)
+-tags TAGS:
+-
+-ctags CTAGS:
+-
+-cscope cscopelist:
+-
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+-check-am: all-am
+-check: check-am
+-all-am: Makefile $(MANS)
+-installdirs:
+-	for dir in "$(DESTDIR)$(man1dir)"; do \
+-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+-	done
+-install: install-am
+-install-exec: install-exec-am
+-install-data: install-data-am
+-uninstall: uninstall-am
+-
+-install-am: all-am
+-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+-
+-installcheck: installcheck-am
+-install-strip:
+-	if test -z '$(STRIP)'; then \
+-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+-	      install; \
+-	else \
+-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+-	fi
+-mostlyclean-generic:
+-
+-clean-generic:
+-
+-distclean-generic:
+-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+-
+-maintainer-clean-generic:
+-	@echo "This command is intended for maintainers to use"
+-	@echo "it deletes files that may require special tools to rebuild."
+-clean: clean-am
+-
+-clean-am: clean-generic mostlyclean-am
+-
+-distclean: distclean-am
+-	-rm -f Makefile
+-distclean-am: clean-am distclean-generic
+-
+-dvi: dvi-am
+-
+-dvi-am:
+-
+-html: html-am
+-
+-html-am:
+-
+-info: info-am
+-
+-info-am:
+-
+-install-data-am: install-man
+-
+-install-dvi: install-dvi-am
+-
+-install-dvi-am:
+-
+-install-exec-am:
+-
+-install-html: install-html-am
+-
+-install-html-am:
+-
+-install-info: install-info-am
+-
+-install-info-am:
+-
+-install-man: install-man1
+-
+-install-pdf: install-pdf-am
+-
+-install-pdf-am:
+-
+-install-ps: install-ps-am
+-
+-install-ps-am:
+-
+-installcheck-am:
+-
+-maintainer-clean: maintainer-clean-am
+-	-rm -f Makefile
+-maintainer-clean-am: distclean-am maintainer-clean-generic
+-
+-mostlyclean: mostlyclean-am
+-
+-mostlyclean-am: mostlyclean-generic
+-
+-pdf: pdf-am
+-
+-pdf-am:
+-
+-ps: ps-am
+-
+-ps-am:
+-
+-uninstall-am: uninstall-man
+-
+-uninstall-man: uninstall-man1
+-
+-.MAKE: install-am install-strip
+-
+-.PHONY: all all-am check check-am clean clean-generic cscopelist-am \
+-	ctags-am distclean distclean-generic distdir dvi dvi-am html \
+-	html-am info info-am install install-am install-data \
+-	install-data-am install-dvi install-dvi-am install-exec \
+-	install-exec-am install-html install-html-am install-info \
+-	install-info-am install-man install-man1 install-pdf \
+-	install-pdf-am install-ps install-ps-am install-strip \
+-	installcheck installcheck-am installdirs maintainer-clean \
+-	maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
+-	pdf-am ps ps-am tags-am uninstall uninstall-am uninstall-man \
+-	uninstall-man1
+-
+-.PRECIOUS: Makefile
+-
+-
+-# Tell versions [3.59,3.63) of GNU make to not export all variables.
+-# Otherwise a system limit (for SysV at least) may be exceeded.
+-.NOEXPORT:
+diff --git a/man/hexcurse.1 b/man/hexcurse.1
+index c2c9def..61cc25b 100644
+--- a/man/hexcurse.1
++++ b/man/hexcurse.1
+@@ -1,20 +1,29 @@
+ .\" to process use the following command
+ .\" groff -man -Tascii manpagename.1
+-.TH HEXCURSE 1 "22 December 2003"
++.TH HEXCURSE 1 "15 April 2022"
+ .SH NAME
+ hexcurse \- an ncurses-based hex editor
+ .SH SYNOPSIS
+ .B hexcurse
+ [
+-.B \-? " | " \-help
++.B \-? | \-help
+ ] [
+ .B \-a
+ ] [
+-.B \-r
+-.I rnum
++.B \-c
++.I colorlevel
++] [
++.B \-e
++] [
++.B \-f
+ ] [
+ .B \-o
+ .I outputfile
++] [
++.B \-r
++.I rnum
++] [
++.B \-t
+ ] [ [
+ .BR \-i
+ ]
+@@ -31,6 +40,30 @@ Prints out the command usage info
+ .B -a
+ Specifies the addresses to be output in decimal format initially.
+ .TP 15
++.BI -c \ colorlevel
++Specifies the color level.
++.RS 18
++0: no colors
++.RE
++.RS 18
++1: only color for addresses
++.RE
++.RS 18
++2: 1 + color for 00 (default if terminal supports color)
++.RE
++.RS 18
++3: multicolor by FrankSansC
++.RE
++.TP 15
++.B -e
++Specifies the characters to be output in EBCDIC format rather than ASCII.
++.TP 15
++.B -f
++Specifies that function key numbers will be shown along names in the labels.
++.TP 15
++.BI \-o \ outputfile
++Specifies the output file to be written to by default.
++.TP 15
+ .BI \-r \ rnum
+ Specifies the number of characters per line that the hexeditor should output.  If
+ .I rnum
+@@ -40,10 +73,10 @@ will fill the terminal width, just as if the
+ .B \-r
+ was not specified.
+ .TP 15
+-.BI \-o \ outputfile
+-Specifies the output file to be written to by default.
++.B -t
++Specifies the colors set by the terminal should be kept (all background and normal foreground). Set this if you see ugly colors or don't see some colors at all.
+ .TP 15
+-.BI [ \-i ] \ inputfile
++.BI [\ \-i\ ] \ inputfile
+ Specifies the input file to be read in.
+ .B \-i
+ is not needed if
+@@ -64,7 +97,7 @@ Opens a file.
+ Goto a certain location in the current file.  Depending on which way the addresses are being viewed at the moment, the search will behave differently.  If the addresses are currently in hex format, the search will search as if the input was given in hexadecimal format.  If the addresses are in decimal format, the function will search for the address in decimal.
+ .TP 15
+ .B F5 | ctrl+f
+-Search for a certain string in the current file.  Depending on which window the user is currently editing in, this search will behave differently.  If editing in the hex window, the input should only be in hexadecimal, and it will search for the hexadecimal "string."  If the current editing window is the ASCII window, the input should be ASCII characters, and the search will find that ASCII string in the file.
++Search for a certain string in the current file starting at the next position to the cursor.  Depending on which window the user is currently editing in, this search will behave differently.  If editing in the hex window, the input should only be in hexadecimal, and it will search for the hexadecimal "string".  If the current editing window is the ASCII window, the input should be ASCII characters, and the search will find that ASCII string in the file.  The search string is limited to 80 bytes.
+ .TP 15
+ .B F6 | ctrl+a
+ Switch between hexadecimal address values and decimal address values.
+@@ -107,11 +140,14 @@ James Stephenson - https://plus.google.com/u/0/103174459258175070784/about
+ .RS
+ Lonny Gomes - hexcurse dot lonnygomes dot com
+ .RE
++.RS
++prso at Github - https://github.com/prso
++.RE
+ .LP
+ The current version of this software is always availabe at
+ .LP
+ .RS
+-.I https://github.com/LonnyGomes/hexcurse
++.I https://github.com/prso/hexcurse
+ .RE
+ .SH BUGS
+ On some terminals the function keys will not work.  
+@@ -122,10 +158,10 @@ This will be corrected in the next release.  There is also an issue where the
+ labels on the bottom of the screen do not resize correctly.  A fix for the
+ latter is in the works.
+ .LP
+-To report a bug or problem, please e-mail:
++To report a bug or problem, please open an issue:
+ .LP
+ .RS
+-devel@jewfish.net
++.I https://github.com/prso/hexcurse/issues
+ .RE
+ .SH TODO
+-When we get the time, we would like to implement the ability to insert and delete data from the file.  Please e-mail us with any additional suggestions.
++When we get the time, we would like to implement the ability to insert and delete data from the file.  Please send any additional suggestions.
+diff --git a/screenshots/hexcurse-screenshot.png b/screenshots/hexcurse-screenshot.png
+new file mode 100644
+index 0000000..6d3e229
+Binary files /dev/null and b/screenshots/hexcurse-screenshot.png differ
+diff --git a/src/Makefile.in b/src/Makefile.in
+deleted file mode 100644
+index c9635f0..0000000
+--- a/src/Makefile.in
++++ /dev/null
+@@ -1,581 +0,0 @@
+-# Makefile.in generated by automake 1.15 from Makefile.am.
+-# @configure_input@
+-
+-# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+-
+-# This Makefile.in is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+-# This program is distributed in the hope that it will be useful,
+-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+-# PARTICULAR PURPOSE.
+-
+-@SET_MAKE@
+-
+-VPATH = @srcdir@
+-am__is_gnu_make = { \
+-  if test -z '$(MAKELEVEL)'; then \
+-    false; \
+-  elif test -n '$(MAKE_HOST)'; then \
+-    true; \
+-  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+-    true; \
+-  else \
+-    false; \
+-  fi; \
+-}
+-am__make_running_with_option = \
+-  case $${target_option-} in \
+-      ?) ;; \
+-      *) echo "am__make_running_with_option: internal error: invalid" \
+-              "target option '$${target_option-}' specified" >&2; \
+-         exit 1;; \
+-  esac; \
+-  has_opt=no; \
+-  sane_makeflags=$$MAKEFLAGS; \
+-  if $(am__is_gnu_make); then \
+-    sane_makeflags=$$MFLAGS; \
+-  else \
+-    case $$MAKEFLAGS in \
+-      *\\[\ \	]*) \
+-        bs=\\; \
+-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+-    esac; \
+-  fi; \
+-  skip_next=no; \
+-  strip_trailopt () \
+-  { \
+-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+-  }; \
+-  for flg in $$sane_makeflags; do \
+-    test $$skip_next = yes && { skip_next=no; continue; }; \
+-    case $$flg in \
+-      *=*|--*) continue;; \
+-        -*I) strip_trailopt 'I'; skip_next=yes;; \
+-      -*I?*) strip_trailopt 'I';; \
+-        -*O) strip_trailopt 'O'; skip_next=yes;; \
+-      -*O?*) strip_trailopt 'O';; \
+-        -*l) strip_trailopt 'l'; skip_next=yes;; \
+-      -*l?*) strip_trailopt 'l';; \
+-      -[dEDm]) skip_next=yes;; \
+-      -[JT]) skip_next=yes;; \
+-    esac; \
+-    case $$flg in \
+-      *$$target_option*) has_opt=yes; break;; \
+-    esac; \
+-  done; \
+-  test $$has_opt = yes
+-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+-pkgdatadir = $(datadir)/@PACKAGE@
+-pkgincludedir = $(includedir)/@PACKAGE@
+-pkglibdir = $(libdir)/@PACKAGE@
+-pkglibexecdir = $(libexecdir)/@PACKAGE@
+-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+-install_sh_DATA = $(install_sh) -c -m 644
+-install_sh_PROGRAM = $(install_sh) -c
+-install_sh_SCRIPT = $(install_sh) -c
+-INSTALL_HEADER = $(INSTALL_DATA)
+-transform = $(program_transform_name)
+-NORMAL_INSTALL = :
+-PRE_INSTALL = :
+-POST_INSTALL = :
+-NORMAL_UNINSTALL = :
+-PRE_UNINSTALL = :
+-POST_UNINSTALL = :
+-build_triplet = @build@
+-host_triplet = @host@
+-bin_PROGRAMS = hexcurse$(EXEEXT)
+-subdir = src
+-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+-	$(ACLOCAL_M4)
+-DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+-CONFIG_HEADER = $(top_builddir)/config.h
+-CONFIG_CLEAN_FILES =
+-CONFIG_CLEAN_VPATH_FILES =
+-am__installdirs = "$(DESTDIR)$(bindir)"
+-PROGRAMS = $(bin_PROGRAMS)
+-am_hexcurse_OBJECTS = file.$(OBJEXT) llist.$(OBJEXT) screen.$(OBJEXT) \
+-	hexcurse.$(OBJEXT) stack.$(OBJEXT) getopt.$(OBJEXT) \
+-	acceptch.$(OBJEXT) color.$(OBJEXT)
+-hexcurse_OBJECTS = $(am_hexcurse_OBJECTS)
+-hexcurse_LDADD = $(LDADD)
+-AM_V_P = $(am__v_P_@AM_V@)
+-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+-am__v_P_0 = false
+-am__v_P_1 = :
+-AM_V_GEN = $(am__v_GEN_@AM_V@)
+-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+-am__v_GEN_0 = @echo "  GEN     " $@;
+-am__v_GEN_1 = 
+-AM_V_at = $(am__v_at_@AM_V@)
+-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+-am__v_at_0 = @
+-am__v_at_1 = 
+-DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+-depcomp = $(SHELL) $(top_srcdir)/depcomp
+-am__depfiles_maybe = depfiles
+-am__mv = mv -f
+-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+-AM_V_CC = $(am__v_CC_@AM_V@)
+-am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+-am__v_CC_0 = @echo "  CC      " $@;
+-am__v_CC_1 = 
+-CCLD = $(CC)
+-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+-AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+-am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+-am__v_CCLD_0 = @echo "  CCLD    " $@;
+-am__v_CCLD_1 = 
+-SOURCES = $(hexcurse_SOURCES)
+-DIST_SOURCES = $(hexcurse_SOURCES)
+-am__can_run_installinfo = \
+-  case $$AM_UPDATE_INFO_DIR in \
+-    n|no|NO) false;; \
+-    *) (install-info --version) >/dev/null 2>&1;; \
+-  esac
+-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+-# Read a list of newline-separated strings from the standard input,
+-# and print each of them once, without duplicates.  Input order is
+-# *not* preserved.
+-am__uniquify_input = $(AWK) '\
+-  BEGIN { nonempty = 0; } \
+-  { items[$$0] = 1; nonempty = 1; } \
+-  END { if (nonempty) { for (i in items) print i; }; } \
+-'
+-# Make sure the list of sources is unique.  This is necessary because,
+-# e.g., the same source file might be shared among _SOURCES variables
+-# for different programs/libraries.
+-am__define_uniq_tagged_files = \
+-  list='$(am__tagged_files)'; \
+-  unique=`for i in $$list; do \
+-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+-  done | $(am__uniquify_input)`
+-ETAGS = etags
+-CTAGS = ctags
+-am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \
+-	$(top_srcdir)/mkinstalldirs
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+-ACLOCAL = @ACLOCAL@
+-AMTAR = @AMTAR@
+-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+-AUTOCONF = @AUTOCONF@
+-AUTOHEADER = @AUTOHEADER@
+-AUTOMAKE = @AUTOMAKE@
+-AWK = @AWK@
+-CC = @CC@
+-CCDEPMODE = @CCDEPMODE@
+-CFLAGS = @CFLAGS@
+-CPP = @CPP@
+-CPPFLAGS = @CPPFLAGS@
+-CYGPATH_W = @CYGPATH_W@
+-DEFS = @DEFS@
+-DEPDIR = @DEPDIR@
+-ECHO_C = @ECHO_C@
+-ECHO_N = @ECHO_N@
+-ECHO_T = @ECHO_T@
+-EGREP = @EGREP@
+-EXEEXT = @EXEEXT@
+-GREP = @GREP@
+-INSTALL = @INSTALL@
+-INSTALL_DATA = @INSTALL_DATA@
+-INSTALL_PROGRAM = @INSTALL_PROGRAM@
+-INSTALL_SCRIPT = @INSTALL_SCRIPT@
+-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+-LDFLAGS = @LDFLAGS@
+-LIBOBJS = @LIBOBJS@
+-LIBS = @LIBS@
+-LTLIBOBJS = @LTLIBOBJS@
+-MAKEINFO = @MAKEINFO@
+-MKDIR_P = @MKDIR_P@
+-OBJEXT = @OBJEXT@
+-PACKAGE = @PACKAGE@
+-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+-PACKAGE_NAME = @PACKAGE_NAME@
+-PACKAGE_STRING = @PACKAGE_STRING@
+-PACKAGE_TARNAME = @PACKAGE_TARNAME@
+-PACKAGE_URL = @PACKAGE_URL@
+-PACKAGE_VERSION = @PACKAGE_VERSION@
+-PATH_SEPARATOR = @PATH_SEPARATOR@
+-SET_MAKE = @SET_MAKE@
+-SHELL = @SHELL@
+-STRIP = @STRIP@
+-VERSION = @VERSION@
+-abs_builddir = @abs_builddir@
+-abs_srcdir = @abs_srcdir@
+-abs_top_builddir = @abs_top_builddir@
+-abs_top_srcdir = @abs_top_srcdir@
+-ac_ct_CC = @ac_ct_CC@
+-am__include = @am__include@
+-am__leading_dot = @am__leading_dot@
+-am__quote = @am__quote@
+-am__tar = @am__tar@
+-am__untar = @am__untar@
+-bindir = @bindir@
+-build = @build@
+-build_alias = @build_alias@
+-build_cpu = @build_cpu@
+-build_os = @build_os@
+-build_vendor = @build_vendor@
+-builddir = @builddir@
+-datadir = @datadir@
+-datarootdir = @datarootdir@
+-docdir = @docdir@
+-dvidir = @dvidir@
+-exec_prefix = @exec_prefix@
+-host = @host@
+-host_alias = @host_alias@
+-host_cpu = @host_cpu@
+-host_os = @host_os@
+-host_vendor = @host_vendor@
+-htmldir = @htmldir@
+-includedir = @includedir@
+-infodir = @infodir@
+-install_sh = @install_sh@
+-libdir = @libdir@
+-libexecdir = @libexecdir@
+-localedir = @localedir@
+-localstatedir = @localstatedir@
+-mandir = @mandir@
+-mkdir_p = @mkdir_p@
+-oldincludedir = @oldincludedir@
+-pdfdir = @pdfdir@
+-prefix = @prefix@
+-program_transform_name = @program_transform_name@
+-psdir = @psdir@
+-sbindir = @sbindir@
+-sharedstatedir = @sharedstatedir@
+-srcdir = @srcdir@
+-sysconfdir = @sysconfdir@
+-target_alias = @target_alias@
+-top_build_prefix = @top_build_prefix@
+-top_builddir = @top_builddir@
+-top_srcdir = @top_srcdir@
+-AM_CPPFLAGS = -I$(top_srcdir)/include -Wall -Werror -Wextra
+-hexcurse_SOURCES = file.c llist.c screen.c hexcurse.c stack.c getopt.c acceptch.c color.c
+-all: all-am
+-
+-.SUFFIXES:
+-.SUFFIXES: .c .o .obj
+-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+-	@for dep in $?; do \
+-	  case '$(am__configure_deps)' in \
+-	    *$$dep*) \
+-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+-	        && { if test -f $@; then exit 0; else break; fi; }; \
+-	      exit 1;; \
+-	  esac; \
+-	done; \
+-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
+-	$(am__cd) $(top_srcdir) && \
+-	  $(AUTOMAKE) --gnu src/Makefile
+-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+-	@case '$?' in \
+-	  *config.status*) \
+-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+-	  *) \
+-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+-	esac;
+-
+-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+-
+-$(top_srcdir)/configure:  $(am__configure_deps)
+-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+-$(am__aclocal_m4_deps):
+-install-binPROGRAMS: $(bin_PROGRAMS)
+-	@$(NORMAL_INSTALL)
+-	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+-	if test -n "$$list"; then \
+-	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+-	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+-	fi; \
+-	for p in $$list; do echo "$$p $$p"; done | \
+-	sed 's/$(EXEEXT)$$//' | \
+-	while read p p1; do if test -f $$p \
+-	  ; then echo "$$p"; echo "$$p"; else :; fi; \
+-	done | \
+-	sed -e 'p;s,.*/,,;n;h' \
+-	    -e 's|.*|.|' \
+-	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+-	sed 'N;N;N;s,\n, ,g' | \
+-	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+-	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+-	    if ($$2 == $$4) files[d] = files[d] " " $$1; \
+-	    else { print "f", $$3 "/" $$4, $$1; } } \
+-	  END { for (d in files) print "f", d, files[d] }' | \
+-	while read type dir files; do \
+-	    if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+-	    test -z "$$files" || { \
+-	      echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+-	      $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+-	    } \
+-	; done
+-
+-uninstall-binPROGRAMS:
+-	@$(NORMAL_UNINSTALL)
+-	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+-	files=`for p in $$list; do echo "$$p"; done | \
+-	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+-	      -e 's/$$/$(EXEEXT)/' \
+-	`; \
+-	test -n "$$list" || exit 0; \
+-	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
+-	cd "$(DESTDIR)$(bindir)" && rm -f $$files
+-
+-clean-binPROGRAMS:
+-	-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
+-
+-hexcurse$(EXEEXT): $(hexcurse_OBJECTS) $(hexcurse_DEPENDENCIES) $(EXTRA_hexcurse_DEPENDENCIES) 
+-	@rm -f hexcurse$(EXEEXT)
+-	$(AM_V_CCLD)$(LINK) $(hexcurse_OBJECTS) $(hexcurse_LDADD) $(LIBS)
+-
+-mostlyclean-compile:
+-	-rm -f *.$(OBJEXT)
+-
+-distclean-compile:
+-	-rm -f *.tab.c
+-
+-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/acceptch.Po@am__quote@
+-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/color.Po@am__quote@
+-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file.Po@am__quote@
+-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt.Po@am__quote@
+-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hexcurse.Po@am__quote@
+-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/llist.Po@am__quote@
+-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/screen.Po@am__quote@
+-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack.Po@am__quote@
+-
+-.c.o:
+-@am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
+-
+-.c.obj:
+-@am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+-
+-ID: $(am__tagged_files)
+-	$(am__define_uniq_tagged_files); mkid -fID $$unique
+-tags: tags-am
+-TAGS: tags
+-
+-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+-	set x; \
+-	here=`pwd`; \
+-	$(am__define_uniq_tagged_files); \
+-	shift; \
+-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+-	  test -n "$$unique" || unique=$$empty_fix; \
+-	  if test $$# -gt 0; then \
+-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+-	      "$$@" $$unique; \
+-	  else \
+-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+-	      $$unique; \
+-	  fi; \
+-	fi
+-ctags: ctags-am
+-
+-CTAGS: ctags
+-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+-	$(am__define_uniq_tagged_files); \
+-	test -z "$(CTAGS_ARGS)$$unique" \
+-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+-	     $$unique
+-
+-GTAGS:
+-	here=`$(am__cd) $(top_builddir) && pwd` \
+-	  && $(am__cd) $(top_srcdir) \
+-	  && gtags -i $(GTAGS_ARGS) "$$here"
+-cscopelist: cscopelist-am
+-
+-cscopelist-am: $(am__tagged_files)
+-	list='$(am__tagged_files)'; \
+-	case "$(srcdir)" in \
+-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+-	  *) sdir=$(subdir)/$(srcdir) ;; \
+-	esac; \
+-	for i in $$list; do \
+-	  if test -f "$$i"; then \
+-	    echo "$(subdir)/$$i"; \
+-	  else \
+-	    echo "$$sdir/$$i"; \
+-	  fi; \
+-	done >> $(top_builddir)/cscope.files
+-
+-distclean-tags:
+-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+-check-am: all-am
+-check: check-am
+-all-am: Makefile $(PROGRAMS)
+-installdirs:
+-	for dir in "$(DESTDIR)$(bindir)"; do \
+-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+-	done
+-install: install-am
+-install-exec: install-exec-am
+-install-data: install-data-am
+-uninstall: uninstall-am
+-
+-install-am: all-am
+-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+-
+-installcheck: installcheck-am
+-install-strip:
+-	if test -z '$(STRIP)'; then \
+-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+-	      install; \
+-	else \
+-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+-	fi
+-mostlyclean-generic:
+-
+-clean-generic:
+-
+-distclean-generic:
+-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+-
+-maintainer-clean-generic:
+-	@echo "This command is intended for maintainers to use"
+-	@echo "it deletes files that may require special tools to rebuild."
+-clean: clean-am
+-
+-clean-am: clean-binPROGRAMS clean-generic mostlyclean-am
+-
+-distclean: distclean-am
+-	-rm -rf ./$(DEPDIR)
+-	-rm -f Makefile
+-distclean-am: clean-am distclean-compile distclean-generic \
+-	distclean-tags
+-
+-dvi: dvi-am
+-
+-dvi-am:
+-
+-html: html-am
+-
+-html-am:
+-
+-info: info-am
+-
+-info-am:
+-
+-install-data-am:
+-
+-install-dvi: install-dvi-am
+-
+-install-dvi-am:
+-
+-install-exec-am: install-binPROGRAMS
+-
+-install-html: install-html-am
+-
+-install-html-am:
+-
+-install-info: install-info-am
+-
+-install-info-am:
+-
+-install-man:
+-
+-install-pdf: install-pdf-am
+-
+-install-pdf-am:
+-
+-install-ps: install-ps-am
+-
+-install-ps-am:
+-
+-installcheck-am:
+-
+-maintainer-clean: maintainer-clean-am
+-	-rm -rf ./$(DEPDIR)
+-	-rm -f Makefile
+-maintainer-clean-am: distclean-am maintainer-clean-generic
+-
+-mostlyclean: mostlyclean-am
+-
+-mostlyclean-am: mostlyclean-compile mostlyclean-generic
+-
+-pdf: pdf-am
+-
+-pdf-am:
+-
+-ps: ps-am
+-
+-ps-am:
+-
+-uninstall-am: uninstall-binPROGRAMS
+-
+-.MAKE: install-am install-strip
+-
+-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
+-	clean-binPROGRAMS clean-generic cscopelist-am ctags ctags-am \
+-	distclean distclean-compile distclean-generic distclean-tags \
+-	distdir dvi dvi-am html html-am info info-am install \
+-	install-am install-binPROGRAMS install-data install-data-am \
+-	install-dvi install-dvi-am install-exec install-exec-am \
+-	install-html install-html-am install-info install-info-am \
+-	install-man install-pdf install-pdf-am install-ps \
+-	install-ps-am install-strip installcheck installcheck-am \
+-	installdirs maintainer-clean maintainer-clean-generic \
+-	mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \
+-	ps ps-am tags tags-am uninstall uninstall-am \
+-	uninstall-binPROGRAMS
+-
+-.PRECIOUS: Makefile
+-
+-
+-# Tell versions [3.59,3.63) of GNU make to not export all variables.
+-# Otherwise a system limit (for SysV at least) may be exceeded.
+-.NOEXPORT:
+diff --git a/src/acceptch.c b/src/acceptch.c
+index 1580645..19c3eb0 100644
+--- a/src/acceptch.c
++++ b/src/acceptch.c
+@@ -1,5 +1,6 @@
+ /******************************************************************************\
+  *  Copyright (C) 2001, hexcurse is  writen by Jewfish and Armoth             *
++ *  Copyright (C) 2020-2023 prso at github, fixes and improvements            *
+  *									      *
+  *  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      *
+@@ -35,11 +36,12 @@ int wacceptch(WINS *win, off_t len)
+     
+     off_t count;
+     int  col = 0, val, tmpval, 	    			/* counters, etc.     */   
+-         ch[17],					/* holds search string*/
++         ch[81],					/* holds search string*/
+ 	 eol = (BASE * 3) - 1,				/* end of line pos    */
+ 	 lastRow = 0, lastCol = 0,			/* last row/col coords*/
+ 	 curVal = 0,	        			/* vals @ cursor locs */
+-	 tmp = 0;
++	 tmp = 0,
++	 templen = 0;
+ 
+     off_t cl,						/* current loc in file*/
+ 	  gotoLoc = 0,					/* goto location      */
+@@ -49,13 +51,14 @@ int wacceptch(WINS *win, off_t len)
+ 
+     char *gotoLocStr,					/* convert to gotoLoc */
+          *temp,
++         *searchhex,
++         *searchascii,
+     	 *tmpstr,					/* tmp str 4 inputLine*/
+ 	 SearchStr[13];
+ 
+     short int key;					/* key capture        */
+     WINDOW *Winds;					/* window pointer     */
+     hexStack *stack;					/* used for stack     */
+-    hexStack *tmpStack;					/* used for stack     */
+     editHex = TRUE;					/* val for editing    */
+ 
+     SIZE_CH	= FALSE;				/* set winch to false */
+@@ -63,10 +66,11 @@ int wacceptch(WINS *win, off_t len)
+     maxlines    = maxLines(len);			/* lines in file      */
+     
+     bool shouldExit = false;
++    bool savedpoint = TRUE;
+ 
+-    /*createStack(stack);*/				/* init the stack     */
+     stack = NULL;
+-    temp = (char *)calloc(81, sizeof(char));
++    searchhex = (char *)calloc(81, sizeof(char));
++    searchascii = (char *)calloc(81, sizeof(char));
+ 
+     if (fpIN)						/* if file opened then*/
+     {							/* highlight 0,0 loc  */
+@@ -84,7 +88,6 @@ int wacceptch(WINS *win, off_t len)
+         
+ 							/* get keys til exit  */
+     while(!shouldExit)
+-    //while (!(save=quitProgram(isEmptyStack(stack),(key = wgetch(Winds)))))
+     {
+         key = wgetch(Winds);
+ 	lastRow = row;
+@@ -118,7 +121,7 @@ int wacceptch(WINS *win, off_t len)
+ 	case CTRL_AND('q'):
+ 	case CTRL_AND('x'):
+ 	case KEY_F(8):
+-		if (isEmptyStack(stack))
++		if (saved)
+ 		{
+ 			/* No pending changes */
+ 			shouldExit = true;
+@@ -165,6 +168,23 @@ int wacceptch(WINS *win, off_t len)
+ 		    if((row > MAXY) && (currentLine <= maxlines))
+ 		        winscroll(win, Winds, 1, currentLine);
+ 		}
++		else if (currentLine != maxlines)
++		{					/* move to EOF        */
++							/* scroll down...     */
++		    if (row >= MAXY)
++		        winscroll(win, Winds, 1, ++currentLine);
++		    else
++		    {
++		        currentLine++;
++		        row++;
++		    }
++							/* last column        */
++		    col = (editHex) ? 3 * ((len % BASE) - 1):(len % BASE) - 1;
++		    if (col < 0)
++		        col = (editHex) ? 3 * (BASE - 1) : BASE - 1;
++
++		    wmove(Winds, row, col);		/* move cursor        */
++		}
+ 		break;
+ 
+ 	case KEY_BACKSPACE:
+@@ -190,7 +210,11 @@ int wacceptch(WINS *win, off_t len)
+ 
+ 	default:					/* if other key...    */
+ 							/* if key we want...  */
+-		if (isprint(key) && ((editHex && isxdigit(key)) || !editHex))
++		if ( (editHex && isxdigit(key)) ||
++		     ( (!editHex && isprint(key)) &&
++		       ( (USE_EBCDIC) ? (ASCII_to_EBCDIC[key]!=NODEF) : TRUE )
++		     )
++		   )
+ 		{
+ 		    if ((cl=cursorLoc(currentLine, col, editHex,BASE))< len) 
+ 		    {   
+@@ -204,26 +228,43 @@ int wacceptch(WINS *win, off_t len)
+ 
+ 			wattron(win->hex, A_BOLD);
+ 			wattron(win->ascii, A_BOLD);
+-							/* output it          */
+-			wprintw(Winds, "%c", editHex ? toupper(key): key);
+ 
+ 			tmpval = val;			/* val b4 key press   */
+ 
+ 			if (editHex)			/* if in hex win...   */
+ 			{
+-			    if (key >= 65 && key <= 70)	/* get correct val    */
+-			    	key -= 7;
+-			    else if (key >= 97 && key <= 102)
+-			    	key -= 39;
+-			    key -= 48;
+-			
+-			    if ((col % 3) == 0)		/* compute byte val   */
+-                            val = (key * 16) + (val % 16);
+-			    else if ((col % 3) == 1)
+-			    	val = (val - ((val + 16) % 16) + key);
++				short int tmpkey = key;
++
++				if (tmpkey >= 65 && tmpkey <= 70)	/* get correct val    */
++					tmpkey -= 7;
++				else if (tmpkey >= 97 && tmpkey <= 102)
++					tmpkey -= 39;
++				tmpkey -= 48;
++
++				if ((col % 3) == 0)		/* compute byte val */
++				{                  		/* and update color */
++				        				/* first digit hex  */
++					val = (tmpkey * 16) + (val % 16);
++					byte_color_on((row * BASE) + col, val);
++					wprintw(Winds, "%02X", val);
++				}
++				else if ((col % 3) == 1)
++				     {					/* second digit hex */
++				     	val = (val - ((val + 16) % 16) + tmpkey);
++				     	byte_color_on((row * BASE) + col, val);
++				     	wmove(win->hex, row, col-1);
++				     	wprintw(Winds, "%02X", val);
++				     	wmove(win->hex, row, col);
++				     }
+ 			}
+ 			else				/* else...            */
+-			    val = key;			/* val is key pressed */
++			{
++					/* val is key pressed */
++				val = (USE_EBCDIC) ? ASCII_to_EBCDIC[key] : key;
++				          			/* output it          */
++				byte_color_on((row * BASE) + col, val);
++				wprintw(Winds, "%c", key);
++			}
+ 
+ 			if (editHex)			/* update ascii win   */
+ 			{
+@@ -240,19 +281,18 @@ int wacceptch(WINS *win, off_t len)
+ 			    wmove(win->ascii, row, col);
+ 			    wrefresh(win->hex);
+ 			}
++			byte_color_off((row * BASE) + col, val);
+ 
+ 			wattrset(win->hex, A_NORMAL);
+ 			wattrset(win->ascii, A_NORMAL);
+ 			
+ 							/* edit list          */
++							/* first add the original value for save+undo */
++			if (searchList(head, cl) == -1) head = insertItem(head, cl, tmpval);
++							/* then add the current value */
+ 			head = insertItem(head, cl, val);
+-		/* calloc() is used because it NULLS out all returned memory  */
+-    			tmpStack = (hexStack *) calloc(1, sizeof(hexStack));
+-			tmpStack->currentLoc = cl;
+-			tmpStack->llist	     = head;
+-			tmpStack->savedVal   = tmpval;
+-			tmpStack->prev       = NULL;
+-			pushStack(&stack, tmpStack);
++			pushStack(&stack, cl, tmpval);
++			set_saved(FALSE, Winds);
+ 		    }					/* continue to next
+ 							    case              */
+ 
+@@ -297,6 +337,7 @@ int wacceptch(WINS *win, off_t len)
+ 		}
+ 		else
+ 		    currentLine -= (2*MAXY);
++                /* fall through */
+ 
+ 	case CTRL_AND('d'):
+ 	case KEY_PGDN:					/* if KEY_PGDN...     */
+@@ -429,13 +470,23 @@ int wacceptch(WINS *win, off_t len)
+ 			MIN_ADDR_LENGTH = getMinimumAddressLength(maxLoc(fpIN));
+ 			curVal = getLocVal(0);
+                     }                
++	 	    set_saved(TRUE, Winds);
+ 	 	    return TRUE;			/* TRUE if worked     */
+ 		}
+ 		break;
+ 
+ 	case CTRL_AND('s'):				/* if F2 or ^s...     */
+ 	case KEY_F(2):					/* save the file      */
+-		savefile(win);
++		if (savefile(win) == 0)
++		{
++			set_saved(TRUE, Winds);
++			if (stack != NULL && stack->savedVal != SAVEPOINT)
++			{
++				pushStack(&stack, -1, SAVEPOINT);
++				savedpoint = TRUE;
++			}
++			else if (stack == NULL) savedpoint = TRUE;
++		}
+ 		break;
+ 
+ 	case CTRL_AND('f'):
+@@ -451,14 +502,16 @@ int wacceptch(WINS *win, off_t len)
+                     wrefresh(win->hex_outline);
+                     break;
+                 }
+- 
++
++		temp = editHex ? searchhex : searchascii;
+ 
+ 		if (temp != NULL)
+ 		{
+ 		    bzero(SearchStr, 13);
+ 		    strcat(SearchStr, "(");
+-		    if (strlen(temp) <= 10)
+-			strncat(SearchStr, temp, strlen(temp));
++		    templen = strlen(temp);
++		    if (templen <= 10)
++			strcat(SearchStr, temp);
+ 		    else
+ 		    {
+ 			strncat(SearchStr, temp, 7);
+@@ -478,7 +531,7 @@ int wacceptch(WINS *win, off_t len)
+ 		/* the third parameter positions the cursor in the correct loc*/
+ 		tmpstr = inputLine(win->hex_outline, LINES - 1, 
+ 			 ((editHex) ? 21 : 23) + 
+-			 ((strlen(temp) > 10) ? 10 : strlen(temp)));
++			 ((templen > 10) ? 10 : templen), !editHex);
+ 		noecho();
+ 
+ 		wmove(win->hex_outline, LINES - 1, 1);
+@@ -497,8 +550,16 @@ int wacceptch(WINS *win, off_t len)
+ 		if (tmpstr[0] != '\0' )			/* enter was hit so   */
+ 		{					/* don't change temp  */
+ 		    bzero(temp, 81);
+-		    strncpy(temp, tmpstr, (strlen(tmpstr) > 80) 
+-			    ? 80 : strlen(tmpstr));
++		    if (strlen(tmpstr) > 80)
++		    {
++			strncpy(temp, tmpstr, 80);
++
++			popupWin("Warning: search value truncated to the maximum 80 bytes", -1);
++			restoreBorder(win);			/* restore border     */
++			wrefresh(win->hex_outline);
++		    }
++		    else
++			strcpy(temp, tmpstr);
+ 		}
+ 
+ 		val = 0;
+@@ -527,24 +588,38 @@ int wacceptch(WINS *win, off_t len)
+ 		if ((count % 2 > 0) && (editHex))	/* add last byte on   */
+ 			    ch[(count + 1) / 2] = tmp;
+ 
++		gotoLoc = -1;
+ 		if (val != -1)				/* if val checks out  */
+ 							/* search for it      */
+-		    val = hexSearch(fpIN, ch, cursorLoc(currentLine, col,
+-			  editHex, BASE), (editHex) ? ((count+1)/2) : count);
++		    gotoLoc = hexSearchBM(win->hex_outline, fpIN, ch, (off_t) cursorLoc(currentLine, col,
++			      editHex, BASE), (int) (editHex) ? ((count+1)/2) : count);
++		else
++		{
++		    popupWin("Value is not hex!", -1);
++		    restoreBorder(win);			/* restore border     */
++		    wrefresh(win->hex_outline);
++		    break;
++		}
+ 
+-		if (val == -1) 				/* if nothing came up */
++		if (gotoLoc == -1) 				/* if nothing came up */
+ 		{
+ 		    popupWin("Value not found!", -1);
+                     restoreBorder(win);			/* restore border     */
+ 		    wrefresh(win->hex_outline);
+ 		}
+-		else 
++		else if (gotoLoc == -2)
++		{
++		    popupWin("Search canceled!", -1);
++                    restoreBorder(win);			/* restore border     */
++		    wrefresh(win->hex_outline);
++		}
++		else
+ 		{
+                     getyx(Winds, row, col);
+ 							/* goto found loc     */
+                     currentLine = gotoLine(fpIN,
+                                         cursorLoc(currentLine,col,editHex,BASE),
+-                                           val, maxlines, Winds);
++                                           gotoLoc, maxlines, Winds);
+ 
+ 		}
+ 		break;
+@@ -570,7 +645,10 @@ int wacceptch(WINS *win, off_t len)
+ 			       MIN_ADDR_LENGTH, (intmax_t)((count + row) * BASE));
+ 
+ 							/* update menu button */
+-		slk_set(6, (printHex) ? "Hex Addr":"Dec Addr", 1);
++		if (FNUMBERS)
++		    slk_set(6, (printHex) ? "6:Hex Ad":"6:Dec Ad", 1);
++		else
++		    slk_set(6, (printHex) ? "Hex Addr":"Dec Addr", 1);
+ 		slk_noutrefresh();			/* refresh            */
+ 		wnoutrefresh(win->address);
+ 		break;
+@@ -584,7 +662,7 @@ int wacceptch(WINS *win, off_t len)
+ 
+ 		echo();					/* echo chars         */
+ 		gotoLocStr = inputLine(win->hex_outline, LINES - 1, 
+-			              (printHex) ? 21 : 25);
++			              (printHex) ? 21 : 25, FALSE);
+ 		if (gotoLocStr[0] == 27)		/* escape was hit     */
+ 		{					/* restore & return   */
+ 		    restoreBorder(win);
+@@ -621,24 +699,31 @@ int wacceptch(WINS *win, off_t len)
+ 							/*switch the underline*/
+ 		getyx(Winds, row, col);			/* current location   */
+ 		wattrset((editHex) ? win->ascii : win->hex, A_NORMAL);
+-		mvwprintw((editHex) ? win->ascii : win->hex, row,
+-			  (editHex) ? col/3 : col*3, 
+-			  (editHex) ? "%c": "%02X", 
+-			  (editHex) ? ((isprint(curVal))?curVal : '.'):curVal);
++
++		byte_color_on((row * BASE) + col, curVal);
++
++		if (editHex)
++		   mvwprintw(win->ascii, row, col/3, "%c",
++		      (USE_EBCDIC) ? EBCDIC[curVal] : (isprint(curVal)) ? curVal : '.');
++		else
++		   mvwprintw(win->hex, row, col*3, "%02X", curVal);
++
++		byte_color_off((row * BASE) + col, curVal);
++
+ 		wnoutrefresh((editHex) ? win->ascii : win->hex);
+ 		if (editHex)				/* already in hex win */
+ 		{
+ 		    Winds = win->ascii;			/* change to ascii    */
+ 		    eol = BASE;
+ 	 	    wmove(Winds, row, (col/3));
+-		    slk_set(7, "Asc Edit", 1);
++		    slk_set(7, FNUMBERS ? "7:Asc Ed":"Asc Edit", 1);
+ 		}
+ 		else					/* already in ascii   */
+ 		{
+ 		    Winds = win->hex;			/* change to hex win  */
+ 		    eol = (BASE * 3) - 1;
+ 	 	    wmove(Winds, row, (col*3));	
+-		    slk_set(7, "Hex Edit", 1);
++		    slk_set(7, FNUMBERS ? "7:Hex Ed":"Hex Edit", 1);
+ 		}
+ 
+ 		editHex = (!editHex);			/* change test val    */
+@@ -646,7 +731,7 @@ int wacceptch(WINS *win, off_t len)
+ 
+ 		getyx(Winds, row, col);			/* current location   */
+ 		/* re-bold char if the value over the cursor is modified      */
+-		if (inHexList(cursorLoc(currentLine, col, editHex, BASE))) 
++		if (countList(head, cursorLoc(currentLine, col, editHex, BASE)) > 1)
+ 		{
+ 		    wattron((editHex) ? win->hex : win->ascii, A_BOLD);
+ 		    mvwprintw((editHex) ? win->hex : win->ascii , row, col, 
+@@ -672,14 +757,32 @@ int wacceptch(WINS *win, off_t len)
+ 	case CTRL_AND('z'):				/* ^z undo last mod   */
+ 		getyx(Winds, row, col);
+ 
+-							/* set previous loc   */
+-		cl = (stack == NULL) ? cl : stack->currentLoc;
++		if (stack != NULL && stack->savedVal == SAVEPOINT)
++		{
++		    popStack(&stack);
++		    savedpoint = FALSE;
++		}
+ 		if (stack != NULL)
+ 		{
+-
+-		    /*if (stack != NULL) val = stack->savedVal;               */
++		    cl = stack->currentLoc;
+ 		    val = stack->savedVal;
+ 		    popStack(&stack);
++		                                   /* if there is a save point in */
++		                                   /* the next value of the stack */
++		    if (stack != NULL && stack->savedVal == SAVEPOINT)
++		    {
++		        if (savedpoint)       /* and if it's the last (controlled */
++		        {                     /* by savedpoint) go to saved mode */
++		            savedpoint = FALSE;
++		            set_saved(TRUE, Winds);
++		        }
++		        else set_saved(FALSE, Winds);
++		        popStack(&stack);
++		    }
++		    else if (stack == NULL && savedpoint)
++		              set_saved(TRUE, Winds);
++		         else set_saved(FALSE, Winds);
++
+ 		    head = deleteNode(head,cl);
+ 
+ 
+@@ -699,39 +802,29 @@ int wacceptch(WINS *win, off_t len)
+ 		
+ 		    getyx(Winds, row, col);
+ 
+-   		    if ((searchList(head, cl)) != -1)
++   		    if (countList(head, cl) > 1)
+ 		    {	
+ 			wattron(win->hex, A_BOLD);
+ 			wattron(win->ascii, A_BOLD);
+ 		    }
++		    byte_color_on((row * BASE) + col, val);
++
+                     if (editHex)
+ 		    {
+-                        wmove(win->ascii, row, (col/3));    
+-			wprintw(win->ascii, "%c", (USE_EBCDIC) ? EBCDIC[val] :
+-			       (isprint(val) ? val : 46));
+-                        wmove(win->hex, row, col);
+-                        wrefresh(win->ascii);
+-
+                         wprintw(win->hex, "%02X", val);
+                         wmove(win->hex, row, col);      
+                         wrefresh(win->hex);
+ 		    }
+ 		    else
+ 		    {
+-                        wmove(win->hex, row, (col*3));      
+-                        wprintw(win->hex, "%02X", val);
+-                        wmove(win->ascii, row, col);
+-                        wrefresh(win->hex);
+-
+ 			wprintw(win->ascii, "%c", (USE_EBCDIC) ? EBCDIC[val] :
+ 			       (isprint(val) ? val : 46));
+                         wmove(win->ascii, row, col);    
+                         wrefresh(win->ascii);
+ 		    }
++		    byte_color_off((row * BASE) + col, val);
+ 		    wattrset(win->hex, A_NORMAL);
+ 		    wattrset(win->ascii, A_NORMAL);
+-
+-
+ 		}
+ 		break;
+ 
+@@ -740,7 +833,8 @@ int wacceptch(WINS *win, off_t len)
+ 	    printDebug(head, -1);
+ 	    break;
+ #endif
+-	}
++
++	} // switch
+ 
+ 	getyx(Winds, row, col);				/* get cur row/col    */
+ 	if (fpIN)
+@@ -764,27 +858,41 @@ int wacceptch(WINS *win, off_t len)
+ 	        curVal = getLocVal(cursorLoc(lastLine, lastCol, editHex, BASE));
+ 		wattrset((editHex) ? win->ascii : win->hex, A_NORMAL);
+ 		wattron((editHex) ? win->ascii : win->hex,
+-		  (inHexList(cursorLoc(lastLine, lastCol, editHex, BASE))) ?
++		  (countList(head, cursorLoc(lastLine, lastCol, editHex, BASE)) > 1) ?
+ 		  A_BOLD : A_NORMAL);
+-		mvwprintw((editHex) ? win->ascii : win->hex, lastRow, 
+-			  (editHex) ? lastCol/3 : lastCol*3, 
+-			  (editHex) ? "%c" : "%02X", 
+-			  (editHex) ? (isprint(curVal)) ? curVal : '.': curVal);
++
++		byte_color_on((lastRow * BASE) + lastCol, curVal);
++
++		if (editHex)
++		   mvwprintw(win->ascii, lastRow, lastCol/3, "%c",
++		      (USE_EBCDIC) ? EBCDIC[curVal] : (isprint(curVal)) ? curVal : '.');
++		else
++		   mvwprintw(win->hex, lastRow, lastCol*3, "%02X", curVal);
++
++		byte_color_off((lastRow * BASE) + lastCol, curVal);
++
+ 		wmove(Winds, row, col);
+ 		wattrset((editHex) ? win->ascii : win->hex, A_NORMAL);
+ 		wnoutrefresh((editHex) ? win->ascii : win->hex);
+ 	    }
++
+ 							/* highlight new char */
+ 	    wattron((editHex) ? win->ascii : win->hex, A_UNDERLINE);
+-	    if (inHexList(cursorLoc(currentLine, col, editHex, BASE)))
++	    if (countList(head, cursorLoc(currentLine, col, editHex, BASE)) > 1)
+ 	        wattron((editHex) ? win->ascii : win->hex, A_BOLD);
+ 
+ 	    curVal = getLocVal(cursorLoc(currentLine, col, editHex, BASE));
+ 
+-	    mvwprintw((editHex) ? win->ascii : win->hex, row, 
+-		      (editHex) ? col/3 : col*3,  
+-		      (editHex) ? "%c" : "%02X", 
+-		      (editHex) ? (isprint(curVal)) ? curVal : '.' : curVal); 
++	    byte_color_on((row * BASE) + col, curVal);
++
++	    if (editHex)
++	       mvwprintw(win->ascii, row, col/3, "%c",
++	          (USE_EBCDIC) ? EBCDIC[curVal] : (isprint(curVal)) ? curVal : '.');
++	    else
++	       mvwprintw(win->hex, row, col*3, "%02X", curVal);
++
++	    byte_color_off((row * BASE) + col, curVal);
++
+ 	    wattrset((editHex) ? win->ascii : win->hex, A_NORMAL);
+ 	    wnoutrefresh((editHex) ? win->ascii : win->hex);
+ 	}
+@@ -803,7 +911,8 @@ int wacceptch(WINS *win, off_t len)
+ 	doupdate();					/* update visual      */
+     }
+ 
+-    free(temp);
++    free(searchhex);
++    free(searchascii);
+     while (stack != NULL)
+ 	popStack(&stack);
+     
+@@ -828,27 +937,23 @@ void restoreBorder(WINS *win)
+  * Description:  gets a line of input from user		*
+  * Returns:	 received string			*
+ \********************************************************/
+-char *inputLine(WINDOW *win, int line, int col)
++char *inputLine(WINDOW *win, int line, int col, bool allow_space)
+ {
+     int x;
+-    unsigned long int c;
++    unsigned long int c, first_printable;
+     char *ch;
+-    int allocated = 81;
++    int allocated = 80;
++
++    first_printable = allow_space ? 32 : 33;
+ 
+     noecho();
+ 
+-    ch = (char *)malloc(allocated);				/* allocate space     */
++    ch = (char *)malloc(allocated+1);				/* allocate space     */
+ 
+     wmove(win, line, col);
+ 
+     for (x = 0; (c = wgetch(win)) != 10; x++) 
+     {
+-	if (x > 0 && x >= allocated)
+-	{
+-		ch = (char*)realloc(ch, x + 1);
+-		allocated = x + 1;
+-	}
+-	
+         wclrtoeol(win);					/* clear line         */
+         if (c == '\b' || c == 127) 			/* get backspace      */
+ 	{
+@@ -857,16 +962,21 @@ char *inputLine(WINDOW *win, int line, int col)
+             ch[x] = '\0';
+             x -= 2;					/* modify ptr         */
+         }
+-        else if (c > 32 && c < 127) 			/* if printable char  */
+-	{
+-            ch[x] = c;
+-            waddch(win, ch[x]);
+-        }
+ 	else if (c == 27)				/* if the escape key  */
+ 	{   						/* is pressed, return */
+ 	    ch[0] = 27;					/* setting ch to 0xff */
+ 	    return ch;					
+ 	}
++	else if (x == allocated)
++	{
++	    x--;
++	    continue;
++	}
++	else if (c >= first_printable && c < 127) 			/* if printable char  */
++	{
++	    ch[x] = c;
++	    waddch(win, ch[x]);
++	}
+         else 						/* if anything else   */
+ 	{
+             ch[x] = '\0';
+diff --git a/src/color.c b/src/color.c
+index 407c2c3..9f258b2 100644
+--- a/src/color.c
++++ b/src/color.c
+@@ -1,5 +1,6 @@
+ /*
+  * Copyright (c) 2015 Javier Escalada Gómez
++ * Copyright (C) 2020,2021 prso at github, fixes and improvements
+  */
+ 
+ #include "hex.h"
+@@ -13,18 +14,32 @@ bool color_enabled;
+ void init_colors(void)
+ {
+     color_enabled = has_colors();
+-    if(color_enabled)
++    if(color_enabled && color_level>0)
+     {
+         start_color();
+-        init_pair(1, COLOR_BLACK,   COLOR_BLACK);
+-        init_pair(2, COLOR_RED,     COLOR_BLACK);
+-        init_pair(3, COLOR_GREEN,   COLOR_BLACK);
+-        init_pair(4, COLOR_YELLOW,  COLOR_BLACK);
+-        init_pair(5, COLOR_BLUE,    COLOR_BLACK);
+-        init_pair(6, COLOR_MAGENTA, COLOR_BLACK);
+-        init_pair(7, COLOR_CYAN,    COLOR_BLACK);
+-        init_pair(8, COLOR_WHITE,   COLOR_BLACK);
+-
++        if (TERM_COLORS)
++        {
++            use_default_colors();
++            init_pair(1, COLOR_BLACK,   -1);
++            init_pair(2, COLOR_RED,     -1);
++            init_pair(3, COLOR_GREEN,   -1);
++            init_pair(4, COLOR_YELLOW,  -1);
++            init_pair(5, COLOR_BLUE,    -1);
++            init_pair(6, COLOR_MAGENTA, -1);
++            init_pair(7, COLOR_CYAN,    -1);
++            init_pair(8, COLOR_WHITE,   -1);
++        }
++        else
++        {
++            init_pair(1, COLOR_BLACK,   COLOR_BLACK);
++            init_pair(2, COLOR_RED,     COLOR_BLACK);
++            init_pair(3, COLOR_GREEN,   COLOR_BLACK);
++            init_pair(4, COLOR_YELLOW,  COLOR_BLACK);
++            init_pair(5, COLOR_BLUE,    COLOR_BLACK);
++            init_pair(6, COLOR_MAGENTA, COLOR_BLACK);
++            init_pair(7, COLOR_CYAN,    COLOR_BLACK);
++            init_pair(8, COLOR_WHITE,   COLOR_BLACK);
++        }
+     }
+ }
+ 
+@@ -35,10 +50,16 @@ void init_colors(void)
+ int get_byte_color(intmax_t address, char c)
+ {
+     UNUSED(address);
+-    if (c == 0x00) {
+-        return COLOR_PAIR(5);
+-    }
+-    return A_NORMAL;
++    if ((unsigned char) c == 0x00)
++        return ((color_level>1) ? COLOR_PAIR(5) : A_NORMAL);
++
++    if (color_level>2)
++      if (((unsigned char) c >= 0x20) && ((unsigned char) c <= 0x7E)) {
++          return COLOR_PAIR(8);
++      } else if ((unsigned char) c == 0xFF) {
++          return COLOR_PAIR(2);
++      } else return COLOR_PAIR(7);
++    else return A_NORMAL;
+ }
+ 
+ void byte_color_on(intmax_t address, char c)
+@@ -66,7 +87,7 @@ void byte_color_off(intmax_t address, char c)
+ int get_address_color(intmax_t address)
+ {
+   UNUSED(address);
+-  return COLOR_PAIR(4);
++  return ((color_level>0) ? COLOR_PAIR(4) : A_NORMAL);
+ }
+ 
+ void address_color_on(intmax_t address)
+@@ -81,4 +102,4 @@ void address_color_off(intmax_t address)
+   if(color_enabled) {
+       wattron(windows->address, get_address_color(address));
+   }
+-}
+\ No newline at end of file
++}
+diff --git a/src/file.c b/src/file.c
+index 8620a8e..1f569c1 100644
+--- a/src/file.c
++++ b/src/file.c
+@@ -1,5 +1,6 @@
+ /******************************************************************************\
+  *  Copyright (C) 2001, hexcurse is written by Jewfish and Armoth             *
++ *  Copyright (C) 2020-2022 prso at github, fixes and improvements            *
+  *									      *
+  *  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      *
+@@ -26,57 +27,78 @@
+ \*******************************************************/
+ void outline(FILE *fp, off_t linenum)
+ {
+-    int i, c, tmp[BASE];					/* holds char values  */
++    int i, c, tmp[BASE],					/* holds char values  */
++        clrstathex, clrstatascii;
++    bool bold[BASE];
+     hexList *tmpHead = head;					/* tmp linklist head  */
++    off_t locbase = linenum * BASE, locbasei;
+ 
+-    for (i = 0; i < BASE; i++)					/* set vals to EOF    */
+-		tmp[i] = -1;
+-
+-    while (tmpHead != NULL && tmpHead->loc < (linenum * BASE))
++    while (tmpHead != NULL && tmpHead->loc < locbase)
+ 		tmpHead = tmpHead->next;				/* advance temp head  */
+ 
+     for (i = 0; i < BASE; i++) 
+-	{
+-		while (tmpHead != NULL && (tmpHead->loc < ((linenum * BASE) + i)))
++    {
++		locbasei = locbase + i;
++		while (tmpHead != NULL && (tmpHead->loc < locbasei))
+ 			tmpHead = tmpHead->next;
+-		
+-		if (tmpHead != NULL && (tmpHead->loc == ((linenum * BASE) + i)))
++
++		if (tmpHead != NULL && (tmpHead->loc == locbasei))
+ 		{										/*store val from llist*/
+ 			tmp[i] = tmpHead->val;
+ 			tmpHead = tmpHead->next;
++			if (tmpHead != NULL && tmpHead->loc == locbasei)
++			     bold[i] = TRUE;       /* if there is at least 2 values set bold */
++			else bold[i] = FALSE;
++		}
++		else
++		{
++			tmp[i] = -1;        /* set val to EOF    */
++			bold[i] = FALSE;
+ 		}
+     }
+ 
+-    wclrtoeol(windows->hex);					/* clear lines        */
+-    wclrtoeol(windows->ascii);
++    clrstathex = wclrtoeol(windows->hex);					/* clear lines        */
++    clrstatascii = wclrtoeol(windows->ascii);
+ 
+     /*print line's address*/
+-    address_color_on((intmax_t)(linenum * BASE));
+-    wprintw(windows->address, (printHex) ? "%0*jX ":"%0*jd ", MIN_ADDR_LENGTH, (intmax_t)(linenum * BASE));
+-    address_color_off((intmax_t)(linenum * BASE));
++    address_color_on((intmax_t)(locbase));
++    wprintw(windows->address, (printHex) ? "%0*jX ":"%0*jd ", MIN_ADDR_LENGTH, (intmax_t)(locbase));
++    address_color_off((intmax_t)(locbase));
+ 
+     rewind(fp);									/* reset the file ptr */
+-    fseeko(fp, (linenum * BASE), 0);				/* set new pos for fp */
++    fseeko(fp, locbase, 0);				/* set new pos for fp */
+ 
+     for (i = 0; i < BASE && (c = getc(fp)) != EOF; i++)
+     {
++		locbasei = locbase + i;
+ 		if (tmp[i] != -1) 						/* while not EOF      */
+-		{	c = tmp[i];							/* store val in c     */
++			c = tmp[i];							/* store val in c     */
++		if (bold[i])
++		{
+ 			wattron(windows->ascii, A_BOLD);
+ 			wattron(windows->hex, A_BOLD);
+ 		}
+-        byte_color_on((linenum * BASE) + i, c);
++		byte_color_on(locbasei, c);
+ 		wprintw(windows->hex, "%02X ", c);		/* print out hex char */
+ 		if (USE_EBCDIC)
+ 			wprintw(windows->ascii, "%c", EBCDIC[c]);/* print EBCDIC char */
+-		else									/* print ASCII  char */
+-            wprintw(windows->ascii, (isprint(c)) ? "%c":".", c);
+-        byte_color_off((linenum * BASE) + i, c);
+-        if (tmp[i] != -1) {
+-            wattroff(windows->ascii, A_BOLD);
+-            wattroff(windows->hex, A_BOLD);
+-        }
++		else						/* print ASCII  char */
++			wprintw(windows->ascii, (isprint(c)) ? "%c":".", c);
++		byte_color_off(locbasei, c);
++		if (bold[i])
++		{
++			wattroff(windows->ascii, A_BOLD);
++			wattroff(windows->hex, A_BOLD);
++		}
+     }
++			/* workaround to a strange bug, in some cases */
++			/* wclrtoeol() doesn't work for the last line */
++    if (clrstathex==ERR || clrstatascii==ERR)
++		for (; i < BASE; i++)
++		{
++			wprintw(windows->hex, "   ");
++			wprintw(windows->ascii, " ");
++		}
+ }
+ 
+ /*******************************************************\
+@@ -90,6 +112,31 @@ off_t maxLoc(FILE *fp)
+     return(ftello(fp));				/* return val at EOF  */
+ }
+ 
++/*******************************************************\
++ * Description: enters or exits from modified mode:    *
++ *      set or reset saved, and write or restore       *
++ *      mode indicator (*) at top of hex window        *
++\*******************************************************/
++void set_saved(bool sav, WINDOW *win)
++{
++    int y, x;
++
++    getyx(win, y, x);
++    if ( (saved = sav) )  /* set, not compare */
++    {
++        mvwaddch(windows->hex_outline, 0, MIN_ADDR_LENGTH+3, ACS_HLINE);
++        mvwaddch(windows->hex_outline, 0, MIN_ADDR_LENGTH+4, ACS_HLINE);
++        mvwaddch(windows->hex_outline, 0, MIN_ADDR_LENGTH+5, ACS_HLINE);
++        wnoutrefresh(windows->hex_outline);
++    }
++    else
++    {
++        mvwprintw(windows->hex_outline, 0, MIN_ADDR_LENGTH+3, " * ");
++        wnoutrefresh(windows->hex_outline);
++    }
++    wmove(win, y, x);
++}
++
+ /******************************************************\
+  * Description: prints out the command line help info *
+  *		this function does not return anything*
+@@ -99,14 +146,21 @@ void print_usage()
+     char *ver = HVERSION; 
+ 
+     printf("hexcurse, version %s by James Stephenson and Lonny Gomes\n",ver);
+-    printf("\nusage: hexcurse [-?|help] [-a] [-r rnum] [-o outputfile] "); 
+-    printf("[[-i] infile]\n\n");
+-    printf("    -a\t\tOutput addresses in decimal format initially\n");
+-    printf("    -e\t\tOutput characters in EBCDIC format rather than ASCII\n"); 
+-    printf("    -r rnum\tResize the display to \"rnum\" bytes wide\n");
+-    printf("    -o outfile\tWrite output to outfile by default\n"); 
+-    printf("    -? | -help\tDisplay usage and version of hexcurse program\n");
+-    printf("    [-i] infile\tRead from data from infile (-i required if not last argument)\n\n");
++    printf("usage: hexcurse [-?|help] [-a] [-c colorlevel] [-e] [-f] [-o outputfile] ");
++    printf("[-r rnum] [-t] [[-i] infile]\n");
++    printf("    -? | -help\t\tDisplay usage and version of hexcurse program\n");
++    printf("    -a\t\t\tOutput addresses in decimal format initially\n");
++    printf("    -c colorlevel\tSet the color level\n");
++    printf("    \t\t\t\t0: no colors\n");
++    printf("    \t\t\t\t1: only color for addresses\n");
++    printf("    \t\t\t\t2: 1 + color for 00 (default if terminal supports color)\n");
++    printf("    \t\t\t\t3: multicolor by FrankSansC\n");
++    printf("    -e\t\t\tOutput characters in EBCDIC format rather than ASCII\n");
++    printf("    -f\t\t\tShow function key numbers in labels\n");
++    printf("    -o outfile\t\tWrite output to outfile by default\n");
++    printf("    -r rnum\t\tResize the display to \"rnum\" bytes wide\n");
++    printf("    -t\t\t\tKeep colors defined by terminal\n");
++    printf("    [-i] infile\t\tRead from data from infile (-i required if not last argument)\n\n");
+ }
+ 
+ /*******************************************************\
+@@ -143,7 +197,7 @@ int openfile(WINS *win)
+ 	if (!fpINfilename)
+         fpINfilename = (char *) malloc(81);             /* allocate if NULL   */
+ 
+-    ch = inputLine(win->hex_outline, LINES - 1, 21);	/* get filename       */
++    ch = inputLine(win->hex_outline, LINES - 1, 21, TRUE);	/* get filename       */
+ 
+     if (ch[0] == 27)									/* if escape was hit  */
+     {
+@@ -203,7 +257,7 @@ int savefile(WINS *win)
+ 
+     wrefresh(win->hex_outline);                         /* refresh window     */
+ 
+-    ch = inputLine(win->hex_outline, LINES - 1, 21);	/* get filename       */
++    ch = inputLine(win->hex_outline, LINES - 1, 21, TRUE);	/* get filename       */
+ 
+     if (ch[0] != 27)						/*if escape wasn't hit*/
+     {
+@@ -225,6 +279,7 @@ int savefile(WINS *win)
+ 	}
+ 	
+ 	/*write to file       */
++	popupWin("Saving file...", -2);
+ 	if (!writeChanges())
+ 	    popupWin("The file has been saved.", -1);
+ 	else
+@@ -241,66 +296,171 @@ int savefile(WINS *win)
+     return exitCode;
+ }
+ 
++void make_delta1(int *delta1, int *pat, size_t patlen) {
++    size_t i;
++    for (i=0; i < ALPHABET_LEN; i++) {
++        delta1[i] = patlen;
++    }
++    for (i=0; i < patlen-1; i++) {
++        delta1[pat[i]] = patlen-1 - i;
++    }
++}
++
++// true if the suffix of word starting from word[pos] is a prefix
++// of word
++int is_prefix(int *word, size_t wordlen, size_t pos) {
++    size_t i;
++    size_t suffixlen = wordlen - pos;
++
++    for (i = 0; i < suffixlen; i++) {
++        if (word[i] != word[pos+i]) {
++            return 0;
++        }
++    }
++    return 1;
++}
++
++// length of the longest suffix of word ending on word[pos].
++// suffix_length("dddbcabc", 8, 4) = 2
++size_t suffix_length(int *word, size_t wordlen, size_t pos) {
++    size_t i;
++    // increment suffix length i to the first mismatch or beginning
++    // of the word
++    for (i = 0; (word[pos-i] == word[wordlen-1-i]) && (i < pos); i++);
++    return i;
++}
++
++void make_delta2(int *delta2, int *pat, size_t patlen) {
++    size_t  p;
++    size_t  last_prefix_index = patlen-1;
++
++    // first loop
++    for (p=patlen-1; ;p--) {
++        if (is_prefix(pat, patlen, p+1)) {
++            last_prefix_index = p+1;
++        }
++        delta2[p] = (int) (last_prefix_index + (patlen-1 - p));
++        if (p == 0) break;
++    }
++
++    // second loop
++    for (p=0; p < patlen-1; p++) {
++        int slen = suffix_length(pat, patlen, p);
++        if (pat[p - slen] != pat[patlen-1 - slen]) {
++            delta2[patlen-1 - slen] = (int) (patlen-1 - p + slen);
++        }
++    }
++}
++
+ /********************************************************\
+  * Description: searches for a series of either hex or  *
+  *		ascii values of upto 16 bytes long.  The*
+  *		function returns the next location of   *
+  *		the specified string or -1 if not found *
++ *      algorithm based on the wikipedia example *
++ * http://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm *
+ \********************************************************/
+-off_t hexSearch(FILE *fp, int ch[], off_t startfp, int length)
++off_t hexSearchBM(WINDOW *w, FILE *fp, int pat[], off_t startfp, int patlen)
+ {
+-    int loop, tmp, c, flag=0;
+-    off_t currLoc, startLoc, foundLoc=-1;		/* init vars          */
+-
+-    fseeko(fp, startfp, SEEK_SET);			/* begin from loc     */
+-
+-    c = getc(fp);					/* get char from file */
+-    currLoc = ftello(fp);				/* get location       */
+-    if ((tmp = searchList(head, currLoc-1)) != -1)	/* check for val in ll*/
+-	c = tmp;
+-
+-    while (currLoc != startfp) 				/* while not back to  */
+-    {							/* beginning...       */
+-	if (c == ch[0]) 				/* if char we want... */
+-	{						
+-	    startLoc = ftello(fp);			/* get location       */
+-							/* loop to find rest  */
+-	    for (loop = 1; (loop < length) && (c != EOF); loop++)
+-	    {
+-		c = fgetc(fp); 
+-    		currLoc = ftello(fp);
+-    		if ((tmp = searchList(head, currLoc-1)) != -1)
+-		    c = tmp;
+-		if (c != ch[loop])
+-		    break;
+-		    
+-	    }
+-		fseeko(fp, startLoc, SEEK_SET);
+-
+-	    if ((loop == length) && (flag))		/* if found it        */
+-		return startLoc - 1;			/* return location    */
+-	    else if (loop == length)
+-		foundLoc = startLoc -1;			/* return if no others*/
+-		    	
+-	}
+-	flag = 1;    /* if cursor is on the search string, continue searching */
+-		
++    if (! (pat && patlen > 0)) return -2;
+ 
+-	if (c == EOF)					/* if EOF rewind      */
+-	    rewind(fp);
++    int         i, m = 1;
++    int         j = patlen - 1;
++    int         delta1 [ ALPHABET_LEN ];
++    int         *delta2 = (int *)malloc(patlen * sizeof(int));
+ 
+-        currLoc = ftello(fp);				/* current location   */
++    char        *buf;           // circular buffer
++    char        *patt = (char *) malloc(patlen);
+ 
+-	if (currLoc != startfp) 			/* if not at start... */
+-	{
+-	    c = fgetc(fp);				/* get another char   */
+-    	    currLoc = ftello(fp);
+-    	    if ((tmp = searchList(head, currLoc-1)) != -1)
+-	        c = tmp;
+-	}
+-    } 
++    int         n;              // number of bytes read by fread()
++    int         rem_bytes = 0;  // remaining bytes in the buffer
++    int         bytes_to_read = BUF_L;
++    int         full_length;    // full length of the current buffer
++    int         cur_percent, last_percent = -1;
++
++    off_t       pos1, pos2;     // lower and upper limit of the buffer
++    off_t       pos_max = -1;   // EOF position
++    off_t       rv = -1;        // return value: default = -1
++
++    if (posix_memalign((void **)&buf, getpagesize(), BUF_L) != 0)
++        return -1;
++
++    if (! (delta2 && patt)) return -1;
++
++    make_delta1(delta1, pat, patlen);
++    make_delta2(delta2, pat, patlen);
++    // converting int to (unsigned char) -> (unsigned char) is faster
++    for (i = 0; i < patlen; i++) patt[i] = (unsigned char) pat[i];
++
++    // get the pos_max
++    if (fseeko(fp, 0, SEEK_END) == 0) pos_max = ftello(fp);
++
++    // we ignore the current byte
++    startfp++;
++    if (fseeko(fp, startfp, SEEK_SET) != 0) {
++        goto end;
++    }
++
++    // set to non-blocking
++    wtimeout(w, 0);
++    pos1 = pos2 = startfp;
++
++    while (1) {
++        n = (int) fread(&buf[rem_bytes], 1, bytes_to_read, fp);
++        full_length = n + rem_bytes;
++        if (n == 0 || full_length < patlen) break;
++        pos2 = pos1 + (off_t) full_length;
++
++        // apply changes by user, if any
++        updateBuf(head, buf, pos1, pos2);
++
++        i = patlen - 1;
++        while (i < full_length) {
++            j = patlen - 1;
++            while (j >= 0 && (buf[i] == patt[j])) {
++                --i;
++                --j;
++            }
++            if (j < 0) {
++                // success
++                rv = pos1 + i + 1;
++                goto end;
++            }
++
++            m = max(delta1[(unsigned char) buf[i]], delta2[j]);
++            i += m;
++        }
++
++        rem_bytes = full_length + m - i - 1;
++        if (rem_bytes > full_length) rem_bytes = full_length;
++
++        bytes_to_read = BUF_L - rem_bytes;
++        memmove(buf, &buf[full_length - rem_bytes], rem_bytes);
++        pos1 = pos2 - rem_bytes;
+ 
+-    return foundLoc;					/* return not found   */
++        if (wgetch(w) == 27) { // escape
++            rv = -2;
++            goto end;
++        }
++
++        if (pos_max > 0) {
++            cur_percent = (int) ((pos2 * 100) / pos_max);
++            if (cur_percent != last_percent) {
++                mvwprintw(w, LINES - 1, 1, "Searching (hit Esc to cancel) ...%d%%", cur_percent);
++                wrefresh(w);
++                last_percent = cur_percent;
++            }
++        }
++    }
++
++    end:
++        // set back to blocking
++        wtimeout(w, -1);
++        free(buf);
++        free(patt);
++        free(delta2);
++
++    return rv;
+ }
+ 
+ /********************************************************\
+@@ -402,19 +562,3 @@ int getLocVal(off_t loc)
+     fseeko(fpIN, loc, SEEK_SET);				/* goto location      */
+     return(fgetc(fpIN));
+ }
+-
+-/********************************************************\
+- * Description: checks if a loc is in the linked list   *
+- * Returns:     returns TRUE if loc is in the llist     *
+-\********************************************************/
+-bool inHexList(off_t loc)
+-{
+-    hexList *tmpHead = head;				/* tmp linklist head  */
+-
+-    while (tmpHead != NULL && (tmpHead->loc < loc))
+-	tmpHead = tmpHead->next;
+-    if (tmpHead != NULL && (tmpHead->loc == loc))
+-	return(TRUE);
+-    else
+-	return(FALSE);
+-}
+diff --git a/src/hexcurse.c b/src/hexcurse.c
+index 9a275ee..9723c2f 100644
+--- a/src/hexcurse.c
++++ b/src/hexcurse.c
+@@ -1,5 +1,6 @@
+ /******************************************************************************\
+  *  Copyright (C) 2001 writen by Jewfish and Armoth                           *
++ *  Copyright (C) 2020-2022 prso at github, fixes and improvements            *
+  *									      *
+  *  Description: this codes allows a user to view and edit the hexadecimal and*
+  *		 and ascii values of a file.  The curses library is used to   *
+@@ -27,6 +28,8 @@
+ /*#define DEBUG_LLIST*/
+ /*#define DEBUG_GOTO*/
+ 
++FILE *fpIN;
++
+ int     BASE, MAXY, resize = 0;
+ int     MIN_ADDR_LENGTH;
+ hexList *head;						/* linked list struct */
+@@ -36,11 +39,15 @@ char    EBCDIC[256],
+         *fpOUTfilename = NULL;
+ bool 	printHex;					/* address format     */
+ bool    USE_EBCDIC;
++bool    TERM_COLORS;
++bool    FNUMBERS;
+ bool    IN_HELP;					/* if help displayed  */
++bool    saved = TRUE;
+ int     hex_win_width,
+         ascii_win_width,
+         hex_outline_width,
+-        ascii_outline_width;
++        ascii_outline_width,
++        color_level = 2;
+ 
+ 
+     /* partial EBCDIC table contributed by Ted (ted@php.net) */
+@@ -63,6 +70,25 @@ int     hex_win_width,
+       '.','R','S','T','U','V','W','X','Y','Z','.','.','.','.' ,'.','.', /* E */
+       '0','1','2','3','4','5','6','7','8','9','.','.','.','.' ,'.','.'};/* F */
+ 
++int ASCII_to_EBCDIC[] =
++{
++  NODEF, NODEF, NODEF, NODEF, NODEF, NODEF, NODEF, NODEF, NODEF, NODEF, NODEF,
++  NODEF, NODEF, NODEF, NODEF, NODEF, NODEF, NODEF, NODEF, NODEF, NODEF, NODEF,
++  NODEF, NODEF, NODEF, NODEF, NODEF, NODEF, NODEF, NODEF, NODEF, NODEF,
++
++  /* 32 */  0x40,  0x5a,  0x7f,  0x7b,  0x5b,  0x6c,  0x50,  0x7d,  0x4d,  0x5d,
++  /* 42 */  0x5c,  0x4e,  0x6b,  0x60, NODEF,  0x61,  0xf0,  0xf1,  0xf2,  0xf3,
++  /* 52 */  0xf4,  0xf5,  0xf6,  0xf7,  0xf8,  0xf9,  0x7a,  0x5e,  0x4c,  0x7e,
++  /* 62 */  0x6e,  0x6f,  0x7c,  0xc1,  0xc2,  0xc3,  0xc4,  0xc5,  0xc6,  0xc7,
++  /* 72 */  0xc8,  0xc9,  0xd2,  0xd3,  0xd4,  0xd5,  0xd6,  0xd7,  0xd8,  0xd9,
++  /* 82 */  0xe1,  0xe2,  0xe3,  0xe4,  0xe5,  0xe6,  0xe7,  0xe8,  0xe9, NODEF,
++  /* 92 */ NODEF, NODEF, NODEF,  0x6d,  0xb9,  0x81,  0x82,  0x83,  0x84,  0x85,
++  /* 102 */ 0x86,  0x87,  0x88,  0x89,  0x92,  0x93,  0x94,  0x95,  0x96,  0x97,
++  /* 112 */ 0x98,  0x99,  0xa1,  0xa2,  0xa3,  0xa4,  0xa5,  0xa6,  0xa7,  0xa8,
++  /* 122 */ 0xa9, NODEF,  0x4f, NODEF, NODEF /* 126 */
++};
++
++
+ int main(int argc, char *argv[])			/* main program       */
+ {
+ 
+@@ -75,6 +101,8 @@ int main(int argc, char *argv[])			/* main program       */
+     fpOUTfilename = NULL;			/* out file name ptrs */
+     printHex = TRUE;							/* address format     */
+     USE_EBCDIC = FALSE;							/*use ascii by default*/
++    TERM_COLORS = FALSE;                     /*don't use term defined colors by default */
++    FNUMBERS = FALSE;     /* keep old behaviour without function key numbers by default */
+ 
+ 							/* get cmd line args  */
+     len = parseArgs(argc, argv);
+@@ -93,7 +121,6 @@ int main(int argc, char *argv[])			/* main program       */
+ 	exit(-1);
+     }
+     
+-    slk_set(6, (printHex) ? "Hex Addr":"Dec Addr", 1);
+     init_fkeys();					/* define menu bar    */
+     
+ 
+@@ -179,33 +206,47 @@ off_t parseArgs(int argc, char *argv[])
+     int val;						/* counters, etc.     */
+ 
+ 							/* get args           */
+-    while ((val = hgetopt(argc, argv, "a:i:o:r:e")) != -1) 
++    while ((val = hgetopt(argc, argv, "c:ai:o:r:etf?h")) != -1)
+     {
+ 	switch (val)					/* test args          */
+         {
++            case 'c':   color_level = atoi(optarg);
++                        if (color_level<0 || color_level>3)
++                        {
++                            print_usage();
++                            exit(-1);
++                        }
++                        break;
++
+             case 'a':	printHex = FALSE;		/* decimal addresses  */
+                         break;
+ 							/* infile             */
+-	    case 'i':	free(fpINfilename);
+-			fpINfilename = strdup(optarg);
+-			break;
++            case 'i':	free(fpINfilename);
++                        fpINfilename = strdup(optarg);
++                        break;
+ 							/* outfile            */
+-	    case 'o':   free(fpOUTfilename);
+-			fpOUTfilename = strdup(optarg);
+-			break;
++            case 'o':   free(fpOUTfilename);
++                        fpOUTfilename = strdup(optarg);
++                        break;
+ 
+             case 'r':   resize = atoi(optarg);		/* don't resize screen*/
+                         break;
+ 
+             case 'e':   USE_EBCDIC=TRUE;		/*use instead of ascii*/
++                        break;
++
++            case 't':   TERM_COLORS=TRUE;       /* keep term defined colors */
++                        break;                  /* if defined and not set may look bad */
++
++            case 'f':   FNUMBERS=TRUE;          /* show numbers in labels for function keys */
+                         break;
+ 							/* help/invalid args  */
+-							/* help/invalid args  */
+-	    case '?':	print_usage();			/* output help        */
++            case '?':
++            case 'h':	print_usage();			/* output help        */
+                         if ((optopt == 'h') || (optopt == '?'))
+-			    exit(0);			/* exit               */
+-			else				/* illegal option     */
+-			    exit(-1);
++                           exit(0);			/* exit               */
++                        else				/* illegal option     */
++                           exit(-1);
+         }
+     }
+     argc -= optind;
+@@ -217,9 +258,13 @@ off_t parseArgs(int argc, char *argv[])
+         fpINfilename = strdup(argv[0]);
+     }
+ 
+-    if (fpINfilename && strcmp(fpINfilename, ""))
++    if (fpINfilename == NULL) {
++        print_usage();
++        exit(-1);
++    } else if (fpINfilename && strcmp(fpINfilename, "")) {
+         if ((fpIN = fopen(fpINfilename, "r")) == NULL)
+             exit_err("Could not open file");
++    }
+ 
+     return ((fpIN != NULL) ? maxLoc(fpIN):0);		/* return file length */
+ }
+@@ -231,10 +276,9 @@ off_t parseArgs(int argc, char *argv[])
+ \********************************************************/
+ int getMinimumAddressLength(off_t len)
+ {
+-        char buffer[1];
+         int min_address_length;
+         
+-        min_address_length = snprintf(buffer, 1, "%jd", (intmax_t)len);
++        min_address_length = snprintf(NULL, 0, "%jd", (intmax_t)len);
+         
+         /* At least 8 characters wide */
+         return min_address_length > 8 ? min_address_length : 8;
+diff --git a/src/llist.c b/src/llist.c
+index 9c617d8..9de9038 100644
+--- a/src/llist.c
++++ b/src/llist.c
+@@ -1,5 +1,6 @@
+ /******************************************************************************\
+  *  Copyright (C) 2001, hexcurse is written by Jewfish and Armoth             *
++ *  Copyright (C) 2020,2021,2023 prso at github, fixes and improvements       *
+  *									      *
+  *  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      *
+@@ -48,37 +49,24 @@ hexList *deleteNode(hexList *head, off_t loc)
+ \********************************************************/	
+ hexList *insertItem(hexList *head, off_t loc, int val)
+ {
+-    if (head == NULL)					/* if NULL create item*/
+-    {
+-	head = llalloc();                   		/* allocate space     */
+-        head->loc = loc;          			/* store current line */
+-	head->val = val;				/* store value        */
+-        head->next = NULL;				/* make next = NULL   */
+-    }
+-    else if (head-> loc == loc)
+-    {
+-	hexList *tmpHead;				/* create new tmp item*/
+-	tmpHead  = llalloc();				/* allocate space     */
+-	tmpHead->loc = loc;				/* store the location */
+-	tmpHead->val = val;				/* store the value    */
+-	tmpHead->next = head;				/* point next to head */
+-	head = tmpHead;					/* point head to tmp  */
+-    }
+-    else if (head->loc < loc || head->next == NULL) 	/* recursively call it*/
+-    	head->next = insertItem(head->next, loc, val);
+-							/* insert into list  */
+-    else if (head->next != NULL && head->next->loc >= loc)
+-    {
+-	hexList *tmpHead;				/* create new tmp item*/
+-	tmpHead  = llalloc();				/* allocate space     */
+-	tmpHead->loc = loc;				/* store the location */
+-	tmpHead->val = val;				/* store the value    */
+-	tmpHead->next = head;				/* point next to head */
+-	head = tmpHead;					/* point head to tmp  */
+-    }
++    hexList *curr = head,
++            *prev = NULL,
++            *newHead = head,
++            *newItem;
+ 
+-    return head;                               		/* return the head    */
+-}   
++    while (curr != NULL && loc > curr->loc)  /* iterate until correct */
++    {                                        /* position for loc      */
++        prev = curr;                         /* or end of list        */
++        curr = curr->next;
++    }
++    newItem  = llalloc();                  /* allocate space        */
++    if (prev == NULL) newHead = newItem;   /* new head of list      */
++    else prev->next = newItem;             /* or point to previous  */
++    newItem->loc = loc;                    /* store the location    */
++    newItem->val = val;                    /* store the value       */
++    newItem->next = curr;                  /* point next to current */
++    return newHead;
++}
+ 
+ /********************************************************\
+  * Description: Search through the linked list for to   *
+@@ -100,6 +88,47 @@ int searchList(hexList *head, off_t loc)
+     return -1;
+ }
+ 
++/********************************************************\
++ * Description: Count the number of items for a given   *
++ *      loc in the list and return it                   *
++\********************************************************/
++off_t countList(hexList *head, off_t loc)
++{
++    hexList *curr = head;
++    off_t count = 0;
++
++    while (curr != NULL && curr->loc < loc) curr = curr->next;
++    while (curr != NULL && curr->loc == loc)
++    {
++        count++;
++        curr = curr->next;
++    }
++    return count;
++}
++
++/********************************************************\
++ * Description: Search through the linked list to     *
++ *		find if there are values for locations        *
++ *		between pos1 and pos2. If there are, changes  *
++ *		the corresponding values inside the buffer    *
++\********************************************************/
++void updateBuf(hexList *head, char *buf, off_t pos1, off_t pos2)
++{
++    hexList *tmpHead;					/* allocate temp space*/
++    off_t   prev_loc = -1;
++
++    tmpHead = head;					/* temp points to head*/
++    while (tmpHead != NULL)				/* while not null     */
++    {
++        if (prev_loc != tmpHead->loc && tmpHead->loc >= pos1 && tmpHead->loc < pos2)
++        {
++            buf[tmpHead->loc - pos1] = (unsigned char) tmpHead->val;
++        }
++        prev_loc = tmpHead->loc;
++        tmpHead = tmpHead->next;	/* move to next item  */
++    }
++}
++
+ /********************************************************\
+  * Description: write the changes to either the current *
+  *		file or to a specified output file	*
+@@ -109,29 +138,58 @@ int writeChanges()
+     FILE *fpOUT = NULL;
+     FILE *fptmp = NULL;
+     
+-    off_t buff,prev_loc;					/* declare llist vars */
++    off_t prev_loc;					/* declare llist vars */
+     hexList *tmpHead = head;
++    int nread, fs, fp, errfile = 0;
++    char *buff;
++    bool errfpOUT = FALSE;
+ 
+-    if (fpOUTfilename && fpIN && (fpOUT = fopen(fpOUTfilename, "w+")))
++    if (fpOUTfilename && fpIN)
+     {							/* open the write file*/
+-	fptmp = fpOUT;
+-        rewind(fpIN);					/* set file loc to 0  */
+-	rewind(fpOUT);					
+-	while ((buff = fgetc(fpIN)) != EOF)		/*write to file buffer*/
+-		fputc(buff, fpOUT);
++	if ( (fpOUT = fopen(fpOUTfilename, "w+")) )
++	{
++		rewind(fpIN);				/* set file loc to 0  */
++		buff = malloc(FILEBUFF);		/* allocate buffer */
++		while (!feof(fpIN))
++		{			  /* copy original file to new one */
++			nread = fread(buff, 1, FILEBUFF, fpIN);
++			fwrite(buff, 1, nread, fpOUT);
++			if (ferror(fpOUT) || ferror(fpIN))
++			{
++				fclose(fpOUT);
++				remove(fpOUTfilename);
++				errfpOUT = TRUE;
++				break;
++			}
++		}
++		free(buff);
++		if (!errfpOUT)
++		{
++			fptmp = fpOUT;
++			rewind(fptmp);
++		}
++		fclose(fpIN);
++		free(fpINfilename);
++		fpINfilename = strdup(fpOUTfilename);
++		free(fpOUTfilename);
++		fpOUTfilename = NULL;
++	}
++	else errfpOUT = TRUE;
++	if (errfpOUT)
++	{
++		popupWin("Error writing to file", -1);
++		return 1;
++	}
+     }
+     else if (fpIN)				/* if no output file  */
+     {
+-	fptmp = fpIN;
+-	fpIN = fopen(fpINfilename, "r+");
+-	if (!fpIN)
++	fptmp = fopen(fpINfilename, "r+");
++	if (!fptmp)
+ 	{
+-		fpIN = fptmp;
+ 		popupWin("Cannot write to file: bad permissions", -1);
+ 		return 1;
+ 	}
+-	fclose(fptmp);
+-	fptmp = fpIN;
++	fclose(fpIN);
+     }
+     else
+     {
+@@ -139,28 +197,32 @@ int writeChanges()
+ 	return 1;
+     }
+     
+-    rewind(fpIN);
+-    rewind(fptmp);
+     prev_loc = -1;
+     while (tmpHead != NULL)		/* write to file      */
+     {
+ 	/* only print the latest change  from the linked list*/
+ 	if (prev_loc != tmpHead->loc) { 
+-		fseeko(fptmp, tmpHead->loc, SEEK_SET);
+-		fputc(tmpHead->val, fptmp);
++		fs = fseeko(fptmp, tmpHead->loc, SEEK_SET);
++		fp = fputc(tmpHead->val, fptmp);
++		if (fs != 0 || fp == EOF)
++		{
++			popupWin("Error writing to file", -1);
++			errfile = 1;
++			break;
++		}
+ 	}
+ 	prev_loc = tmpHead->loc;
+ 	tmpHead = tmpHead->next;
+     }
+-
+-    fflush(fptmp);					/* flush buffto disk  */
+-    
+-    rewind(fpIN);					/* reset file pointer */
+-    if (fpIN != fptmp)
++    if ( (fpIN = fopen(fpINfilename, "r")) )   /* reopen file readonly */
+ 	fclose(fptmp);
+-
+-    return 0;
+-
++    else
++    {
++	fpIN = fptmp;       /* if not possible, keep it readwrite */
++	fflush(fpIN);
++	rewind(fpIN);
++    }
++    return errfile;
+ } 
+ 
+ /********************************************************\
+diff --git a/src/screen.c b/src/screen.c
+index 2cef657..20f8068 100644
+--- a/src/screen.c
++++ b/src/screen.c
+@@ -1,5 +1,6 @@
+ /******************************************************************************\
+  *  Copyright (C) 2001, hexcurse is written by Jewfish and Armoth             *
++ *  Copyright (C) 2020-2022 prso at github, fixes and improvements            *
+  *									      *
+  *  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      *
+@@ -142,15 +143,28 @@ void screen_exit(int exit_val)
+ \******************************************************/ 
+ void init_fkeys()
+ {
+-    slk_set(1, "Help",		1);			/* init menu tabs     */
+-    slk_set(2, "Save",		1);
+-    slk_set(3, "Open",	 	1);
+-    slk_set(4, "Goto",		1);
+-    slk_set(5, "Find", 		1);
+-
+-    slk_set(7, "Hex Edit",	1);
+-    slk_set(8, "Quit",		1);
+-    slk_set(9, "Quit",		1);
++    if (FNUMBERS)
++    {
++        slk_set(1, "1:Help", 1);			/* init menu tabs     */
++        slk_set(2, "2:Save", 1);
++        slk_set(3, "3:Open", 1);
++        slk_set(4, "4:Goto", 1);
++        slk_set(5, "5:Find", 1);
++        slk_set(6, (printHex) ? "6:Hex Ad":"6:Dec Ad", 1);
++        slk_set(7, "7:Hex Ed", 1);
++        slk_set(8, "8:Quit", 1);
++    }
++    else
++    {
++        slk_set(1, "Help", 1);			/* init menu tabs     */
++        slk_set(2, "Save", 1);
++        slk_set(3, "Open", 1);
++        slk_set(4, "Goto", 1);
++        slk_set(5, "Find", 1);
++        slk_set(6, (printHex) ? "Hex Addr":"Dec Addr", 1);
++        slk_set(7, "Hex Edit", 1);
++        slk_set(8, "Quit", 1);
++    }
+     slk_noutrefresh();					/* refresh the screen */
+ }
+ 
+@@ -451,13 +465,15 @@ void popupWin(char *msg, int time)
+ 
+     keypad(tmpwin, TRUE);
+ 
+-    mvwprintw(tmpwin,2,3, msg);				/* output mesg        */
++    mvwprintw(tmpwin,2,3, "%s", msg);			/* output mesg        */
+     wmove(tmpwin,2,len+4);
+     wrefresh(tmpwin);
+ 
+     if (time == -1)
+         wgetch(tmpwin);
+-    else
++    else if (time == -2)      /* just print the popup and leave it there */
++        return;               /* when work finished, you should call */
++    else                      /* another popup to inform and restore */
+         sleep(time);					/* wait               */
+ 
+     delwin(tmpwin);
+@@ -492,7 +508,7 @@ short int questionWin(char *msg)
+ 
+     tmpwin = drawbox(y, x, 5, len + 6);			/* create window      */
+ 
+-    mvwprintw(tmpwin,2,3, msg);
++    mvwprintw(tmpwin,2,3, "%s", msg);
+     wmove(tmpwin,2,len+4);
+     wrefresh(tmpwin);
+ 
+diff --git a/src/stack.c b/src/stack.c
+index 2404bd9..b530f1a 100644
+--- a/src/stack.c
++++ b/src/stack.c
+@@ -1,5 +1,6 @@
+ /******************************************************************************\
+  *  Copyright (C) 2001, hexcurse is written by Jewfish and Armoth             *
++ *  Copyright (C) 2020,2021 prso at github, fixes and improvements            *
+  *									      *
+  *  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      *
+@@ -18,44 +19,30 @@
+ \******************************************************************************/
+ #include "hex.h"
+ 
+-/******************************************************\
+- * Description: the just sets the stack pointer to    *
+- * 		NULL; it really has no business being *
+- *		function anyways		      *
+-\******************************************************/
+-void createStack(hexStack *stack)
+-{
+-    /* calloc() is used because it NULLS out all returned memory */
+-    /* stack = (hexStack *) calloc(1, sizeof(hexStack));
+-    stack->llist = NULL;
+-    stack->prev = NULL;
+-    */
+-    stack = NULL;
+-    stack->llist = NULL;
+-    stack->prev = NULL;
+-}
+-
+ /******************************************************\
+  * Description: this pushes a structure of type       *
+  *		hexStack to the stack.  NULL being the*
+  *		initial state of the stack            *
+ \******************************************************/
+-void pushStack(hexStack **stack, hexStack *tmpStack)
++void pushStack(hexStack **stack, off_t cl, int val)
+ {
+-    hexStack *oldStack;
++    hexStack *oldStack, *newStack;
+     oldStack = *stack;
+ 
++    /* calloc() is used because it NULLS out all returned memory  */
++    newStack = (hexStack *) calloc(1, sizeof(hexStack));
++    newStack->currentLoc = cl;
++    newStack->savedVal = val;
++
+     if (oldStack == NULL)				/* begining of stack  */
+-        *stack = tmpStack;
++        *stack = newStack;
+     else 
+     {
+-        tmpStack->prev = oldStack;
+-        *stack = tmpStack;
+-
++        newStack->prev = oldStack;
++        *stack = newStack;
+     }
+ }
+ 
+-
+ /******************************************************\
+  * Description: This function pops a structure off of *
+  *		the stack and then free's it's        *
diff --git a/srcpkgs/hexcurse/template b/srcpkgs/hexcurse/template
new file mode 100644
index 00000000000000..d2307737710ac2
--- /dev/null
+++ b/srcpkgs/hexcurse/template
@@ -0,0 +1,13 @@
+# Template file for 'hexcurse'
+pkgname=hexcurse
+version=1.60.0
+revision=1
+build_style=gnu-configure
+hostmakedepends="autoconf automake"
+makedepends="ncurses-devel"
+short_desc="Ncurses-based console hexeditor written in C"
+maintainer="Mihail Ivanchev <contact@ivanchev.net>"
+license="GPL-2.0-or-later"
+homepage="https://github.com/LonnyGomes/hexcurse"
+distfiles="https://github.com/LonnyGomes/hexcurse/archive/refs/tags/v${version}.tar.gz"
+checksum=f6919e4a824ee354f003f0c42e4c4cef98a93aa7e3aa449caedd13f9a2db5530

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PR PATCH] [Closed]: New package: hexcurse-1.60.0
  2024-07-27 18:28 [PR PATCH] New package: hexcurse-1.60.0 MIvanchev
                   ` (2 preceding siblings ...)
  2024-07-27 19:58 ` classabbyamp
@ 2024-07-27 19:58 ` classabbyamp
  2024-09-14 22:53 ` prso
  4 siblings, 0 replies; 6+ messages in thread
From: classabbyamp @ 2024-07-27 19:58 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 512 bytes --]

There's a closed pull request on the void-packages repository

New package: hexcurse-1.60.0
https://github.com/void-linux/void-packages/pull/51501

Description:
#### Testing the changes
- I tested the changes in this PR: **YES**

#### New package
- This new package conforms to the [package requirements](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#package-requirements): **YES**

#### Local build testing
- I built this PR locally for my native architecture, (X86_64-GLIBC)


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: New package: hexcurse-1.60.0
  2024-07-27 18:28 [PR PATCH] New package: hexcurse-1.60.0 MIvanchev
  2024-07-27 18:32 ` MIvanchev
  2024-07-27 18:32 ` [PR PATCH] [Updated] " MIvanchev
@ 2024-07-27 19:58 ` classabbyamp
  2024-07-27 19:58 ` [PR PATCH] [Closed]: " classabbyamp
  2024-09-14 22:53 ` prso
  4 siblings, 0 replies; 6+ messages in thread
From: classabbyamp @ 2024-07-27 19:58 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 318 bytes --]

New comment by classabbyamp on void-packages repository

https://github.com/void-linux/void-packages/pull/51501#issuecomment-2254240019

Comment:
the original repo is dead (for 9 years!) and the fork has no releases, so this is probably not worth it to package.

if the fork starts tagging releases, open a PR then.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: New package: hexcurse-1.60.0
  2024-07-27 18:28 [PR PATCH] New package: hexcurse-1.60.0 MIvanchev
                   ` (3 preceding siblings ...)
  2024-07-27 19:58 ` [PR PATCH] [Closed]: " classabbyamp
@ 2024-09-14 22:53 ` prso
  4 siblings, 0 replies; 6+ messages in thread
From: prso @ 2024-09-14 22:53 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 248 bytes --]

New comment by prso on void-packages repository

https://github.com/void-linux/void-packages/pull/51501#issuecomment-2351204358

Comment:
For what it's worth I released [hexcurse-ng 1.70.0](https://github.com/prso/hexcurse-ng/releases/tag/v1.70.0)

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2024-09-14 22:53 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-07-27 18:28 [PR PATCH] New package: hexcurse-1.60.0 MIvanchev
2024-07-27 18:32 ` MIvanchev
2024-07-27 18:32 ` [PR PATCH] [Updated] " MIvanchev
2024-07-27 19:58 ` classabbyamp
2024-07-27 19:58 ` [PR PATCH] [Closed]: " classabbyamp
2024-09-14 22:53 ` prso

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).