update, this time 1:1 from committed CVS sources
authormirabilos <m@mirbsd.org>
Thu, 7 Dec 2017 02:15:02 +0000 (03:15 +0100)
committermirabilos <m@mirbsd.org>
Thu, 7 Dec 2017 02:15:02 +0000 (03:15 +0100)
61 files changed:
ChangeLog
HINTS
Make-w32.sh
Makefile.bsd-wrapper
Makefile.in
TODO
autoconf.h.in
b.c
b.h
bw.c
bw.h
charmap.c
cmd.c
configure
configure.ac
docs/help-system.html
help.c
i18n.c
jmacsrc.in
joerc.in
jpicorc.in
jstarrc.in
kbd.c
kbd.h
macro.c
main.c
menu.c
path.c
poshist.c
pw.c
pw.h
queue.h
qw.c
rc.c
rc.h
rjoerc.in
syntax/asm.jsf.in
syntax/diff.jsf.in
syntax/fortran.jsf.in
syntax/pascal.jsf.in
syntax/php.jsf.in
syntax/python.jsf.in
tab.c
termcap.h
tw.c
types.h
ublock.c
uedit.c
uedit.h
uerror.c
ufile.c
uformat.c
uformat.h
uisrch.c
umath.c
usearch.c
ushell.c
utag.c
utag.h
w.c
w.h

index 62f93a4..6e7ac54 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -283,7 +283,7 @@ Wed May  5 2004  Joe Allen <jhallen@world.std.com>
        Now parses charmap files.
 
 Wed May  5 2004  Joe Allen <jhallen@world.std.com>
-       * bw.c charmap.c main.c qw.c qw.h regex.c regex.h 
+       * bw.c charmap.c main.c qw.c qw.h regex.c regex.h
        syntax.c types.h uisrch.c usearch.c utf8.c utf8.h:
 
        Regex search now works properly with UTF-8 chars.
@@ -312,10 +312,10 @@ Tue May  4 2004  Joe Allen <jhallen@world.std.com>
        Change koi8-T to koi8-t.
 
 Tue May  4 2004  Joe Allen <jhallen@world.std.com>
-       * ChangeLog TODO b.c bw.c charmap.c charmap.h cmd.c help.c 
-       i18n.c i18n.h joerc.in jpicorc.in jstarrc.in macro.c main.c 
-       menu.c pw.c pw.h rc.c regex.c rjoerc.in scrn.c scrn.h syntax.c 
-       types.h ublock.c uedit.c uerror.c ufile.c uformat.c umath.c 
+       * ChangeLog TODO b.c bw.c charmap.c charmap.h cmd.c help.c
+       i18n.c i18n.h joerc.in jpicorc.in jstarrc.in macro.c main.c
+       menu.c pw.c pw.h rc.c regex.c rjoerc.in scrn.c scrn.h syntax.c
+       types.h ublock.c uedit.c uerror.c ufile.c uformat.c umath.c
        usearch.c ushell.c utag.c utf8.c utils.c utils.h w.c:
 
        Everything about character set is now contained in struct charmap.
@@ -556,8 +556,8 @@ Sat Apr 17 2004  Joe Allen <jhallen@world.std.com>
        Oops: fixed status line.
 
 Fri Apr 16 2004  Joe Allen <jhallen@world.std.com>
-       * ChangeLog TODO cmd.c macro.c pw.c pw.h rc.c regex.c ublock.c 
-       uedit.c ufile.c umath.c usearch.c ushell.c utag.c utf8.c w.c 
+       * ChangeLog TODO cmd.c macro.c pw.c pw.h rc.c regex.c ublock.c
+       uedit.c ufile.c umath.c usearch.c ushell.c utag.c utf8.c w.c
        w.h:
 
        UTF-8 now supported in file names and prompts.
@@ -732,7 +732,7 @@ Thu Apr  1 2004  Joe Allen <jhallen@world.std.com>
 
 Tue Mar 30 2004  Joe Allen <jhallen@world.std.com>
        * uedit.c, syntax.c, syntax.h, types.h, bw.c:
-       Next steps for syntax highlighting: 
+       Next steps for syntax highlighting:
                Now there is a real parser, so syntax files
                can be defined (although, it only loads
                the C language c.jsf for now).
@@ -859,7 +859,7 @@ Mon May  5 2003  Vitezslav Samel <samel@mail.cz>
 
        * NEWS, configure.ac, main.c:
        update NEWS; bump up version; update copyright year
-       
+
 Sat May  3 2003  Vitezslav Samel <samel@mail.cz>
        * README:
        delete untrue statements and mention the new build system;
@@ -1178,7 +1178,7 @@ Wed Nov 28 2001  Vitezslav Samel <samel@mail.cz>
 
 Thu Nov 22 2001  Marek 'Marx' Grac <xgrac@fi.muni.cz>
        * *.h, *.c: almost all definitions are in types.h (except those from
-       vs.h, va.h). 
+       vs.h, va.h).
 
 Thu Nov 22 2001  Marek 'marx' Grac <xgrac@fi.muni.cz>
        * uedit.c: correction of last change
@@ -1412,29 +1412,29 @@ Thu Jul 20 2001  Marek 'Marx' Grac <xgrac@fi.muni.cz>
 
 Thu Jul 19 2001  Marek 'Marx' Grac <xgrac@fi.muni.cz>
        * help.c, help.h, main.c: help system was rebuilt
-       
+
 Thu Jul 19 2001  Vitezslav Samel <samel@mail.cz>
-       * joe.1, ufile.c: new feature 'backup suffix', when the system 
+       * joe.1, ufile.c: new feature 'backup suffix', when the system
        environment SIMPLE_BACKUP_SUFFIX is set then it is used instead of ~.
        Inspired by patch program.
-       
+
 Thu Jul 19 2001  Vitezslav Samel <samel@mail.cz>
        * lot of files: patch which removes a lot of warnings.
-       
+
 Wed Jul 04 2001  Marek 'Marx' Grac <xgrac@fi.muni.cz>
 
        * b.c, main.c, path.c, path.h, rc.c, ufile.c: Function 'ossep'
        was completly removed because it was not possible to access
        files like test\ in UNIX like systems.
-       
+
 Wed Jul 04 2001  Marek 'Marx' Grac <xgrac@fi.muni.cz>
 
        * ufile.c: Several minor changes.
-       
+
 Wed Jul 04 2001  Marek 'Marx' Grac <xgrac@fi.muni.cz>
 
-       * ufile.c: Problem with freezing when saving unmodified file 
-       is solved. But it is possible that this patch is only partial   
+       * ufile.c: Problem with freezing when saving unmodified file
+       is solved. But it is possible that this patch is only partial
 
 Wed Jul 04 2001  Marek 'Marx' Grac <xgrac@fi.muni.cz>
 
@@ -1453,4 +1453,4 @@ Wed Jul 02 2001  Marek 'Marx' Grac <xgrac@fi.muni.cz>
        able to find patch :(
 
 ______________________________________________________________________
-$MirOS: contrib/code/jupp/ChangeLog,v 1.9 2016/11/06 20:14:44 tg Exp $
+$MirOS: contrib/code/jupp/ChangeLog,v 1.10 2017/12/06 23:17:32 tg Exp $
diff --git a/HINTS b/HINTS
index cd72603..64cf96a 100644 (file)
--- a/HINTS
+++ b/HINTS
@@ -6,6 +6,7 @@ GCC
 
 Disable the following warnings; the code doesn't cope with it:
 -Wno-pointer-sign -Wno-unused-parameter -Wno-cast-qual
+-Wno-strict-prototypes
 
 UTF-8
 -----
@@ -116,7 +117,7 @@ will not insert.
 
 - You can use ^KC to copy a block as usual.  If overtype mode is selected,
   the block will overwrite the destination data without changing the size of
-  the file.  Otherwise it inserts. 
+  the file.  Otherwise it inserts.
 
 - Hit ESC x byte <Enter>, to jump to a particular byte offset.  Hex values
   can be entered into this prompt like this: 0x2000.
@@ -124,4 +125,4 @@ will not insert.
 - Search, incremental search, and search & replace all operate as usual.
 
 ___________________________________________________________________
-$MirOS: contrib/code/jupp/HINTS,v 1.14 2017/12/06 21:48:48 tg Exp $
+$MirOS: contrib/code/jupp/HINTS,v 1.16 2017/12/07 01:00:30 tg Exp $
index d9b9470..a72ea35 100644 (file)
@@ -1,5 +1,5 @@
 #!/bin/mksh
-# $MirOS: contrib/code/jupp/Make-w32.sh,v 1.20 2017/12/06 21:46:54 tg Exp $
+# $MirOS: contrib/code/jupp/Make-w32.sh,v 1.21 2017/12/07 01:00:30 tg Exp $
 
 usage() {
        print -ru2 "Usage: $0 [-bCgn]"
@@ -25,6 +25,7 @@ done
 extrawarnings="-Wall -Wextra"
 (( debug )) && extrawarnings="$extrawarnings -g3"
 extrawarnings="$extrawarnings -Wno-unused-parameter -Wno-cast-qual"
+extrawarnings="$extrawarnings -Wno-strict-prototypes"
 
 export LC_ALL=C
 set -ex
index 055652d..5069b7a 100644 (file)
@@ -1,4 +1,4 @@
-# $MirOS: contrib/code/jupp/Makefile.bsd-wrapper,v 1.15 2017/12/06 21:46:54 tg Exp $
+# $MirOS: contrib/code/jupp/Makefile.bsd-wrapper,v 1.16 2017/12/07 01:00:30 tg Exp $
 #-
 # make -f Makefile.bsd-wrapper CFPREFIX=/usr/mpkg sysconfjoesubdir=/joe
 
@@ -31,6 +31,11 @@ FSFISLIB=    No
 
 .ifdef __CRAZY
 COPTS+=                -Wno-unused-parameter -Wno-cast-qual
+.  if exists(/usr/include/jupp.tmp.h) && !defined(wnostrict)
+CPPFLAGS+=     -DGCC_Wstrict_prototypes
+.  else
+COPTS+=                -Wno-strict-prototypes
+.  endif
 .endif
 
 joe.1: config.status
index 576f12b..6068c19 100644 (file)
@@ -14,7 +14,8 @@
 
 @SET_MAKE@
 
-# $MirOS: contrib/code/jupp/Makefile.am,v 1.18 2017/12/03 01:11:48 tg Exp $
+# $MirOS: contrib/code/jupp/Makefile.in,v 1.17 2017/12/07 01:02:39 tg Exp $
+# $miros: contrib/code/jupp/Makefile.am,v 1.18 2017/12/03 01:11:48 tg Exp $
 
 
 
diff --git a/TODO b/TODO
index b7507de..8f40434 100644 (file)
--- a/TODO
+++ b/TODO
@@ -367,6 +367,7 @@ Although, if merged, 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
+   but then desires the file directory path history
 
   Update documentation.
 
@@ -569,6 +570,10 @@ Other requests:
   labels, instead of fdefault; add UI to apply an ftype, including
   fdefault, to the current buffer (requested by Wayne Cuddy)
 • regex needs groups like 「\+\(foo\)」
+• regex needs alternative modes (POSIX BRE, ERE; PCRE optional?)
+  because of the \0 vs. \1 confusion (and WTF @ \N letters!)
+• ^KE could offer the last directory from a file that was saved
+  with a / somewhere (file_prompt in joe 4.4 wmkpw)
 • 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)
@@ -585,4 +590,4 @@ Other requests:
 • …
 
 __________________________________________________________________
-$MirOS: contrib/code/jupp/TODO,v 1.43 2017/12/03 01:43:50 tg Exp $
+$MirOS: contrib/code/jupp/TODO,v 1.44 2017/12/07 00:05:08 tg Exp $
index 2fefe90..31f9b5b 100644 (file)
 /* We have SELinux functions */
 #undef HAVE_SELINUX_FUN
 
-/* We have SELinux headers */
-#undef HAVE_SELINUX_HDR
-
 /* Define to 1 if you have the <selinux/selinux.h> header file. */
 #undef HAVE_SELINUX_SELINUX_H
 
 /* Define to the version of this package. */
 #undef PACKAGE_VERSION
 
-/* Define to 1 if the C compiler supports function prototypes. */
-#undef PROTOTYPES
-
 /* Define as the return type of signal handlers (`int' or `void'). */
 #undef RETSIGTYPE
 
 /* The size of `void *', as computed by sizeof. */
 #undef SIZEOF_VOID_P
 
+/* Reduce memory footprint slightly */
+#undef SMALL
+
 /* Define to 1 if you have the ANSI C header files. */
 #undef STDC_HEADERS
 
 /* Define for large files, on AIX-style hosts. */
 #undef _LARGE_FILES
 
-/* Check to see if we can use strict prototypes */
-#ifndef PARAMS
-#  ifdef PROTOTYPES
-#    define PARAMS(protos) protos
-#  else
-#    define PARAMS(protos) ()
-#  endif
-#endif
-
-/* Define like PROTOTYPES; this can be used by system headers. */
-#undef __PROTOTYPES
-
 /* Define to empty if `const' does not conform to ANSI C. */
 #undef const
 
diff --git a/b.c b/b.c
index 20f0122..2f4ed5d 100644 (file)
--- a/b.c
+++ b/b.c
@@ -9,7 +9,7 @@
 #include "config.h"
 #include "types.h"
 
-__RCSID("$MirOS: contrib/code/jupp/b.c,v 1.24 2017/12/06 21:16:54 tg Exp $");
+__RCSID("$MirOS: contrib/code/jupp/b.c,v 1.25 2017/12/06 23:17:32 tg Exp $");
 
 #include <unistd.h>
 #include <sys/stat.h>
@@ -783,7 +783,7 @@ int prgetc(P *p)
                        p->valcol = 1;
                        p->col -= joe_wcwidth(1,d);
                }
-               
+
                return d;
 #endif
        }
diff --git a/b.h b/b.h
index 21fad43..c675ae3 100644 (file)
--- a/b.h
+++ b/b.h
@@ -9,10 +9,9 @@
 #define _JOE_B_H 1
 
 #ifdef EXTERN
-__IDSTRING(rcsid_b_h, "$MirOS: contrib/code/jupp/b.h,v 1.7 2017/12/06 21:16:54 tg Exp $");
+__IDSTRING(rcsid_b_h, "$MirOS: contrib/code/jupp/b.h,v 1.9 2017/12/07 00:35:13 tg Exp $");
 #endif
 
-/* 31744 */
 extern unsigned char stdbuf[stdsiz];
 
 extern int force;              /* Set to have final '\n' added to file */
@@ -94,7 +93,7 @@ P *prfind(P *p, unsigned char *s, int len);
 P *prifind(P *p, unsigned char *s, int len);
 
 /* copy text between 'from' and 'to' into new buffer */
-B *bcpy(P *from, P *to);       
+B *bcpy(P *from, P *to);
 
 void pcoalesce(P *p);
 
@@ -103,7 +102,7 @@ void bdel(P *from, P *to);
 /* insert buffer 'b' into another at 'p' */
 P *binsb(P *p, B *b);
 /* insert a block 'blk' of size 'amnt' into buffer at 'p' */
-P *binsm(P *p, unsigned char *blk, int amnt); 
+P *binsm(P *p, unsigned char *blk, int amnt);
 
 /* insert character 'c' into buffer at 'p' */
 P *binsc(P *p, int c);
diff --git a/bw.c b/bw.c
index ef2b50f..817477e 100644 (file)
--- a/bw.c
+++ b/bw.c
@@ -8,7 +8,7 @@
 #include "config.h"
 #include "types.h"
 
-__RCSID("$MirOS: contrib/code/jupp/bw.c,v 1.28 2017/12/06 23:02:01 tg Exp $");
+__RCSID("$MirOS: contrib/code/jupp/bw.c,v 1.30 2017/12/07 02:10:15 tg Exp $");
 
 #include <string.h>
 #include <stdlib.h>
@@ -172,8 +172,9 @@ static void bwfllwt(BW *w)
 
 /* For either */
 
-void bwfllw(BW *w)
+void bwfllw(jobject jO)
 {
+       BW *w = jO.bw;
        if (w->o.hex)
                bwfllwh(w);
        else
@@ -310,8 +311,8 @@ void bwdel(BW *w, long int l, long int n, int flg)
 /* Update a single line */
 
 static int lgen(SCRN *t, int y, int *screen, int *attr, int x, int w, P *p, long int scr, long int from, long int to,int st,BW *bw)
-        
-      
+
+
                                /* Screen line address */
                                /* Window */
                                /* Buffer pointer */
@@ -681,7 +682,7 @@ void bwgenh(BW *w)
                        from = markb->byte;
                        to = markk->byte;
                }
-       else if (marking && w == (BW *)maint->curwin->object && markb && markb->b == w->b && w->cursor->byte != markb->byte && !from) {
+       else if (marking && w == maint->curwin->object.bw && markb && markb->b == w->b && w->cursor->byte != markb->byte && !from) {
                if (square) {
                        from = long_min(w->cursor->xcol, markb->xcol);
                        to = long_max(w->cursor->xcol, markb->xcol);
@@ -692,7 +693,7 @@ void bwgenh(BW *w)
                }
        }
 
-       if (marking && w == (BW *)maint->curwin->object)
+       if (marking && w == maint->curwin->object.bw)
                msetI(t->updtab + w->y, 1, w->h);
 
        if (dosquare) {
@@ -795,7 +796,7 @@ void bwgen(BW *w, int linums)
                        from = markb->byte;
                        to = markk->byte;
                }
-       else if (marking && w==maint->curwin->object && markb && markb->b == w->b && w->cursor->byte != markb->byte && !from) {
+       else if (marking && w == maint->curwin->object.bw && markb && markb->b == w->b && w->cursor->byte != markb->byte && !from) {
                if (square) {
                        from = long_min(w->cursor->xcol, markb->xcol);
                        to = long_max(w->cursor->xcol, markb->xcol);
@@ -808,7 +809,7 @@ void bwgen(BW *w, int linums)
                }
        }
 
-       if (marking && w==maint->curwin->object)
+       if (marking && w == maint->curwin->object.bw)
                msetI(t->updtab + w->y, 1, w->h);
 
        y = w->cursor->line - w->top->line + w->y;
diff --git a/bw.h b/bw.h
index 8d3efa7..fc06d5a 100644 (file)
--- a/bw.h
+++ b/bw.h
@@ -9,13 +9,13 @@
 #define _JOE_BW_H 1
 
 #ifdef EXTERN_CMD_C
-__IDSTRING(rcsid_bw_h, "$MirOS: contrib/code/jupp/bw.h,v 1.7 2017/12/06 21:16:55 tg Exp $");
+__IDSTRING(rcsid_bw_h, "$MirOS: contrib/code/jupp/bw.h,v 1.8 2017/12/07 02:10:16 tg Exp $");
 #endif
 
 extern int dspasis;
 extern int mid;
 
-void bwfllw(BW *w);
+void bwfllw(jobject);
 void bwins(BW *w, long int l, long int n, int flg);
 void bwdel(BW *w, long int l, long int n, int flg);
 void bwgen(BW *w, int linums);
index 3f03053..0453502 100644 (file)
--- a/charmap.c
+++ b/charmap.c
@@ -12,7 +12,7 @@
 #include "config.h"
 #include "types.h"
 
-__RCSID("$MirOS: contrib/code/jupp/charmap.c,v 1.26 2017/12/06 23:02:01 tg Exp $");
+__RCSID("$MirOS: contrib/code/jupp/charmap.c,v 1.27 2017/12/07 01:00:31 tg Exp $");
 
 #include <stdlib.h>
 #include <string.h>
@@ -1538,6 +1538,7 @@ CPPFLAGS+=        -DJUPP_WIN32RELOC=0 -D'JOERC="/etc/joe"'
 
 .ifdef __CRAZY
 COPTS+=                -Wno-unused-parameter -Wno-cast-qual
+COPTS+=                -Wno-strict-prototypes
 .endif
 
 .include <bsd.prog.mk>
diff --git a/cmd.c b/cmd.c
index b6f19de..85e10cb 100644 (file)
--- a/cmd.c
+++ b/cmd.c
@@ -9,7 +9,7 @@
 #include "config.h"
 #include "types.h"
 
-__RCSID("$MirOS: contrib/code/jupp/cmd.c,v 1.22 2017/12/06 23:02:02 tg Exp $");
+__RCSID("$MirOS: contrib/code/jupp/cmd.c,v 1.24 2017/12/07 02:10:16 tg Exp $");
 
 #include <stdlib.h>
 #include <string.h>
@@ -81,7 +81,7 @@ static int do_keymap(BW *bw, unsigned char *s, void *object, int *notify)
 }
 static int ukeymap(BW *bw)
 {
-       if (wmkpw(bw->parent, US "Name of keymap to switch to: ", NULL,
+       if (wmkpw(bw->parent, UC "Name of keymap to switch to: ", NULL,
            do_keymap, NULL, NULL, utypebw, NULL, NULL, locale_map)) {
                return (0);
        }
@@ -272,7 +272,7 @@ C("yapp", TYPETW + TYPEPW + EKILL, uyapp, NULL, 0, NULL)
 
 int execmd(CMD *cmd, int k)
 {
-       BW *bw = (BW *) maint->curwin->object;
+       BW *bw = maint->curwin->object.bw;
        int ret = -1;
 
        /* Send data to shell window: this is broken ^K ^H (help) sends its ^H to shell */
@@ -301,7 +301,7 @@ int execmd(CMD *cmd, int k)
 
        /* Complete selection for block commands */
        if ((cmd->flag & EBLOCK) && marking)
-               utoggle_marking(maint->curwin->object);
+               utoggle_marking(maint->curwin->object.bw);
 
        if ((maint->curwin->watom->what & TYPETW) && bw->b->rdonly && (cmd->flag & EMOD)) {
                msgnw(bw->parent, UC "Read only");
@@ -321,7 +321,7 @@ int execmd(CMD *cmd, int k)
                return 0;
 
        /* cmd->func could have changed bw on us */
-       bw = (BW *) maint->curwin->object;
+       bw = maint->curwin->object.bw;
 
        /* Maintain position history */
        /* If command was not a positioning command */
@@ -443,7 +443,7 @@ B *cmdhist = NULL;
 
 int uexecmd(BW *bw)
 {
-       if (wmkpw(bw->parent, US "cmd: ", &cmdhist, docmd, US "cmd", NULL, cmdcmplt, NULL, NULL, locale_map)) {
+       if (wmkpw(bw->parent, UC "cmd: ", &cmdhist, docmd, UC "cmd", NULL, cmdcmplt, NULL, NULL, locale_map)) {
                return 0;
        } else {
                return -1;
@@ -474,7 +474,7 @@ static int do_helpcard(BASE *base, unsigned char *s, void *object, int *notify)
 }
 int u_helpcard(BASE *base)
 {
-       if (wmkpw(base->parent, US "Name of help card to show: ", NULL,
+       if (wmkpw(base->parent, UC "Name of help card to show: ", NULL,
            do_helpcard, NULL, NULL, utypebw, NULL, NULL, locale_map)) {
                return (0);
        }
index ce9b147..f582ab9 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-2 for joe 3.1jupp31dev.
+# Generated by GNU Autoconf 2.61-MirPorts-2 for joe 3.1jupp32.
 #
 # 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.1jupp31dev'
-PACKAGE_STRING='joe 3.1jupp31dev'
+PACKAGE_VERSION='3.1jupp32'
+PACKAGE_STRING='joe 3.1jupp32'
 PACKAGE_BUGREPORT=''
 
 ac_unique_file="b.c"
@@ -1229,7 +1229,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.1jupp31dev to adapt to many kinds of systems.
+\`configure' configures joe 3.1jupp32 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1300,7 +1300,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of joe 3.1jupp31dev:";;
+     short | recursive ) echo "Configuration of joe 3.1jupp32:";;
    esac
   cat <<\_ACEOF
 
@@ -1314,6 +1314,7 @@ Optional Features:
   --disable-curses        disable use of curses library
   --disable-termcap       disable use of termcap library
   --disable-terminfo      disable use of terminfo functions
+  --disable-selinux       disable SELinux context copying
   --disable-search-libs   do not search in any external libraries
   --disable-getpwnam      disable use of getpwnam function
   --disable-termidx       do not build the termidx binary
@@ -1322,6 +1323,7 @@ Optional Features:
   --disable-largefile     omit support for large files
   --disable-fork          disable use of fork
   --disable-fpu           disable use of floating point arithmetics
+  --enable-small          reduce memory footprint by a few KiB
 
 Some influential environment variables:
   CC          C compiler command
@@ -1396,7 +1398,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-joe configure 3.1jupp31dev
+joe configure 3.1jupp32
 generated by GNU Autoconf 2.61-MirPorts-2
 
 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1410,7 +1412,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.1jupp31dev, which was
+It was created by joe $as_me 3.1jupp32, which was
 generated by GNU Autoconf 2.61-MirPorts-2.  Invocation command line was
 
   $ $0 $@
@@ -2211,7 +2213,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='joe'
- VERSION='3.1jupp31dev'
+ VERSION='3.1jupp32'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -4017,6 +4019,14 @@ else
 fi
 
 
+# Check whether --enable-selinux was given.
+if test "${enable_selinux+set}" = set; then
+  enableval=$enable_selinux; selinux=$enableval
+else
+  selinux=yes
+fi
+
+
 # Check whether --enable-search_libs was given.
 if test "${enable_search_libs+set}" = set; then
   enableval=$enable_search_libs; search_libs=$enableval
@@ -4385,7 +4395,10 @@ _ACEOF
 
 fi
 
-{ echo "$as_me:$LINENO: checking for library containing is_selinux_enabled" >&5
+if test x"$selinux" = x"no"; then
+       echo "DISabling looking for SELinux support"
+else
+       { echo "$as_me:$LINENO: checking for library containing is_selinux_enabled" >&5
 echo $ECHO_N "checking for library containing is_selinux_enabled... $ECHO_C" >&6; }
 if test "${ac_cv_search_is_selinux_enabled+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -4472,6 +4485,7 @@ _ACEOF
 
 fi
 
+fi
 
 
 # other conditionals
@@ -5432,37 +5446,8 @@ _ACEOF
 fi
 
 
-if test "$ac_cv_header_selinux_selinux_h" = "yes" -a "$ac_cv_header_selinux_context_h" = "yes" ; then
-       echo "Enabling SELinux context copying!"
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_SELINUX_HDR 1
-_ACEOF
-
-fi
-
 # Checks for typedefs, structures, and compiler characteristics.
 
-{ echo "$as_me:$LINENO: checking for function prototypes" >&5
-echo $ECHO_N "checking for function prototypes... $ECHO_C" >&6; }
-if test "$ac_cv_prog_cc_c89" != no; then
-  { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
-
-cat >>confdefs.h <<\_ACEOF
-#define PROTOTYPES 1
-_ACEOF
-
-
-cat >>confdefs.h <<\_ACEOF
-#define __PROTOTYPES 1
-_ACEOF
-
-else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
-
 { echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5
 echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6; }
 if test "${ac_cv_c_const+set}" = set; then
@@ -10277,6 +10262,21 @@ else
        echo "DISabling Math support for lack of an FPU!"
 fi
 
+# Check whether --enable-small was given.
+if test "${enable_small+set}" = set; then
+  enableval=$enable_small; use_small=$enableval
+else
+  use_small=no
+fi
+
+if test x"$use_small" = x"yes"; then
+       # for constrained systems (like 8 MiB RAM total) only
+
+cat >>confdefs.h <<\_ACEOF
+#define SMALL 1
+_ACEOF
+
+fi
 
 { echo "$as_me:$LINENO: checking whether strlcpy is declared" >&5
 echo $ECHO_N "checking whether strlcpy is declared... $ECHO_C" >&6; }
@@ -10666,9 +10666,6 @@ _ACEOF
        fi
 
 
-
-
-
 # Check for programs..
 # Extract the first word of "aspell", so it can be a program name with args.
 set dummy aspell; ac_word=$2
@@ -11135,7 +11132,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.1jupp31dev, which was
+This file was extended by joe $as_me 3.1jupp32, which was
 generated by GNU Autoconf 2.61-MirPorts-2.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -11188,7 +11185,7 @@ Report bugs to <bug-autoconf@gnu.org>."
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF
 ac_cs_version="\\
-joe config.status 3.1jupp31dev
+joe config.status 3.1jupp32
 configured by $0, generated by GNU Autoconf 2.61-MirPorts-2,
   with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
 
index 67c1779..fa1f88b 100644 (file)
@@ -1,4 +1,4 @@
-# $MirOS: contrib/code/jupp/configure.ac,v 1.64 2017/12/06 21:16:55 tg Exp $
+# $MirOS: contrib/code/jupp/configure.ac,v 1.65 2017/12/07 00:48:10 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.1jupp31dev)
+AC_INIT(joe, 3.1jupp32)
 #### But see main.c for the Copyright (c) owner and year! ####
 AC_CONFIG_SRCDIR([b.c])
 
@@ -256,6 +256,13 @@ else
        echo "DISabling Math support for lack of an FPU!"
 fi
 
+AC_ARG_ENABLE([small],
+[  --enable-small          reduce memory footprint by a few KiB],
+       use_small=$enableval, use_small=no)
+if test x"$use_small" = x"yes"; then
+       # for constrained systems (like 8 MiB RAM total) only
+       AC_DEFINE([SMALL], [1], [Reduce memory footprint slightly])
+fi
 
 AC_CHECK_DECLS([strlcpy, strlcat, popen])
 AC_CHECK_DECLS([ctime], [], [], [AC_INCLUDES_DEFAULT
index 117eef3..266f94a 100644 (file)
@@ -31,7 +31,7 @@
                        help to these files.
                </p>
                <p>
-                       The help system is based on bi-directional list of help screens. 
+                       The help system is based on bi-directional list of help screens.
                        Each help screen has defined two variables, help text (<i>char
                        *hlptxt</i>) and number of lines of help text (<i>int
                        hlplns</i>).  Since this version the help file can/should be
@@ -75,5 +75,5 @@
                        Any comments, ideas, questions send to me at <a href="mailto:xgrac@fi.muni.cz">xgrac@fi.muni.cz</a>
                </p>
        </body>
-<!-- $MirOS: contrib/code/jupp/docs/help-system.html,v 1.2 2008/05/13 16:17:44 tg Exp $ -->
+<!-- $MirOS: contrib/code/jupp/docs/help-system.html,v 1.3 2017/12/06 23:17:37 tg Exp $ -->
 </html>
diff --git a/help.c b/help.c
index f74957d..77803b7 100644 (file)
--- a/help.c
+++ b/help.c
@@ -9,7 +9,7 @@
 #include "config.h"
 #include "types.h"
 
-__RCSID("$MirOS: contrib/code/jupp/help.c,v 1.12 2017/12/06 23:02:02 tg Exp $");
+__RCSID("$MirOS: contrib/code/jupp/help.c,v 1.13 2017/12/06 23:17:33 tg Exp $");
 
 #include <stdlib.h>
 #include <string.h>
@@ -31,10 +31,10 @@ __RCSID("$MirOS: contrib/code/jupp/help.c,v 1.12 2017/12/06 23:02:02 tg Exp $");
 
 struct help *help_actual = NULL;                       /* actual help screen */
 
-/* 
+/*
  * Process help file
  * Returns 0 if the help file was succefully processed
- *        -1 if the help file couldn't be opened 
+ *        -1 if the help file couldn't be opened
  *        NOT_ENOUGH_MEMORY if there is not enough memory
  */
 int
@@ -123,7 +123,7 @@ help_init(const unsigned char *filename)
        jfclose(fd);                                    /* close help file */
 
        fprintf(stderr, "done\n");
-       
+
        while (help_actual && help_actual->prev) {      /* move to first help screen */
                help_actual = help_actual->prev;
        }
@@ -261,7 +261,7 @@ help_display(SCREEN *t)
                                                        ++str;
                                                        --x;
                                                        continue;
-                                               case 0: 
+                                               case 0:
                                                        --x;
                                                        continue;
                                                }
@@ -284,7 +284,7 @@ help_display(SCREEN *t)
 }
 
 /*
- * Show help screen 
+ * Show help screen
  */
 int
 help_on(SCREEN *t)
diff --git a/i18n.c b/i18n.c
index c119921..edd9395 100644 (file)
--- a/i18n.c
+++ b/i18n.c
@@ -19,7 +19,7 @@
 #include "config.h"
 #include <stdlib.h>
 
-__RCSID("$MirOS: contrib/code/jupp/i18n.c,v 1.31 2017/12/06 21:46:55 tg Exp $");
+__RCSID("$MirOS: contrib/code/jupp/i18n.c,v 1.32 2017/12/07 01:00:31 tg Exp $");
 
 #include "charmap.h"
 #include "utils.h"
@@ -6938,6 +6938,7 @@ CPPFLAGS+=        -DTEST -DTEST_I18N
 
 .ifdef __CRAZY
 COPTS+=                -Wno-unused-parameter -Wno-cast-qual
+COPTS+=                -Wno-strict-prototypes
 .endif
 
 .include <bsd.prog.mk>
index eae1233..36e20d3 100644 (file)
@@ -1,4 +1,4 @@
- $MirOS: contrib/code/jupp/jmacsrc.in,v 1.23 2017/01/11 00:41:17 tg Exp $
+ $MirOS: contrib/code/jupp/jmacsrc.in,v 1.24 2017/12/06 23:17:33 tg Exp $
 
                          Initialization file for JOE
                                 GNU-Emacs Joe
   %y  Syntax
 
  The formatting escape sequences may also be given:
+
   \i  Inverse
   \u  Underline
   \b  Bold
index 8662b8f..93a6d34 100644 (file)
--- a/joerc.in
+++ b/joerc.in
@@ -1,4 +1,4 @@
- $MirOS: contrib/code/jupp/joerc.in,v 1.24 2017/01/11 00:41:18 tg Exp $
+ $MirOS: contrib/code/jupp/joerc.in,v 1.25 2017/12/06 23:17:33 tg Exp $
 
                          Initialization file for JOE
                                 Standard Joe
   %x  Context (first non-indented line going backwards)
 
  These formatting escape sequences may also be given:
+
   \i  Inverse
   \u  Underline
   \b  Bold
index 364ddc3..81bb7c9 100644 (file)
@@ -1,4 +1,4 @@
- $MirOS: contrib/code/jupp/jpicorc.in,v 1.23 2017/01/11 00:41:18 tg Exp $
+ $MirOS: contrib/code/jupp/jpicorc.in,v 1.24 2017/12/06 23:17:33 tg Exp $
 
                          Initialization file for JOE
                                  Super Pico
   %y  Syntax
 
  These formatting escape sequences may also be given:
+
   \i  Inverse
   \u  Underline
   \b  Bold
index 327a3a7..4c92790 100644 (file)
@@ -1,4 +1,4 @@
- $MirOS: contrib/code/jupp/jstarrc.in,v 1.25 2017/01/11 00:41:18 tg Exp $
+ $MirOS: contrib/code/jupp/jstarrc.in,v 1.26 2017/12/06 23:17:34 tg Exp $
 
                          Initialization file for JOE
                            WordStar / Turbo-C Joe
   %y  Syntax
 
  The formatting escape sequences may also be given:
+
   \i  Inverse
   \u  Underline
   \b  Bold
diff --git a/kbd.c b/kbd.c
index 89b5b81..da222b5 100644 (file)
--- a/kbd.c
+++ b/kbd.c
@@ -8,7 +8,7 @@
 #include "config.h"
 #include "types.h"
 
-__RCSID("$MirOS: contrib/code/jupp/kbd.c,v 1.7 2017/12/06 23:02:02 tg Exp $");
+__RCSID("$MirOS: contrib/code/jupp/kbd.c,v 1.8 2017/12/07 02:13:05 tg Exp $");
 
 #include <stdlib.h>
 #include <string.h>
diff --git a/kbd.h b/kbd.h
index 3c4de8b..5ed3675 100644 (file)
--- a/kbd.h
+++ b/kbd.h
@@ -9,7 +9,7 @@
 #define _JOE_KBD_H 1
 
 #ifdef EXTERN
-__IDSTRING(rcsid_kbd_h, "$MirOS: contrib/code/jupp/kbd.h,v 1.5 2017/12/06 21:16:57 tg Exp $");
+__IDSTRING(rcsid_kbd_h, "$MirOS: contrib/code/jupp/kbd.h,v 1.6 2017/12/07 02:13:05 tg Exp $");
 #endif
 
 /* KMAP *mkkmap(void);
@@ -45,7 +45,7 @@ void rmkmap(KMAP *kmap);
  * a range-fill of the form: <KEY> TO <KEY>
  *
  * So for example, if the sequence: ^K A TO Z
- * is speicified, then the key sequences
+ * is specified, then the key sequences
  * ^K A, ^K B, ^K C, ... ^K Z are all bound.
  */
 int kadd(CAP *cap, KMAP *kmap, unsigned char *seq, void *bind);
diff --git a/macro.c b/macro.c
index 5d23df5..514ad6a 100644 (file)
--- a/macro.c
+++ b/macro.c
@@ -8,7 +8,7 @@
 #include "config.h"
 #include "types.h"
 
-__RCSID("$MirOS: contrib/code/jupp/macro.c,v 1.15 2017/12/06 23:02:03 tg Exp $");
+__RCSID("$MirOS: contrib/code/jupp/macro.c,v 1.16 2017/12/06 23:58:37 tg Exp $");
 
 #include <string.h>
 #include <stdlib.h>
@@ -578,7 +578,7 @@ static int doarg(BW *bw, unsigned char *s, void *object, int *notify)
 
 int uarg(BW *bw)
 {
-       if (wmkpw(bw->parent, US "No. times to repeat next command (^C to abort): ", NULL, doarg, NULL, NULL, utypebw, NULL, NULL, locale_map))
+       if (wmkpw(bw->parent, UC "No. times to repeat next command (^C to abort): ", NULL, doarg, NULL, NULL, utypebw, NULL, NULL, locale_map))
                return 0;
        else
                return -1;
diff --git a/main.c b/main.c
index f4106dc..7909b5b 100644 (file)
--- a/main.c
+++ b/main.c
@@ -32,7 +32,7 @@
 #include "config.h"
 #include "types.h"
 
-__RCSID("$MirOS: contrib/code/jupp/main.c,v 1.37 2017/12/06 23:02:03 tg Exp $");
+__RCSID("$MirOS: contrib/code/jupp/main.c,v 1.38 2017/12/07 02:10:16 tg Exp $");
 
 #include <fcntl.h>
 #include <string.h>
@@ -80,7 +80,7 @@ void dofollows(void)
        W *w = maint->curwin;
 
        do {
-               if (w->y != -1 && w->watom->follow && w->object)
+               if (w->y != -1 && w->watom->follow && w->object.base)
                        w->watom->follow(w->object);
                w = (W *) (w->link.next);
        } while (w != maint->curwin);
@@ -112,7 +112,7 @@ void edupd(int flg)
        w = maint->curwin;
        do {
                if (w->y != -1) {
-                       if (w->object && w->watom->disp)
+                       if (w->object.base && w->watom->disp)
                                w->watom->disp(w->object, flg);
                        msgout(w);
                }
@@ -414,7 +414,7 @@ main_init(int argc, char **argv, char **envp, SCRN **np)
                    locale_map->name, locale_map->type ? "©" : "(c)",
                    fdefault.hmsg ? " " : "",
                    fdefault.hmsg ? fdefault.hmsg : "");
-               msgnw(((BASE *)lastw(maint)->object)->parent, msgbuf);
+               msgnw(lastw(maint)->object.base->parent, msgbuf);
        }
 
        *np = n;
diff --git a/menu.c b/menu.c
index a04b707..cfa8f44 100644 (file)
--- a/menu.c
+++ b/menu.c
@@ -8,7 +8,7 @@
 #include "config.h"
 #include "types.h"
 
-__RCSID("$MirOS: contrib/code/jupp/menu.c,v 1.9 2017/12/06 23:02:03 tg Exp $");
+__RCSID("$MirOS: contrib/code/jupp/menu.c,v 1.11 2017/12/07 02:10:16 tg Exp $");
 
 #include <stdlib.h>
 #include <string.h>
@@ -25,16 +25,18 @@ extern int dostaupd;
 
 static void mconfig(MENU *);
 
-static void menufllw(MENU *m)
+static void menufllw(jobject jO)
 {
+       MENU *m = jO.menu;
        if (m->cursor < m->top)
                m->top = m->cursor - m->cursor % m->perline;
        else if (m->cursor >= m->top+m->perline*m->h)
                m->top = m->cursor - m->cursor % m->perline - m->perline*(m->h-1);
 }
 
-static void menudisp(MENU *m)
+static void menudisp(jobject jO, int flg __attribute__((__unused__)))
 {
+       MENU *m = jO.menu;
        int col;
        int x;
        int y;
@@ -51,7 +53,7 @@ static void menudisp(MENU *m)
                col = 0;
                for (x = 0; x != m->perline && y*m->perline+x+m->top<m->nitems; ++x) {
                        int atr;
-       
+
                        if (x + y*m->perline + m->top == m->cursor)
                                atr = INVERSE;
                        else
@@ -94,14 +96,16 @@ static void menudisp(MENU *m)
            (m->width + 1) + (col < m->width ? col : m->width);
 }
 
-static void menumove(MENU *m, int x, int y)
+static void menumove(jobject jO, int x, int y)
 {
+       MENU *m = jO.menu;
        m->x = x;
        m->y = y;
 }
 
-static void menuresz(MENU *m, int wi, int he)
+static void menuresz(jobject jO, int wi, int he)
 {
+       MENU *m = jO.menu;
        m->w = wi;
        m->h = he;
 }
@@ -309,8 +313,9 @@ int umpgdn(MENU *m)
 
 }
 
-static int umrtn(MENU *m)
+static int umrtn(jobject jO)
 {
+       MENU *m = jO.menu;
        dostaupd = 1;
        if (m->func)
                return m->func(m, m->cursor, m->object, 0);
@@ -326,8 +331,9 @@ int umbacks(MENU *m)
                return -1;
 }
 
-static int umkey(MENU *m, int c)
+static int umkey(jobject jO, int c)
 {
+       MENU *m = jO.menu;
        int x;
        int n = 0;
 
@@ -355,7 +361,7 @@ static int umkey(MENU *m, int c)
                for (x = 0; x != m->nitems; ++x)
                        if ((m->list[x][0] & 0x1F) == c) {
                                m->cursor = x;
-                               return umrtn(m);
+                               return umrtn(jO);
                        }
        do {
                ++m->cursor;
@@ -366,8 +372,9 @@ static int umkey(MENU *m, int c)
        return -1;
 }
 
-static int menuabort(MENU *m)
+static int menuabort(jobject jO)
 {
+       MENU *m = jO.menu;
        W *w = m->parent;
        jpoly_int *func = m->abrt;
        void *object = m->object;
@@ -410,7 +417,7 @@ MENU *mkmenu(W *w, unsigned char **s, jpoly_int *func, jpoly_int *abrt, jpoly_in
        int h = (w->main->h*40) / 100; /* 40% of window size */
        if (!h)
                h = 1;
-       
+
        if (s) {
                lines = mlines(s,w->t->w-1);
                if (lines < h)
@@ -425,7 +432,7 @@ MENU *mkmenu(W *w, unsigned char **s, jpoly_int *func, jpoly_int *abrt, jpoly_in
                return NULL;
        }
        wfit(new->t);
-       new->object = (void *) (m = (MENU *) joe_malloc(sizeof(MENU)));
+       new->object.menu = m = (MENU *)joe_malloc(sizeof(MENU));
        m->parent = new;
        m->func = func;
        m->abrt = abrt;
diff --git a/path.c b/path.c
index 068372e..bb3f354 100644 (file)
--- a/path.c
+++ b/path.c
@@ -1,4 +1,4 @@
-/* 
+/*
  *     Directory and path functions
  *     Copyright
  *             (C) 1992 Joseph H. Allen
@@ -8,7 +8,7 @@
 #include "config.h"
 #include "types.h"
 
-__RCSID("$MirOS: contrib/code/jupp/path.c,v 1.15 2017/12/06 21:16:58 tg Exp $");
+__RCSID("$MirOS: contrib/code/jupp/path.c,v 1.16 2017/12/06 23:17:34 tg Exp $");
 
 #include <sys/stat.h>
 #include <fcntl.h>
index 8321a77..52c243a 100644 (file)
--- a/poshist.c
+++ b/poshist.c
@@ -8,7 +8,7 @@
 #include "config.h"
 #include "types.h"
 
-__RCSID("$MirOS: contrib/code/jupp/poshist.c,v 1.6 2017/12/06 23:02:03 tg Exp $");
+__RCSID("$MirOS: contrib/code/jupp/poshist.c,v 1.7 2017/12/07 02:10:17 tg Exp $");
 
 #include <stdlib.h>
 
@@ -86,7 +86,7 @@ int unextpos(BW *bw)
                if (!curpos->p || !curpos->w) {
                        goto lp;
                }
-               if (w->t->curwin == curpos->w && curpos->p->byte == ((BW *) w->t->curwin->object)->cursor->byte) {
+               if (w->t->curwin == curpos->w && curpos->p->byte == w->t->curwin->object.bw->cursor->byte) {
                        goto lp;
                }
                if (w->t->curwin != curpos->w) {
@@ -96,7 +96,7 @@ int unextpos(BW *bw)
                        }
                }
                w = w->t->curwin;
-               bw = (BW *) w->object;
+               bw = w->object.bw;
                if (bw->cursor->byte != curpos->p->byte) {
                        pset(bw->cursor, curpos->p);
                }
@@ -116,7 +116,7 @@ int uprevpos(BW *bw)
                if (!curpos->p || !curpos->w) {
                        goto lp;
                }
-               if (w->t->curwin == curpos->w && curpos->p->byte == ((BW *) w->t->curwin->object)->cursor->byte) {
+               if (w->t->curwin == curpos->w && curpos->p->byte == w->t->curwin->object.bw->cursor->byte) {
                        goto lp;
                }
                if (w->t->curwin != curpos->w) {
@@ -126,7 +126,7 @@ int uprevpos(BW *bw)
                        }
                }
                w = w->t->curwin;
-               bw = (BW *) w->object;
+               bw = w->object.bw;
                if (bw->cursor->byte != curpos->p->byte) {
                        pset(bw->cursor, curpos->p);
                }
diff --git a/pw.c b/pw.c
index 7eb1359..983e4d1 100644 (file)
--- a/pw.c
+++ b/pw.c
@@ -8,7 +8,7 @@
 #include "config.h"
 #include "types.h"
 
-__RCSID("$MirOS: contrib/code/jupp/pw.c,v 1.10 2017/12/06 23:02:03 tg Exp $");
+__RCSID("$MirOS: contrib/code/jupp/pw.c,v 1.13 2017/12/07 02:10:17 tg Exp $");
 
 #include <stdlib.h>
 #include <string.h>
@@ -34,8 +34,9 @@ __RCSID("$MirOS: contrib/code/jupp/pw.c,v 1.10 2017/12/06 23:02:03 tg Exp $");
 extern int smode;
 extern int dobeep;
 
-static void disppw(BW *bw, int flg)
+static void disppw(jobject jO, int flg)
 {
+       BW *bw = jO.bw;
        W *w = bw->parent;
        PW *pw = (PW *) bw->object;
 
@@ -84,8 +85,9 @@ static void disppw(BW *bw, int flg)
 
 extern volatile int dostaupd;
 
-static int rtnpw(BW *bw)
+static int rtnpw(jobject jO)
 {
+       BW *bw = jO.bw;
        W *w = bw->parent;
        PW *pw = (PW *) bw->object;
        unsigned char *s;
@@ -98,14 +100,26 @@ static int rtnpw(BW *bw)
        p_goto_eol(bw->cursor);
        byte = bw->cursor->byte;
        p_goto_bol(bw->cursor);
-       s = brvs(bw->cursor, (int) (byte - bw->cursor->byte));
+       s = brvs(bw->cursor, (int)(byte - bw->cursor->byte));
        if (pw->hist) {
                if (bw->b->changed) {
                        P *q = pdup(pw->hist->eof);
-
-                       binsm(q, s, (int) (byte - bw->cursor->byte));
-                       p_goto_eof(q);
-                       binsc(q, '\n');
+                       P *r = pdup(q);
+                       unsigned char *s2;
+                       long byte2;
+
+                       pprevl(r);
+                       byte2 = r->byte;
+                       p_goto_bol(r);
+                       s2 = brs(r, (int)(byte2 - r->byte));
+                       prm(r);
+                       byte2 = strcmp(s, s2);
+                       joe_free(s2);
+                       if (byte2) {
+                               binsm(q, s, (int)(byte - bw->cursor->byte));
+                               p_goto_eof(q);
+                               binsc(q, '\n');
+                       }
                        prm(q);
                } else {
                        P *q = pdup(pw->hist->bof);
@@ -129,7 +143,7 @@ static int rtnpw(BW *bw)
        bwrm(bw);
        joe_free(pw->prompt);
        joe_free(pw);
-       w->object = NULL;
+       w->object.base = NULL;
        notify = w->notify;
        w->notify = 0;
        wabort(w);
@@ -166,8 +180,9 @@ static void delpw(BW *bw, B *b, long l, long n, int flg)
        }
 }
 
-static int abortpw(BW *b)
+static int abortpw(jobject jO)
 {
+       BW *b = jO.bw;
        PW *pw = b->object;
        void *object = pw->object;
        jpoly_int *abrt = pw->abrt;
@@ -200,7 +215,7 @@ WATOM watompw = {
 
 /* Create a prompt window */
 
-BW *wmkpw(W *w, unsigned char *prompt, B **history, jpoly_int *func, const unsigned char *huh, jpoly_int *abrt, jpoly_int *tab, void *object, int *notify, struct charmap *map)
+BW *wmkpw(W *w, const unsigned char *prompt, B **history, jpoly_int *func, const unsigned char *huh, jpoly_int *abrt, jpoly_int *tab, void *object, int *notify, struct charmap *map)
 {
        W *new;
        PW *pw;
@@ -214,13 +229,13 @@ BW *wmkpw(W *w, unsigned char *prompt, B **history, jpoly_int *func, const unsig
                return NULL;
        }
        wfit(new->t);
-       new->object = (void *) (bw = bwmk(new, bmk(NULL), 1));
+       new->object.bw = bw = bwmk(new, bmk(NULL), 1);
        bw->b->o.charmap = map;
        bw->object = (void *) (pw = (PW *) joe_malloc(sizeof(PW)));
        pw->abrt = abrt;
        pw->tab = tab;
        pw->object = object;
-       pw->prompt = (unsigned char *)strdup((char *)prompt);
+       pw->prompt = (unsigned char *)strdup((const char *)prompt);
        pw->promptlen = fmtlen(prompt);
        pw->promptofst = 0;
        pw->pfunc = func;
@@ -278,7 +293,7 @@ int cmplt_abrt(BW *bw, int x, unsigned char *line)
 
 int cmplt_rtn(MENU *m, int x, unsigned char *line)
 {
-       cmplt_ins(m->parent->win->object, m->list[x]);
+       cmplt_ins(m->parent->win->object.bw, m->list[x]);
        vsrm(line);
        m->object = NULL;
        wabort(m->parent);
diff --git a/pw.h b/pw.h
index 2f5c412..fa9462b 100644 (file)
--- a/pw.h
+++ b/pw.h
@@ -9,14 +9,14 @@
 #define _JOE_PW_H 1
 
 #ifdef EXTERN_CMD_C
-__IDSTRING(rcsid_pw_h, "$MirOS: contrib/code/jupp/pw.h,v 1.8 2017/12/06 23:02:04 tg Exp $");
+__IDSTRING(rcsid_pw_h, "$MirOS: contrib/code/jupp/pw.h,v 1.9 2017/12/06 23:58:37 tg Exp $");
 #endif
 
 /* BW *wmkpw(BW *bw,char *prompt,int (*func)(),char *huh,int (*abrt)(),
              int (*tab)(),void *object,int *notify);
  * Create a prompt window for the given window
  */
-BW *wmkpw(W *w, unsigned char *prompt, B **history, jpoly_int *func, const unsigned char *huh, jpoly_int *abrt, jpoly_int *tab, void *object, int *notify, struct charmap *map);
+BW *wmkpw(W *w, const unsigned char *prompt, B **history, jpoly_int *func, const unsigned char *huh, jpoly_int *abrt, jpoly_int *tab, void *object, int *notify, struct charmap *map);
 
 int ucmplt(BW *bw, int k);
 
diff --git a/queue.h b/queue.h
index 2f07909..97798a0 100644 (file)
--- a/queue.h
+++ b/queue.h
@@ -6,10 +6,10 @@
  *     This file is part of JOE (Joe's Own Editor)
  */
 #ifndef _JOE_QUEUE
-#define _JOE_QUEUE 1 
+#define _JOE_QUEUE 1
 
 #ifdef EXTERN_B_C
-__IDSTRING(rcsid_queue_h, "$MirOS: contrib/code/jupp/queue.h,v 1.5 2017/12/06 21:16:59 tg Exp $");
+__IDSTRING(rcsid_queue_h, "$MirOS: contrib/code/jupp/queue.h,v 1.6 2017/12/06 23:17:34 tg Exp $");
 #endif
 
 extern void *ITEM;
diff --git a/qw.c b/qw.c
index 260ce17..942c530 100644 (file)
--- a/qw.c
+++ b/qw.c
@@ -8,7 +8,7 @@
 #include "config.h"
 #include "types.h"
 
-__RCSID("$MirOS: contrib/code/jupp/qw.c,v 1.8 2017/12/06 23:02:04 tg Exp $");
+__RCSID("$MirOS: contrib/code/jupp/qw.c,v 1.9 2017/12/07 02:10:17 tg Exp $");
 
 #include <stdlib.h>
 
@@ -19,8 +19,9 @@ __RCSID("$MirOS: contrib/code/jupp/qw.c,v 1.8 2017/12/06 23:02:04 tg Exp $");
 #include "scrn.h"
 #include "w.h"
 
-static void dispqw(QW *qw)
+static void dispqw(jobject jO, int flg __attribute__((__unused__)))
 {
+       QW *qw = jO.qw;
        W *w = qw->parent;
 
        /* Scroll buffer and position prompt */
@@ -49,8 +50,9 @@ static void dispqw(QW *qw)
                 NULL);
 }
 
-static void dispqwn(QW *qw)
+static void dispqwn(jobject jO, int flg __attribute__((__unused__)))
 {
+       QW *qw = jO.qw;
        W *w = qw->parent;
 
        /* Scroll buffer and position prompt */
@@ -60,10 +62,10 @@ static void dispqwn(QW *qw)
                qw->promptofst = 0;
 
        /* Set cursor position */
-       if (w->win->watom->follow && w->win->object)
+       if (w->win->watom->follow && w->win->object.base)
                w->win->watom->follow(w->win->object);
-       if (w->win->watom->disp && w->win->object)
-               w->win->watom->disp(w->win->object);
+       if (w->win->watom->disp && w->win->object.base)
+               w->win->watom->disp(w->win->object, 1);
        w->curx = w->win->curx;
        w->cury = w->win->cury + w->win->y - w->y;
 
@@ -87,8 +89,9 @@ static void dispqwn(QW *qw)
 
 struct utf8_sm qw_sm;
 
-static int utypeqw(QW *qw, int c)
+static int utypeqw(jobject jO, int c)
 {
+       QW *qw = jO.qw;
        W *win;
        W *w = qw->parent;
        int *notify = w->notify;
@@ -105,7 +108,7 @@ static int utypeqw(QW *qw, int c)
        func = qw->func;
        vsrm(qw->prompt);
        joe_free(qw);
-       w->object = NULL;
+       w->object.base = NULL;
        w->notify = NULL;
        wabort(w);
        if (func)
@@ -113,8 +116,9 @@ static int utypeqw(QW *qw, int c)
        return -1;
 }
 
-static int abortqw(QW *qw)
+static int abortqw(jobject jO)
 {
+       QW *qw = jO.qw;
        W *win = qw->parent->win;
        void *object = qw->object;
        jpoly_int *abrt = qw->abrt;
@@ -183,7 +187,7 @@ QW *mkqw(W *w, unsigned char *prompt, int len, jpoly_int *func, jpoly_int *abrt,
                return NULL;
        }
        wfit(new->t);
-       new->object = (void *) (qw = (QW *) joe_malloc(sizeof(QW)));
+       new->object.qw = qw = (QW *)joe_malloc(sizeof(QW));
        qw->parent = new;
        qw->prompt = vsncpy(NULL, 0, prompt, len);
        qw->promptlen = len;
@@ -210,7 +214,7 @@ QW *mkqwna(W *w, unsigned char *prompt, int len, jpoly_int *func, jpoly_int *abr
                return NULL;
        }
        wfit(new->t);
-       new->object = (void *) (qw = (QW *) joe_malloc(sizeof(QW)));
+       new->object.qw = qw = (QW *)joe_malloc(sizeof(QW));
        qw->parent = new;
        qw->prompt = vsncpy(NULL, 0, prompt, len);
        qw->promptlen = len;
@@ -237,7 +241,7 @@ QW *mkqwnsr(W *w, unsigned char *prompt, int len, jpoly_int *func, jpoly_int *ab
                return NULL;
        }
        wfit(new->t);
-       new->object = (void *) (qw = (QW *) joe_malloc(sizeof(QW)));
+       new->object.qw = qw = (QW *)joe_malloc(sizeof(QW));
        qw->parent = new;
        qw->prompt = vsncpy(NULL, 0, prompt, len);
        qw->promptlen = len;
diff --git a/rc.c b/rc.c
index 7acf91c..941573c 100644 (file)
--- a/rc.c
+++ b/rc.c
@@ -9,7 +9,7 @@
 #include "config.h"
 #include "types.h"
 
-__RCSID("$MirOS: contrib/code/jupp/rc.c,v 1.33 2017/12/06 23:02:04 tg Exp $");
+__RCSID("$MirOS: contrib/code/jupp/rc.c,v 1.35 2017/12/07 02:10:17 tg Exp $");
 
 #include <string.h>
 #include <stdlib.h>
@@ -666,8 +666,8 @@ check_for_hex(BW *bw)
        if (bw->o.hex)
                return 1;
        for (w = bw->parent->link.next; w != bw->parent; w = w->link.next)
-               if ((w->watom == &watomtw || w->watom == &watompw) && ((BW *)w->object)->b == bw->b &&
-                   ((BW *)w->object)->o.hex)
+               if ((w->watom == &watomtw || w->watom == &watompw) &&
+                   w->object.bw->b == bw->b && w->object.bw->o.hex)
                        return 1;
        return 0;
 }
@@ -717,7 +717,7 @@ static int encodingcmplt(BW *bw)
 
 static int doopt(MENU *m, int x, void *object, int flg)
 {
-       BW *bw = m->parent->win->object;
+       BW *bw = m->parent->win->object.bw;
        int *xx;
        unsigned char buf[OPT_BUF_SIZE];
        int *notify = m->parent->notify;
@@ -800,7 +800,7 @@ static int doopt(MENU *m, int x, void *object, int flg)
 
        case 9:
                joe_snprintf_1((char *)buf, OPT_BUF_SIZE, (char *)glopts[x].yes,
-                   bw->b->o.syntax ? bw->b->o.syntax->name : US "(unset)");
+                   bw->b->o.syntax ? bw->b->o.syntax->name : UC "(unset)");
                m->parent->notify = 0;
                wabort(m->parent);
                if (wmkpw(bw->parent, buf, NULL, dosyntax, NULL, NULL, syntaxcmplt, NULL, notify, locale_map))
diff --git a/rc.h b/rc.h
index 3e833f8..d115a8b 100644 (file)
--- a/rc.h
+++ b/rc.h
@@ -1,7 +1,7 @@
 /*
  *     *rc file parser
  *     Copyright
- *             (C) 1992 Joseph H. Allen; 
+ *             (C) 1992 Joseph H. Allen;
  *
  *     This file is part of JOE (Joe's Own Editor)
  */
@@ -9,7 +9,7 @@
 #define _JOE_RC_H 1
 
 #ifdef EXTERN
-__IDSTRING(rcsid_rc_h, "$MirOS: contrib/code/jupp/rc.h,v 1.7 2017/12/06 21:16:59 tg Exp $");
+__IDSTRING(rcsid_rc_h, "$MirOS: contrib/code/jupp/rc.h,v 1.8 2017/12/06 23:17:35 tg Exp $");
 #endif
 
 extern OPTIONS pdefault;
index e18cd85..3560324 100644 (file)
--- a/rjoerc.in
+++ b/rjoerc.in
@@ -1,4 +1,4 @@
- $MirOS: contrib/code/jupp/rjoerc.in,v 1.23 2017/01/11 00:41:18 tg Exp $
+ $MirOS: contrib/code/jupp/rjoerc.in,v 1.24 2017/12/06 23:17:35 tg Exp $
 
                          Initialization file for JOE
                             Restricted access Joe
   %x  Context (first non-indented line going backwards)
 
  These formatting escape sequences may also be given:
+
   \i  Inverse
   \u  Underline
   \b  Bold
index 6ea833d..35d8d97 100644 (file)
@@ -1,4 +1,4 @@
-# $MirOS: contrib/code/jupp/syntax/asm.jsf.in,v 1.4 2017/12/02 05:38:05 tg Exp $
+# $MirOS: contrib/code/jupp/syntax/asm.jsf.in,v 1.5 2017/12/06 23:17:37 tg Exp $
 #-
 # JOE syntax highlight file for assembly language
 
@@ -59,7 +59,7 @@ done
        *               preinc
        " \t"           preinc_ws
        "\n"            reset
-       
+
 :preinc_ws Preproc
        *               prebad          recolor=-1
        " \t"           preinc_ws
@@ -69,12 +69,12 @@ done
 :preinc_local IncLocal
        *               preinc_local
        "\"\n"          reset
-       
+
 :preinc_system IncSystem
        *               preinc_system
        ">\n"           reset
 
-:prebad        Bad     
+:prebad        Bad
        *               prebad
        "\n"            reset
 
@@ -83,7 +83,7 @@ done
        *               predef
        " \t"           predef_ws
        "\n"            reset
-       
+
 :predef_ws Preproc
        *               prebad          recolor=-1
        " \t"           predef_ws
@@ -99,12 +99,12 @@ done
        "\n"            reset
        "\\"            preproc_cont
        "/"             preproc_slash
-       
+
 :preproc_slash Preproc
        *               preproc         noeat
        "*"             comment         recolor=-2
        "/"             line_comment    recolor=-2
-       
+
 :preproc_cont Preproc
        *               preproc_cont
        "\n"            preproc
index f74b1c8..bc41cf8 100644 (file)
@@ -1,4 +1,4 @@
-# $MirOS: contrib/code/jupp/syntax/diff.jsf.in,v 1.6 2013/02/15 19:38:47 tg Exp $
+# $MirOS: contrib/code/jupp/syntax/diff.jsf.in,v 1.7 2017/12/06 23:17:37 tg Exp $
 #-
 # JOE syntax highlight file for diff/patch files
 #
@@ -59,7 +59,7 @@ done
 
 :udiff_o2 Idle
        *               garbage         recolor=-3      buffer
-       "-"             udiff_o3        
+       "-"             udiff_o3
 
 :udiff_o3 Idle
        *               garbage         recolor=-4      buffer
@@ -79,7 +79,7 @@ done
 
 :udiff_n2 Idle
        *               garbage         recolor=-3      buffer
-       "+"             udiff_n3        
+       "+"             udiff_n3
 
 :udiff_n3 Idle
        *               garbage         recolor=-4      buffer
@@ -246,7 +246,7 @@ done
 
 :cdiff_o2 Idle
        *               garbage         recolor=-3      buffer
-       "*"             cdiff_o3        
+       "*"             cdiff_o3
 
 :cdiff_o3 Idle
        *               garbage         recolor=-4      buffer
@@ -270,7 +270,7 @@ done
 
 :cdiff_n2 Idle
        *               garbage         recolor=-3      buffer
-       "-"             cdiff_n3        
+       "-"             cdiff_n3
 
 :cdiff_n3 Idle
        *               garbage         recolor=-4      buffer
@@ -303,7 +303,7 @@ done
 
 :cdiff_ho2 Idle
        *               garbage         recolor=-3      buffer
-       "*"             cdiff_ho3       
+       "*"             cdiff_ho3
 
 :cdiff_ho3 Idle
        *               garbage         recolor=-4      buffer
@@ -325,7 +325,7 @@ done
 
 :cdiff_ho7 Idle
        *               garbage         recolor=-3      buffer
-       "*"             cdiff_ho8       
+       "*"             cdiff_ho8
 
 :cdiff_ho8 Idle
        *               garbage         recolor=-4      buffer
@@ -346,7 +346,7 @@ done
 
 :cdiff_hn2 Idle
        *               garbage         recolor=-3      buffer
-       "-"             cdiff_hn3       
+       "-"             cdiff_hn3
 
 :cdiff_hn3 Idle
        *               garbage         recolor=-4      buffer
@@ -368,7 +368,7 @@ done
 
 :cdiff_hn7 Idle
        *               garbage         recolor=-3      buffer
-       "-"             cdiff_hn8       
+       "-"             cdiff_hn8
 
 :cdiff_hn8 Idle
        *               garbage         recolor=-4      buffer
index 358dd9b..9cb8a26 100644 (file)
@@ -1,4 +1,4 @@
-# $MirOS: contrib/code/jupp/syntax/fortran.jsf.in,v 1.3 2017/12/02 05:38:05 tg Exp $
+# $MirOS: contrib/code/jupp/syntax/fortran.jsf.in,v 1.4 2017/12/06 23:17:37 tg Exp $
 #-
 # JOE syntax highlight file for FORTRAN
 # Heavily improved by: Malte Thoma (thoma@uni-muenster.de)
@@ -11,7 +11,7 @@
 =Comment       green
 =Constant      cyan
 =Type          red
-=Keyword       bold 
+=Keyword       bold
 =Intrinsic     magenta
 =Preproc        yellow
 =Operator      magenta
        "cC*"           comment         recolor=-1
        "#"             pre             recolor=-1
 
-:pre   Preproc                                 
-       *               pre                             
-       "\n"            reset                   
-       
+:pre   Preproc
+       *               pre
+       "\n"            reset
+
 :comment Comment
        *               comment
        "\n"            reset
index f4c6409..f68976a 100644 (file)
@@ -1,4 +1,4 @@
-# $MirOS: contrib/code/jupp/syntax/pascal.jsf.in,v 1.2 2008/05/13 16:17:45 tg Exp $
+# $MirOS: contrib/code/jupp/syntax/pascal.jsf.in,v 1.3 2017/12/06 23:17:38 tg Exp $
 #-
 # PASCAL highlighter for JOE
 
@@ -16,7 +16,7 @@
        "("             maybe_comment
        "{"             comment         recolor=-1
        "'"             string          recolor=-1
-       "0-9"           number          recolor=-1 
+       "0-9"           number          recolor=-1
 
 # Comments
 
index fc102ca..dcc46a7 100644 (file)
@@ -1,4 +1,4 @@
-# $MirOS: contrib/code/jupp/syntax/php.jsf.in,v 1.5 2012/09/02 14:46:52 tg Exp $
+# $MirOS: contrib/code/jupp/syntax/php.jsf.in,v 1.6 2017/12/06 23:17:38 tg Exp $
 #-
 # JOE syntax highlight file for PHP
 
 :string_dq_esc Escape
        *               string_dq
        "\n"            string_dq       recolor=-2
-       
+
 :first_digit Constant
        *               idle    noeat
        "xX"            hex
index decac70..50726b4 100644 (file)
@@ -1,4 +1,4 @@
-# $MirOS: contrib/code/jupp/syntax/python.jsf.in,v 1.5 2012/10/23 16:29:16 tg Exp $
+# $MirOS: contrib/code/jupp/syntax/python.jsf.in,v 1.6 2017/12/06 23:17:38 tg Exp $
 #-
 # JOE syntax highlight file for Python
 
@@ -98,7 +98,7 @@
 :docstr_dq_esc DocEscape
        *               docstr_dq
        "\n"            docstr_dq       recolor=-2
-       
+
 :first_digit Constant
        *               idle    noeat
        "xX"            hex
diff --git a/tab.c b/tab.c
index 0bcac2a..4ab60ab 100644 (file)
--- a/tab.c
+++ b/tab.c
@@ -8,7 +8,7 @@
 #include "config.h"
 #include "types.h"
 
-__RCSID("$MirOS: contrib/code/jupp/tab.c,v 1.10 2017/12/06 23:02:05 tg Exp $");
+__RCSID("$MirOS: contrib/code/jupp/tab.c,v 1.11 2017/12/07 02:10:17 tg Exp $");
 
 #include <sys/stat.h>
 #include <stdlib.h>
@@ -206,7 +206,7 @@ static int tabrtn(MENU *m, int cursor, TAB *tab)
                }
                vsrm(e);
                tab->pattern = vsncpy(NULL, 0, sc("*"));
-               if (!treload(m->object, m, m->parent->win->object, 0, NULL)) {
+               if (!treload(m->object, m, m->parent->win->object.bw, 0, NULL)) {
                        msgnw(m->parent, UC "Couldn't read directory ");
                        vsrm(tab->pattern);
                        tab->pattern = orgpattern;
@@ -219,7 +219,7 @@ static int tabrtn(MENU *m, int cursor, TAB *tab)
                        return 0;
                }
        } else {                /* Select name */
-               BW *bw = m->parent->win->object;
+               BW *bw = m->parent->win->object.bw;
 
                insnam(bw, tab->path, tab->files[cursor], (tab->type[cursor]==F_DIR), tab->ofst);
                rmtab(tab);
@@ -236,7 +236,7 @@ static int tabrtn(MENU *m, int cursor, TAB *tab)
 static int tabrtn1(MENU *m, int cursor, TAB *tab)
 {
        /* New way: just add directory to path */
-       BW *bw = m->parent->win->object;
+       BW *bw = m->parent->win->object.bw;
 
        insnam(bw, tab->path, tab->files[cursor], (tab->type[cursor]==F_DIR ? 1 : 0), tab->ofst);
        rmtab(tab);
@@ -265,7 +265,7 @@ static int tabbacks(MENU *m, int cursor, TAB *tab)
        vsrm(e);
        tab->pattern = vsncpy(NULL, 0, sc("*"));
 
-       if (!treload(m->object, m, m->parent->win->object, 1, NULL)) {
+       if (!treload(m->object, m, m->parent->win->object.bw, 1, NULL)) {
                msgnw(m->parent, UC "Couldn't read directory ");
                vsrm(tab->pattern);
                tab->pattern = orgpattern;
index d914d68..a06410f 100644 (file)
--- a/termcap.h
+++ b/termcap.h
@@ -4,12 +4,12 @@
  *             (C) 1992 Joseph H. Allen
  *
  *     This file is part of JOE (Joe's Own Editor)
- */ 
+ */
 #ifndef _JOE_TERMCAP_H
 #define _JOE_TERMCAP_H 1
+
 #ifdef EXTERN
-__IDSTRING(rcsid_termcap_h, "$MirOS: contrib/code/jupp/termcap.h,v 1.7 2017/12/06 21:17:00 tg Exp $");
+__IDSTRING(rcsid_termcap_h, "$MirOS: contrib/code/jupp/termcap.h,v 1.8 2017/12/06 23:17:35 tg Exp $");
 #endif
 
 /* CAP *getcap(char *s,int baud,void (*out)(void *outptr,char c),void *outptr);
@@ -92,9 +92,9 @@ void rmcap(CAP *cap);
 
    'cap' is the CAP returned by getcap which contains the baud rate and output
    function.
-   
+
    'str' is the string to execute.  If 'str'==NULL, nothing happens.
-   
+
    'l' is the number of lines effected by this string.  For example, if you
    use the clear to end of screen capability, the number of lines between
    the current cursor position and the end of the screen should be
@@ -110,9 +110,9 @@ void texec(CAP *cap, unsigned char *s, int l, int a0, int a1, int a2, int a3);
 
    'cap' is the CAP returned by getcap which contains the baud rate and output
    functions.
-   
+
    'str' is the string to execute.  If 'str'==NULL, tcost return 10000.
-   
+
    'l' is the number of lines effected by this string.  Ex: if you
    use the clear to end of screen capability, the number of lines between
    the current cursor position and the end of the screen should be
diff --git a/tw.c b/tw.c
index d11dbb2..579eb01 100644 (file)
--- a/tw.c
+++ b/tw.c
@@ -1,4 +1,4 @@
-/* 
+/*
  *     Text editing windows
  *     Copyright
  *             (C) 1992 Joseph H. Allen
@@ -8,7 +8,7 @@
 #include "config.h"
 #include "types.h"
 
-__RCSID("$MirOS: contrib/code/jupp/tw.c,v 1.14 2017/12/06 23:02:05 tg Exp $");
+__RCSID("$MirOS: contrib/code/jupp/tw.c,v 1.16 2017/12/07 02:10:17 tg Exp $");
 
 #include <stdlib.h>
 #include <string.h>
@@ -47,8 +47,9 @@ int keepup = 0;
 
 /* Move text window */
 
-static void movetw(BW *bw, int x, int y)
+static void movetw(jobject jO, int x, int y)
 {
+       BW *bw = jO.bw;
        TW *tw = (TW *) bw->object;
 
        if (y || !staen) {
@@ -68,8 +69,10 @@ static void movetw(BW *bw, int x, int y)
 
 /* Resize text window */
 
-static void resizetw(BW *bw, int wi, int he)
+static void resizetw(jobject jO, int wi, int he)
 {
+       BW *bw = jO.bw;
+
        if (bw->parent->ny || !staen)
                bwresz(bw, wi - (bw->o.linums ? LINCOLS : 0), he - 1);
        else
@@ -84,7 +87,7 @@ static void resizetw(BW *bw, int wi, int he)
  *
  * There are actually two possibilities:
  *
- * We want the first line- 
+ * We want the first line-
  *
  * int
  * foo(int x,int y) {
@@ -135,7 +138,7 @@ get_context(BW *bw)
                                */
                                break;
                        }
-                       
+
                }
        } while (!buf1[0] && pprevl(p));
 
@@ -395,16 +398,17 @@ static unsigned char *stagen(unsigned char *stalin, BW *bw, unsigned char *s, in
        return stalin;
 }
 
-static void disptw(BW *bw, int flg)
+static void disptw(jobject jO, int flg)
 {
+       BW *bw = jO.bw;
        W *w = bw->parent;
        TW *tw = (TW *) bw->object;
 
        if (bw->o.linums != bw->linums) {
                bw->linums = bw->o.linums;
-               resizetw(bw, w->w, w->h);
-               movetw(bw, w->x, w->y);
-               bwfllw(bw);
+               resizetw(jO, w->w, w->h);
+               movetw(jO, w->x, w->y);
+               bwfllw(jO);
        }
 
        if (bw->o.hex) {
@@ -476,7 +480,7 @@ int usplitw(BW *bw)
        if (!new)
                return -1;
        wfit(new->t);
-       new->object = (void *) (newbw = bwmk(new, bw->b, 0));
+       new->object.bw = newbw = bwmk(new, bw->b, 0);
        ++bw->b->count;
        newbw->offset = bw->offset;
        newbw->object = (void *) (newtw = (TW *) joe_malloc(sizeof(TW)));
@@ -502,7 +506,7 @@ int uduptw(BW *bw)
                return -1;
        if (demotegroup(w))
                new->t->topwin = new;
-       new->object = (void *) (newbw = bwmk(new, bw->b, 0));
+       new->object.bw = newbw = bwmk(new, bw->b, 0);
        ++bw->b->count;
        newbw->offset = bw->offset;
        newbw->object = (void *) (newtw = (TW *) joe_malloc(sizeof(TW)));
@@ -561,7 +565,7 @@ int abortit(BW *bw)
                           any prompt windows? */
 
                        bwrm(bw);
-                       w->object = (void *) (bw = bwmk(w, b, 0));
+                       w->object.bw = bw = bwmk(w, b, 0);
                        wredraw(bw->parent);
                        bw->object = object;
                        return 0;
@@ -569,7 +573,7 @@ int abortit(BW *bw)
        bwrm(bw);
        vsrm(tw->stalin);
        joe_free(tw);
-       w->object = NULL;
+       w->object.base = NULL;
        wabort(w);      /* Eliminate this window and it's children */
        return 0;
 }
@@ -659,7 +663,7 @@ int uabortbuf(BW *bw)
                void *object = bw->object;
 
                bwrm(bw);
-               w->object = (void *) (bw = bwmk(w, b, 0));
+               w->object.bw = bw = bwmk(w, b, 0);
                wredraw(bw->parent);
                bw->object = object;
                return 0;
@@ -672,7 +676,7 @@ int uabortbuf(BW *bw)
 
 int utw0(BASE *b)
 {
-       BW *bw = b->parent->main->object;
+       BW *bw = b->parent->main->object.bw;
 
        if (countmain(b->parent->t) == 1)
                return -1;
@@ -697,7 +701,7 @@ int utw1(BASE *b)
                        wnext(t);
                } while (t->curwin->main == mainw && t->curwin != starting);
                if (t->curwin->main != mainw) {
-                       BW *bw = t->curwin->main->object;
+                       BW *bw = t->curwin->main->object.bw;
                        utw0((BASE *)bw);
                        yn = 1;
                        goto loop;
@@ -712,7 +716,7 @@ void setline(B *b, long int line)
 
        do {
                if (w->watom->what == TYPETW) {
-                       BW *bw = w->object;
+                       BW *bw = w->object.bw;
 
                        if (bw->b == b) {
                                long oline = bw->top->line;
@@ -738,8 +742,8 @@ BW *wmktw(SCREEN *t, B *b)
 
        w = wcreate(t, &watomtw, NULL, NULL, NULL, t->h, NULL, NULL);
        wfit(w->t);
-       w->object = (void *) (bw = bwmk(w, b, 0));
-       bw->object = (void *) (tw = (TW *) joe_malloc(sizeof(TW)));
+       w->object.bw = bw = bwmk(w, b, 0);
+       bw->object = (void *)(tw = (TW *)joe_malloc(sizeof(TW)));
        iztw(tw, w->y);
        return bw;
 }
diff --git a/types.h b/types.h
index 98d8242..9d60c99 100644 (file)
--- a/types.h
+++ b/types.h
@@ -2,7 +2,7 @@
 #define _JOE_TYPES_H
 
 #ifdef EXTERN
-__IDSTRING(rcsid_types_h, "$MirOS: contrib/code/jupp/types.h,v 1.21 2017/12/06 23:02:06 tg Exp $");
+__IDSTRING(rcsid_types_h, "$MirOS: contrib/code/jupp/types.h,v 1.26 2017/12/07 02:13:05 tg Exp $");
 #endif
 
 /* Prefix to make string constants unsigned */
@@ -12,7 +12,11 @@ __IDSTRING(rcsid_types_h, "$MirOS: contrib/code/jupp/types.h,v 1.21 2017/12/06 2
 #define LINK(type) struct { type *next; type *prev; }
 
 #define KEYS           256
+#ifdef SMALL
+#define stdsiz         4096
+#else
 #define stdsiz         8192
+#endif
 #define FITHEIGHT      4               /* Minimum text window height */
 #define LINCOLS                6
 #define NPROC          8               /* Number of processes we keep track of */
@@ -25,7 +29,7 @@ __IDSTRING(rcsid_types_h, "$MirOS: contrib/code/jupp/types.h,v 1.21 2017/12/06 2
 #define TYPEQW         0x1000
 
 /* polymorph function pointers, which do not use compiler type checking */
-#if 1
+#ifndef GCC_Wstrict_prototypes
 typedef int jpoly_int();
 typedef void jpoly_void();
 #else
@@ -64,6 +68,13 @@ typedef struct srchrec SRCHREC;
 typedef struct vpage VPAGE;
 typedef struct vfile VFILE;
 
+/* window.object* */
+typedef union {
+       BASE *base;
+       MENU *menu;
+       BW *bw;
+       QW *qw;
+} jobject;
 
 struct header {
        LINK(H) link;           /* LINK ??? */
@@ -227,16 +238,17 @@ struct kbd {
 
 
 struct watom {
-       unsigned char *context; /* Context name */
-       jpoly_void *disp;       /* Display window */
-       jpoly_void *follow;     /* Called to have window follow cursor */
-       jpoly_int *abort;       /* Common user functions */
-       jpoly_int *rtn;         
-       jpoly_int *type;        
-       jpoly_void *resize;     /* Called when window changed size */
-       jpoly_void *move;       /* Called when window moved */
-       jpoly_void *ins;        /* Called on line insertions */
-       jpoly_void *del;        /* Called on line deletions */
+       unsigned char *context;         /* Context name */
+       void (*disp)(jobject, int);     /* Display window */
+       void (*follow)(jobject);        /* Display window */
+       int (*abort)(jobject);          /* Common user functions */
+       int (*rtn)(jobject);
+       int (*type)(jobject, int);
+                                       /* Called when… */
+       void (*resize)(jobject, int, int);      /* window changed size */
+       void (*move)(jobject, int, int);        /* window moved */
+       void (*ins)(BW *, B *, long, long, int);        /* on line insertions */
+       void (*del)(BW *, B *, long, long, int);        /* on line deletions */
        int     what;           /* Type of this thing */
 };
 
@@ -281,17 +293,7 @@ struct window {
        int     curx, cury;     /* Cursor position within window */
        KBD     *kbd;           /* Keyboard handler for this window */
        WATOM   *watom;         /* The type of this window */
-       void    *object;        /* Object which inherits this */
-#if 0
-       union {                 /* FIXME: instead of void *object we should */
-               BW      *bw;    /* use this union to get strict type checking */
-               PW      *pw;    /* from C compiler (need to check and change */
-               QW      *qw;    /* all of the occurrencies of ->object) */
-               TW      *tw;
-               MENU    *menu;
-               BASE    *base;
-       } object;
-#endif
+       jobject object;         /* Object which inherits this */
 
        const unsigned char *msgt;      /* Message at top of window */
        const unsigned char *msgb;      /* Message at bottom of window */
@@ -584,7 +586,7 @@ struct search {
        int     replace;        /* Set if this is search & replace */
        int     rest;           /* Set to do remainder of search & replace w/o query */
        unsigned char   *entire;        /* Entire matched string */
-       unsigned char   *pieces[26];    /* Peices of the matched string */
+       unsigned char   *pieces[26];    /* Pieces of the matched string */
        int     flg;            /* Set after prompted for first replace */
        SRCHREC recs;           /* Search & replace position history */
        P       *markb, *markk; /* Original marks */
index 9ab9050..c65d6e6 100644 (file)
--- a/ublock.c
+++ b/ublock.c
@@ -8,7 +8,7 @@
 #include "config.h"
 #include "types.h"
 
-__RCSID("$MirOS: contrib/code/jupp/ublock.c,v 1.23 2017/12/06 23:02:06 tg Exp $");
+__RCSID("$MirOS: contrib/code/jupp/ublock.c,v 1.24 2017/12/06 23:58:37 tg Exp $");
 
 #include <sys/wait.h>
 #include <limits.h>
@@ -1116,12 +1116,12 @@ int ufilt(BW *bw)
 {
        switch (checkmark(bw)) {
        case 0:
-               if (wmkpw(bw->parent, US "Command to filter block through (^C to abort): ", &filthist, dofilt, NULL, NULL, utypebw, NULL, NULL, locale_map))
+               if (wmkpw(bw->parent, UC "Command to filter block through (^C to abort): ", &filthist, dofilt, NULL, NULL, utypebw, NULL, NULL, locale_map))
                        return 0;
                else
                        return -1;
        case 1:
-               if (wmkpw(bw->parent, US "Command to filter file through (^C to abort): ", &filthist, dofilt, NULL, NULL, utypebw, NULL, NULL, locale_map))
+               if (wmkpw(bw->parent, UC "Command to filter file through (^C to abort): ", &filthist, dofilt, NULL, NULL, utypebw, NULL, NULL, locale_map))
                        return 0;
                else
                        return -1;
diff --git a/uedit.c b/uedit.c
index cd5bb68..dcb6698 100644 (file)
--- a/uedit.c
+++ b/uedit.c
@@ -8,7 +8,7 @@
 #include "config.h"
 #include "types.h"
 
-__RCSID("$MirOS: contrib/code/jupp/uedit.c,v 1.25 2017/12/06 23:02:06 tg Exp $");
+__RCSID("$MirOS: contrib/code/jupp/uedit.c,v 1.28 2017/12/07 02:10:18 tg Exp $");
 
 #include <string.h>
 
@@ -606,7 +606,7 @@ void scrdn(BW *bw, int n, int flg)
 
 int upgup(BW *bw)
 {
-       bw = (BW *) bw->parent->main->object;
+       bw = bw->parent->main->object.bw;
        if (bw->o.hex ? bw->cursor->byte < 16 : !bw->cursor->line)
                return -1;
        if (pgamnt < 0)
@@ -622,7 +622,7 @@ int upgup(BW *bw)
 
 int upgdn(BW *bw)
 {
-       bw = (BW *) bw->parent->main->object;
+       bw = bw->parent->main->object.bw;
        if (bw->o.hex ? bw->cursor->byte/16 == bw->b->eof->byte/16 : bw->cursor->line == bw->b->eof->line)
                return -1;
        if (pgamnt < 0)
@@ -638,7 +638,7 @@ int upgdn(BW *bw)
 
 int uupslide(BW *bw)
 {
-       bw = (BW *) bw->parent->main->object;
+       bw = bw->parent->main->object.bw;
        if (bw->o.hex ? bw->top->byte/16 : bw->top->line) {
                if (bw->o.hex ? bw->top->byte/16 + bw->h -1 != bw->cursor->byte/16 : bw->top->line + bw->h - 1 != bw->cursor->line)
                        udnarw(bw);
@@ -650,7 +650,7 @@ int uupslide(BW *bw)
 
 int udnslide(BW *bw)
 {
-       bw = (BW *) bw->parent->main->object;
+       bw = bw->parent->main->object.bw;
        if (bw->o.hex ? bw->top->line/16 + bw->h <= bw->top->b->eof->byte/16 : bw->top->line + bw->h <= bw->top->b->eof->line) {
                if (bw->o.hex ? bw->top->byte/16 != bw->cursor->byte/16 : bw->top->line != bw->cursor->line)
                        uuparw(bw);
@@ -692,7 +692,7 @@ static int doline(BW *bw, unsigned char *s, void *object, int *notify)
 
 int uline(BW *bw)
 {
-       if (wmkpw(bw->parent, US "Go to line (^C to abort): ", &linehist, doline, NULL, NULL, NULL, NULL, NULL, locale_map))
+       if (wmkpw(bw->parent, UC "Go to line (^C to abort): ", &linehist, doline, NULL, NULL, NULL, NULL, NULL, locale_map))
                return 0;
        else
                return -1;
@@ -728,7 +728,7 @@ static int docol(BW *bw, unsigned char *s, void *object, int *notify)
 
 int ucol(BW *bw)
 {
-       if (wmkpw(bw->parent, US "Go to column (^C to abort): ", &colhist, docol, NULL, NULL, NULL, NULL, NULL, locale_map))
+       if (wmkpw(bw->parent, UC "Go to column (^C to abort): ", &colhist, docol, NULL, NULL, NULL, NULL, NULL, locale_map))
                return 0;
        else
                return -1;
@@ -764,7 +764,7 @@ static int dobyte(BW *bw, unsigned char *s, void *object, int *notify)
 
 int ubyte(BW *bw)
 {
-       if (wmkpw(bw->parent, US "Go to byte (^C to abort): ", &bytehist, dobyte, NULL, NULL, NULL, NULL, NULL, locale_map))
+       if (wmkpw(bw->parent, UC "Go to byte (^C to abort): ", &bytehist, dobyte, NULL, NULL, NULL, NULL, NULL, locale_map))
                return 0;
        else
                return -1;
@@ -1064,7 +1064,6 @@ int utypebw_raw(BW *bw, int k, int no_decode)
                while (n--)
                        utypebw_raw(bw, ' ', 0);
        } else {
-               int upd;
                int simple;
                int x;
 
@@ -1082,7 +1081,6 @@ int utypebw_raw(BW *bw, int k, int no_decode)
                                return 0;
                }
 
-               upd = bw->parent->t->t->updtab[bw->y + bw->cursor->line - bw->top->line];
                simple = 1;
 
                if (pisblank(bw->cursor))
@@ -1152,7 +1150,8 @@ int utypebw_raw(BW *bw, int k, int no_decode)
                        int *attr = t->attr + y * t->co;
                        x += bw->x;
 
-                       if (!upd && piseol(bw->cursor) && !bw->o.highlight)
+                       if (!bw->parent->t->t->updtab[bw->y + bw->cursor->line - bw->top->line] &&
+                           piseol(bw->cursor) && !bw->o.highlight)
                                t->updtab[y] = 0;
                        if (markb &&
                            markk &&
@@ -1167,9 +1166,9 @@ int utypebw_raw(BW *bw, int k, int no_decode)
        return 0;
 }
 
-int utypebw(BW *bw, int k)
+int utypebw(jobject jO, int k)
 {
-       return utypebw_raw(bw, k, 0);
+       return utypebw_raw(jO.bw, k, 0);
 }
 
 /* Quoting */
@@ -1223,7 +1222,7 @@ static int doquote(BW *bw, int c, void *object, int *notify)
                        if (bw->b->o.charmap->type)
                                goto unopoo;
  uhex_uni:
-                       if (!wmkpw(bw->parent, US "Unicode (ISO-10646) character in hex (^C to abort): ", &unicodehist, dounicode,
+                       if (!wmkpw(bw->parent, UC "Unicode (ISO-10646) character in hex (^C to abort): ", &unicodehist, dounicode,
                                   NULL, NULL, NULL, NULL, NULL, locale_map))
                                return 0;
                        else
@@ -1415,8 +1414,8 @@ static int doctrl(BW *bw, int c, void *object, int *notify)
                *notify = 1;
        bw->o.overtype = 0;
        if (bw->parent->huh == srchstr && c == '\n') {
-               utypebw(bw, '\\');
-               utypebw(bw, 'n');
+               utypebw_raw(bw, '\\', 0);
+               utypebw_raw(bw, 'n', 0);
        } else
                utypebw_raw(bw, c, 1);
        bw->o.overtype = org;
@@ -1435,8 +1434,10 @@ int uctrl(BW *bw)
 /* User hit Return.  Deal with autoindent.
  */
 
-int rtntw(BW *bw)
+int rtntw(jobject jO)
 {
+       BW *bw = jO.bw;
+
        if (bw->o.overtype) {
                p_goto_eol(bw->cursor);
                if (piseof(bw->cursor))
@@ -1604,7 +1605,7 @@ static int domsg(BASE *b, unsigned char *s, void *object, int *notify)
 
 int umsg(BASE *b)
 {
-       if (wmkpw(b->parent, US "Msg (^C to abort): ", NULL, domsg, NULL, NULL, NULL, NULL, NULL, locale_map))
+       if (wmkpw(b->parent, UC "Msg (^C to abort): ", NULL, domsg, NULL, NULL, NULL, NULL, NULL, locale_map))
                return 0;
        else
                return -1;
@@ -1619,14 +1620,14 @@ static int dotxt(BW *bw, unsigned char *s, void *object, int *notify)
        if (notify)
                *notify = 1;
        for (x = 0; x != sLEN(s); ++x)
-               utypebw(bw, s[x]);
+               utypebw_raw(bw, s[x], 0);
        vsrm(s);
        return 0;
 }
 
 int utxt(BW *bw)
 {
-       if (wmkpw(bw->parent, US "Insert (^C to abort): ", NULL, dotxt, NULL, NULL, utypebw, NULL, NULL, bw->b->o.charmap))
+       if (wmkpw(bw->parent, UC "Insert (^C to abort): ", NULL, dotxt, NULL, NULL, utypebw, NULL, NULL, bw->b->o.charmap))
                return 0;
        else
                return -1;
diff --git a/uedit.h b/uedit.h
index d47a0fb..04830f9 100644 (file)
--- a/uedit.h
+++ b/uedit.h
@@ -9,7 +9,7 @@
 #define _JOE_UEDIT_H 1
 
 #ifdef EXTERN_CMD_C
-__IDSTRING(rcsid_uedit_h, "$MirOS: contrib/code/jupp/uedit.h,v 1.8 2017/12/06 21:17:02 tg Exp $");
+__IDSTRING(rcsid_uedit_h, "$MirOS: contrib/code/jupp/uedit.h,v 1.9 2017/12/07 02:10:18 tg Exp $");
 #endif
 
 extern int pgamnt;
@@ -51,11 +51,11 @@ int udelel(BW *bw);
 int udelbl(BW *bw);
 int udelln(BW *bw);
 int uinsc(BW *bw);
-int utypebw(BW *bw, int k);
+int utypebw(jobject, int k);
 int utypebw_raw(BW *bw, int k, int no_decode);
 int uquote(BW *bw);
 int uquote8(BW *bw);
-int rtntw(BW *bw);
+int rtntw(jobject);
 int uopen(BW *bw);
 int usetmark(BW *bw, int c);
 int ugomark(BW *bw, int c);
index e63aec8..1034499 100644 (file)
--- a/uerror.c
+++ b/uerror.c
@@ -8,7 +8,7 @@
 #include "config.h"
 #include "types.h"
 
-__RCSID("$MirOS: contrib/code/jupp/uerror.c,v 1.10 2017/12/06 23:02:07 tg Exp $");
+__RCSID("$MirOS: contrib/code/jupp/uerror.c,v 1.11 2017/12/07 02:10:18 tg Exp $");
 
 #include "b.h"
 #include "bw.h"
@@ -225,8 +225,9 @@ find_a_good_bw(B *b)
        /* Find lowest window with buffer */
        if ((w = maint->topwin) != NULL) {
                do {
-                       if ((w->watom->what&TYPETW) && ((BW *)w->object)->b==b && w->y>=0)
-                               bw = (BW *)w->object;
+                       if ((w->watom->what & TYPETW) &&
+                           w->object.bw->b == b && w->y >= 0)
+                               bw = w->object.bw;
                        w = w->link.next;
                } while (w != maint->topwin);
        }
@@ -236,7 +237,7 @@ find_a_good_bw(B *b)
        if ((w = maint->topwin) != NULL) {
                do {
                        if ((w->watom->what&TYPETW) && w->y>=0)
-                               bw = (BW *)w->object;
+                               bw = w->object.bw;
                        w = w->link.next;
                } while (w != maint->topwin);
        }
@@ -285,7 +286,7 @@ int unxterr(BW *bw)
        if (!bw->b->name || strcmp(errptr->file, bw->b->name)) {
                if (doswitch(bw, vsdup(errptr->file), NULL, NULL))
                        return -1;
-               bw = (BW *) maint->curwin->object;
+               bw = maint->curwin->object.bw;
        }
        omid = mid;
        mid = 1;
@@ -310,7 +311,7 @@ int uprverr(BW *bw)
        if (!bw->b->name || strcmp(errptr->file, bw->b->name)) {
                if (doswitch(bw, vsdup(errptr->file), NULL, NULL))
                        return -1;
-               bw = (BW *) maint->curwin->object;
+               bw = maint->curwin->object.bw;
        }
        omid = mid;
        mid = 1;
diff --git a/ufile.c b/ufile.c
index 1cb7d82..2a00bee 100644 (file)
--- a/ufile.c
+++ b/ufile.c
@@ -9,7 +9,7 @@
 #include "config.h"
 #include "types.h"
 
-__RCSID("$MirOS: contrib/code/jupp/ufile.c,v 1.17 2017/12/06 23:02:07 tg Exp $");
+__RCSID("$MirOS: contrib/code/jupp/ufile.c,v 1.19 2017/12/07 02:10:18 tg Exp $");
 
 #include <sys/stat.h>
 #include <fcntl.h>
@@ -121,7 +121,7 @@ genexmsgmulti(BW *bw, int saved, int skipped)
 int ublksave(BW *bw)
 {
        if (markb && markk && markb->b == markk->b && (markk->byte - markb->byte) > 0 && (!square || piscol(markk) > piscol(markb))) {
-               if (wmkpw(bw->parent, US "Name of file to write (^C to abort): ", &filehist, dowrite, US "Names", NULL, cmplt, NULL, NULL, locale_map)) {
+               if (wmkpw(bw->parent, UC "Name of file to write (^C to abort): ", &filehist, dowrite, UC "Names", NULL, cmplt, NULL, NULL, locale_map)) {
                        return 0;
                } else {
                        return -1;
@@ -462,7 +462,7 @@ int usave(BW *bw)
 {
        BW *pbw;
 
-       pbw = wmkpw(bw->parent, US "Name of file to save (^C to abort): ", &filehist, dosave1, US "Names", NULL, cmplt, mksavereq(NULL,NULL,NULL,0), NULL, locale_map);
+       pbw = wmkpw(bw->parent, UC "Name of file to save (^C to abort): ", &filehist, dosave1, UC "Names", NULL, cmplt, mksavereq(NULL,NULL,NULL,0), NULL, locale_map);
 
        if (pbw && bw->b->name) {
                binss(pbw->cursor, bw->b->name);
@@ -503,7 +503,7 @@ doedit1(BW *bw,int c,unsigned char *s,int *notify)
                                        brm(b);
                                        return -1;
                                }
-                               bw = (BW *) maint->curwin->object;
+                               bw = maint->curwin->object.bw;
                        }
                }
                if (er) {
@@ -515,7 +515,7 @@ doedit1(BW *bw,int c,unsigned char *s,int *notify)
                object = bw->object;
                w = bw->parent;
                bwrm(bw);
-               w->object = (void *) (bw = bwmk(w, b, 0));
+               w->object.bw = bw = bwmk(w, b, 0);
                wredraw(bw->parent);
                bw->object = object;
                vsrm(s);
@@ -543,7 +543,7 @@ doedit1(BW *bw,int c,unsigned char *s,int *notify)
                                        brm(b);
                                        return -1;
                                }
-                               bw = (BW *) maint->curwin->object;
+                               bw = maint->curwin->object.bw;
                        }
                }
                if (er) {
@@ -555,7 +555,7 @@ doedit1(BW *bw,int c,unsigned char *s,int *notify)
                object = bw->object;
                w = bw->parent;
                bwrm(bw);
-               w->object = (void *) (bw = bwmk(w, b, 0));
+               w->object.bw = bw = bwmk(w, b, 0);
                wredraw(bw->parent);
                bw->object = object;
                vsrm(s);
@@ -608,7 +608,7 @@ int okrepl(BW *bw)
 
 int uedit(BW *bw)
 {
-       if (wmkpw(bw->parent, US "Name of file to edit (^C to abort): ", &filehist, doedit, US "Names", NULL, cmplt, NULL, NULL, locale_map)) {
+       if (wmkpw(bw->parent, UC "Name of file to edit (^C to abort): ", &filehist, doedit, UC "Names", NULL, cmplt, NULL, NULL, locale_map)) {
                return 0;
        } else {
                return -1;
@@ -623,7 +623,7 @@ int doswitch(BW *bw, unsigned char *s, void *obj, int *notify)
 
 int uswitch(BW *bw)
 {
-       if (wmkpw(bw->parent, US "Name of buffer to edit (^C to abort): ", &filehist, doswitch, US "Names", NULL, cmplt, NULL, NULL, locale_map)) {
+       if (wmkpw(bw->parent, UC "Name of buffer to edit (^C to abort): ", &filehist, doswitch, UC "Names", NULL, cmplt, NULL, NULL, locale_map)) {
                return 0;
        } else {
                return -1;
@@ -653,7 +653,7 @@ doscratch(BW *bw, unsigned char *s, void *obj, int *notify)
                                brm(b);
                                return -1;
                        }
-                       bw = (BW *) maint->curwin->object;
+                       bw = maint->curwin->object.bw;
                }
        }
        if (er && er != -1) {
@@ -663,7 +663,7 @@ doscratch(BW *bw, unsigned char *s, void *obj, int *notify)
        object = bw->object;
        w = bw->parent;
        bwrm(bw);
-       w->object = (void *) (bw = bwmk(w, b, 0));
+       w->object.bw = bw = bwmk(w, b, 0);
        wredraw(bw->parent);
        bw->object = object;
        vsrm(s);
@@ -678,7 +678,7 @@ doscratch(BW *bw, unsigned char *s, void *obj, int *notify)
 
 int uscratch(BW *bw)
 {
-       if (wmkpw(bw->parent, US "Name of scratch buffer to edit (^C to abort): ", &filehist, doscratch, US "Names", NULL, cmplt, NULL, NULL, locale_map)) {
+       if (wmkpw(bw->parent, UC "Name of scratch buffer to edit (^C to abort): ", &filehist, doscratch, UC "Names", NULL, cmplt, NULL, NULL, locale_map)) {
                return 0;
        } else {
                return -1;
@@ -710,7 +710,7 @@ static int dorepl(BW *bw, unsigned char *s, void *obj, int *notify)
                orphit(bw);
        }
        bwrm(bw);
-       w->object = (void *) (bw = bwmk(w, b, 0));
+       w->object.bw = bw = bwmk(w, b, 0);
        wredraw(bw->parent);
        bw->object = object;
        vsrm(s);
@@ -747,7 +747,7 @@ int unbuf(BW *bw)
                orphit(bw);
        }
        bwrm(bw);
-       w->object = (void *) (bw = bwmk(w, b, 0));
+       w->object.bw = bw = bwmk(w, b, 0);
        wredraw(bw->parent);
        bw->object = object;
        return 0;
@@ -775,7 +775,7 @@ int upbuf(BW *bw)
                orphit(bw);
        }
        bwrm(bw);
-       w->object = (void *) (bw = bwmk(w, b, 0));
+       w->object.bw = bw = bwmk(w, b, 0);
        wredraw(bw->parent);
        bw->object = object;
        return 0;
@@ -783,7 +783,7 @@ int upbuf(BW *bw)
 
 int uinsf(BW *bw)
 {
-       if (wmkpw(bw->parent, US "Name of file to insert (^C to abort): ", &filehist, doinsf, US "Names", NULL, cmplt, NULL, NULL, locale_map)) {
+       if (wmkpw(bw->parent, UC "Name of file to insert (^C to abort): ", &filehist, doinsf, UC "Names", NULL, cmplt, NULL, NULL, locale_map)) {
                return 0;
        } else {
                return -1;
@@ -816,7 +816,7 @@ int uexsve(BW *bw)
                /* It changed, it's not a scratch buffer and it's named */
                return dosave1(bw, vsncpy(NULL, 0, sz(bw->b->name)), mksavereq(exdone,NULL,NULL,0), NULL);
        } else {
-               BW *pbw = wmkpw(bw->parent, US "Name of file to save (^C to abort): ", &filehist, dosave1, US "Names", NULL, cmplt, mksavereq(exdone,NULL,NULL,1), NULL, locale_map);
+               BW *pbw = wmkpw(bw->parent, UC "Name of file to save (^C to abort): ", &filehist, dosave1, UC "Names", NULL, cmplt, mksavereq(exdone,NULL,NULL,1), NULL, locale_map);
 
                if (pbw && bw->b->name) {
                        binss(pbw->cursor, bw->b->name);
@@ -890,26 +890,26 @@ static int dolose(BW *bw, int c, void *object, int *notify)
 
        if ((w = maint->topwin) != NULL) {
                do {
-                       if ((w->watom->what&TYPETW) && ((BW *)w->object)->b==b) {
+                       if ((w->watom->what & TYPETW) && w->object.bw->b == b) {
                                if ((new_b = borphan()) != NULL) {
-                                       BW *bw_ = (BW *)w->object;
-                                       void *object_ = bw_->object;
+                                       BW *bw2 = w->object.bw;
+                                       void *object_ = bw2->object;
                                        /* FIXME: Shouldn't we wabort() and wcreate here to kill
                                           any prompt windows? */
 
-                                       bwrm(bw_);
-                                       w->object = (void *) (bw_ = bwmk(w, new_b, 0));
+                                       bwrm(bw2);
+                                       w->object.bw = bw2 = bwmk(w, new_b, 0);
                                        wredraw(w);
-                                       bw_->object = object_;
+                                       bw2->object = object_;
                                } else {
-                                       BW *bw_ = (BW *)w->object;
-                                       object = bw_->object;
-                                       bwrm(bw_);
-                                       w->object = (void *) (bw_ = bwmk(w, bfind(US ""), 0));
+                                       BW *bw2 = w->object.bw;
+                                       object = bw2->object;
+                                       bwrm(bw2);
+                                       w->object.bw = bw2 = bwmk(w, bfind(US ""), 0);
                                        wredraw(w);
-                                       bw_->object = object;
-                                       if (bw_->o.mnew)
-                                               exemac(bw_->o.mnew);
+                                       bw2->object = object;
+                                       if (bw2->o.mnew)
+                                               exemac(bw2->o.mnew);
                                }
                        }
                w = w->link.next;
@@ -940,7 +940,7 @@ int ulose(BW *bw)
 static int dobuf(MENU *m, int x, unsigned char **s)
 {
        unsigned char *name;
-       BW *bw = m->parent->win->object;
+       BW *bw = m->parent->win->object.bw;
        int *notify = m->parent->notify;
 
        m->parent->notify = 0;
@@ -978,7 +978,7 @@ static int doquerysave(BW *bw,int c,struct savereq *req,int *notify)
                        return dosave1(bw, vsncpy(NULL,0,sz(bw->b->name)), req, notify);
                else {
                        BW *pbw;
-                       pbw = wmkpw(bw->parent, US "Name of file to save (^C to abort): ", &filehist, dosave1, US "Names", NULL, cmplt, req, notify, locale_map);
+                       pbw = wmkpw(bw->parent, UC "Name of file to save (^C to abort): ", &filehist, dosave1, UC "Names", NULL, cmplt, req, notify, locale_map);
 
                        if (pbw) {
                                return 0;
@@ -998,7 +998,7 @@ static int doquerysave(BW *bw,int c,struct savereq *req,int *notify)
                        rmsavereq(req);
                        return -1;
                }
-               bw = w->object;
+               bw = w->object.bw;
                if (bw->b==req->first) {
                        if (notify)
                                *notify = 1;
@@ -1045,7 +1045,7 @@ int uquerysave(BW *bw)
                        return doquerysave(bw,0,mksavereq(query_next,NULL,first,0),NULL);
                else if (unbuf(bw))
                        return -1;
-               bw = w->object;
+               bw = w->object.bw;
        } while(bw->b!=first);
 
        genexmsgmulti(bw,0,0);
index c4c7d5b..bf4d417 100644 (file)
--- a/uformat.c
+++ b/uformat.c
@@ -8,7 +8,7 @@
 #include "config.h"
 #include "types.h"
 
-__RCSID("$MirOS: contrib/code/jupp/uformat.c,v 1.6 2017/12/06 23:02:07 tg Exp $");
+__RCSID("$MirOS: contrib/code/jupp/uformat.c,v 1.7 2017/12/06 23:17:36 tg Exp $");
 
 #include <stdlib.h>
 #include <string.h>
@@ -412,7 +412,7 @@ int uformat(BW *bw)
                indent = bw->o.lmargin;
 
        /* Cut paragraph into new buffer */
-       
+
        /* New buffer needs to inherit UTF-8 and CR-LF options */
        buf = bcpy(p, bw->cursor);
        buf->o.crlf = p->b->o.crlf;
@@ -473,10 +473,10 @@ int uformat(BW *bw)
                                        f = 1;
                        }
                        prm(d);
-                       
+
                        /* Skip past the whitespace.  Skip over indentations */
                      loop:
-                       
+
                        c = brch(b);
                        if (c == '\n') {
                                if (b->byte == curoff)
index e513be8..9e42075 100644 (file)
--- a/uformat.h
+++ b/uformat.h
@@ -2,14 +2,14 @@
  *     User text formatting functions
  *     Copyright
  *             (C) 1992 Joseph H. Allen
- * 
+ *
  *     This file is part of JOE (Joe's Own Editor)
  */
 #ifndef _JOE_UFORMAT_H
 #define _JOE_UFORMAT_H 1
 
 #ifdef EXTERN_CMD_C
-__IDSTRING(rcsid_uformat_h, "$MirOS: contrib/code/jupp/uformat.h,v 1.5 2017/12/06 21:17:02 tg Exp $");
+__IDSTRING(rcsid_uformat_h, "$MirOS: contrib/code/jupp/uformat.h,v 1.6 2017/12/06 23:17:36 tg Exp $");
 #endif
 
 int ucenter(BW *bw);
index 68eb4cf..3daf9bc 100644 (file)
--- a/uisrch.c
+++ b/uisrch.c
@@ -8,7 +8,7 @@
 #include "config.h"
 #include "types.h"
 
-__RCSID("$MirOS: contrib/code/jupp/uisrch.c,v 1.11 2017/12/06 23:02:07 tg Exp $");
+__RCSID("$MirOS: contrib/code/jupp/uisrch.c,v 1.12 2017/12/06 23:17:36 tg Exp $");
 
 #include <stdlib.h>
 
@@ -213,7 +213,7 @@ static int itype(BW *bw, int c, struct isrch *isrch, int *notify)
                } else {
                        buf[0] = c;
                        buf_len = 1;
-               }               
+               }
 
                isrch->quote = 0;
                iappend(bw, isrch, buf, buf_len);
diff --git a/umath.c b/umath.c
index 27627ea..24e84c0 100644 (file)
--- a/umath.c
+++ b/umath.c
@@ -8,7 +8,7 @@
 #include "config.h"
 #include "types.h"
 
-__RCSID("$MirOS: contrib/code/jupp/umath.c,v 1.19 2017/12/06 23:02:07 tg Exp $");
+__RCSID("$MirOS: contrib/code/jupp/umath.c,v 1.21 2017/12/07 02:10:19 tg Exp $");
 
 #include <stdlib.h>
 #include <string.h>
@@ -160,7 +160,7 @@ calc(BW *bw, unsigned char *s)
 {
        double result;
        struct var *v;
-       BW *tbw = bw->parent->main->object;
+       BW *tbw = bw->parent->main->object.bw;
 
        if (math_exp) {
                free(math_exp);
@@ -261,7 +261,7 @@ B *mathhist = NULL;
 int umath(BW *bw)
 {
        joe_set_signal(SIGFPE, fperr);
-       if (wmkpw(bw->parent, US "=", &mathhist, domath, US "math", NULL, NULL, NULL, NULL, locale_map)) {
+       if (wmkpw(bw->parent, UC "=", &mathhist, domath, UC "Math", NULL, NULL, NULL, NULL, locale_map)) {
                return 0;
        } else {
                return -1;
index 3051213..f0002a6 100644 (file)
--- a/usearch.c
+++ b/usearch.c
@@ -8,7 +8,7 @@
 #include "config.h"
 #include "types.h"
 
-__RCSID("$MirOS: contrib/code/jupp/usearch.c,v 1.17 2017/12/06 23:02:08 tg Exp $");
+__RCSID("$MirOS: contrib/code/jupp/usearch.c,v 1.19 2017/12/07 02:10:19 tg Exp $");
 
 #include <stdlib.h>
 
@@ -145,7 +145,7 @@ fcmplt_abrt(BW *bw, int x, unsigned char *line)
 static int
 fcmplt_rtn(MENU *m, int x, unsigned char *line)
 {
-       fcmplt_ins(m->parent->win->object, m->list[x]);
+       fcmplt_ins(m->parent->win->object.bw, m->list[x]);
        vsrm(line);
        m->object = NULL;
        wabort(m->parent);
@@ -236,8 +236,11 @@ int ufinish(BW *bw)
 
 static int srch_cmplt(BW *bw)
 {
-       utypebw(bw, 9);
-               return 0;
+       jobject jO;
+
+       jO.bw = bw;
+       utypebw(jO, 9);
+       return 0;
 }
 
 /* Search forward.
@@ -567,7 +570,7 @@ static int set_options(BW *bw, unsigned char *s, SRCH *srch, int *notify)
        }
        vsrm(s);
        if (srch->replace) {
-               if (wmkpw(bw->parent, US "Replace with (^C to abort): ", &replhist, set_replace, srchstr, pfabort, srch_cmplt, srch, notify, bw->b->o.charmap))
+               if (wmkpw(bw->parent, UC "Replace with (^C to abort): ", &replhist, set_replace, srchstr, pfabort, srch_cmplt, srch, notify, bw->b->o.charmap))
                        return 0;
                else
                        return -1;
@@ -578,12 +581,12 @@ static int set_options(BW *bw, unsigned char *s, SRCH *srch, int *notify)
 static int set_pattern(BW *bw, unsigned char *s, SRCH *srch, int *notify)
 {
        BW *pbw;
-       unsigned char *p;
+       const unsigned char *p;
 
        if (icase)
-               p = US "case (S)ensitive (R)eplace (B)ackwards Bloc(K) NNN (^C to abort): ";
+               p = UC "case (S)ensitive (R)eplace (B)ackwards Bloc(K) NNN (^C to abort): ";
        else
-               p = US "(I)gnore (R)eplace (B)ackwards Bloc(K) NNN (^C to abort): ";
+               p = UC "(I)gnore (R)eplace (B)ackwards Bloc(K) NNN (^C to abort): ";
 
        vsrm(srch->pattern);
        srch->pattern = s;
@@ -622,19 +625,21 @@ static int dofirst(BW *bw, int back, int repl)
        }
        if (bw->parent->huh == srchstr) {
                long byte;
+               jobject jO;
 
                p_goto_eol(bw->cursor);
                byte = bw->cursor->byte;
                p_goto_bol(bw->cursor);
                if (byte == bw->cursor->byte)
                        prgetc(bw->cursor);
-               return urtn((BASE *)bw, -1);
+               jO.bw = bw;
+               return urtn(jO, -1);
        }
        srch = setmark(mksrch(NULL, NULL, 0, back, -1, repl, 0));
        srch->addr = bw->cursor->byte;
        srch->wrap_p = pdup(bw->cursor);
        srch->wrap_p->owner = &srch->wrap_p;
-       if (wmkpw(bw->parent, US "Find (^C to abort): ", &findhist, set_pattern, srchstr, pfabort, srch_cmplt, srch, NULL, bw->b->o.charmap))
+       if (wmkpw(bw->parent, UC "Find (^C to abort): ", &findhist, set_pattern, srchstr, pfabort, srch_cmplt, srch, NULL, bw->b->o.charmap))
                return 0;
        else {
                rmsrch(srch);
index 4ccc839..5a3f801 100644 (file)
--- a/ushell.c
+++ b/ushell.c
@@ -8,7 +8,7 @@
 #include "config.h"
 #include "types.h"
 
-__RCSID("$MirOS: contrib/code/jupp/ushell.c,v 1.10 2017/12/06 21:41:04 tg Exp $");
+__RCSID("$MirOS: contrib/code/jupp/ushell.c,v 1.12 2017/12/07 02:10:19 tg Exp $");
 
 #include <sys/stat.h>
 #include <signal.h>
@@ -54,10 +54,12 @@ static void cdone_parse(B *b)
 static void cfollow(B *b,long byte)
 {
        W *w;
-        if ((w = maint->topwin) != NULL) {
+       if ((w = maint->topwin) != NULL) {
                do {
-                       if ((w->watom->what&TYPETW) && ((BW *)w->object)->b==b && ((BW *)w->object)->cursor->byte==byte) {
-                               BW *bw = (BW *)w->object;
+                       if ((w->watom->what & TYPETW) &&
+                           w->object.bw->b == b &&
+                           w->object.bw->cursor->byte == byte) {
+                               BW *bw = w->object.bw;
                                p_goto_eof(bw->cursor);
                                bw->cursor->xcol = piscol(bw->cursor);
                        }
@@ -160,7 +162,7 @@ B *runhist = NULL;
 
 int urun(BW *bw)
 {
-       if (wmkpw(bw->parent, US "Program to run: ", &runhist, dorun, US "Run", NULL, NULL, NULL, NULL, locale_map)) {
+       if (wmkpw(bw->parent, UC "Program to run: ", &runhist, dorun, UC "Run", NULL, NULL, NULL, NULL, locale_map)) {
                return 0;
        } else {
                return -1;
@@ -177,13 +179,13 @@ B *buildhist = NULL;
 int ubuild(BW *bw)
 {
        if (buildhist) {
-               if ((bw=wmkpw(bw->parent, US "Build command: ", &buildhist, dobuild, US "Run", NULL, NULL, NULL, NULL, locale_map))) {
+               if ((bw=wmkpw(bw->parent, UC "Build command: ", &buildhist, dobuild, UC "Run", NULL, NULL, NULL, NULL, locale_map))) {
                        uuparw(bw);
                        u_goto_eol(bw);
                        bw->cursor->xcol = piscol(bw->cursor);
                        return 0;
                }
-       } else if (wmkpw(bw->parent, US "Enter build command (for example, 'make'): ", &buildhist, dobuild, US "Run", NULL, NULL, NULL, NULL, locale_map))
+       } else if (wmkpw(bw->parent, UC "Enter build command (for example, 'make'): ", &buildhist, dobuild, UC "Run", NULL, NULL, NULL, NULL, locale_map))
                        return 0;
                return -1;
 }
diff --git a/utag.c b/utag.c
index 438184f..1f22feb 100644 (file)
--- a/utag.c
+++ b/utag.c
@@ -8,7 +8,7 @@
 #include "config.h"
 #include "types.h"
 
-__RCSID("$MirOS: contrib/code/jupp/utag.c,v 1.9 2017/12/06 23:02:08 tg Exp $");
+__RCSID("$MirOS: contrib/code/jupp/utag.c,v 1.11 2017/12/07 02:10:19 tg Exp $");
 
 #include "b.h"
 #include "bw.h"
@@ -65,7 +65,7 @@ static int dotag(BW *bw, unsigned char *s, void *obj, int *notify)
                                        fclose(f);
                                        return -1;
                                }
-                               bw = (BW *) maint->curwin->object;
+                               bw = maint->curwin->object.bw;
                                buf[y] = c;
                                while (buf[y] == ' ' || buf[y] == '\t') {
                                        ++y;
@@ -132,7 +132,7 @@ int utag(BW *bw)
 {
        BW *pbw;
 
-       pbw = wmkpw(bw->parent, US "Tag search: ", &taghist, dotag, NULL, NULL, cmplt, NULL, NULL, locale_map);
+       pbw = wmkpw(bw->parent, UC "Tag search: ", &taghist, dotag, NULL, NULL, cmplt, NULL, NULL, locale_map);
        if (pbw && joe_isalnux(bw->b->o.charmap,brch(bw->cursor))) {
                P *p = pdup(bw->cursor);
                P *q = pdup(p);
diff --git a/utag.h b/utag.h
index 15e837d..f076701 100644 (file)
--- a/utag.h
+++ b/utag.h
@@ -1,4 +1,4 @@
-/* 
+/*
  *     tags file symbol lookup
  *     Copyright
  *             (C) 1992 Joseph H. Allen
@@ -9,7 +9,7 @@
 #define _JOE_UTAG_H 1
 
 #ifdef EXTERN_CMD_C
-__IDSTRING(rcsid_utag_h, "$MirOS: contrib/code/jupp/utag.h,v 1.5 2017/12/06 21:17:03 tg Exp $");
+__IDSTRING(rcsid_utag_h, "$MirOS: contrib/code/jupp/utag.h,v 1.6 2017/12/06 23:17:36 tg Exp $");
 #endif
 
 int utag(BW *bw);
diff --git a/w.c b/w.c
index a08095e..2017f6c 100644 (file)
--- a/w.c
+++ b/w.c
@@ -8,7 +8,7 @@
 #include "config.h"
 #include "types.h"
 
-__RCSID("$MirOS: contrib/code/jupp/w.c,v 1.9 2017/12/06 21:17:05 tg Exp $");
+__RCSID("$MirOS: contrib/code/jupp/w.c,v 1.10 2017/12/07 02:10:19 tg Exp $");
 
 #include <stdlib.h>
 
@@ -217,8 +217,8 @@ void scrins(B *b, long l, long n, int flg)
        if ((w = scr->topwin) != NULL) {
                do {
                        if (w->y >= 0) {
-                               if (w->object && w->watom->ins)
-                                       w->watom->ins(w->object, b, l, n, flg);
+                               if (w->object.base && w->watom->ins)
+                                       w->watom->ins(w->object.bw, b, l, n, flg);
                        }
                w = w->link.next;
                } while (w != scr->topwin);
@@ -232,8 +232,8 @@ void scrdel(B *b, long l, long n, int flg)
        if ((w = scr->topwin) != NULL) {
                do {
                        if (w->y >= 0) {
-                               if (w->object && w->watom->del)
-                                       w->watom->del(w->object, b, l, n, flg);
+                               if (w->object.base && w->watom->del)
+                                       w->watom->del(w->object.bw, b, l, n, flg);
                        }
                w = w->link.next;
                } while (w != scr->topwin);
@@ -369,7 +369,7 @@ void wfit(SCREEN *t)
        w = t->topwin;
        do {
                if (w->ny >= 0) {
-                       if (w->object) {
+                       if (w->object.base) {
                                if (w->watom->move)
                                        w->watom->move(w->object, w->x, w->ny);
                                if (w->watom->resize)
@@ -588,7 +588,7 @@ W *wcreate(SCREEN *t, WATOM *watom, W *where, W *target, W *original, int height
        new->huh = huh;
        new->orgwin = original;
        new->watom = watom;
-       new->object = NULL;
+       new->object.base = NULL;
        new->msgb = NULL;
        new->msgt = NULL;
        /* Set window's target and family */
@@ -667,7 +667,7 @@ static int doabort(W *w, int *ret)
                amnt = 0;
        }
        deque(W, link, w);
-       if (w->watom->abort && w->object) {
+       if (w->watom->abort && w->object.base) {
                *ret = w->watom->abort(w->object);
                if (w->notify)
                        *w->notify = -1;
@@ -750,18 +750,22 @@ void msgnwt(W *w, const unsigned char *s)
        w->msgt = s;
 }
 
-int urtn(BASE *b, int k)
+int urtn(jobject jO, int k)
 {
+       BASE *b = jO.base;
+
        if (b->parent->watom->rtn)
-               return b->parent->watom->rtn(b, k);
+               return b->parent->watom->rtn(jO);
        else
                return -1;
 }
 
-int utype(BASE *b, int k)
+int utype(jobject jO, int k)
 {
+       BASE *b = jO.base;
+
        if (b->parent->watom->type)
-               return b->parent->watom->type(b, k);
+               return b->parent->watom->type(jO, k);
        else
                return -1;
 }
diff --git a/w.h b/w.h
index 1877aed..2a0ce31 100644 (file)
--- a/w.h
+++ b/w.h
@@ -9,7 +9,7 @@
 #define _JOE_W_H 1
 
 #ifdef EXTERN
-__IDSTRING(rcsid_w_h, "$MirOS: contrib/code/jupp/w.h,v 1.8 2017/12/06 23:02:08 tg Exp $");
+__IDSTRING(rcsid_w_h, "$MirOS: contrib/code/jupp/w.h,v 1.9 2017/12/07 02:10:20 tg Exp $");
 #endif
 
 /***************/
@@ -155,8 +155,8 @@ void msgout(W *w);                  /* Output msgnw/msgnwt messages */
 
 /* Common user functions */
 
-int urtn(BASE *b, int k);              /* User hit return */
-int utype(BASE *b, int k);             /* User types a character */
+int urtn(jobject jO, int k);           /* User hit return */
+int utype(jobject jO, int k);          /* User types a character */
 int uretyp(BASE *bw);                  /* Refresh the screen */
 int ugroww(BASE *bw);                  /* Grow current window */
 int uexpld(BASE *bw);                  /* Explode current window or show all windows */