/MirOS/dist/jupp/joe-3.1jupp29.tgz jupp-3_1_29
authormirabilos <m@mirbsd.org>
Sun, 30 Oct 2016 03:22:47 +0000 (04:22 +0100)
committermirabilos <m@mirbsd.org>
Sun, 30 Oct 2016 03:22:47 +0000 (04:22 +0100)
23 files changed:
HINTS
Make-w32.sh [new file with mode: 0644]
Makefile.am
Makefile.bsd-wrapper
Makefile.in
NEWS
TODO
builtins.c
charmap.c
configure
configure.ac
joe.txt
main.c
path.c
path.h
rc.c
setup.inf [new file with mode: 0644]
syntax.c
termcap.c
tty.c
vs.c
vs.h
win32.c [new file with mode: 0644]

diff --git a/HINTS b/HINTS
index 20cb446..ebaa5d9 100644 (file)
--- a/HINTS
+++ b/HINTS
@@ -22,7 +22,8 @@ UTF-8
 -----
 
 Do note that the joerc files must be written using the 8-bit encoding
-(probably ISO-8859-1), not UTF-8.
+(probably ISO-8859-1), not UTF-8. Syntax files, on the other hand,
+absolutely must be written in UTF-8 since jupp29.
 
 JOE now handles two classes of character sets: UTF-8 and byte coded (like
 ISO-8859-1).  It can not yet handle other major classes such as UTF-16 or
@@ -134,4 +135,4 @@ will not insert.
 - Search, incremental search, and search & replace all operate as usual.
 
 __________________________________________________________________
-$MirOS: contrib/code/jupp/HINTS,v 1.8 2014/06/29 11:39:50 tg Exp $
+$MirOS: contrib/code/jupp/HINTS,v 1.9 2016/10/30 00:19:42 tg Exp $
diff --git a/Make-w32.sh b/Make-w32.sh
new file mode 100644 (file)
index 0000000..bbcee50
--- /dev/null
@@ -0,0 +1,76 @@
+#!/bin/mksh
+# $MirOS: contrib/code/jupp/Make-w32.sh,v 1.7 2016/10/30 02:44:19 tg Exp $
+
+extrawarnings="-Wall -Wextra"
+extrawarnings="$extrawarnings -Wno-unused-parameter"
+echo "N: gcc-3.4.4-999 does not support -Wno-missing-field-initializers"
+echo "N: expect warnings about those, they are known, do not report them"
+extrawarnings="$extrawarnings -Wno-old-style-definition -Wno-strict-prototypes"
+extrawarnings="$extrawarnings -Wno-cast-qual"
+extrawarnings="$extrawarnings -Wno-missing-prototypes -Wno-missing-declarations"
+
+export LC_ALL=C
+set -ex
+[[ -s configure && -s jupprc && -s charmaps/klingon.in ]]
+
+jupp=$(sed -n "/^PACKAGE_VERSION='3\.1jupp\([0-9]*\)[~'].*\$/s//\1/p" configure)
+jwin=
+while (( jupp > 34 )); do
+       jwin=${jwin}z
+       (( jupp -= 25 ))
+done
+typeset -i1 tmp
+(( tmp = 1#a - 10 + jupp ))
+jwin=$jwin${tmp#1#}
+jtop=jwin31$jwin
+typeset -u jWIN=$jwin
+
+rm -rf mkw32
+mkdir mkw32{,/{build,$jtop}}
+cd mkw32/build
+export CFLAGS='-Os -march=i486 -mtune=pentium-mmx'
+export CPPFLAGS='-DJUPPRC_BUILTIN_NAME=\"jupp32rc\"'
+mksh ../../configure \
+    --prefix=c:/windows/system32 \
+    --sysconfdir=c:/windows/system32 \
+    --disable-dependency-tracking \
+    --disable-curses \
+    --disable-termcap \
+    --disable-search-libs \
+    --disable-getpwnam \
+    --disable-termidx \
+    --enable-win32reloc
+make AM_CFLAGS="$extrawarnings"
+cp charmaps/* syntax/* ../$jtop/
+cp jmacsrc joerc jpicorc jstarrc ../$jtop/
+cp joe.exe ../$jtop/jupp32.exe
+cd ../..
+cp COPYING mkw32/$jtop/copying.txt
+cp /bin/cygwin1.dll mkw32/$jtop/
+cp joe.txt mkw32/$jtop/jupp32.txt
+cp jupprc mkw32/$jtop/jupp32rc
+cd mkw32/$jtop
+:>setup.inf
+for x in *; do
+       [[ $x = *[A-Z]* ]] || continue
+       mv "$x" ../_TMP
+       typeset -l lc
+       lc=$x
+       mv ../_TMP "$lc"
+done
+sed -b -e "s!@jwin@!$jupp!g" -e "s!@ts@!$(date -u +%m/%d/%Y)!g" \
+    <../../setup.inf | while IFS= read -r line; do
+       if [[ $line = '@files@'* ]]; then
+               stat -c '%n=1,,%s\r' *
+       else
+               print -r -- "$line"
+       fi
+done >setup.inf
+sed -bi "/^setup.inf=1,,/s/^.*\$/$(stat -c '%n=1,,%s\r' setup.inf)/" setup.inf
+sed -bi "/^setup.inf=1,,/s/^.*\$/$(stat -c '%n=1,,%s\r' setup.inf)/" setup.inf
+chmod 444 *
+cd ..
+zip -D -X -9 -k ../JWIN31$jWIN.ZIP $jtop/*
+cd ..
+ls -l JWIN31$jWIN.ZIP
+rm -rf mkw32
index 5707493..be05e77 100644 (file)
@@ -1,29 +1,33 @@
-# $MirOS: contrib/code/jupp/Makefile.am,v 1.10 2016/10/08 17:44:17 tg Exp $
+# $MirOS: contrib/code/jupp/Makefile.am,v 1.15 2016/10/30 02:21:05 tg Exp $
 
 AUTOMAKE_OPTIONS = foreign
 
-EXTRA_DIST = COPYING INFO LIST NEWS README README.cvs TODO docs/help-system.html \
-       joerc.in jmacsrc.in jstarrc.in rjoerc.in jpicorc.in jupprc \
-       joe.1.in dir.c syntax/c.jsf.in syntax/perl.jsf.in syntax/verilog.jsf.in \
-       syntax/conf.jsf.in syntax/python.jsf.in syntax/php.jsf.in syntax/sh.jsf.in \
-       syntax/pascal.jsf.in syntax/html.jsf.in syntax/vhdl.jsf.in syntax/fortran.jsf.in \
-       syntax/java.jsf.in syntax/xml.jsf.in syntax/tcl.jsf.in charmaps/klingon.in docs HINTS \
-       syntax/lisp.jsf.in syntax/csh.jsf.in syntax/mail.jsf.in syntax/mason.jsf.in \
-       syntax/diff.jsf.in syntax/asm.jsf.in syntax/tex.jsf.in
+EXTRA_DIST = \
+       COPYING HINTS INFO LIST NEWS README README.cvs TODO dir.c \
+       win32.c jmacsrc.in joe.1.in joerc.in jpicorc.in jstarrc.in \
+       jupprc rjoerc.in charmaps/klingon.in docs/help-system.html \
+       syntax/asm.jsf.in syntax/c.jsf.in syntax/conf.jsf.in \
+       syntax/csh.jsf.in syntax/diff.jsf.in syntax/fortran.jsf.in \
+       syntax/html.jsf.in syntax/java.jsf.in syntax/lisp.jsf.in \
+       syntax/mail.jsf.in syntax/mason.jsf.in syntax/pascal.jsf.in \
+       syntax/perl.jsf.in syntax/php.jsf.in syntax/python.jsf.in \
+       syntax/sh.jsf.in syntax/tcl.jsf.in syntax/tex.jsf.in \
+       syntax/verilog.jsf.in syntax/vhdl.jsf.in syntax/xml.jsf.in
 
 JOE_ALIASES = jmacs jpico jstar jupp rjoe
 
 sysconfjoesubdir = @sysconfjoesubdir@
 sysconf_joedir = $(sysconfdir)$(sysconfjoesubdir)
-sysconf_joe_DATA = joerc jmacsrc jstarrc rjoerc jpicorc jupprc
+sysconf_joe_DATA = jmacsrc joerc jpicorc jstarrc jupprc rjoerc
 
 sysconf_syntaxdir = $(sysconf_joedir)/syntax
-sysconf_syntax_DATA = syntax/c.jsf syntax/perl.jsf syntax/verilog.jsf \
-       syntax/conf.jsf syntax/python.jsf syntax/php.jsf syntax/sh.jsf \
-       syntax/mail.jsf syntax/pascal.jsf syntax/html.jsf syntax/vhdl.jsf \
-       syntax/fortran.jsf syntax/java.jsf syntax/xml.jsf syntax/tcl.jsf \
-       syntax/lisp.jsf syntax/csh.jsf syntax/mason.jsf syntax/diff.jsf \
-       syntax/asm.jsf syntax/tex.jsf
+sysconf_syntax_DATA = \
+       syntax/asm.jsf syntax/c.jsf syntax/conf.jsf syntax/csh.jsf \
+       syntax/diff.jsf syntax/fortran.jsf syntax/html.jsf \
+       syntax/java.jsf syntax/lisp.jsf syntax/mail.jsf syntax/mason.jsf \
+       syntax/pascal.jsf syntax/perl.jsf syntax/php.jsf \
+       syntax/python.jsf syntax/sh.jsf syntax/tcl.jsf syntax/tex.jsf \
+       syntax/verilog.jsf syntax/vhdl.jsf syntax/xml.jsf
 
 sysconf_charmapsdir = $(sysconf_joedir)/charmaps
 sysconf_charmaps_DATA = charmaps/klingon
@@ -41,18 +45,39 @@ if WANT_TERMIDX
 bin_PROGRAMS += termidx
 endif
 
-INCLUDES = -DJOERC="\"$(sysconf_joedir)/\""
+if JUPP_WIN32RELOC
+joe_WIN32_SRCS = win32.c
+joe_WIN32_DEFS = -DJUPP_WIN32RELOC=1 -UJOERC
+else
+joe_WIN32_SRCS = # nothing
+joe_WIN32_DEFS = -DJUPP_WIN32RELOC=0 -DJOERC="\"$(sysconf_joedir)/\""
+endif
+
+INCLUDES = $(joe_WIN32_DEFS)
 
 # joe_LDADD = @REQRD_LIBS@
 
-joe_SOURCES = b.c blocks.c bw.c cmd.c hash.c help.c kbd.c macro.c main.c menu.c \
-       path.c poshist.c pw.c queue.c qw.c rc.c regex.c scrn.c tab.c termcap.c \
-       tty.c tw.c ublock.c uedit.c uerror.c ufile.c uformat.c uisrch.c umath.c \
-       undo.c usearch.c ushell.c utag.c va.c vfile.c vs.c w.c utils.c syntax.c \
-       utf8.c selinux.c i18n.c charmap.c builtin.c builtins.c compat.c
+joe_SOURCES = \
+       b.c blocks.c builtin.c builtins.c bw.c charmap.c cmd.c compat.c \
+       hash.c help.c i18n.c kbd.c macro.c main.c menu.c path.c \
+       poshist.c pw.c queue.c qw.c rc.c regex.c scrn.c selinux.c \
+       syntax.c tab.c termcap.c tty.c tw.c ublock.c uedit.c uerror.c \
+       ufile.c uformat.c uisrch.c umath.c undo.c usearch.c ushell.c \
+       utag.c utf8.c utils.c va.c vfile.c vs.c w.c $(joe_WIN32_SRCS)
 
 termidx_SOURCES = termidx.c
 
+man_joeinitfile=@joeinitfile@
+man_joeresides=@joeresides@
+man_joeinitcopy=@joeinitcopy@
+joe.1: joe.1.in
+       sed \
+           -e 's!@''joeinitfile''@!$(man_joeinitfile)!g' \
+           -e 's!@''joeresides''@!$(man_joeresides)!g' \
+           -e 's!@''joeinitcopy''@!$(man_joeinitcopy)!g' \
+           <$? >$@~
+       mv -f $@~ $@
+
 install-exec-hook:
        cd $(DESTDIR)$(bindir) && for i in $(JOE_ALIASES); do \
                rm -f $$i; \
index 08e0f3d..9c434e1 100644 (file)
@@ -1,10 +1,10 @@
-# $MirOS: contrib/code/jupp/Makefile.bsd-wrapper,v 1.5 2016/10/08 17:44:17 tg Exp $
+# $MirOS: contrib/code/jupp/Makefile.bsd-wrapper,v 1.9 2016/10/30 00:04:18 tg Exp $
 #-
 # make -f Makefile.bsd-wrapper CFPREFIX=/usr/mpkg sysconfjoesubdir=/joe
 
 MAN=           joe.1
 INST_TARGET=   INSTALL_MAN= install
-CLEANFILES+=   .deps charmaps syntax joe.txt{,~}
+CLEANFILES+=   .deps charmap charmaps syntax joe.1 joe.txt{,~} jupp
 
 CFPREFIX?=     /usr/local
 .if ${CFPREFIX} == "/usr"
@@ -22,7 +22,7 @@ CFARGS+=      --prefix=${CFPREFIX:Q} \
                --enable-sysconfjoesubdir=${sysconfjoesubdir:Q}
 
 .ifmake winman
-CFARGS+=       --enable-win32reloc=old
+CFARGS+=       --enable-win32reloc
 .endif
 
 .include <bsd.own.mk>
@@ -37,6 +37,11 @@ COPTS+=              -Wno-unused-parameter \
 .endif
 
 joe.1: config.status
+       cd ${FSFOBJDIR} && ${FSFMAKE} $@
+
+all: jupplink
+jupplink: config.status
+       @ln -sf joe jupp
 
 winman: joe.1
        nrcon -mandoc joe.1 | col -bx >joe.txt~
index b369813..b3bcd71 100644 (file)
@@ -14,8 +14,8 @@
 
 @SET_MAKE@
 
-# $MirOS: contrib/code/jupp/Makefile.in,v 1.13 2016/10/08 17:56:32 tg Exp $
-# $miros: contrib/code/jupp/Makefile.am,v 1.10 2016/10/08 17:44:17 tg Exp $
+# $MirOS: contrib/code/jupp/Makefile.in,v 1.15 2016/10/30 02:50:04 tg Exp $
+# $miros: contrib/code/jupp/Makefile.am,v 1.15 2016/10/30 02:21:05 tg Exp $
 
 
 
@@ -47,11 +47,10 @@ bin_PROGRAMS = joe$(EXEEXT) $(am__EXEEXT_1)
 DIST_COMMON = README $(am__configure_deps) $(noinst_HEADERS) \
        $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
        $(srcdir)/autoconf.h.in $(srcdir)/jmacsrc.in \
-       $(srcdir)/joe.1.in $(srcdir)/joerc.in $(srcdir)/jpicorc.in \
-       $(srcdir)/jstarrc.in $(srcdir)/rjoerc.in \
-       $(top_srcdir)/charmaps/klingon.in $(top_srcdir)/configure \
-       $(top_srcdir)/syntax/asm.jsf.in $(top_srcdir)/syntax/c.jsf.in \
-       $(top_srcdir)/syntax/conf.jsf.in \
+       $(srcdir)/joerc.in $(srcdir)/jpicorc.in $(srcdir)/jstarrc.in \
+       $(srcdir)/rjoerc.in $(top_srcdir)/charmaps/klingon.in \
+       $(top_srcdir)/configure $(top_srcdir)/syntax/asm.jsf.in \
+       $(top_srcdir)/syntax/c.jsf.in $(top_srcdir)/syntax/conf.jsf.in \
        $(top_srcdir)/syntax/csh.jsf.in \
        $(top_srcdir)/syntax/diff.jsf.in \
        $(top_srcdir)/syntax/fortran.jsf.in \
@@ -81,8 +80,8 @@ am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
  configure.lineno configure.status.lineno
 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
 CONFIG_HEADER = autoconf.h
-CONFIG_CLEAN_FILES = joe.1 joerc jmacsrc jstarrc rjoerc jpicorc \
-       syntax/c.jsf syntax/perl.jsf syntax/verilog.jsf syntax/sh.jsf \
+CONFIG_CLEAN_FILES = joerc jmacsrc jstarrc rjoerc jpicorc syntax/c.jsf \
+       syntax/perl.jsf syntax/verilog.jsf syntax/sh.jsf \
        syntax/python.jsf syntax/conf.jsf syntax/php.jsf \
        syntax/mail.jsf syntax/pascal.jsf syntax/html.jsf \
        syntax/vhdl.jsf syntax/fortran.jsf syntax/java.jsf \
@@ -95,19 +94,28 @@ am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" \
        "$(DESTDIR)$(sysconf_joedir)" "$(DESTDIR)$(sysconf_syntaxdir)"
 binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
 PROGRAMS = $(bin_PROGRAMS)
-am_joe_OBJECTS = b.$(OBJEXT) blocks.$(OBJEXT) bw.$(OBJEXT) \
-       cmd.$(OBJEXT) hash.$(OBJEXT) help.$(OBJEXT) kbd.$(OBJEXT) \
-       macro.$(OBJEXT) main.$(OBJEXT) menu.$(OBJEXT) path.$(OBJEXT) \
-       poshist.$(OBJEXT) pw.$(OBJEXT) queue.$(OBJEXT) qw.$(OBJEXT) \
-       rc.$(OBJEXT) regex.$(OBJEXT) scrn.$(OBJEXT) tab.$(OBJEXT) \
-       termcap.$(OBJEXT) tty.$(OBJEXT) tw.$(OBJEXT) ublock.$(OBJEXT) \
-       uedit.$(OBJEXT) uerror.$(OBJEXT) ufile.$(OBJEXT) \
-       uformat.$(OBJEXT) uisrch.$(OBJEXT) umath.$(OBJEXT) \
-       undo.$(OBJEXT) usearch.$(OBJEXT) ushell.$(OBJEXT) \
-       utag.$(OBJEXT) va.$(OBJEXT) vfile.$(OBJEXT) vs.$(OBJEXT) \
-       w.$(OBJEXT) utils.$(OBJEXT) syntax.$(OBJEXT) utf8.$(OBJEXT) \
-       selinux.$(OBJEXT) i18n.$(OBJEXT) charmap.$(OBJEXT) \
-       builtin.$(OBJEXT) builtins.$(OBJEXT) compat.$(OBJEXT)
+am__joe_SOURCES_DIST = b.c blocks.c builtin.c builtins.c bw.c \
+       charmap.c cmd.c compat.c hash.c help.c i18n.c kbd.c macro.c \
+       main.c menu.c path.c poshist.c pw.c queue.c qw.c rc.c regex.c \
+       scrn.c selinux.c syntax.c tab.c termcap.c tty.c tw.c ublock.c \
+       uedit.c uerror.c ufile.c uformat.c uisrch.c umath.c undo.c \
+       usearch.c ushell.c utag.c utf8.c utils.c va.c vfile.c vs.c w.c \
+       win32.c
+@JUPP_WIN32RELOC_TRUE@am__objects_1 = win32.$(OBJEXT)
+am_joe_OBJECTS = b.$(OBJEXT) blocks.$(OBJEXT) builtin.$(OBJEXT) \
+       builtins.$(OBJEXT) bw.$(OBJEXT) charmap.$(OBJEXT) \
+       cmd.$(OBJEXT) compat.$(OBJEXT) hash.$(OBJEXT) help.$(OBJEXT) \
+       i18n.$(OBJEXT) kbd.$(OBJEXT) macro.$(OBJEXT) main.$(OBJEXT) \
+       menu.$(OBJEXT) path.$(OBJEXT) poshist.$(OBJEXT) pw.$(OBJEXT) \
+       queue.$(OBJEXT) qw.$(OBJEXT) rc.$(OBJEXT) regex.$(OBJEXT) \
+       scrn.$(OBJEXT) selinux.$(OBJEXT) syntax.$(OBJEXT) \
+       tab.$(OBJEXT) termcap.$(OBJEXT) tty.$(OBJEXT) tw.$(OBJEXT) \
+       ublock.$(OBJEXT) uedit.$(OBJEXT) uerror.$(OBJEXT) \
+       ufile.$(OBJEXT) uformat.$(OBJEXT) uisrch.$(OBJEXT) \
+       umath.$(OBJEXT) undo.$(OBJEXT) usearch.$(OBJEXT) \
+       ushell.$(OBJEXT) utag.$(OBJEXT) utf8.$(OBJEXT) utils.$(OBJEXT) \
+       va.$(OBJEXT) vfile.$(OBJEXT) vs.$(OBJEXT) w.$(OBJEXT) \
+       $(am__objects_1)
 joe_OBJECTS = $(am_joe_OBJECTS)
 joe_LDADD = $(LDADD)
 am_termidx_OBJECTS = termidx.$(OBJEXT)
@@ -121,7 +129,7 @@ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 CCLD = $(CC)
 LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
 SOURCES = $(joe_SOURCES) $(termidx_SOURCES)
-DIST_SOURCES = $(joe_SOURCES) $(termidx_SOURCES)
+DIST_SOURCES = $(am__joe_SOURCES_DIST) $(termidx_SOURCES)
 man1dir = $(mandir)/man1
 INSTALL_MAN_AM = install-man
 NROFF = nroff
@@ -177,6 +185,8 @@ INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JUPP_WIN32RELOC_FALSE = @JUPP_WIN32RELOC_FALSE@
+JUPP_WIN32RELOC_TRUE = @JUPP_WIN32RELOC_TRUE@
 LDFLAGS = @LDFLAGS@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
@@ -255,25 +265,29 @@ target_cpu = @target_cpu@
 target_os = @target_os@
 target_vendor = @target_vendor@
 AUTOMAKE_OPTIONS = foreign
-EXTRA_DIST = COPYING INFO LIST NEWS README README.cvs TODO docs/help-system.html \
-       joerc.in jmacsrc.in jstarrc.in rjoerc.in jpicorc.in jupprc \
-       joe.1.in dir.c syntax/c.jsf.in syntax/perl.jsf.in syntax/verilog.jsf.in \
-       syntax/conf.jsf.in syntax/python.jsf.in syntax/php.jsf.in syntax/sh.jsf.in \
-       syntax/pascal.jsf.in syntax/html.jsf.in syntax/vhdl.jsf.in syntax/fortran.jsf.in \
-       syntax/java.jsf.in syntax/xml.jsf.in syntax/tcl.jsf.in charmaps/klingon.in docs HINTS \
-       syntax/lisp.jsf.in syntax/csh.jsf.in syntax/mail.jsf.in syntax/mason.jsf.in \
-       syntax/diff.jsf.in syntax/asm.jsf.in syntax/tex.jsf.in
+EXTRA_DIST = \
+       COPYING HINTS INFO LIST NEWS README README.cvs TODO dir.c \
+       win32.c jmacsrc.in joe.1.in joerc.in jpicorc.in jstarrc.in \
+       jupprc rjoerc.in charmaps/klingon.in docs/help-system.html \
+       syntax/asm.jsf.in syntax/c.jsf.in syntax/conf.jsf.in \
+       syntax/csh.jsf.in syntax/diff.jsf.in syntax/fortran.jsf.in \
+       syntax/html.jsf.in syntax/java.jsf.in syntax/lisp.jsf.in \
+       syntax/mail.jsf.in syntax/mason.jsf.in syntax/pascal.jsf.in \
+       syntax/perl.jsf.in syntax/php.jsf.in syntax/python.jsf.in \
+       syntax/sh.jsf.in syntax/tcl.jsf.in syntax/tex.jsf.in \
+       syntax/verilog.jsf.in syntax/vhdl.jsf.in syntax/xml.jsf.in
 
 JOE_ALIASES = jmacs jpico jstar jupp rjoe
 sysconf_joedir = $(sysconfdir)$(sysconfjoesubdir)
-sysconf_joe_DATA = joerc jmacsrc jstarrc rjoerc jpicorc jupprc
+sysconf_joe_DATA = jmacsrc joerc jpicorc jstarrc jupprc rjoerc
 sysconf_syntaxdir = $(sysconf_joedir)/syntax
-sysconf_syntax_DATA = syntax/c.jsf syntax/perl.jsf syntax/verilog.jsf \
-       syntax/conf.jsf syntax/python.jsf syntax/php.jsf syntax/sh.jsf \
-       syntax/mail.jsf syntax/pascal.jsf syntax/html.jsf syntax/vhdl.jsf \
-       syntax/fortran.jsf syntax/java.jsf syntax/xml.jsf syntax/tcl.jsf \
-       syntax/lisp.jsf syntax/csh.jsf syntax/mason.jsf syntax/diff.jsf \
-       syntax/asm.jsf syntax/tex.jsf
+sysconf_syntax_DATA = \
+       syntax/asm.jsf syntax/c.jsf syntax/conf.jsf syntax/csh.jsf \
+       syntax/diff.jsf syntax/fortran.jsf syntax/html.jsf \
+       syntax/java.jsf syntax/lisp.jsf syntax/mail.jsf syntax/mason.jsf \
+       syntax/pascal.jsf syntax/perl.jsf syntax/php.jsf \
+       syntax/python.jsf syntax/sh.jsf syntax/tcl.jsf syntax/tex.jsf \
+       syntax/verilog.jsf syntax/vhdl.jsf syntax/xml.jsf
 
 sysconf_charmapsdir = $(sysconf_joedir)/charmaps
 sysconf_charmaps_DATA = charmaps/klingon
@@ -284,16 +298,25 @@ noinst_HEADERS = b.h blocks.h bw.h cmd.h config.h hash.h help.h kbd.h \
        ufile.h uformat.h uisrch.h umath.h undo.h usearch.h ushell.h utag.h \
        utils.h va.h vfile.h vs.h w.h utf8.h syntax.h i18n.h charmap.h builtin.h
 
-INCLUDES = -DJOERC="\"$(sysconf_joedir)/\""
+@JUPP_WIN32RELOC_FALSE@joe_WIN32_SRCS = # nothing
+@JUPP_WIN32RELOC_TRUE@joe_WIN32_SRCS = win32.c
+@JUPP_WIN32RELOC_FALSE@joe_WIN32_DEFS = -DJUPP_WIN32RELOC=0 -DJOERC="\"$(sysconf_joedir)/\""
+@JUPP_WIN32RELOC_TRUE@joe_WIN32_DEFS = -DJUPP_WIN32RELOC=1 -UJOERC
+INCLUDES = $(joe_WIN32_DEFS)
 
 # joe_LDADD = @REQRD_LIBS@
-joe_SOURCES = b.c blocks.c bw.c cmd.c hash.c help.c kbd.c macro.c main.c menu.c \
-       path.c poshist.c pw.c queue.c qw.c rc.c regex.c scrn.c tab.c termcap.c \
-       tty.c tw.c ublock.c uedit.c uerror.c ufile.c uformat.c uisrch.c umath.c \
-       undo.c usearch.c ushell.c utag.c va.c vfile.c vs.c w.c utils.c syntax.c \
-       utf8.c selinux.c i18n.c charmap.c builtin.c builtins.c compat.c
+joe_SOURCES = \
+       b.c blocks.c builtin.c builtins.c bw.c charmap.c cmd.c compat.c \
+       hash.c help.c i18n.c kbd.c macro.c main.c menu.c path.c \
+       poshist.c pw.c queue.c qw.c rc.c regex.c scrn.c selinux.c \
+       syntax.c tab.c termcap.c tty.c tw.c ublock.c uedit.c uerror.c \
+       ufile.c uformat.c uisrch.c umath.c undo.c usearch.c ushell.c \
+       utag.c utf8.c utils.c va.c vfile.c vs.c w.c $(joe_WIN32_SRCS)
 
 termidx_SOURCES = termidx.c
+man_joeinitfile = @joeinitfile@
+man_joeresides = @joeresides@
+man_joeinitcopy = @joeinitcopy@
 all: autoconf.h
        $(MAKE) $(AM_MAKEFLAGS) all-am
 
@@ -349,8 +372,6 @@ $(srcdir)/autoconf.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 
 distclean-hdr:
        -rm -f autoconf.h stamp-h1
-joe.1: $(top_builddir)/config.status $(srcdir)/joe.1.in
-       cd $(top_builddir) && $(SHELL) ./config.status $@
 joerc: $(top_builddir)/config.status $(srcdir)/joerc.in
        cd $(top_builddir) && $(SHELL) ./config.status $@
 jmacsrc: $(top_builddir)/config.status $(srcdir)/jmacsrc.in
@@ -488,6 +509,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vfile.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vs.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/w.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/win32.Po@am__quote@
 
 .c.o:
 @am__fastdepCC_TRUE@   if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
@@ -882,6 +904,13 @@ uninstall-man: uninstall-man1
        uninstall-sysconf_charmapsDATA uninstall-sysconf_joeDATA \
        uninstall-sysconf_syntaxDATA
 
+joe.1: joe.1.in
+       sed \
+           -e 's!@''joeinitfile''@!$(man_joeinitfile)!g' \
+           -e 's!@''joeresides''@!$(man_joeresides)!g' \
+           -e 's!@''joeinitcopy''@!$(man_joeinitcopy)!g' \
+           <$? >$@~
+       mv -f $@~ $@
 
 install-exec-hook:
        cd $(DESTDIR)$(bindir) && for i in $(JOE_ALIASES); do \
diff --git a/NEWS b/NEWS
index 056b112..e1be451 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,9 +1,8 @@
-$MirOS: contrib/code/jupp/NEWS,v 1.103 2016/10/08 17:44:17 tg Exp $
+$MirOS: contrib/code/jupp/NEWS,v 1.104 2016/10/30 00:19:42 tg Exp $
 -------------------------------------------------------------------
 
-JUPP-current
+JOE 3.1jupp29
 
-- …
 - Update internationalisation data to Unicode 9.0.0
 - Bind execmd in jstarrc, so all flavours bind it
 - Fix paths in joe(1) manpage
@@ -15,6 +14,13 @@ JUPP-current
 - Unbreak tab-completing filenames with spaces
 - Fix filenames with backslashes
 - configure --enable-sysconfjoesubdir to also get the manual page
+- Apply fixes from lintian, thank you!
+- Only look in JOERC/termcap if its path does not include a delimiter
+- Allow overriding the name of the built-in *jupprc (to *jupp32rc,
+  so the jupp32 build can use the pristine source)
+- Add win32 self-relocation, no hardcoded JOERC any more, optional
+  (used in the jupp32 portable build but NOT for the Cygwin package!)
+- Fix generating the manpage, now done by the Makefile
 
 JOE 3.1jupp28
 
diff --git a/TODO b/TODO
index 0f5e72d..7f65ec4 100644 (file)
--- a/TODO
+++ b/TODO
@@ -470,7 +470,7 @@ regex: character classes? a-z matches any letter?
 New features:
 -----------------------
 
-  move *rc files to .etc/joe directory?
+  move *rc files to .etc/joe directory? Or XDG, see below.
 
   check all instances of 'chars': use unicode to locale symbols instead.
   EBCDIC ?
@@ -508,8 +508,6 @@ Refactoring
 Syntax Highlighting:
 --------------------
 
-UTF-8 syntax files?
-
 Support for more languages:
 
  Paragraph reformat mode for TeX files.
@@ -650,9 +648,7 @@ Other requests:
 │ jupp TODO │
 └───────────┘
 
-• do not let configure handle expansion for the manpage,
-  currently @joeresides@ expands to ${exec_prefix}/bin
-  (unexpanded); a Makefile can correct that
+• replace all int with size_t where applicable
 • merge syntax handling code from joe-3.7+
 • merge math from joe-3.7+
 • add group support to regex code
@@ -661,8 +657,8 @@ Other requests:
 • use mirkev (better code for hashtables)
 • attach labels to ftypes; allow ftypes to inherit from these
   labels, instead of fdefault; add UI to apply an ftype, including
-  fdefault, to the current buffer
-• regex needs groups
+  fdefault, to the current buffer (requested by Wayne Cuddy)
+• regex needs groups like 「\+\(foo\)」
 • bracketed paste mode should disable autoindent, wordwrap,
   updating the status line, …(?) ⇐ implemented using a “paste”
   labeled ftype that is switched to using the UI (command)
@@ -671,7 +667,18 @@ Other requests:
   it must be disabled by default like mksh’s HISTFILE is:
   18:48⎜«asarch» That would be for a wish list then: to keep the
        ⎜    list of all opened files with their last position
+  Natureshadow agrees with me that this is a JOE antifeature
+• ANSI syntax highlighting; auto-turn it on in shell windows (‽)
+• proper redraw for lines that had combining characters in them
+• add a soft line break flag: display as line-wrapped, do not
+  save any newlines introduced by that
+• put all configuration files into /usr/share, allow the user
+  to override all of them (not just the rc files) from their
+  home directory (XDG config dirs)
+• rc.c: struct glopts.set (int*) violates the strict aliasing
+  rule as it’s treated as (unsigned char *) for type 2 (global
+  option string), consider a union instead (check local types!)
 • …
 
 __________________________________________________________________
-$MirOS: contrib/code/jupp/TODO,v 1.26 2016/10/08 19:28:44 tg Exp $
+$MirOS: contrib/code/jupp/TODO,v 1.29 2016/10/30 02:46:25 tg Exp $
index d0cbc7c..b8b00fe 100644 (file)
 
 #include "types.h"
 
+#ifndef JUPPRC_BUILTIN_NAME
+#define JUPPRC_BUILTIN_NAME "jupprc"
+#endif
+
 const unsigned char * const builtins[] = {
-       US "jupprc", US
+       US JUPPRC_BUILTIN_NAME, US
                "-asis\n"
                "-assume_color\n"
                "-dopadding\n"
@@ -538,5 +542,5 @@ const unsigned char * const builtins[] = {
                ":querysr\n"
                "type           ^@ TO \xFF\n"
 ,      NULL
-,      "@(#) $MirOS: contrib/code/jupp/builtins.c,v 1.22 2016/10/08 17:56:33 tg Exp $"
+,      "@(#) $MirOS: contrib/code/jupp/builtins.c,v 1.23 2016/10/29 21:42:56 tg Exp $"
 };
index 3cb2ff8..571bba2 100644 (file)
--- a/charmap.c
+++ b/charmap.c
@@ -1,7 +1,7 @@
 #if 0
 .if "0" == "1"
 #endif
-/* $MirOS: contrib/code/jupp/charmap.c,v 1.15 2014/10/23 17:10:44 tg Exp $ */
+/* $MirOS: contrib/code/jupp/charmap.c,v 1.16 2016/10/29 23:44:44 tg Exp $ */
 /*
  *     UNICODE/ISO-10646 conversion utilities
  *     Copyright
@@ -1378,9 +1378,9 @@ find_charmap(const unsigned char *name)
        }
 
        /* Check JOERCcharmaps */
-       if (!f) {
+       if (!f && has_JOERC) {
                joe_snprintf_2((char *)buf, sizeof(buf),
-                   "%scharmaps/%s", JOERC, name);
+                   "%scharmaps/%s", get_JOERC, name);
                f = fopen((char *)buf, "r");
        }
 
@@ -1466,7 +1466,7 @@ get_encodings(void)
                }
        }
 
-       if (!chpwd(US (JOERC "charmaps")) && (t = rexpnd(US "*"))) {
+       if (!chJpwd(US ("charmaps")) && (t = rexpnd(US "*"))) {
                for (x = 0; x != aLEN(t); ++x)
                        if (strcmp(t[x], "..")) {
                                for (y = 0; y != aLEN(encodings); ++y)
@@ -1517,7 +1517,7 @@ SRCS=             charmap.c
 SRCS+=         i18n.c path.c utf8.c utils.c va.c vs.c
 NOMAN=         Yes
 CPPFLAGS+=     -DTEST -DTEST_CHARMAP
-CPPFLAGS+=     -D'JOERC="/etc/joe"'
+CPPFLAGS+=     -DJUPP_WIN32RELOC=0 -DJOERC=\"/etc/joe\"
 
 .include <bsd.own.mk>
 
index 80d2df6..ed75ec9 100644 (file)
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.61-MirPorts-1 for joe 3.1jupp29~pre1.
+# Generated by GNU Autoconf 2.61-MirPorts-1 for joe 3.1jupp29.
 #
 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
 # 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
@@ -572,8 +572,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
 # Identity of this package.
 PACKAGE_NAME='joe'
 PACKAGE_TARNAME='joe'
-PACKAGE_VERSION='3.1jupp29~pre1'
-PACKAGE_STRING='joe 3.1jupp29~pre1'
+PACKAGE_VERSION='3.1jupp29'
+PACKAGE_STRING='joe 3.1jupp29'
 PACKAGE_BUGREPORT=''
 
 ac_unique_file="b.c"
@@ -709,6 +709,8 @@ LN_S
 WANT_TERMIDX_TRUE
 WANT_TERMIDX_FALSE
 sysconfjoesubdir
+JUPP_WIN32RELOC_TRUE
+JUPP_WIN32RELOC_FALSE
 joeinitfile
 joeinitcopy
 joeresides
@@ -1229,7 +1231,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures joe 3.1jupp29~pre1 to adapt to many kinds of systems.
+\`configure' configures joe 3.1jupp29 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1300,7 +1302,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of joe 3.1jupp29~pre1:";;
+     short | recursive ) echo "Configuration of joe 3.1jupp29:";;
    esac
   cat <<\_ACEOF
 
@@ -1393,7 +1395,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-joe configure 3.1jupp29~pre1
+joe configure 3.1jupp29
 generated by GNU Autoconf 2.61-MirPorts-1
 
 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1407,7 +1409,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by joe $as_me 3.1jupp29~pre1, which was
+It was created by joe $as_me 3.1jupp29, which was
 generated by GNU Autoconf 2.61-MirPorts-1.  Invocation command line was
 
   $ $0 $@
@@ -2208,7 +2210,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='joe'
- VERSION='3.1jupp29~pre1'
+ VERSION='3.1jupp29'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -4510,25 +4512,34 @@ fi
 if test "${enable_win32reloc+set}" = set; then
   enableval=$enable_win32reloc; win32reloc=$enableval
 else
-  win32reloc=auto
+  win32reloc=no
+fi
+
+
+
+if test x"$win32reloc" = x"yes"; then
+  JUPP_WIN32RELOC_TRUE=
+  JUPP_WIN32RELOC_FALSE='#'
+else
+  JUPP_WIN32RELOC_TRUE='#'
+  JUPP_WIN32RELOC_FALSE=
 fi
 
-test x"$win32reloc" = x"old" || win32reloc=no # currently not implemented
 if test x"$win32reloc" = x"yes"; then
-       joeinitfile='\fBjoerc\fR in the same directory as the binary resides in'
+       joeinitfile='\\fBjoerc\\fR in the same directory as the binary resides in'
        joeinitcopy='which resides in the same directory as the binary'
-       joeresides='C:\eProgram\ Files\ejupp32\ejoe.exe'
+       joeresides='C:\\eProgramme\\ejupp32\\ejoe.exe'
        jrcbefore=''
        jrcafter=' in the same directory as the binary'
 elif test x"$win32reloc" = x"old"; then
-       joeinitfile='\fBc:/windows/system32/joe/joerc\fR'
-       joeinitcopy='which resides in \fBc:/windows/system32/joe/joerc\fR'
+       joeinitfile='\\fBc:/windows/system32/joe/joerc\\fR'
+       joeinitcopy='which resides in \\fBc:/windows/system32/joe/joerc\\fR'
        joeresides='c:/windows/system32/joe.exe'
        jrcbefore='c:/windows/system32/joe/'
        jrcafter=''
 else
-       joeinitfile='usually \fB'$sysconfdir$sysconfjoesubdir'/joerc\fR'
-       joeinitcopy='which normally resides in \fB'$sysconfdir$sysconfjoesubdir'/joerc\fR'
+       joeinitfile='usually \\fB'$sysconfdir$sysconfjoesubdir'/joerc\\fR'
+       joeinitcopy='which normally resides in \\fB'$sysconfdir$sysconfjoesubdir'/joerc\\fR'
        joeresides=$bindir'/joe'
        jrcbefore=$sysconfdir$sysconfjoesubdir/
        jrcafter=''
@@ -10537,7 +10548,7 @@ fi
 
 
 
-ac_config_files="$ac_config_files Makefile joe.1 joerc jmacsrc jstarrc rjoerc jpicorc syntax/c.jsf syntax/perl.jsf syntax/verilog.jsf syntax/sh.jsf syntax/python.jsf syntax/conf.jsf syntax/php.jsf syntax/mail.jsf syntax/pascal.jsf syntax/html.jsf syntax/vhdl.jsf syntax/fortran.jsf syntax/java.jsf syntax/xml.jsf syntax/tcl.jsf charmaps/klingon syntax/lisp.jsf syntax/csh.jsf syntax/mason.jsf syntax/diff.jsf syntax/asm.jsf syntax/tex.jsf"
+ac_config_files="$ac_config_files Makefile joerc jmacsrc jstarrc rjoerc jpicorc syntax/c.jsf syntax/perl.jsf syntax/verilog.jsf syntax/sh.jsf syntax/python.jsf syntax/conf.jsf syntax/php.jsf syntax/mail.jsf syntax/pascal.jsf syntax/html.jsf syntax/vhdl.jsf syntax/fortran.jsf syntax/java.jsf syntax/xml.jsf syntax/tcl.jsf charmaps/klingon syntax/lisp.jsf syntax/csh.jsf syntax/mason.jsf syntax/diff.jsf syntax/asm.jsf syntax/tex.jsf"
 
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
@@ -10663,6 +10674,13 @@ echo "$as_me: error: conditional \"WANT_TERMIDX\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
+if test -z "${JUPP_WIN32RELOC_TRUE}" && test -z "${JUPP_WIN32RELOC_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"JUPP_WIN32RELOC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"JUPP_WIN32RELOC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
 
 : ${CONFIG_STATUS=./config.status}
 ac_clean_files_save=$ac_clean_files
@@ -10963,7 +10981,7 @@ exec 6>&1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by joe $as_me 3.1jupp29~pre1, which was
+This file was extended by joe $as_me 3.1jupp29, which was
 generated by GNU Autoconf 2.61-MirPorts-1.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -11016,7 +11034,7 @@ Report bugs to <bug-autoconf@gnu.org>."
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF
 ac_cs_version="\\
-joe config.status 3.1jupp29~pre1
+joe config.status 3.1jupp29
 configured by $0, generated by GNU Autoconf 2.61-MirPorts-1,
   with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
 
@@ -11132,7 +11150,6 @@ do
     "autoconf.h") CONFIG_HEADERS="$CONFIG_HEADERS autoconf.h" ;;
     "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
     "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
-    "joe.1") CONFIG_FILES="$CONFIG_FILES joe.1" ;;
     "joerc") CONFIG_FILES="$CONFIG_FILES joerc" ;;
     "jmacsrc") CONFIG_FILES="$CONFIG_FILES jmacsrc" ;;
     "jstarrc") CONFIG_FILES="$CONFIG_FILES jstarrc" ;;
@@ -11318,7 +11335,7 @@ LN_S!$LN_S$ac_delim
 WANT_TERMIDX_TRUE!$WANT_TERMIDX_TRUE$ac_delim
 WANT_TERMIDX_FALSE!$WANT_TERMIDX_FALSE$ac_delim
 sysconfjoesubdir!$sysconfjoesubdir$ac_delim
-joeinitfile!$joeinitfile$ac_delim
+JUPP_WIN32RELOC_TRUE!$JUPP_WIN32RELOC_TRUE$ac_delim
 _ACEOF
 
   if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
@@ -11360,6 +11377,8 @@ _ACEOF
 ac_delim='%!_!# '
 for ac_last_try in false false false false false :; do
   cat >conf$$subs.sed <<_ACEOF
+JUPP_WIN32RELOC_FALSE!$JUPP_WIN32RELOC_FALSE$ac_delim
+joeinitfile!$joeinitfile$ac_delim
 joeinitcopy!$joeinitcopy$ac_delim
 joeresides!$joeresides$ac_delim
 jrcbefore!$jrcbefore$ac_delim
@@ -11369,7 +11388,7 @@ SPELL!$SPELL$ac_delim
 LTLIBOBJS!$LTLIBOBJS$ac_delim
 _ACEOF
 
-  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 7; then
+  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 9; then
     break
   elif $ac_last_try; then
     { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
index 6a3ed47..a1da563 100644 (file)
@@ -1,4 +1,4 @@
-# $MirOS: contrib/code/jupp/configure.ac,v 1.48 2016/10/08 17:44:17 tg Exp $
+# $MirOS: contrib/code/jupp/configure.ac,v 1.52 2016/10/30 02:47:28 tg Exp $
 #-
 # Process this file with autoconf to produce a configure script.
 
@@ -6,7 +6,7 @@
 AC_PREREQ(2.54)
 
 #### Here's the only place where to change version number ####
-AC_INIT(joe, 3.1jupp29~pre1)
+AC_INIT(joe, 3.1jupp29)
 #### But see main.c for the Copyright (c) owner and year! ####
 AC_CONFIG_SRCDIR([b.c])
 
@@ -107,23 +107,23 @@ AC_SUBST(sysconfjoesubdir)
 
 AC_ARG_ENABLE([win32reloc],
 [  --enable-win32reloc     enable win32 self-relocation],
-       [win32reloc=$enableval], [win32reloc=auto])
-test x"$win32reloc" = x"old" || win32reloc=no # currently not implemented
+       [win32reloc=$enableval], [win32reloc=no])
+AM_CONDITIONAL([JUPP_WIN32RELOC], [test x"$win32reloc" = x"yes"])
 if test x"$win32reloc" = x"yes"; then
-       joeinitfile='\fBjoerc\fR in the same directory as the binary resides in'
+       joeinitfile='\\fBjoerc\\fR in the same directory as the binary resides in'
        joeinitcopy='which resides in the same directory as the binary'
-       joeresides='C:\eProgram\ Files\ejupp32\ejoe.exe'
+       joeresides='C:\\eProgramme\\ejupp32\\ejoe.exe'
        jrcbefore=''
        jrcafter=' in the same directory as the binary'
 elif test x"$win32reloc" = x"old"; then
-       joeinitfile='\fBc:/windows/system32/joe/joerc\fR'
-       joeinitcopy='which resides in \fBc:/windows/system32/joe/joerc\fR'
+       joeinitfile='\\fBc:/windows/system32/joe/joerc\\fR'
+       joeinitcopy='which resides in \\fBc:/windows/system32/joe/joerc\\fR'
        joeresides='c:/windows/system32/joe.exe'
        jrcbefore='c:/windows/system32/joe/'
        jrcafter=''
 else
-       joeinitfile='usually \fB'$sysconfdir$sysconfjoesubdir'/joerc\fR'
-       joeinitcopy='which normally resides in \fB'$sysconfdir$sysconfjoesubdir'/joerc\fR'
+       joeinitfile='usually \\fB'$sysconfdir$sysconfjoesubdir'/joerc\\fR'
+       joeinitcopy='which normally resides in \\fB'$sysconfdir$sysconfjoesubdir'/joerc\\fR'
        joeresides=$bindir'/joe'
        jrcbefore=$sysconfdir$sysconfjoesubdir/
        jrcafter=''
@@ -240,7 +240,7 @@ AH_VERBATIM([_PARAMS],[/* Check to see if we can use strict prototypes */
 # Check for programs..
 AC_CHECK_PROG(SPELL,aspell,aspell,ispell)
 
-AC_CONFIG_FILES([Makefile joe.1 joerc jmacsrc jstarrc rjoerc jpicorc
+AC_CONFIG_FILES([Makefile joerc jmacsrc jstarrc rjoerc jpicorc
 syntax/c.jsf syntax/perl.jsf syntax/verilog.jsf syntax/sh.jsf syntax/python.jsf
 syntax/conf.jsf syntax/php.jsf syntax/mail.jsf syntax/pascal.jsf syntax/html.jsf
 syntax/vhdl.jsf syntax/fortran.jsf syntax/java.jsf syntax/xml.jsf syntax/tcl.jsf
diff --git a/joe.txt b/joe.txt
index 10fa208..5cea0c7 100644 (file)
--- a/joe.txt
+++ b/joe.txt
@@ -40,12 +40,12 @@ Description
 \r
      JUPP is free software; you can distribute it and/or modify\r
      it under the terms of the GNU General Public License, Ver-\r
-     sion 1, as published by the Free Software Foundation. I have\r
-     no plans for turning JOE into a commercial or share-ware\r
-     product. See the source code for exact authorship and\r
-     licencing information. JOE is available over the Internet\r
-     from http://joe-editor.sf.net/. JUPP is available at\r
-     http://mirbsd.de/jupp.\r
+     sion 1, as published by the Free Software Foundation.\r
+     (main.c contains more detailled exceptions.) I have no plans\r
+     for turning JOE into a commercial or share-ware product. See\r
+     the source code for exact authorship and licencing informa-\r
+     tion. JOE is available over the Internet from http://joe-\r
+     editor.sf.net/. JUPP is available at http://mirbsd.de/jupp.\r
 \r
 Usage\r
      To start the editor, type joe followed by zero or more names\r
@@ -93,16 +93,16 @@ Usage
      H to dismiss the help window.\r
 \r
      You can customize the keyboard layout, the help screens and\r
-     a number of behavior defaults by copying JOE's initializa-\r
-     tion file (c:/windows/system32/joe/joerc) to .joerc in your\r
-     home directory and then by modifying it.  See the section\r
-     joerc below.\r
+     a number of behavior defaults by copying JOE's initialisa-\r
+     tion file (joerc in the same directory as the binary resides\r
+     in) to .joerc in your home directory and then by modifying\r
+     it. See the section joerc below.\r
 \r
      To have JOE used as your default editor for e-mail and News,\r
      you need to set the EDITOR and VISUAL environment variables\r
      in your shell initialization file (.cshrc or .profile) to\r
-     refer to JOE (joe resides as c:/windows/system32/joe.exe).\r
-\r
+     refer to JOE (the joe binary usually resides as\r
+     C:\Programme\jupp32\joe.exe).\r
      There are a number of other obscure invocation parameters\r
      which may have to be set, particularly if your terminal\r
      screen is not updating as you think it should.  See the sec-\r
@@ -190,7 +190,6 @@ Command Line Options
 \r
      -nobackups\r
           This option prevents backup files.\r
-\r
      -nonotice\r
           This option prevent the copyright notice from being\r
           displayed when the editor starts.\r
@@ -275,9 +274,9 @@ Command Line Options
 \r
      -keymap name\r
           Use an alternate section of the joerc file for the key\r
-          sequence bindings. For example, joe, jstar, rjoe and
-          jupp support -keymap cua to make ^Z, ^X, ^C and ^V do
-          the same thing as in contemporary GUI editors.
+          sequence bindings. For example, joe, jstar, rjoe and\r
+          jupp support -keymap cua to make ^Z, ^X, ^C and ^V do\r
+          the same thing as in contemporary GUI editors.\r
 \r
      These options can also be specified in the joerc file.  They\r
      can be set depending on the file-name extension.  Programs\r
@@ -376,7 +375,6 @@ Editing Tasks
      appended to the name, which contains the original version of\r
      the file.\r
 \r
-\r
      Word wrap and formatting\r
 \r
      If you type past the right edge of the screen in a C\r
@@ -408,7 +406,6 @@ Editing Tasks
      If you want to center a line within the margins, use the ^K\r
      A command.\r
 \r
-\r
      Over-type mode\r
 \r
      Sometimes it's tiresome to have to delete old text before or\r
@@ -427,7 +424,6 @@ Editing Tasks
      If you need to insert while you're in over-type mode, hit\r
      ^@.  This inserts a single SPACE into the text.\r
 \r
-\r
      Control and Meta characters\r
 \r
      Each character is represented by a number.  For example, the\r
@@ -456,9 +452,7 @@ Editing Tasks
      have to put the editor in ASIS mode (described later) to\r
      have these passed untranslated to the terminal.\r
 \r
-\r
      Prompts\r
-\r
      If you hit TAB at any file name prompt, joe will attempt to\r
      complete the name you entered as much as possible.  If it\r
      couldn't complete the entire name, because there are more\r
@@ -487,7 +481,6 @@ Editing Tasks
      Since prompts are windows, you can also switch out of them\r
      with ^K P and ^K N.\r
 \r
-\r
      Where am I?\r
 \r
      Hit ^K SPACE to have JOE report the line number, column\r
@@ -498,7 +491,6 @@ Editing Tasks
      setting placing the appropriate escape sequences in the\r
      status line setup strings.  Edit the joerc file for details.\r
 \r
-\r
      File operations\r
 \r
      You can hit ^K D to save the current file (possibly under a\r
@@ -512,7 +504,6 @@ Editing Tasks
      If you want to include another file in the file you're edit-\r
      ing, use ^K R to insert it.\r
 \r
-\r
      Temporarily suspending the editor\r
 \r
      If you need to temporarily stop the editor and go back to\r
@@ -522,7 +513,6 @@ Editing Tasks
      (you'll be told which when you hit ^K Z) to return to the\r
      editor.\r
 \r
-\r
      Searching for text\r
 \r
      Hit ^K F to have the editor search forwards or backwards for\r
@@ -558,7 +548,6 @@ Editing Tasks
 \r
      You can hit ^L to repeat the previous search.\r
 \r
-\r
      Regular Expressions\r
 \r
      A number of special character sequences may be entered as\r
@@ -578,9 +567,9 @@ Editing Tasks
           line by itself.\r
 \r
      \< \>\r
-          These match the beginning and end of a word.  For\r
-          example, if you give \<\*is\*\>, then joe will find\r
-          whole words which have the sub-string is within them.\r
+          These match the beginning and end of a word.  For exam-\r
+          ple, if you give \<\*is\*\>, then joe will find whole\r
+          words which have the sub-string is within them.\r
 \r
      \[...]\r
           This matches any single character which appears within\r
@@ -653,7 +642,6 @@ Editing Tasks
 \r
      Address: England, London, S. Holmes, 221b Baker St.\r
 \r
-\r
      Blocks\r
 \r
      If you want to move, copy, save or delete a specific section\r
@@ -679,13 +667,11 @@ Editing Tasks
 \r
      After you are finished with some block operations, you can\r
      just leave the highlighting on if you don't mind it (of\r
-     course, if you accidently hit ^K Y without noticing...).  If\r
-     it really bothers you, however, just hit ^K B ^K K, to turn\r
-     the highlighting off.\r
-\r
+     course, if you accidentally hit ^K Y without noticing...).\r
+     If it really bothers you, however, just hit ^K B ^K K, to\r
+     turn the highlighting off.\r
 \r
      Indenting program blocks\r
-\r
      Auto-indent mode toggled with the ^T I command.  The joerc\r
      is normally set up so that files with names ending with .p,\r
      .c or .h have auto-indent mode enabled.  When auto-indent\r
@@ -700,9 +686,7 @@ Editing Tasks
      ^K , and ^K . commands.  The number of columns these com-\r
      mands shift by can be set through a ^T option.\r
 \r
-\r
      Windows\r
-\r
      You can edit more than one file at the same time or edit two\r
      or more different places of the same file.  To do this, hit\r
      ^K O, to split the screen into two windows.  Use ^K P or ^K\r
@@ -727,7 +711,6 @@ Editing Tasks
      You can change the height of the windows with the ^K G and\r
      ^K T commands.\r
 \r
-\r
      Keyboard macros\r
 \r
      Macros allow you to record a series of keystrokes and replay\r
@@ -759,9 +742,7 @@ Editing Tasks
      number.  Also you can execute previously recorded macros\r
      from within new macros.\r
 \r
-\r
      Repeat\r
-\r
      You can use the repeat command, ^K \, to repeat a macro, or\r
      any other edit command or even a normal character, a speci-\r
      fied number of times.  Hit ^K \, type in the number of times\r
@@ -772,9 +753,7 @@ Editing Tasks
 \r
      ^K  20<return>^Y\r
 \r
-\r
      Rectangle mode\r
-\r
      Type ^T X to have ^K B and ^K K select rectangular blocks\r
      instead of stream-of-text blocks.  This mode is useful for\r
      moving, copying, deleting or saving columns of text.  You\r
@@ -791,9 +770,7 @@ Editing Tasks
      filter block command (^K /), since it will maintain the ori-\r
      ginal width of the selected column.\r
 \r
-\r
      Tag search\r
-\r
      If you are editing a large C program with many source files,\r
      you can use the ctags program to generate a tags file.  This\r
      file contains a list of program symbols and the files and\r
@@ -807,9 +784,7 @@ Editing Tasks
      probably want to split the window first with ^K O, to have\r
      both the original file and the definition file loaded.\r
 \r
-\r
      Shell windows\r
-\r
      Hit ^K ' to run a command shell in one of JOE's windows.\r
      When the cursor is at the end of a shell window (use ^K V if\r
      it's not), whatever you type is passed to the shell instead\r
@@ -911,17 +886,21 @@ Filenames
 The joerc file\r
      ^T options, the help screens and the key-sequence to editor\r
      command bindings are all defined in JOE's initialization\r
-     file.  If you make a copy of this file (which resides in\r
-     c:/windows/system32/joe/joerc) to $HOME/.joerc, you can cu-\r
-     stomize these setting to your liking.  The syntax of the\r
-     initialization file should be fairly obvious and there are\r
+     file. If you make a copy of this file (which resides in the\r
+     same directory as the binary) to $HOME/.joerc, you can cus-\r
+     tomise these settings to your liking. The syntax of the ini-\r
+     tialization file should be fairly obvious, and there are\r
      further instruction in it.\r
 \r
 Acknowledgments\r
-     JOE was written by Joseph H. Allen.  If you have bug reports\r
-     or questions, e-mail them to jhallen@world.std.com.  Larry\r
+     JOE was written by Joseph H. Allen. If you have bug reports\r
+     or questions, e-mail them to jhallen@world.std.com. Larry\r
      Foard (entropy@world.std.com) and Gary Gray\r
      (ggray@world.std.com) also helped with the creation of JOE.\r
-     Thorsten Glaser (tg@mirbsd.org) created JUPP, and the 16-bit\r
-     MS-DOS version of JUPP 2.8 was compiled by Andreas Totlis\r
-     (atotlis@t-online.de).\r
+     Thorsten "mirabilos" Glaser (tg@mirbsd.org) created JUPP,\r
+     and the 16-bit MS-DOS version of JUPP 2.8 was compiled by\r
+     Andreas Totlis (atotlis@t-online.de).\r
+\r
+Bugs\r
+     This manual page describes only the JOE flavour; documenta-\r
+     tion for JUPP is especially missing.\r
diff --git a/main.c b/main.c
index 7a5ae1d..628ad7d 100644 (file)
--- a/main.c
+++ b/main.c
@@ -1,4 +1,4 @@
-/* $MirOS: contrib/code/jupp/main.c,v 1.25 2016/10/07 20:09:55 tg Exp $ */
+/* $MirOS: contrib/code/jupp/main.c,v 1.26 2016/10/29 23:44:45 tg Exp $ */
 
 #define JUPP_IS_COPYRIGHT_C_BY "2016 mirabilos"
 
@@ -192,6 +192,7 @@ int main(int argc, char **argv, char **envp)
        int backopt;
        int c;
 
+       init_JOERC();
        joe_locale();
 
        mainenv = (unsigned char **)envp;
@@ -235,21 +236,23 @@ int main(int argc, char **argv, char **envp)
                }
        }
 
-       vsrm(s);
-       s = vsncpy(NULL, 0, sc(JOERC));
-       s = vsncpy(sv(s), sv(run));
-       s = vsncpy(sv(s), sc("rc"));
-       c = procrc(cap, s);
-       if (c == 0)
-               goto donerc;
-       if (c == 1) {
-               unsigned char buf[8];
-
-               fprintf(stderr, "There were errors in '%s'.  Use it anyway?", s);
-               fflush(stderr);
-               if (fgets((char *)buf, 8, stdin) != NULL &&
-                   (buf[0] == 'y' || buf[0] == 'Y'))
+       if (has_JOERC) {
+               vsrm(s);
+               s = vsncpy(NULL, 0, sz(get_JOERC));
+               s = vsncpy(sv(s), sv(run));
+               s = vsncpy(sv(s), sc("rc"));
+               c = procrc(cap, s);
+               if (c == 0)
                        goto donerc;
+               if (c == 1) {
+                       unsigned char buf[8];
+
+                       fprintf(stderr, "There were errors in '%s'.  Use it anyway?", s);
+                       fflush(stderr);
+                       if (fgets((char *)buf, 8, stdin) != NULL &&
+                           (buf[0] == 'y' || buf[0] == 'Y'))
+                               goto donerc;
+               }
        }
 
        /* Try built-in joerc */
diff --git a/path.c b/path.c
index 33f0cbc..844636d 100644 (file)
--- a/path.c
+++ b/path.c
@@ -1,4 +1,4 @@
-/* $MirOS: contrib/code/jupp/path.c,v 1.11 2016/10/08 16:25:59 tg Exp $ */
+/* $MirOS: contrib/code/jupp/path.c,v 1.12 2016/10/29 23:44:45 tg Exp $ */
 /* 
  *     Directory and path functions
  *     Copyright
@@ -386,7 +386,21 @@ unsigned char **rexpnd(unsigned char *word)
        return lst;
 }
 /********************************************************************/
-int chpwd(unsigned char *path)
+int chJpwd(const unsigned char *path)
+{
+       unsigned char *fullpath;
+       int rv;
+
+       if (!has_JOERC)
+               return (-1);
+       fullpath = vsncpy(NULL, 0, sz(get_JOERC));
+       fullpath = vsncpy(sv(fullpath), sz(path));
+       rv = chpwd(fullpath);
+       vsrm(fullpath);
+       return (rv);
+}
+
+int chpwd(const unsigned char *path)
 {
 #ifdef __MSDOS__
        unsigned char buf[256];
@@ -442,3 +456,26 @@ unsigned char *pwd(void)
        return ((void *)wd);
 #endif
 }
+
+#if JUPP_WIN32RELOC
+unsigned char has_JOERC = 0;
+unsigned char *get_JOERC = NULL;
+
+extern char *cygwin32_argv0(void);
+
+void init_JOERC(void)
+{
+       struct stat sb;
+       char *sep;
+
+       if ((get_JOERC = (unsigned char *)cygwin32_argv0()) == NULL)
+               return;
+       joesep(get_JOERC);
+       if ((sep = strrchr((char *)get_JOERC, '/')) == NULL)
+               return;
+       if (stat(get_JOERC, &sb))
+               return;
+       sep[1] = '\0';
+       has_JOERC = 1;
+}
+#endif
diff --git a/path.h b/path.h
index b7c448a..672baad 100644 (file)
--- a/path.h
+++ b/path.h
@@ -1,4 +1,4 @@
-/* $MirOS: contrib/code/jupp/path.h,v 1.10 2016/10/08 16:42:00 tg Exp $ */
+/* $MirOS: contrib/code/jupp/path.h,v 1.11 2016/10/29 23:44:45 tg Exp $ */
 /*
  *     Directory and path functions
  *     Copyright
@@ -27,6 +27,15 @@ unsigned char *joesep PARAMS((unsigned char *path));
 #define joesep(path) (path)
 #endif
 
+#if JUPP_WIN32RELOC
+extern unsigned char has_JOERC, *get_JOERC;
+void init_JOERC PARAMS((void));
+#else
+#define has_JOERC      1
+#define get_JOERC      JOERC
+#define init_JOERC()   /* nothing */
+#endif
+
 /* char *namprt(char *path);
  * Return name part of a path.  There is no name if the last character
  * in the path is '/'.
@@ -117,7 +126,8 @@ int isreg PARAMS((unsigned char *s));
  */
 unsigned char **rexpnd PARAMS((unsigned char *word));
 
-int chpwd PARAMS((unsigned char *path));
+int chJpwd PARAMS((const unsigned char *path));
+int chpwd PARAMS((const unsigned char *path));
 unsigned char *pwd PARAMS((void));
 
 #endif
diff --git a/rc.c b/rc.c
index d1a3ba7..a57e53b 100644 (file)
--- a/rc.c
+++ b/rc.c
@@ -1,4 +1,4 @@
-/* $MirOS: contrib/code/jupp/rc.c,v 1.20 2016/10/08 19:28:54 tg Exp $ */
+/* $MirOS: contrib/code/jupp/rc.c,v 1.21 2016/10/29 23:44:45 tg Exp $ */
 /*
  *     *rc file parser
  *     Copyright
@@ -609,7 +609,7 @@ static int syntaxcmplt(BW *bw)
                unsigned char *p;
                int x, y;
 
-               if (chpwd(US (JOERC "syntax")))
+               if (chJpwd(US ("syntax")))
                        return -1;
                t = rexpnd(US "*.jsf");
                if (!t) {
diff --git a/setup.inf b/setup.inf
new file mode 100644 (file)
index 0000000..96cd5c1
--- /dev/null
+++ b/setup.inf
@@ -0,0 +1,102 @@
+; Right-Click this and choose "_I_nstall" to install jupp!\r
+\r
+; © 2006, 2009, 2010, 2011, 2012, 2016\r
+;   by mirabilos <m@mirbsd.org>\r
+; see copying.txt and jupprc for legal\r
+\r
+[Version]\r
+Signature="$CHICAGO$"\r
+DriverVer=@ts@,3.1.@jwin@\r
+\r
+[SourceDisksNames]\r
+1="joe 3.1jupp@jwin@ Win32 installation floppy"\r
+\r
+[SourceDisksFiles]\r
+@files@\r
+\r
+[DefaultInstall]\r
+CopyFiles=jupp.Copy,jrc.Copy,jcm.Copy,jsy.Copy\r
+DelFiles=damage32.Undo,damage64.Undo\r
+AddReg=jupp.AddReg,fopenas.AddReg\r
+MediaType=SOFTWARE\r
+\r
+[jupp.Copy]\r
+jupp32.exe\r
+jupp32.txt\r
+; copies of jupp32.exe so the other *rc files are usable\r
+jmacs.exe,jupp32.exe\r
+joe.exe,jupp32.exe\r
+jpico.exe,jupp32.exe\r
+jstar.exe,jupp32.exe\r
+; sources at: http://www.mirbsd.org/MirOS/dist/gnu/cygwin32/\r
+cygwin1.dll\r
+\r
+[jrc.Copy]\r
+copying.txt\r
+jmacsrc\r
+joerc\r
+jpicorc\r
+jstarrc\r
+jupp32rc\r
+\r
+[jcm.Copy]\r
+klingon\r
+\r
+[jsy.Copy]\r
+asm.jsf\r
+c.jsf\r
+conf.jsf\r
+csh.jsf\r
+diff.jsf\r
+fortran.jsf\r
+html.jsf\r
+java.jsf\r
+lisp.jsf\r
+mail.jsf\r
+mason.jsf\r
+pascal.jsf\r
+perl.jsf\r
+php.jsf\r
+python.jsf\r
+sh.jsf\r
+tcl.jsf\r
+tex.jsf\r
+verilog.jsf\r
+vhdl.jsf\r
+xml.jsf\r
+\r
+[jupp.AddReg]\r
+HKCR,"*\shell\jupp","",,"&jupp"\r
+HKCR,"*\shell\jupp","Version",,"jupp 3.1.@jwin@ (i486)"\r
+HKCR,"*\shell\jupp\command","",,"%24%\Programme\jupp32\jupp32.exe ""%L"""\r
+\r
+[fopenas.AddReg]\r
+HKCR,"*\shell\fopenas","",,"&Load with..."\r
+HKCR,"*\shell\fopenas\command","",,"rundll32 shell32,OpenAs_RunDLL %1"\r
+\r
+[damage32.Undo]\r
+cygwin1.dll,,,1\r
+jupp32.exe,,,1\r
+jmacs.exe,,,1\r
+joe.exe,,,1\r
+jpico.exe,,,1\r
+jstar.exe,,,1\r
+\r
+[damage64.Undo]\r
+cygwin1.dll,,,1\r
+jupp32.exe,,,1\r
+jmacs.exe,,,1\r
+joe.exe,,,1\r
+jpico.exe,,,1\r
+jstar.exe,,,1\r
+\r
+[DestinationDirs]\r
+; possibly 16422,jupp32 but it's not documented since when this works;\r
+; it _is_ documented that the drive is wrong on some systems though...\r
+DefaultDestDir=24,Programme\jupp32\r
+damage32.Undo=-1,C:\WINDOWS\system32\r
+damage64.Undo=-1,C:\WINDOWS\r
+jcm.Copy=24,Programme\jupp32\charmaps\r
+jsy.Copy=24,Programme\jupp32\syntax\r
+\r
+; $MirOS: contrib/code/jupp/setup.inf,v 1.5 2016/10/30 02:44:19 tg Exp $\r
index b1b8d86..d602ab3 100644 (file)
--- a/syntax.c
+++ b/syntax.c
@@ -1,4 +1,4 @@
-/* $MirOS: contrib/code/jupp/syntax.c,v 1.12 2016/10/07 19:43:55 tg Exp $ */
+/* $MirOS: contrib/code/jupp/syntax.c,v 1.13 2016/10/29 23:44:45 tg Exp $ */
 /*
  *     Syntax highlighting DFA interpreter
  *     Copyright
@@ -15,6 +15,7 @@
 #include "scrn.h"
 #include "utils.h"
 #include "hash.h"
+#include "path.h"
 #include "charmap.h"
 #include "syntax.h"
 
@@ -282,8 +283,8 @@ struct high_syntax *load_dfa(const unsigned char *name)
                f = fopen((char *)buf,"r");
        }
 
-       if (!f) {
-               joe_snprintf_2((char *)buf,sizeof(buf),"%ssyntax/%s.jsf",JOERC,name);
+       if (!f && has_JOERC) {
+               joe_snprintf_2((char *)buf,sizeof(buf),"%ssyntax/%s.jsf",get_JOERC,name);
                f = fopen((char *)buf,"r");
        }
        if(!f)
index edd5733..fc1a199 100644 (file)
--- a/termcap.c
+++ b/termcap.c
@@ -1,4 +1,4 @@
-/* $MirOS: contrib/code/jupp/termcap.c,v 1.9 2014/03/04 23:04:12 tg Exp $ */
+/* $MirOS: contrib/code/jupp/termcap.c,v 1.11 2016/10/29 23:44:46 tg Exp $ */
 /*
  *     TERMCAP/TERMINFO database interface
  *     Copyright
@@ -25,6 +25,7 @@
 #endif
 
 #include "blocks.h"
+#include "path.h"
 #include "termcap.h"
 #include "utils.h"
 #include "va.h"
@@ -204,8 +205,12 @@ CAP *getcap(unsigned char *name, unsigned int baud, void (*out) (unsigned char *
                        } else
                                namebuf = NULL;
                        namebuf = vsncpy(sv(namebuf), sc(".termcap "));
-                       namebuf = vsncpy(sv(namebuf), sc(JOERC));
-                       namebuf = vsncpy(sv(namebuf), sc("termcap /etc/termcap"));
+                       if (has_JOERC &&
+                           vsscan(sz(get_JOERC), sc("\t :")) == ~0) {
+                               namebuf = vsncpy(sv(namebuf), sz(get_JOERC));
+                               namebuf = vsncpy(sv(namebuf), sc("termcap "));
+                       }
+                       namebuf = vsncpy(sv(namebuf), sc("/etc/termcap"));
                }
        }
 
diff --git a/tty.c b/tty.c
index f062a5a..bd5c79c 100644 (file)
--- a/tty.c
+++ b/tty.c
@@ -1,4 +1,4 @@
-/* $MirOS: contrib/code/jupp/tty.c,v 1.21 2016/10/07 19:38:22 tg Exp $ */
+/* $MirOS: contrib/code/jupp/tty.c,v 1.22 2016/10/30 02:38:35 tg Exp $ */
 /*
  *     UNIX Tty and Process interface
  *     Copyright
@@ -871,7 +871,6 @@ extern char *ptsname(int);
 static unsigned char *getpty(int *ptyfd)
 {
        int fdm;
-       unsigned char *name;
 
        *ptyfd = fdm = open("/dev/ptmx", O_RDWR);
        grantpt(fdm);
diff --git a/vs.c b/vs.c
index 88001d8..87c91ed 100644 (file)
--- a/vs.c
+++ b/vs.c
@@ -1,4 +1,4 @@
-/* $MirOS: contrib/code/jupp/vs.c,v 1.7 2014/07/25 11:44:34 tg Exp $ */
+/* $MirOS: contrib/code/jupp/vs.c,v 1.8 2016/10/30 00:19:57 tg Exp $ */
 /*
  *     Variable length strings
  *     Copyright
@@ -146,7 +146,7 @@ sELEMENT *_vsset(sELEMENT *vary, int pos, sELEMENT el)
        return vary;
 }
 
-int vsbsearch(sELEMENT *ary, int len, sELEMENT el)
+int vsbsearch(const sELEMENT *ary, int len, sELEMENT el)
 {
        int x, y, z;
 
@@ -201,7 +201,7 @@ int vscmp(sELEMENT *a, sELEMENT *b)
        return vscmpn(sv(a), sv(b));
 }
 
-int vsscan(sELEMENT *a, int alen, sELEMENT *b, int blen)
+int vsscan(const sELEMENT *a, int alen, const sELEMENT *b, int blen)
 {
        int x;
 
diff --git a/vs.h b/vs.h
index e73cc62..59d681f 100644 (file)
--- a/vs.h
+++ b/vs.h
@@ -1,4 +1,4 @@
-/* $MirOS: contrib/code/jupp/vs.h,v 1.5 2014/07/25 11:44:35 tg Exp $ */
+/* $MirOS: contrib/code/jupp/vs.h,v 1.6 2016/10/30 00:19:58 tg Exp $ */
 /*
  *     Dynamic string library
  *     Copyright
@@ -319,14 +319,14 @@ sELEMENT *_vsset PARAMS((sELEMENT *vary, int pos, sELEMENT el));
 /* Searching and Sorting */
 /*************************/
 
-/* int vsbsearch(sELEMENT *ary, int len, sELEMENT element);
+/* int vsbsearch(const sELEMENT *ary, int len, sELEMENT element);
  * Do a binary search on a sorted variable length or char array.  Returns position
  * of matching element or the position where the element should be if it was
  * not found.  (You should test with scmp to find out which).
  *
  * Hmm... this should really indicate whether or not the element was found.
  */
-int vsbsearch PARAMS((sELEMENT *ary, int len, sELEMENT el));
+int vsbsearch PARAMS((const sELEMENT *ary, int len, sELEMENT el));
 
 /* int vscmpn(sELEMENT *a, int alen, sELEMENT *b, int blen);
  *
@@ -342,13 +342,13 @@ int vscmpn PARAMS((sELEMENT *a, int alen, sELEMENT *b, int blen));
  */
 int vscmp PARAMS((sELEMENT *a, sELEMENT *b));
 
-/* int vsscan(sELEMENT *a, int alen, sELEMENT *b, int blen);
+/* int vsscan(const sELEMENT *a, int alen, const sELEMENT *b, int blen);
  * Find offset of first matching element in 'a' which matches any
  * of the elements passed in 'b'.  Array 'b' must be sorted.
  *
  * Hmm... this really needs to return what the found element is.
  */
-int vsscan PARAMS((sELEMENT *a, int alen, sELEMENT *b, int blen));
+int vsscan PARAMS((const sELEMENT *a, int alen, const sELEMENT *b, int blen));
 
 /* int vsspan(sELEMENT *a, int alen, sELEMENT *b, int blen);
  * Find offset of first matching element in 'a' which does not match any
diff --git a/win32.c b/win32.c
new file mode 100644 (file)
index 0000000..ec775da
--- /dev/null
+++ b/win32.c
@@ -0,0 +1,40 @@
+/* $MirOS: contrib/code/jupp/win32.c,v 1.2 2016/10/30 02:38:35 tg Exp $ */
+
+/*-
+ * Copyright (c) 2016
+ *     mirabilos <m@mirbsd.org>
+ *
+ * Provided that these terms and disclaimer and all copyright notices
+ * are retained or reproduced in an accompanying document, permission
+ * is granted to deal in this work without restriction, including un-
+ * limited rights to use, publicly perform, distribute, sell, modify,
+ * merge, give away, or sublicence.
+ *
+ * This work is provided "AS IS" and WITHOUT WARRANTY of any kind, to
+ * the utmost extent permitted by applicable law, neither express nor
+ * implied; without malicious intent or gross negligence. In no event
+ * may a licensor, author or contributor be held liable for indirect,
+ * direct, other damage, loss, or other issues arising in any way out
+ * of dealing in the work, even if advised of the possibility of such
+ * damage or existence of a defect, except proven that it results out
+ * of said person's immediate fault when using the work as intended.
+ *-
+ * Retrieve the realpath of the program (what could be argv[0] if the
+ * Unix designers had wanted it).
+ */
+
+#include <windows.h>
+
+char *
+cygwin32_argv0(void)
+{
+       DWORD res;
+       /* plus one to detect truncation */
+       char buf[MAX_PATH + 1];
+
+       if (!(res = GetModuleFileName(NULL, buf, sizeof(buf))) ||
+           ((size_t)res > (size_t)(MAX_PATH)))
+               return (NULL);
+       buf[res] = '\0';
+       return (strdup(buf));
+}