next round of testing
authormirabilos <m@mirbsd.org>
Sat, 2 Dec 2017 04:51:06 +0000 (05:51 +0100)
committermirabilos <m@mirbsd.org>
Sat, 2 Dec 2017 04:51:06 +0000 (05:51 +0100)
100 files changed:
Makefile.am
Makefile.bsd-wrapper
Makefile.in
autoconf.h.in
b.c
b.h
blocks.c
blocks.h
builtin.c
builtin.h
builtins.c
bw.c
bw.h
charmap.c
charmap.h
cmd.c
cmd.h
compat.c
config.h
configure
configure.ac
dir.c
hash.c
hash.h
help.c
help.h
i18n.c
i18n.h
kbd.c
kbd.h
macro.c
macro.h
main.c
main.h
menu.c
menu.h
path.c
path.h
poshist.c
poshist.h
pw.c
pw.h
queue.c
queue.h
qw.c
qw.h
rc.c
rc.h
regex.c
regex.h
scrn.c
scrn.h
selinux.c
syntax.c
syntax.h
tab.c
tab.h
termcap.c
termcap.h
termidx.c
tty.c
tty.h
tw.c
tw.h
types.h
ublock.c
ublock.h
uedit.c
uedit.h
uerror.c
uerror.h
ufile.c
ufile.h
uformat.c
uformat.h
uisrch.c
uisrch.h
umath.c
umath.h
undo.c
undo.h
usearch.c
usearch.h
ushell.c
ushell.h
utag.c
utag.h
utf8.c
utf8.h
utils.c
utils.h
va.c
va.h
vfile.c
vfile.h
vs.c
vs.h
w.c
w.h
win32.c

index f8b33c8..c5c9848 100644 (file)
@@ -1,11 +1,11 @@
-# $MirOS: contrib/code/jupp/Makefile.am,v 1.16 2017/01/11 21:48:57 tg Exp $
+# $MirOS: contrib/code/jupp/Makefile.am,v 1.17 2017/12/02 04:02:42 tg Exp $
 
 AUTOMAKE_OPTIONS = foreign
 
 EXTRA_DIST = \
-       COPYING HINTS INFO LIST NEWS README README.cvs TODO dir.c \
-       win32.c jmacsrc.in joe.1.in joerc.in jpicorc.in jstarrc.in \
-       jupprc rjoerc.in charmaps/klingon.in docs/help-system.html \
+       COPYING HINTS INFO LIST NEWS README README.cvs TODO \
+       charmaps/klingon.in dir.c docs/help-system.html jmacsrc.in \
+       joe.1.in joerc.in jpicorc.in jstarrc.in jupprc rjoerc.in \
        syntax/asm.jsf.in syntax/c.jsf.in syntax/conf.jsf.in \
        syntax/csh.jsf.in syntax/diff.jsf.in syntax/fortran.jsf.in \
        syntax/html.jsf.in syntax/java.jsf.in syntax/lisp.jsf.in \
@@ -33,12 +33,13 @@ sysconf_charmapsdir = $(sysconf_joedir)/charmaps
 sysconf_charmaps_DATA = charmaps/klingon
 
 man_MANS = joe.1
-noinst_HEADERS = b.h blocks.h bw.h cmd.h config.h hash.h help.h kbd.h \
-       macro.h main.h menu.h path.h poshist.h pw.h queue.h qw.h rc.h regex.h \
-       scrn.h tab.h termcap.h tty.h tw.h types.h ublock.h uedit.h uerror.h \
-       ufile.h uformat.h uisrch.h umath.h undo.h usearch.h ushell.h utag.h \
-       utils.h va.h vfile.h vs.h w.h utf8.h syntax.h i18n.h charmap.h builtin.h
-
+noinst_HEADERS = \
+       b.h blocks.h builtin.h bw.h charmap.h cmd.h config.h hash.h \
+       help.h i18n.h kbd.h macro.h main.h menu.h path.h poshist.h pw.h \
+       queue.h qw.h rc.h regex.h scrn.h syntax.h tab.h termcap.h tty.h \
+       tw.h types.h ublock.h uedit.h uerror.h ufile.h uformat.h \
+       uisrch.h umath.h undo.h usearch.h ushell.h utag.h utf8.h utils.h \
+       va.h vfile.h vs.h w.h
 
 bin_PROGRAMS = joe
 if WANT_TERMIDX
index 5bac4de..af8644c 100644 (file)
@@ -1,4 +1,4 @@
-# $MirOS: contrib/code/jupp/Makefile.bsd-wrapper,v 1.10 2017/07/08 15:38:43 tg Exp $
+# $MirOS: contrib/code/jupp/Makefile.bsd-wrapper,v 1.11 2017/12/02 04:33:47 tg Exp $
 #-
 # make -f Makefile.bsd-wrapper CFPREFIX=/usr/mpkg sysconfjoesubdir=/joe
 
@@ -19,6 +19,7 @@ CFARGS+=      --prefix=${CFPREFIX:Q} \
                --bindir=${CFPREFIX:Q}/bin \
                --mandir=${CFMANDIR:Q} \
                --sysconfdir=${CFETC:Q} \
+               ${GCFARGS} \
                --enable-sysconfjoesubdir=${sysconfjoesubdir:Q}
 
 .ifmake winman
index 1d4885a..280f84c 100644 (file)
@@ -14,7 +14,7 @@
 
 @SET_MAKE@
 
-# $MirOS: contrib/code/jupp/Makefile.am,v 1.16 2017/01/11 21:48:57 tg Exp $
+# $MirOS: contrib/code/jupp/Makefile.am,v 1.17 2017/12/02 04:02:42 tg Exp $
 
 
 
@@ -257,9 +257,9 @@ target_os = @target_os@
 target_vendor = @target_vendor@
 AUTOMAKE_OPTIONS = foreign
 EXTRA_DIST = \
-       COPYING HINTS INFO LIST NEWS README README.cvs TODO dir.c \
-       win32.c jmacsrc.in joe.1.in joerc.in jpicorc.in jstarrc.in \
-       jupprc rjoerc.in charmaps/klingon.in docs/help-system.html \
+       COPYING HINTS INFO LIST NEWS README README.cvs TODO \
+       charmaps/klingon.in dir.c docs/help-system.html jmacsrc.in \
+       joe.1.in joerc.in jpicorc.in jstarrc.in jupprc rjoerc.in \
        syntax/asm.jsf.in syntax/c.jsf.in syntax/conf.jsf.in \
        syntax/csh.jsf.in syntax/diff.jsf.in syntax/fortran.jsf.in \
        syntax/html.jsf.in syntax/java.jsf.in syntax/lisp.jsf.in \
@@ -283,11 +283,13 @@ sysconf_syntax_DATA = \
 sysconf_charmapsdir = $(sysconf_joedir)/charmaps
 sysconf_charmaps_DATA = charmaps/klingon
 man_MANS = joe.1
-noinst_HEADERS = b.h blocks.h bw.h cmd.h config.h hash.h help.h kbd.h \
-       macro.h main.h menu.h path.h poshist.h pw.h queue.h qw.h rc.h regex.h \
-       scrn.h tab.h termcap.h tty.h tw.h types.h ublock.h uedit.h uerror.h \
-       ufile.h uformat.h uisrch.h umath.h undo.h usearch.h ushell.h utag.h \
-       utils.h va.h vfile.h vs.h w.h utf8.h syntax.h i18n.h charmap.h builtin.h
+noinst_HEADERS = \
+       b.h blocks.h builtin.h bw.h charmap.h cmd.h config.h hash.h \
+       help.h i18n.h kbd.h macro.h main.h menu.h path.h poshist.h pw.h \
+       queue.h qw.h rc.h regex.h scrn.h syntax.h tab.h termcap.h tty.h \
+       tw.h types.h ublock.h uedit.h uerror.h ufile.h uformat.h \
+       uisrch.h umath.h undo.h usearch.h ushell.h utag.h utf8.h utils.h \
+       va.h vfile.h vs.h w.h
 
 @JUPP_WIN32RELOC_FALSE@joe_WIN32_DEFS = -DJUPP_WIN32RELOC=0 -DJOERC="\"$(sysconf_joedir)/\""
 @JUPP_WIN32RELOC_TRUE@joe_WIN32_DEFS = -DJUPP_WIN32RELOC=1 -UJOERC
index b3e59e2..23b516d 100644 (file)
 /* We have fork(2) and want to use it */
 #undef WANT_FORK
 
+/* Can we use the FPU? */
+#undef WANT_MATH
+
 /* Number of bits in a file offset, on hosts where this is settable. */
 #undef _FILE_OFFSET_BITS
 
diff --git a/b.c b/b.c
index 952da40..6b68d54 100644 (file)
--- a/b.c
+++ b/b.c
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/b.c,v 1.15 2016/10/08 17:42:12 tg Exp $ */
 /*
  *     Editor engine
  *     Copyright
@@ -6,14 +5,16 @@
  *
  *     This file is part of JOE (Joe's Own Editor)
  */
+#define EXTERN_B_C
 #include "config.h"
 #include "types.h"
 
+__RCSID("$MirOS: contrib/code/jupp/b.c,v 1.18 2017/12/02 04:32:37 tg Exp $");
+
 #include <unistd.h>
-#include <stdio.h>
-#include <sys/types.h>
 #include <sys/stat.h>
 #include <fcntl.h>
+#include <limits.h>
 #ifdef HAVE_PWD_H
 #include <pwd.h>
 #endif
@@ -37,7 +38,6 @@
 #include "va.h"
 #include "vfile.h"
 #include "vs.h"
-#include "utf8.h"
 #include "charmap.h"
 #include "w.h"
 
@@ -2027,7 +2027,7 @@ unsigned char *parsens(unsigned char *s, long int *skip, long int *amnt)
        int x;
 
        *skip = 0;
-       *amnt = MAXLONG;
+       *amnt = LONG_MAX;
        for (x = sLEN(n) - 1; x > 0 && ((n[x] >= '0' && n[x] <= '9') || n[x] == 'x' || n[x] == 'X'); --x) ;
        if (n[x] == ',') {
                n[x] = 0;
@@ -2204,7 +2204,7 @@ opnerr:
        b->name = joesep((unsigned char *)strdup(s));
 
        /* Set flags */
-       if (error || s[0] == '!' || skip || amnt != MAXLONG) {
+       if (error || s[0] == '!' || skip || amnt != LONG_MAX) {
                b->backup = 1;
                b->changed = 0;
        } else if (!strcmp(n, "-")) {
@@ -2453,7 +2453,7 @@ int bsave(P *p, unsigned char *s, long int size, int flag)
                nescape(maint->t);
                ttclsn();
                f = stdout;
-       } else if (skip || amnt != MAXLONG)
+       } else if (skip || amnt != LONG_MAX)
                f = fopen((char *)s, "r+");
        else {
                f = fopen((char *)s, "w");
@@ -2476,7 +2476,7 @@ int bsave(P *p, unsigned char *s, long int size, int flag)
 
        bsavefd(p, fileno(f), size);
 
-       if (!error && force && size && !skip && amnt == MAXLONG) {
+       if (!error && force && size && !skip && amnt == LONG_MAX) {
                P *q = pdup(p);
                unsigned char nl = '\n';
 
diff --git a/b.h b/b.h
index 93e9b5a..377c740 100644 (file)
--- a/b.h
+++ b/b.h
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/b.h,v 1.4 2014/10/23 16:10:28 tg Exp $ */
 /*
  *     Editor engine
  *     Copyright
@@ -9,8 +8,9 @@
 #ifndef _JOE_B_H
 #define _JOE_B_H 1
 
-#include "config.h"
-#include "types.h"
+#ifdef EXTERN
+__RCSID("$MirOS: contrib/code/jupp/b.h,v 1.5 2017/12/02 02:07:23 tg Exp $");
+#endif
 
 /* 31744 */
 extern unsigned char stdbuf[stdsiz];
index c25652b..321ac3f 100644 (file)
--- a/blocks.c
+++ b/blocks.c
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/blocks.c,v 1.5 2017/08/08 16:09:43 tg Exp $ */
 /*
  *     Fast block move/copy subroutines
  *     Copyright
@@ -8,6 +7,8 @@
  */
 #include "config.h"
 
+__RCSID("$MirOS: contrib/code/jupp/blocks.c,v 1.6 2017/12/02 02:07:23 tg Exp $");
+
 /* This module requires ALIGNED and SIZEOF_INT to be defined correctly */
 
 #include "blocks.h"
index 095b0dc..e71b241 100644 (file)
--- a/blocks.h
+++ b/blocks.h
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/blocks.h,v 1.4 2012/06/08 16:55:27 tg Exp $ */
 /*
  *     Fast block move/copy subroutines
  *     Copyright
@@ -9,7 +8,9 @@
 #ifndef _JOE_BLOCKS_H
 #define _JOE_BLOCKS_H 1
 
-#include "config.h"
+#ifdef EXTERN_B_C
+__RCSID("$MirOS: contrib/code/jupp/blocks.h,v 1.5 2017/12/02 02:07:23 tg Exp $");
+#endif
 
 /* char *mmove(char *d,char *s,int sz); Copy 'sz' bytes from 's' to 'd'.
  * Chooses either mbkwd or mfwrd to do this such that the data won't get
index 991adf9..2d68330 100644 (file)
--- a/builtin.c
+++ b/builtin.c
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/builtin.c,v 1.5 2017/01/10 19:16:27 tg Exp $ */
 /*
  *     Built-in config files
  *     Copyright
@@ -9,7 +8,8 @@
 
 #include "config.h"
 
-#include <stdio.h>
+__RCSID("$MirOS: contrib/code/jupp/builtin.c,v 1.6 2017/12/02 02:07:23 tg Exp $");
+
 #include <stdlib.h>
 #include <string.h>
 
index ec3b40f..0777584 100644 (file)
--- a/builtin.h
+++ b/builtin.h
@@ -1,4 +1,6 @@
-/* $MirOS: contrib/code/jupp/builtin.h,v 1.2 2010/04/08 15:31:01 tg Exp $ */
+#ifdef EXTERN_RC_C
+__RCSID("$MirOS: contrib/code/jupp/builtin.h,v 1.3 2017/12/02 02:07:23 tg Exp $");
+#endif
 
 /* Support for built-in config files */
 
index ecd907c..09a355f 100644 (file)
@@ -8,8 +8,11 @@
        done | perl -pe 's/[^\ca-~]/sprintf "\\x%02X", unpack("U", $&)/eg'
  */
 
+#include "config.h"
 #include "types.h"
 
+__RCSID("$MirOS: contrib/code/jupp/builtins.c,v 1.26 2017/12/02 02:07:24 tg Exp $");
+
 #ifndef JUPPRC_BUILTIN_NAME
 #define JUPPRC_BUILTIN_NAME "jupprc"
 #endif
@@ -550,5 +553,4 @@ const unsigned char * const builtins[] = {
                ":querysr\n"
                "type           ^@ TO \xFF\n"
 ,      NULL
-,      "@(#) $MirOS: contrib/code/jupp/builtins.c,v 1.25 2017/08/09 02:47:30 tg Exp $"
 };
diff --git a/bw.c b/bw.c
index cf29675..cc13814 100644 (file)
--- a/bw.c
+++ b/bw.c
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/bw.c,v 1.22 2017/07/09 01:15:51 tg Exp $ */
 /*
  *     Edit buffer window generation
  *     Copyright
@@ -9,11 +8,13 @@
 #include "config.h"
 #include "types.h"
 
+__RCSID("$MirOS: contrib/code/jupp/bw.c,v 1.25 2017/12/02 04:32:38 tg Exp $");
+
 #include <string.h>
-#include <stdio.h>
 #ifdef HAVE_STDLIB_H
 #include <stdlib.h>
 #endif
+#include <limits.h>
 
 #ifdef HAVE_BSD_STRING_H
 #include <bsd/string.h>
@@ -28,7 +29,6 @@
 #include "ublock.h"
 #include "utils.h"
 #include "syntax.h"
-#include "utf8.h"
 #include "charmap.h"
 #include "w.h"
 
@@ -43,7 +43,7 @@ static P *getto(P *p, P *cur, P *top, long int line)
 
        if (p == NULL) {
                P *best = cur;
-               long dist = MAXLONG;
+               long dist = LONG_MAX;
                long d;
 
                d = (line >= cur->line ? line - cur->line : cur->line - line);
diff --git a/bw.h b/bw.h
index 4f4a6f1..efca6af 100644 (file)
--- a/bw.h
+++ b/bw.h
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/bw.h,v 1.4 2014/03/04 23:04:11 tg Exp $ */
 /*
  *     Edit buffer window generation
  *     Copyright
@@ -9,8 +8,9 @@
 #ifndef _JOE_BW_H
 #define _JOE_BW_H 1
 
-#include "config.h"
-#include "types.h"
+#ifdef EXTERN_CMD_C
+__RCSID("$MirOS: contrib/code/jupp/bw.h,v 1.5 2017/12/02 02:07:24 tg Exp $");
+#endif
 
 extern int dspasis;
 extern int mid;
index 32abf80..d9b2751 100644 (file)
--- a/charmap.c
+++ b/charmap.c
@@ -1,7 +1,6 @@
 #if 0
 .if "0" == "1"
 #endif
-/* $MirOS: contrib/code/jupp/charmap.c,v 1.19 2017/01/11 22:04:31 tg Exp $ */
 /*
  *     UNICODE/ISO-10646 conversion utilities
  *     Copyright
  */
 
 #include "config.h"
+#include "types.h"
+
+__RCSID("$MirOS: contrib/code/jupp/charmap.c,v 1.21 2017/12/02 04:32:38 tg Exp $");
 
-#include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 
 #include "va.h"
 #include "utils.h"
-#include "i18n.h"
 #include "path.h"
 #include "charmap.h"
 
index cefc05b..8711803 100644 (file)
--- a/charmap.h
+++ b/charmap.h
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/charmap.h,v 1.6 2017/01/10 23:10:47 tg Exp $ */
 /*
  *     Character sets
  *     Copyright
@@ -10,9 +9,9 @@
 #ifndef _Icharmap
 #define _Icharmap 1
 
-#include "config.h"
-#include "utf8.h"
-#include "types.h"
+#ifdef EXTERN
+__RCSID("$MirOS: contrib/code/jupp/charmap.h,v 1.8 2017/12/02 04:32:39 tg Exp $");
+#endif
 
 /* For sorted from_map entries */
 
@@ -87,4 +86,6 @@ unsigned char **get_encodings PARAMS((void));
 int to_uni PARAMS((struct charmap *cset, int c));
 int from_uni PARAMS((struct charmap *cset, int c));
 
+#include "utf8.h"
+
 #endif
diff --git a/cmd.c b/cmd.c
index a55acb9..67bcc6c 100644 (file)
--- a/cmd.c
+++ b/cmd.c
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/cmd.c,v 1.18 2017/11/18 17:05:50 tg Exp $ */
 /*
  *     Command execution
  *     Copyright
@@ -6,9 +5,12 @@
  *
  *     This file is part of JOE (Joe's Own Editor)
  */
+#define EXTERN_CMD_C
 #include "config.h"
 #include "types.h"
 
+__RCSID("$MirOS: contrib/code/jupp/cmd.c,v 1.19 2017/12/02 02:07:25 tg Exp $");
+
 #ifdef HAVE_STDLIB_H
 #include <stdlib.h>
 #endif
diff --git a/cmd.h b/cmd.h
index 1c78927..9cf1851 100644 (file)
--- a/cmd.h
+++ b/cmd.h
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/cmd.h,v 1.4 2014/06/09 16:06:46 tg Exp $ */
 /*
  *     Command execution
  *     Copyright
@@ -9,8 +8,9 @@
 #ifndef _JOE_CMD_H
 #define _JOE_CMD_H 1
 
-#include "config.h"
-#include "types.h"
+#ifdef EXTERN_CMD_C
+__RCSID("$MirOS: contrib/code/jupp/cmd.h,v 1.5 2017/12/02 02:07:25 tg Exp $");
+#endif
 
 extern CMD cmds[];             /* Built-in commands */
 extern int dobeep;
index 9668485..3e5035f 100644 (file)
--- a/compat.c
+++ b/compat.c
@@ -1,8 +1,6 @@
-/* $MirOS: contrib/code/jupp/compat.c,v 1.4 2012/06/08 16:48:58 tg Exp $ */
-
 /*-
- * Copyright © 2004, 2005, 2006, 2007, 2011, 2012
- *     Thorsten “mirabilos” Glaser <tg@mirbsd.org>
+ * Copyright © 2004, 2005, 2006, 2007, 2011, 2012, 2017
+ *     mirabilos <m@mirbsd.org>
  *
  * Provided that these terms and disclaimer and all copyright notices
  * are retained or reproduced in an accompanying document, permission
  * damage or existence of a defect, except proven that it results out
  * of said person’s immediate fault when using the work as intended.
  *-
- * Compatibility functions for jupp.
+ * Compatibility and fully new utility functions for jupp.
  *
  * – ctime: based on mirtime from MirBSD libc; not leap second capable
  *   src/kern/include/mirtime.h,v 1.2 2011/11/20 23:40:11 tg Exp
  *   src/kern/c/mirtime.c,v 1.3 2011/11/20 23:40:10 tg Exp
  * – strlcpy, strlcat: pulled in via "strlfun.inc"
  * – popen, pclose: pulled in via "popen.inc"
+ * - ustoc_{hex,oct}, ustol: parse integers
  */
 
 #include "config.h"
 #include "types.h"
 
-#undef __RCSID
-#define __RCSID(x)     /* nothing, in jupp */
+__RCSID("$MirOS: contrib/code/jupp/compat.c,v 1.8 2017/12/02 04:32:39 tg Exp $");
+
+#include <limits.h>
+#include <string.h>
+#include "utils.h"
 
 #undef L_strlcat
 #undef L_strlcpy
@@ -59,9 +61,6 @@
 # endif
 #endif
 
-#include <limits.h>
-#include <stdio.h>
-
 typedef struct {
        int tm_sec;             /* seconds [0-60] */
        int tm_min;             /* minutes [0-59] */
@@ -204,3 +203,163 @@ joe_timet2tm(joe_tm *tm, const time_t *tp)
 #ifndef HAVE_POPEN
 #include "popen.inc"
 #endif
+
+size_t
+ustoc_hex(const void *us, int *dp, size_t lim)
+{
+       unsigned char c;
+       const unsigned char *s = (const unsigned char *)us;
+       int rv = 0, rounds = 0;
+
+       while (rounds++ < 2 && lim-- > 0)
+               if ((c = *s++) >= '0' && c <= '9')
+                       rv = (rv << 4) | (c & 15);
+               else if ((c |= 0x20) >= 'a' && c <= 'f')
+                       rv = (rv << 4) | (c - 'a' + 10);
+               else {
+                       --s;
+                       break;
+               }
+
+       *dp = rv;
+       return (s - (const unsigned char *)us);
+}
+
+size_t
+ustoc_oct(const void *us, int *dp, size_t lim)
+{
+       unsigned char c;
+       const unsigned char *s = (const unsigned char *)us;
+       int rv = 0, rounds = 0;
+
+       while (rounds++ < 3 && lim-- > 0)
+               if ((c = *s++) >= '0' && c <= '7')
+                       rv = (rv << 3) | (c & 7);
+               else {
+                       --s;
+                       break;
+               }
+
+       *dp = rv;
+       return (s - (const unsigned char *)us);
+}
+
+#define USTOL_MODEMASK 0x03
+
+static const char ustol_wsp[] = "\t\x0B\x0C\r ";
+
+long
+ustol(void *us, void **dpp, int flags)
+{
+       unsigned char c, *s = (unsigned char *)us;
+       unsigned long a = 0;
+       unsigned char *sp;
+       unsigned char neg = 0;
+
+       if (flags & USTOL_LTRIM)
+               while ((c = *s) && strchr(ustol_wsp, c))
+                       ++s;
+
+       switch (flags & USTOL_MODEMASK) {
+       case USTOL_HEX:
+               if (s[0] == '0' && (s[1] | 0x20) == 'x')
+                       s += 2;
+               break;
+       case USTOL_AUTO:
+               if (s[0] != '0')
+                       flags |= USTOL_DEC;
+               else if ((s[1] | 0x20) != 'x')
+                       flags |= USTOL_OCT;
+               else {
+                       flags |= USTOL_HEX;
+                       s += 2;
+               }
+               break;
+       }
+
+       sp = s;
+       switch (flags & USTOL_MODEMASK) {
+       case USTOL_OCT:
+               while ((c = *s++) >= '0' && c <= '7') {
+                       /* overflow check */
+                       if (a > (ULONG_MAX >> 3))
+                               goto err;
+                       /* accumulate trivially */
+                       a = (a << 3) | (c & 7);
+               }
+               break;
+       case USTOL_HEX:
+               while ((c = *s++) >= '0') {
+                       if (c <= '9')
+                               c &= 15;
+                       else if ((c |= 0x20) >= 'a' && c <= 'f')
+                               c = c - 'a' + 10;
+                       else
+                               break;
+                       /* overflow check */
+                       if (a > (ULONG_MAX >> 4))
+                               goto err;
+                       /* accumulate trivially */
+                       a = (a << 4) | c;
+               }
+               break;
+       default:
+               switch (*s) {
+               case '-':
+                       neg = 1;
+                       /* FALLTHROUGH */
+               case '+':
+                       sp = ++s;
+               }
+               while ((c = *s++) >= '0' && c <= '9') {
+                       c &= 15;
+                       if (a > (ULONG_MAX / 10))
+                               goto err;
+                       a *= 10;
+                       if (a > (ULONG_MAX - c))
+                               goto err;
+                       a += c;
+               }
+               if (neg) {
+                       if (a > (((unsigned long)(-(LONG_MIN + 1L))) + 1UL))
+                               goto err;
+                       a = -a;
+               } else if (a > (unsigned long)LONG_MAX)
+                       goto err;
+       }
+       /* check we had at least one digit */
+       if (--s == sp)
+               goto err;
+
+       if (flags & USTOL_RTRIM)
+               while ((c = *s) && strchr(ustol_wsp, c))
+                       ++s;
+
+       /* don’t check for EOS, or arrived at EOS */
+       if (!(flags & USTOL_EOS) || !*s)
+               goto out;
+
+ err:
+       s = NULL;
+       a = 0;
+ out:
+       if (dpp)
+               *dpp = (void *)s;
+       return ((long)a);
+}
+
+long
+ustolb(void *us, void **dpp, long lower, long upper, int flags)
+{
+       void *dp;
+       long rv;
+
+       rv = ustol(us, &dp, flags);
+       if (dp != NULL && (rv < lower || rv > upper)) {
+               dp = NULL;
+               rv = 0;
+       }
+       if (dpp)
+               *dpp = dp;
+       return (rv);
+}
index c6e9bd8..4b95f86 100644 (file)
--- a/config.h
+++ b/config.h
@@ -1,8 +1,8 @@
-/* $MirOS: contrib/code/jupp/config.h,v 1.7 2014/06/26 18:15:17 tg Exp $ */
-
 #ifndef _JOE_CONFIG_H
 #define _JOE_CONFIG_H
 
+/* see bottom for RCSID on this one */
+
 #ifndef TEST
 #include "autoconf.h"
 #else
 #define PARAMS(protos) protos
 #endif
 
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+
 #ifdef HAVE_SNPRINTF
 
 #define joe_snprintf_0(buf,len,fmt) snprintf((buf),(len),(fmt))
@@ -52,9 +56,6 @@
 
 #endif
 
-#define MAXINT  ((((unsigned int)-1)/2)-1)
-#define MAXLONG ((((unsigned long)-1L)/2)-1)
-
 #include <stdio.h>
 #ifndef EOF
 #define EOF -1
@@ -113,4 +114,50 @@ size_t strlcpy(char *, const char *, size_t)
     ATTR_BOUNDED((__string__, 1, 3));
 #endif
 
+/* from mksh */
+
+#define BIT(i)         (1U << (i))
+#define NELEM(a)       (sizeof(a) / sizeof((a)[0]))
+
+#if defined(MirBSD) && (MirBSD >= 0x09A1) && \
+    defined(__ELF__) && defined(__GNUC__) && \
+    !defined(__llvm__) && !defined(__NWCC__)
+/*
+ * We got usable __IDSTRING __COPYRIGHT __RCSID __SCCSID macros
+ * which work for all cases; no need to redefine them using the
+ * "portable" macros from below when we might have the "better"
+ * gcc+ELF specific macros or other system dependent ones.
+ */
+#else
+#undef __IDSTRING
+#undef __IDSTRING_CONCAT
+#undef __IDSTRING_EXPAND
+#undef __COPYRIGHT
+#undef __RCSID
+#undef __SCCSID
+#define __IDSTRING_CONCAT(l,p)         __LINTED__ ## l ## _ ## p
+#define __IDSTRING_EXPAND(l,p)         __IDSTRING_CONCAT(l,p)
+#ifdef MKSH_DONT_EMIT_IDSTRING
+#define __IDSTRING(prefix, string)     /* nothing */
+#elif defined(__ELF__) && defined(__GNUC__) && \
+    !defined(__llvm__) && !defined(__NWCC__) && !defined(NO_ASM)
+#define __IDSTRING(prefix, string)                             \
+       __asm__(".section .comment"                             \
+       "\n     .ascii  \"@(\"\"#)" #prefix ": \""              \
+       "\n     .asciz  \"" string "\""                         \
+       "\n     .previous")
+#else
+#define __IDSTRING(prefix, string)                             \
+       static const char __IDSTRING_EXPAND(__LINE__,prefix) [] \
+           __attribute__((__used__)) = "@(""#)" #prefix ": " string
+#endif
+#define __COPYRIGHT(x)         __IDSTRING(copyright,x)
+#define __RCSID(x)             __IDSTRING(rcsid,x)
+#define __SCCSID(x)            __IDSTRING(sccsid,x)
+#endif
+
+#ifdef EXTERN
+__RCSID("$MirOS: contrib/code/jupp/config.h,v 1.9 2017/12/02 02:07:26 tg Exp $");
+#endif
+
 #endif /* ifndef _JOE_CONFIG_H */
index 8e6773c..3a5a06a 100644 (file)
--- a/configure
+++ b/configure
@@ -1322,6 +1322,7 @@ Optional Features:
   --enable-win32reloc     enable win32 self-relocation
   --disable-largefile     omit support for large files
   --disable-fork          disable use of fork
+  --disable-fpu           disable use of floating point arithmetics
 
 Some influential environment variables:
   CC          C compiler command
@@ -10231,6 +10232,35 @@ cat >>confdefs.h <<_ACEOF
 #define WANT_FORK $use_fork
 _ACEOF
 
+if test $use_fork = 1; then
+       echo "Enabling use of fork(), concurrent subshells, etc."
+else
+       echo "DISabling use of fork() and concurrent subshells (NOMMU)!"
+fi
+
+# Check whether --enable-fpu was given.
+if test "${enable_fpu+set}" = set; then
+  enableval=$enable_fpu; use_fpu=$enableval
+else
+  use_fpu=yes
+fi
+
+if test x"$use_fpu" = x"no"; then
+       use_fpu=0
+else
+       use_fpu=1
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define WANT_MATH $use_fpu
+_ACEOF
+
+if test $use_fpu = 1; then
+       echo "Enabling use of floating point arithmetics"
+else
+       echo "DISabling Math support for lack of an FPU!"
+fi
+
 
 { echo "$as_me:$LINENO: checking whether strlcpy is declared" >&5
 echo $ECHO_N "checking whether strlcpy is declared... $ECHO_C" >&6; }
index e8b6ade..c95b309 100644 (file)
@@ -1,4 +1,4 @@
-# $MirOS: contrib/code/jupp/configure.ac,v 1.57 2017/11/18 16:25:07 tg Exp $
+# $MirOS: contrib/code/jupp/configure.ac,v 1.59 2017/12/02 04:15:29 tg Exp $
 #-
 # Process this file with autoconf to produce a configure script.
 
@@ -219,6 +219,27 @@ no:*) use_fork=0 ;;
 *) use_fork=0 ;;
 esac
 AC_DEFINE_UNQUOTED([WANT_FORK], [$use_fork], [We have fork(2) and want to use it])
+if test $use_fork = 1; then
+       echo "Enabling use of fork(), concurrent subshells, etc."
+else
+       echo "DISabling use of fork() and concurrent subshells (NOMMU)!"
+fi
+
+AC_ARG_ENABLE([fpu],
+[  --disable-fpu           disable use of floating point arithmetics],
+       use_fpu=$enableval, use_fpu=yes)
+if test x"$use_fpu" = x"no"; then
+       use_fpu=0
+else
+       use_fpu=1
+fi
+AC_DEFINE_UNQUOTED([WANT_MATH], [$use_fpu], [Can we use the FPU?])
+if test $use_fpu = 1; then
+       echo "Enabling use of floating point arithmetics"
+else
+       echo "DISabling Math support for lack of an FPU!"
+fi
+
 
 AC_CHECK_DECLS([strlcpy, strlcat, popen])
 AC_CHECK_DECLS([ctime], [], [], [AC_INCLUDES_DEFAULT
diff --git a/dir.c b/dir.c
index 681c264..66201b8 100644 (file)
--- a/dir.c
+++ b/dir.c
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/dir.c,v 1.2 2008/05/13 13:08:21 tg Exp $ */
 /*
  *     Directory package for older UNIXs
  *     Copyright
@@ -7,6 +6,8 @@
  *     This file is part of JOE (Joe's Own Editor)
  */
 
+__RCSID("$MirOS: contrib/code/jupp/dir.c,v 1.3 2017/12/02 02:07:26 tg Exp $");
+
 struct direct {
        short d_ino;
        unsigned char d_name[14];
diff --git a/hash.c b/hash.c
index 91336a9..488ab31 100644 (file)
--- a/hash.c
+++ b/hash.c
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/hash.c,v 1.3 2017/01/10 19:16:27 tg Exp $ */
 /*
  *     Simple hash table
  *     Copyright
@@ -9,6 +8,8 @@
 #include "config.h"
 #include "types.h"
 
+__RCSID("$MirOS: contrib/code/jupp/hash.c,v 1.4 2017/12/02 02:07:26 tg Exp $");
+
 #include <stdlib.h>
 #include <string.h>
 
diff --git a/hash.h b/hash.h
index 301474a..d35f6be 100644 (file)
--- a/hash.h
+++ b/hash.h
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/hash.h,v 1.2 2008/05/13 13:08:22 tg Exp $ */
 /*
  *     Simple hash table
  *     Copyright
@@ -9,8 +8,9 @@
 #ifndef _JOE_HASH_H
 #define _JOE_HASH_H 1
 
-#include "config.h"
-#include "types.h"
+#ifdef EXTERN_CMD_C
+__RCSID("$MirOS: contrib/code/jupp/hash.h,v 1.3 2017/12/02 02:07:26 tg Exp $");
+#endif
 
 unsigned long hash PARAMS((unsigned char *s));
 HASH *htmk PARAMS((int len));
diff --git a/help.c b/help.c
index caac162..e833bf2 100644 (file)
--- a/help.c
+++ b/help.c
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/help.c,v 1.10 2017/01/10 23:59:32 tg Exp $ */
 /*
  *     Help system
  *     Copyright
@@ -10,7 +9,8 @@
 #include "config.h"
 #include "types.h"
 
-#include <stdio.h>
+__RCSID("$MirOS: contrib/code/jupp/help.c,v 1.11 2017/12/02 02:07:26 tg Exp $");
+
 #include <stdlib.h>
 #include <string.h>
 
diff --git a/help.h b/help.h
index 6612601..3ba3bc6 100644 (file)
--- a/help.h
+++ b/help.h
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/help.h,v 1.4 2012/12/30 19:50:32 tg Exp $ */
 /*
  *     Help system
  *     Copyright
@@ -10,8 +9,9 @@
 #ifndef _JOE_HELP_H
 #define _JOE_HELP_H 1
 
-#include "config.h"
-#include "types.h"
+#ifdef EXTERN
+__RCSID("$MirOS: contrib/code/jupp/help.h,v 1.5 2017/12/02 02:07:26 tg Exp $");
+#endif
 
 extern struct help *help_actual;
 
diff --git a/i18n.c b/i18n.c
index 865d5f4..2682d05 100644 (file)
--- a/i18n.c
+++ b/i18n.c
@@ -1,7 +1,6 @@
 #if 0
 .if "0" == "1"
 #endif
-/* $MirOS: contrib/code/jupp/i18n.c,v 1.24 2017/11/18 12:01:52 tg Exp $ */
 /*
  *     UNICODE/ISO-10646 functions for JOE
  *     Copyright
@@ -22,9 +21,9 @@
 #include <stdlib.h>
 #endif
 
+__RCSID("$MirOS: contrib/code/jupp/i18n.c,v 1.26 2017/12/02 04:32:39 tg Exp $");
+
 #include "charmap.h"
-#include "utf8.h"
-#include "i18n.h"
 
 /* From: X11/xc/programs/xterm/wcwidth.c,v 1.10 */
 
diff --git a/i18n.h b/i18n.h
index 96c39a2..12e0693 100644 (file)
--- a/i18n.h
+++ b/i18n.h
@@ -1,10 +1,9 @@
-/* $MirOS: contrib/code/jupp/i18n.h,v 1.8 2017/07/08 16:23:26 tg Exp $ */
-
 #ifndef _Ii18n
 #define _Ii18n 1
 
-#include "config.h"
-#include "types.h"
+#ifdef EXTERN
+__RCSID("$MirOS: contrib/code/jupp/i18n.h,v 1.9 2017/12/02 02:07:28 tg Exp $");
+#endif
 
 #ifdef TEST_I18N
 int joe_iswupper PARAMS((struct charmap *,int c));
diff --git a/kbd.c b/kbd.c
index 381cee4..45c43c6 100644 (file)
--- a/kbd.c
+++ b/kbd.c
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/kbd.c,v 1.4 2017/01/10 19:16:27 tg Exp $ */
 /*
  *     Key-map handler
  *     Copyright
@@ -9,6 +8,8 @@
 #include "config.h"
 #include "types.h"
 
+__RCSID("$MirOS: contrib/code/jupp/kbd.c,v 1.5 2017/12/02 02:07:28 tg Exp $");
+
 #include <stdlib.h>
 #include <string.h>
 
diff --git a/kbd.h b/kbd.h
index 2b64624..0e9f62a 100644 (file)
--- a/kbd.h
+++ b/kbd.h
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/kbd.h,v 1.2 2008/05/13 13:08:23 tg Exp $ */
 /*
  *     Key-map handler
  *     Copyright
@@ -9,8 +8,9 @@
 #ifndef _JOE_KBD_H
 #define _JOE_KBD_H 1
 
-#include "config.h"
-#include "types.h"
+#ifdef EXTERN
+__RCSID("$MirOS: contrib/code/jupp/kbd.h,v 1.3 2017/12/02 02:07:28 tg Exp $");
+#endif
 
 /* KMAP *mkkmap(void);
  * Create an empty keymap
diff --git a/macro.c b/macro.c
index d19c980..a499502 100644 (file)
--- a/macro.c
+++ b/macro.c
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/macro.c,v 1.8 2017/03/19 19:19:50 tg Exp $ */
 /*
  *     Keyboard macros
  *     Copyright
@@ -9,7 +8,8 @@
 #include "config.h"
 #include "types.h"
 
-#include <stdio.h>
+__RCSID("$MirOS: contrib/code/jupp/macro.c,v 1.11 2017/12/02 04:32:40 tg Exp $");
+
 #include <string.h>
 #ifdef HAVE_STDLIB_H
 #include <stdlib.h>
@@ -27,7 +27,6 @@
 #include "undo.h"
 #include "utils.h"
 #include "vs.h"
-#include "utf8.h"
 #include "charmap.h"
 #include "w.h"
 
@@ -581,7 +580,7 @@ static int doarg(BW *bw, unsigned char *s, void *object, int *notify)
 
        if (notify)
                *notify = 1;
-       num = calc(bw, s);
+       num = calcl(bw, s);
        if (merrf) {
                msgnw(bw->parent, merrt);
                return -1;
diff --git a/macro.h b/macro.h
index 7cffed8..7e152de 100644 (file)
--- a/macro.h
+++ b/macro.h
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/macro.h,v 1.2 2008/05/13 13:08:23 tg Exp $ */
 /*
  *     Keyboard macros
  *     Copyright
@@ -9,8 +8,9 @@
 #ifndef _JOE_MACRO_H
 #define _JOE_MACRO_H 1
 
-#include "config.h"
-#include "types.h"
+#ifdef EXTERN
+__RCSID("$MirOS: contrib/code/jupp/macro.h,v 1.3 2017/12/02 02:07:28 tg Exp $");
+#endif
 
 /* Set when macro is recording: for status line */
 extern struct recmac *recmac;
diff --git a/main.c b/main.c
index d195361..66a984a 100644 (file)
--- a/main.c
+++ b/main.c
@@ -1,5 +1,3 @@
-/* $MirOS: contrib/code/jupp/main.c,v 1.31 2017/08/08 21:39:28 tg Exp $ */
-
 #define JUPP_IS_COPYRIGHT_C_BY "2017 mirabilos"
 
 /*-
  * Editor startup and main edit loop
  */
 
+#define EXTERN
 #include "config.h"
 #include "types.h"
 
-#include <stdio.h>
+__RCSID("$MirOS: contrib/code/jupp/main.c,v 1.33 2017/12/02 04:32:40 tg Exp $");
+
 #include <fcntl.h>
 #include <string.h>
 #ifdef HAVE_STDLIB_H
@@ -53,7 +53,6 @@
 #include "vfile.h"
 #include "vs.h"
 #include "w.h"
-#include "utf8.h"
 #include "charmap.h"
 #include "syntax.h"
 
diff --git a/main.h b/main.h
index ee0318f..ff17805 100644 (file)
--- a/main.h
+++ b/main.h
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/main.h,v 1.3 2012/12/22 00:06:12 tg Exp $ */
 /*
  *     Editor startup and edit loop
  *     Copyright
@@ -9,8 +8,9 @@
 #ifndef _JOE_MAIN_H
 #define _JOE_MAIN_H 1
 
-#include "config.h"
-#include "types.h"
+#ifdef EXTERN_B_C
+__RCSID("$MirOS: contrib/code/jupp/main.h,v 1.4 2017/12/02 02:07:29 tg Exp $");
+#endif
 
 extern const char null[];
 
diff --git a/menu.c b/menu.c
index 20d641b..22d592b 100644 (file)
--- a/menu.c
+++ b/menu.c
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/menu.c,v 1.7 2017/01/10 19:16:27 tg Exp $ */
 /*
  *     Menu selection window
  *     Copyright
@@ -9,6 +8,8 @@
 #include "config.h"
 #include "types.h"
 
+__RCSID("$MirOS: contrib/code/jupp/menu.c,v 1.8 2017/12/02 02:07:29 tg Exp $");
+
 #include <stdlib.h>
 #include <string.h>
 
diff --git a/menu.h b/menu.h
index b593f1a..f3a35c6 100644 (file)
--- a/menu.h
+++ b/menu.h
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/menu.h,v 1.2 2008/05/13 13:08:23 tg Exp $ */
 /*
  *     Menu selection window
  *     Copyright
@@ -9,8 +8,9 @@
 #ifndef _JOE_MENU_H
 #define _JOE_MENU_H 1
 
-#include "config.h"
-#include "types.h"
+#ifdef EXTERN_CMD_C
+__RCSID("$MirOS: contrib/code/jupp/menu.h,v 1.3 2017/12/02 02:07:29 tg Exp $");
+#endif
 
 /* Create a menu */
 /* FIXME: ??? ---> */
diff --git a/path.c b/path.c
index 844636d..f811b25 100644 (file)
--- a/path.c
+++ b/path.c
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/path.c,v 1.12 2016/10/29 23:44:45 tg Exp $ */
 /* 
  *     Directory and path functions
  *     Copyright
@@ -9,8 +8,8 @@
 #include "config.h"
 #include "types.h"
 
-#include <stdio.h>
-#include <sys/types.h>
+__RCSID("$MirOS: contrib/code/jupp/path.c,v 1.13 2017/12/02 02:07:29 tg Exp $");
+
 #ifdef HAVE_SYS_STAT_H
 #include <sys/stat.h>
 #endif
diff --git a/path.h b/path.h
index 672baad..5c0f3cc 100644 (file)
--- a/path.h
+++ b/path.h
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/path.h,v 1.11 2016/10/29 23:44:45 tg Exp $ */
 /*
  *     Directory and path functions
  *     Copyright
@@ -9,7 +8,9 @@
 #ifndef _JOE_PATH_H
 #define _JOE_PATH_H 1
 
-#include "config.h"
+#ifdef EXTERN
+__RCSID("$MirOS: contrib/code/jupp/path.h,v 1.12 2017/12/02 02:07:29 tg Exp $");
+#endif
 
 #if defined(__MSDOS__) || defined(__DJGPP__) || defined(__EMX__) || \
     defined(__CYGWIN__) || defined(_WIN32)
index d7f6ece..39f92e0 100644 (file)
--- a/poshist.c
+++ b/poshist.c
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/poshist.c,v 1.2 2008/05/13 13:08:24 tg Exp $ */
 /*
  *     Position history
  *     Copyright
@@ -9,6 +8,8 @@
 #include "config.h"
 #include "types.h"
 
+__RCSID("$MirOS: contrib/code/jupp/poshist.c,v 1.3 2017/12/02 02:07:29 tg Exp $");
+
 #ifdef HAVE_STDLIB_H
 #include <stdlib.h>
 #endif
index 0b9add4..ace163c 100644 (file)
--- a/poshist.h
+++ b/poshist.h
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/poshist.h,v 1.2 2008/05/13 13:08:24 tg Exp $ */
 /*
  *     Position history
  *     Copyright
@@ -9,8 +8,9 @@
 #ifndef _JOE_POSHIST_H
 #define _JOE_POSHIST_H 1
 
-#include "config.h"
-#include "types.h"
+#ifdef EXTERN_CMD_C
+__RCSID("$MirOS: contrib/code/jupp/poshist.h,v 1.3 2017/12/02 02:07:29 tg Exp $");
+#endif
 
 void afterpos PARAMS((void));
 void aftermove PARAMS((W *w, P *p));
diff --git a/pw.c b/pw.c
index 9498014..d78f9aa 100644 (file)
--- a/pw.c
+++ b/pw.c
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/pw.c,v 1.8 2017/01/11 22:56:48 tg Exp $ */
 /*
  *     Prompt windows
  *     Copyright
@@ -9,6 +8,8 @@
 #include "config.h"
 #include "types.h"
 
+__RCSID("$MirOS: contrib/code/jupp/pw.c,v 1.9 2017/12/02 02:07:29 tg Exp $");
+
 #include <stdlib.h>
 #include <string.h>
 
diff --git a/pw.h b/pw.h
index f003845..0181b08 100644 (file)
--- a/pw.h
+++ b/pw.h
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/pw.h,v 1.4 2017/01/11 22:56:49 tg Exp $ */
 /*
  *     Prompt windows
  *     Copyright
@@ -9,8 +8,9 @@
 #ifndef _JOE_PW_H
 #define _JOE_PW_H 1
 
-#include "config.h"
-#include "types.h"
+#ifdef EXTERN_CMD_C
+__RCSID("$MirOS: contrib/code/jupp/pw.h,v 1.5 2017/12/02 02:07:30 tg Exp $");
+#endif
 
 /* BW *wmkpw(BW *bw,char *prompt,int (*func)(),char *huh,int (*abrt)(),
              int (*tab)(),void *object,int *notify);
diff --git a/queue.c b/queue.c
index e516fd4..c9e2f15 100644 (file)
--- a/queue.c
+++ b/queue.c
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/queue.c,v 1.3 2017/01/10 19:16:27 tg Exp $ */
 /*
  *     Doubly linked list primitives
  *     Copyright
@@ -9,6 +8,8 @@
 #include "config.h"
 #include "types.h"
 
+__RCSID("$MirOS: contrib/code/jupp/queue.c,v 1.4 2017/12/02 02:07:30 tg Exp $");
+
 #include <stdlib.h>
 
 #include "queue.h"
diff --git a/queue.h b/queue.h
index 5003c06..72bfc3e 100644 (file)
--- a/queue.h
+++ b/queue.h
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/queue.h,v 1.2 2008/05/13 13:08:24 tg Exp $ */
 /*
  *     Doubly linked list primitives
  *     Copyright
@@ -9,7 +8,9 @@
 #ifndef _JOE_QUEUE
 #define _JOE_QUEUE 1 
 
-#include "config.h"
+#ifdef EXTERN_B_C
+__RCSID("$MirOS: contrib/code/jupp/queue.h,v 1.3 2017/12/02 02:07:30 tg Exp $");
+#endif
 
 extern void *ITEM;
 extern void *QUEUE;
diff --git a/qw.c b/qw.c
index bad5ee4..f420bb1 100644 (file)
--- a/qw.c
+++ b/qw.c
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/qw.c,v 1.5 2017/01/10 19:16:27 tg Exp $ */
 /*
  *     Query windows
  *     Copyright
@@ -9,13 +8,14 @@
 #include "config.h"
 #include "types.h"
 
+__RCSID("$MirOS: contrib/code/jupp/qw.c,v 1.7 2017/12/02 04:32:40 tg Exp $");
+
 #include <stdlib.h>
 
 #include "utils.h"
 #include "vs.h"
 #include "charmap.h"
 #include "scrn.h"
-#include "utf8.h"
 #include "w.h"
 
 static void dispqw(QW *qw)
diff --git a/qw.h b/qw.h
index 9f9b5f1..7f5418d 100644 (file)
--- a/qw.h
+++ b/qw.h
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/qw.h,v 1.2 2008/05/13 13:08:24 tg Exp $ */
 /*
  *     Single-key query windows
  *     Copyright
@@ -9,8 +8,9 @@
 #ifndef _JOE_QW_H
 #define _JOE_QW_H 1
 
-#include "config.h"
-#include "types.h"
+#ifdef EXTERN_UFILE_C
+__RCSID("$MirOS: contrib/code/jupp/qw.h,v 1.3 2017/12/02 02:07:30 tg Exp $");
+#endif
 
 /* QW *mkqw(W *w, char *prompt, int (*func)(), int (*abrt)(), void *object);
  * Create a query window for the given window
diff --git a/rc.c b/rc.c
index 7ba6ae1..8bdb1e1 100644 (file)
--- a/rc.c
+++ b/rc.c
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/rc.c,v 1.23 2017/03/19 19:19:50 tg Exp $ */
 /*
  *     *rc file parser
  *     Copyright
@@ -6,10 +5,12 @@
  *
  *     This file is part of JOE (Joe's Own Editor)
  */
+#define EXTERN_RC_C
 #include "config.h"
 #include "types.h"
 
-#include <stdio.h>
+__RCSID("$MirOS: contrib/code/jupp/rc.c,v 1.26 2017/12/02 04:32:41 tg Exp $");
+
 #include <string.h>
 #ifdef HAVE_STDLIB_H
 #include <stdlib.h>
@@ -35,7 +36,6 @@
 #include "b.h"
 #include "syntax.h"
 #include "va.h"
-#include "utf8.h"
 #include "charmap.h"
 #include "w.h"
 
@@ -512,7 +512,7 @@ static int doopt1(BW *bw, unsigned char *s, int *xx, int *notify)
 {
        int ret = 0;
        int x = *xx;
-       int v;
+       long v;
 
        joe_free(xx);
        switch (glopts[x].type) {
@@ -521,7 +521,7 @@ static int doopt1(BW *bw, unsigned char *s, int *xx, int *notify)
                        ret = -1;
                        break;
                }
-               v = calc(bw, s);
+               v = calcl(bw, s);
                if (merrf) {
                        msgnw(bw->parent, merrt);
                        ret = -1;
@@ -541,7 +541,7 @@ static int doopt1(BW *bw, unsigned char *s, int *xx, int *notify)
                        ret = -1;
                        break;
                }
-               v = calc(bw, s);
+               v = calcl(bw, s);
                if (merrf) {
                        msgnw(bw->parent, merrt);
                        ret = -1;
@@ -557,7 +557,7 @@ static int doopt1(BW *bw, unsigned char *s, int *xx, int *notify)
                        ret = -1;
                        break;
                }
-               v = calc(bw, s) - 1.0;
+               v = calcldec(bw, s);
                if (merrf) {
                        msgnw(bw->parent, merrt);
                        ret = -1;
diff --git a/rc.h b/rc.h
index b389fa2..140f3cd 100644 (file)
--- a/rc.h
+++ b/rc.h
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/rc.h,v 1.4 2012/12/30 21:45:16 tg Exp $ */
 /*
  *     *rc file parser
  *     Copyright
@@ -9,8 +8,9 @@
 #ifndef _JOE_RC_H
 #define _JOE_RC_H 1
 
-#include "config.h"
-#include "types.h"
+#ifdef EXTERN
+__RCSID("$MirOS: contrib/code/jupp/rc.h,v 1.5 2017/12/02 02:07:31 tg Exp $");
+#endif
 
 extern OPTIONS pdefault;
 extern OPTIONS fdefault;
diff --git a/regex.c b/regex.c
index 9cdc2e0..6fa4679 100644 (file)
--- a/regex.c
+++ b/regex.c
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/regex.c,v 1.5 2012/12/22 00:06:13 tg Exp $ */
 /*
  *     Regular expression subroutines
  *     Copyright
@@ -9,10 +8,9 @@
 #include "config.h"
 #include "types.h"
 
-#include <stdio.h> 
+__RCSID("$MirOS: contrib/code/jupp/regex.c,v 1.7 2017/12/02 04:32:41 tg Exp $");
 
 #include "b.h"
-#include "utf8.h"
 #include "charmap.h"
 #include "vs.h"
 
diff --git a/regex.h b/regex.h
index 32d9fcc..c53f746 100644 (file)
--- a/regex.h
+++ b/regex.h
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/regex.h,v 1.2 2008/05/13 13:08:24 tg Exp $ */
 /*
  *     Regular expression subroutines
  *     Copyright
@@ -9,8 +8,9 @@
 #ifndef _JOE_REGEX_H
 #define _JOE_REGEX_H 1
 
-#include "config.h"
-#include "types.h"
+#ifdef EXTERN_RC_C
+__RCSID("$MirOS: contrib/code/jupp/regex.h,v 1.3 2017/12/02 02:07:31 tg Exp $");
+#endif
 
 int escape PARAMS((int utf8,unsigned char **a, int *b));
 int pmatch PARAMS((unsigned char **pieces, unsigned char *regex, int len, P *p, int n, int icase));
diff --git a/scrn.c b/scrn.c
index e51c02f..d5cf106 100644 (file)
--- a/scrn.c
+++ b/scrn.c
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/scrn.c,v 1.27 2017/11/18 16:02:04 tg Exp $ */
 /*
  *     Device independant TTY interface for JOE
  *     Copyright
@@ -9,7 +8,8 @@
 #include "config.h"
 #include "types.h"
 
-#include <stdio.h>
+__RCSID("$MirOS: contrib/code/jupp/scrn.c,v 1.30 2017/12/02 04:49:46 tg Exp $");
+
 #ifdef HAVE_STDLIB_H
 #include <stdlib.h>
 #endif
@@ -20,7 +20,6 @@
 #include "scrn.h"
 #include "termcap.h"
 #include "charmap.h"
-#include "utf8.h"
 #include "utils.h"
 
 int skiptop = 0;
@@ -519,22 +518,20 @@ SCRN *nopen(CAP *cap)
                t->avattr |= INVERSE;
  oops:
 
-
-       if (assume_color) {
-               /* Install color support if it looks like an ansi terminal (it has bold which begins with ESC [) */
-#ifndef TERMINFO
-               if (!t->Sf && t->md && t->md[0]=='\\' && t->md[1]=='E' && t->md[2]=='[') {
+       if (assume_color && !t->Sf && t->md) {
+               /*
+                * Install colour support if this looks like an ANSI
+                * terminal — that is, it’s got bold with ESC ‘[’…
+                */
+               if (t->md[0] == '\\' && t->md[1] == 'E' && t->md[2] == '[') {
                        t->ut = 1;
                        t->Sf =US "\\E[3%dm";
                        t->Sb =US "\\E[4%dm";
-               }
-#else
-               if (!t->Sf && t->md && t->md[0]=='\033' && t->md[1]=='[') {
+               } else if (t->md[0] == '\033' && t->md[1] == '[') {
                        t->ut = 1;
                        t->Sf =US "\033[3%p1%dm";
                        t->Sb =US "\033[4%p1%dm";
                }
-#endif
        }
 
        if (getnum(t->cap,US "sg") <= 0 && !t->mr && jgetstr(t->cap,US "se")) {
diff --git a/scrn.h b/scrn.h
index b2fc63f..6024ef4 100644 (file)
--- a/scrn.h
+++ b/scrn.h
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/scrn.h,v 1.5 2017/07/09 01:03:54 tg Exp $ */
 /*
  *     Device independant tty interface for JOE
  *     Copyright
@@ -9,8 +8,9 @@
 #ifndef _JOE_SCRN_H
 #define _JOE_SCRN_H 1
 
-#include "config.h"
-#include "types.h"
+#ifdef EXTERN
+__RCSID("$MirOS: contrib/code/jupp/scrn.h,v 1.6 2017/12/02 02:07:31 tg Exp $");
+#endif
 
 #include "tty.h"               /* ttputc() */
 
index 362323e..e86f08e 100644 (file)
--- a/selinux.c
+++ b/selinux.c
@@ -1,6 +1,7 @@
-/* $MirOS: contrib/code/jupp/selinux.c,v 1.7 2014/06/26 18:15:17 tg Exp $ */
-
 #include "config.h"
+
+__RCSID("$MirOS: contrib/code/jupp/selinux.c,v 1.8 2017/12/02 02:07:31 tg Exp $");
+
 #if defined(HAVE_SELINUX_HDR) && defined(HAVE_SELINUX_FUN)
 #define WITH_SELINUX
 #else
index 8faae8e..0b91e1b 100644 (file)
--- a/syntax.c
+++ b/syntax.c
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/syntax.c,v 1.17 2017/07/08 16:15:12 tg Exp $ */
 /*
  *     Syntax highlighting DFA interpreter
  *     Copyright
@@ -8,10 +7,14 @@
  */
 
 #include "config.h"
+#include "types.h"
+
+__RCSID("$MirOS: contrib/code/jupp/syntax.c,v 1.20 2017/12/02 04:36:56 tg Exp $");
+
+#include <limits.h>
 #include <stdlib.h>
 #include <string.h>
 #include "b.h"
-#include "types.h"
 #include "scrn.h"
 #include "utils.h"
 #include "hash.h"
@@ -246,6 +249,7 @@ struct high_syntax *load_dfa(const unsigned char *name)
        struct high_state *state=0;     /* Current state */
        struct high_syntax *syntax;     /* New syntax table */
        int line = 0;
+       void *np;
 
        if (!name)
                return NULL;
@@ -336,8 +340,12 @@ struct high_syntax *load_dfa(const unsigned char *name)
                                }
                        }
                } else if(!parse_char(&p, '-')) { /* No. sync lines */
-                       if(parse_int(&p, &syntax->sync_lines))
+                       syntax->sync_lines = (int)ustolb(p, &np,
+                           INT_MIN, INT_MAX, USTOL_TRIM);
+                       if (!np)
                                syntax->sync_lines = -1;
+                       else
+                               p = np;
                } else {
                        c = parse_ws(&p,'#');
 
@@ -384,8 +392,12 @@ struct high_syntax *load_dfa(const unsigned char *name)
                                                                parse_ws(&p,'#');
                                                                if(!parse_char(&p,'=')) {
                                                                        parse_ws(&p,'#');
-                                                                       if(parse_int(&p,&cmd->recolor))
+                                                                       cmd->recolor = (int)ustolb(p, &np,
+                                                                           INT_MIN, INT_MAX, USTOL_TRIM);
+                                                                       if (!np)
                                                                                fprintf(stderr,"%s:%d: Missing value for option %s\n", name, line, bf);
+                                                                       else
+                                                                               p = np;
                                                                } else
                                                                        fprintf(stderr,"%s:%d: Missing value for option %s\n", name, line, bf);
                                                        } else if(!strcmp(bf,"strings") || !strcmp(bf,"istrings")) {
@@ -418,8 +430,12 @@ struct high_syntax *load_dfa(const unsigned char *name)
                                                                                                                parse_ws(&p,'#');
                                                                                                                if(!parse_char(&p,'=')) {
                                                                                                                        parse_ws(&p,'#');
-                                                                                                                       if(parse_int(&p,&kw_cmd->recolor))
+                                                                                                                       kw_cmd->recolor = (int)ustolb(p, &np,
+                                                                                                                           INT_MIN, INT_MAX, USTOL_TRIM);
+                                                                                                                       if (!np)
                                                                                                                                fprintf(stderr,"%s:%d: Missing value for option %s\n", name, line, bf);
+                                                                                                                       else
+                                                                                                                               p = np;
                                                                                                                } else
                                                                                                                        fprintf(stderr,"%s:%d: Missing value for option %s\n", name, line, bf);
                                                                                                        } else
index 0585d72..6c97551 100644 (file)
--- a/syntax.h
+++ b/syntax.h
@@ -1,8 +1,10 @@
-/* $MirOS: contrib/code/jupp/syntax.h,v 1.3 2016/10/07 19:43:55 tg Exp $ */
-
 #ifndef _Isyntax
 #define _Isyntax 1
 
+#ifdef EXTERN
+__RCSID("$MirOS: contrib/code/jupp/syntax.h,v 1.4 2017/12/02 02:07:32 tg Exp $");
+#endif
+
 #include "hash.h"
 
 /*
diff --git a/tab.c b/tab.c
index ef541f4..085bb3a 100644 (file)
--- a/tab.c
+++ b/tab.c
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/tab.c,v 1.6 2017/01/10 19:16:28 tg Exp $ */
 /*
  *     File selection menu
  *     Copyright
@@ -9,9 +8,8 @@
 #include "config.h"
 #include "types.h"
 
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
+__RCSID("$MirOS: contrib/code/jupp/tab.c,v 1.7 2017/12/02 02:07:32 tg Exp $");
+
 #ifdef HAVE_SYS_STAT_H
 #include <sys/stat.h>
 #endif
diff --git a/tab.h b/tab.h
index 65ba8ba..195e536 100644 (file)
--- a/tab.h
+++ b/tab.h
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/tab.h,v 1.2 2008/05/13 13:08:26 tg Exp $ */
 /*
  *     File selection menu
  *     Copyright
@@ -9,8 +8,9 @@
 #ifndef _JOE_TAB_H
 #define _JOE_TAB_H 1
 
-#include "config.h"
-#include "types.h"
+#ifdef EXTERN_UFILE_C
+__RCSID("$MirOS: contrib/code/jupp/tab.h,v 1.3 2017/12/02 02:07:32 tg Exp $");
+#endif
 
 int cmplt PARAMS((BW *bw));
 
index 7661ed0..e3281ab 100644 (file)
--- a/termcap.c
+++ b/termcap.c
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/termcap.c,v 1.14 2017/08/08 16:12:04 tg Exp $ */
 /*
  *     TERMCAP/TERMINFO database interface
  *     Copyright
@@ -9,20 +8,14 @@
 #include "config.h"
 #include "types.h"
 
-#include <stdio.h>
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
+__RCSID("$MirOS: contrib/code/jupp/termcap.c,v 1.16 2017/12/02 04:46:10 tg Exp $");
+
 #ifdef HAVE_SYS_STAT_H
 #include <sys/stat.h>
 #endif
 #ifdef HAVE_STDLIB_H
 #include <stdlib.h>
 #endif
-#ifdef TERMINFO
-#ifdef HAVE_TERM_H
-#endif
-#endif
 
 #include "blocks.h"
 #include "path.h"
index c61f1c5..d53411b 100644 (file)
--- a/termcap.h
+++ b/termcap.h
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/termcap.h,v 1.4 2010/04/08 15:31:04 tg Exp $ */
 /*
  *     TERMCAP/TERMINFO header file
  *     Copyright
@@ -9,8 +8,9 @@
 #ifndef _JOE_TERMCAP_H
 #define _JOE_TERMCAP_H 1
  
-#include "config.h"
-#include "types.h"
+#ifdef EXTERN
+__RCSID("$MirOS: contrib/code/jupp/termcap.h,v 1.5 2017/12/02 02:07:33 tg Exp $");
+#endif
 
 /* CAP *getcap(char *s,int baud,void (*out)(void *outptr,char c),void *outptr);
  *
index b6c6869..763cc05 100644 (file)
--- a/termidx.c
+++ b/termidx.c
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/termidx.c,v 1.5 2014/03/04 23:04:12 tg Exp $ */
 /*
  *     Program to generate termcap index file
  *     Copyright
@@ -6,10 +5,12 @@
  *
  * This file is part of JOE (Joe's Own Editor)
  */
+#define EXTERN
 #include "config.h"
 #include "types.h"
 
-#include <stdio.h>
+__RCSID("$MirOS: contrib/code/jupp/termidx.c,v 1.6 2017/12/02 02:07:33 tg Exp $");
+
 #include <string.h>
 
 static void gen(unsigned char *s, FILE *fd)
diff --git a/tty.c b/tty.c
index dc223ec..6bf5bc4 100644 (file)
--- a/tty.c
+++ b/tty.c
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/tty.c,v 1.28 2017/11/18 17:08:44 tg Exp $ */
 /*
  *     UNIX Tty and Process interface
  *     Copyright
@@ -9,14 +8,14 @@
 #include "config.h"
 #include "types.h"
 
-#include <sys/types.h>
+__RCSID("$MirOS: contrib/code/jupp/tty.c,v 1.30 2017/12/02 02:07:33 tg Exp $");
+
 #ifdef HAVE_SYS_STAT_H
 #include <sys/stat.h>
 #endif
 #ifdef HAVE_SYS_IOCTL_H
 #include <sys/ioctl.h>
 #endif
-#include <stdio.h>
 #ifdef HAVE_FCNTL_H
 #include <fcntl.h>
 #endif
diff --git a/tty.h b/tty.h
index 44376c3..6a6538a 100644 (file)
--- a/tty.h
+++ b/tty.h
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/tty.h,v 1.8 2017/11/18 16:43:08 tg Exp $ */
 /*
  *     TTY interface header file
  *     Copyright
@@ -9,8 +8,9 @@
 #ifndef _JOE_TTY_H
 #define _JOE_TTY_H 1
 
-#include "config.h"
-#include "types.h"
+#ifdef EXTERN_CMD_C
+__RCSID("$MirOS: contrib/code/jupp/tty.h,v 1.9 2017/12/02 02:07:33 tg Exp $");
+#endif
 
 /* void ttopen(void);  Open the tty (attached to stdin) for use inside of JOE
  *
diff --git a/tw.c b/tw.c
index 42f0d9b..b12cf3d 100644 (file)
--- a/tw.c
+++ b/tw.c
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/tw.c,v 1.12 2017/03/19 18:53:02 tg Exp $ */
 /* 
  *     Text editing windows
  *     Copyright
@@ -9,7 +8,8 @@
 #include "config.h"
 #include "types.h"
 
-#include <stdio.h>
+__RCSID("$MirOS: contrib/code/jupp/tw.c,v 1.13 2017/12/02 02:07:33 tg Exp $");
+
 #include <stdlib.h>
 #include <string.h>
 #ifdef HAVE_TIME_H
diff --git a/tw.h b/tw.h
index f020c45..866d037 100644 (file)
--- a/tw.h
+++ b/tw.h
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/tw.h,v 1.3 2009/10/18 14:52:57 tg Exp $ */
 /*
  *     Text editing windows
  *     Copyright
@@ -9,8 +8,9 @@
 #ifndef _JOE_TW_H
 #define _JOE_TW_H 1
 
-#include "config.h"
-#include "types.h"
+#ifdef EXTERN
+__RCSID("$MirOS: contrib/code/jupp/tw.h,v 1.4 2017/12/02 02:07:33 tg Exp $");
+#endif
 
 BW *wmktw PARAMS((SCREEN *t, B *b));
 
diff --git a/types.h b/types.h
index 7bfc98e..abcb18d 100644 (file)
--- a/types.h
+++ b/types.h
@@ -1,27 +1,13 @@
-/* $MirOS: contrib/code/jupp/types.h,v 1.15 2017/01/11 22:56:49 tg Exp $ */
-
 #ifndef _JOE_TYPES_H
 #define _JOE_TYPES_H
 
-#include "config.h"
+#ifdef EXTERN
+__RCSID("$MirOS: contrib/code/jupp/types.h,v 1.16 2017/12/02 02:07:33 tg Exp $");
+#endif
 
 /* Prefix to make string constants unsigned */
 #define US (unsigned char *)
 
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>                         /* we need pid_t */
-#endif
-
-/* from mksh */
-#if defined(DEBUG) || defined(__COVERITY__)
-#define mkssert(e)     do { if (!(e)) exit(255); } while (/* CONSTCOND */ 0)
-#else
-#define mkssert(e)     do { } while (/* CONSTCOND */ 0)
-#endif
-
-/* from mksh */
-#define NELEM(a)       (sizeof(a) / sizeof((a)[0]))
-
 #define LINK(type) struct { type *next; type *prev; }
 
 #define KEYS           256
index d65e9b6..54e10bf 100644 (file)
--- a/ublock.c
+++ b/ublock.c
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/ublock.c,v 1.14 2017/11/18 16:30:21 tg Exp $ */
 /*
  *     Highlighted block functions
  *     Copyright
@@ -9,16 +8,16 @@
 #include "config.h"
 #include "types.h"
 
+__RCSID("$MirOS: contrib/code/jupp/ublock.c,v 1.18 2017/12/02 04:32:41 tg Exp $");
+
 #include <unistd.h>
 #ifdef HAVE_STDLIB_H
 #include <stdlib.h>
 #endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
 #ifdef HAVE_SYS_WAIT_H
 #include <sys/wait.h>
 #endif
+#include <limits.h>
 
 #include "b.h"
 #include "pw.h"
@@ -32,7 +31,6 @@
 #include "path.h"
 #include "poshist.h"
 #include "ushell.h"
-#include "utf8.h"
 #include "charmap.h"
 #include "w.h"
 
@@ -1043,7 +1041,7 @@ static int dofilt(BW *bw, unsigned char *s, void *object, int *notify)
                                       markk->line - markb->line + 1,
                                       markk->xcol);
 
-               tmp = bread(fr[0], MAXLONG);
+               tmp = bread(fr[0], LONG_MAX);
                if (piscol(tmp->eof))
                        height = tmp->eof->line + 1;
                else
@@ -1070,7 +1068,7 @@ static int dofilt(BW *bw, unsigned char *s, void *object, int *notify)
                if (!flg)
                        prgetc(p);
                bdel(markb, p);
-               binsb(p, bread(fr[0], MAXLONG));
+               binsb(p, bread(fr[0], LONG_MAX));
                if (!flg) {
                        pset(p,markk);
                        prgetc(p);
index 296b440..8972772 100644 (file)
--- a/ublock.h
+++ b/ublock.h
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/ublock.h,v 1.2 2008/05/13 13:08:27 tg Exp $ */
 /*
  *     Highlighted block functions
  *     Copyright
@@ -9,8 +8,9 @@
 #ifndef _JOE_UBLOCK_H
 #define _JOE_UBLOCK_H 1
 
-#include "config.h"
-#include "types.h"
+#ifdef EXTERN_CMD_C
+__RCSID("$MirOS: contrib/code/jupp/ublock.h,v 1.3 2017/12/02 02:07:34 tg Exp $");
+#endif
 
 extern int square;
 extern int lightoff;
diff --git a/uedit.c b/uedit.c
index e550185..9d8320f 100644 (file)
--- a/uedit.c
+++ b/uedit.c
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/uedit.c,v 1.17 2017/03/19 19:19:51 tg Exp $ */
 /*
  *     Basic user edit functions
  *     Copyright
@@ -9,7 +8,8 @@
 #include "config.h"
 #include "types.h"
 
-#include <stdio.h>
+__RCSID("$MirOS: contrib/code/jupp/uedit.c,v 1.20 2017/12/02 04:32:42 tg Exp $");
+
 #include <string.h>
 
 #ifdef HAVE_BSD_STRING_H
@@ -28,7 +28,6 @@
 #include "umath.h"
 #include "utils.h"
 #include "vs.h"
-#include "utf8.h"
 #include "charmap.h"
 #include "w.h"
 
@@ -666,7 +665,7 @@ static B *linehist = NULL;  /* History of previously entered line numbers */
 
 static int doline(BW *bw, unsigned char *s, void *object, int *notify)
 {
-       long num = calc(bw, s);
+       long num = calcl(bw, s);
 
        if (notify)
                *notify = 1;
@@ -704,7 +703,7 @@ static B *colhist = NULL;   /* History of previously entered column numbers */
 
 static int docol(BW *bw, unsigned char *s, void *object, int *notify)
 {
-       long num = calc(bw, s);
+       long num = calcl(bw, s);
 
        if (notify)
                *notify = 1;
@@ -740,7 +739,7 @@ static B *bytehist = NULL;  /* History of previously entered byte numbers */
 
 static int dobyte(BW *bw, unsigned char *s, void *object, int *notify)
 {
-       long num = calc(bw, s);
+       long num = calcl(bw, s);
 
        if (notify)
                *notify = 1;
diff --git a/uedit.h b/uedit.h
index a6cc705..fe3b3b5 100644 (file)
--- a/uedit.h
+++ b/uedit.h
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/uedit.h,v 1.5 2016/10/07 20:07:50 tg Exp $ */
 /*
  *     Basic user edit functions
  *     Copyright
@@ -9,8 +8,9 @@
 #ifndef _JOE_UEDIT_H
 #define _JOE_UEDIT_H 1
 
-#include "config.h"
-#include "types.h"
+#ifdef EXTERN_CMD_C
+__RCSID("$MirOS: contrib/code/jupp/uedit.h,v 1.6 2017/12/02 02:07:34 tg Exp $");
+#endif
 
 extern int pgamnt;
 
index 0d9e5c9..ddf4be8 100644 (file)
--- a/uerror.c
+++ b/uerror.c
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/uerror.c,v 1.4 2017/08/09 00:46:02 tg Exp $ */
 /*
  *     Compiler error handler
  *     Copyright
@@ -9,7 +8,7 @@
 #include "config.h"
 #include "types.h"
 
-#include <stdio.h>
+__RCSID("$MirOS: contrib/code/jupp/uerror.c,v 1.5 2017/12/02 02:07:34 tg Exp $");
 
 #include "b.h"
 #include "bw.h"
index 48d3724..c6d1f43 100644 (file)
--- a/uerror.h
+++ b/uerror.h
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/uerror.h,v 1.2 2008/05/13 13:08:27 tg Exp $ */
 /*
  *     Compiler error handler
  *     Copyright
@@ -9,8 +8,9 @@
 #ifndef _JOE_UERROR_H
 #define _JOE_UERROR_H 1
 
-#include "config.h"
-#include "types.h"
+#ifdef EXTERN_B_C
+__RCSID("$MirOS: contrib/code/jupp/uerror.h,v 1.3 2017/12/02 02:07:34 tg Exp $");
+#endif
 
 int unxterr PARAMS((BW *bw));
 int uprverr PARAMS((BW *bw));
diff --git a/ufile.c b/ufile.c
index a2dd940..d306a74 100644 (file)
--- a/ufile.c
+++ b/ufile.c
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/ufile.c,v 1.12 2017/08/08 21:39:28 tg Exp $ */
 /*
  *     User file operations
  *     Copyright
@@ -6,14 +5,13 @@
  *
  *     This file is part of JOE (Joe's Own Editor)
  */
+#define EXTERN_UFILE_C
 #include "config.h"
 #include "types.h"
 
-#include <stdio.h>
+__RCSID("$MirOS: contrib/code/jupp/ufile.c,v 1.14 2017/12/02 04:32:42 tg Exp $");
+
 #include <unistd.h>
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
 #ifdef HAVE_SYS_STAT_H
 #include <sys/stat.h>
 #endif
@@ -57,7 +55,6 @@ int copy_security_context(const char *from_file, const char *to_file);
 #include "utils.h"
 #include "va.h"
 #include "vs.h"
-#include "utf8.h"
 #include "charmap.h"
 #include "w.h"
 
diff --git a/ufile.h b/ufile.h
index 0aa5c8d..8697025 100644 (file)
--- a/ufile.h
+++ b/ufile.h
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/ufile.h,v 1.4 2017/08/09 00:46:02 tg Exp $ */
 /*
  *     User file operations
  *     Copyright
@@ -9,8 +8,9 @@
 #ifndef _JOE_UFILE_H
 #define _JOE_UFILE_H 1
 
-#include "config.h"
-#include "types.h"
+#ifdef EXTERN_CMD_C
+__RCSID("$MirOS: contrib/code/jupp/ufile.h,v 1.5 2017/12/02 02:07:35 tg Exp $");
+#endif
 
 extern int exask;
 
index 2e9d029..f0c96e9 100644 (file)
--- a/uformat.c
+++ b/uformat.c
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/uformat.c,v 1.3 2010/04/08 15:31:05 tg Exp $ */
 /*
  *     User text formatting functions
  *     Copyright
@@ -9,6 +8,8 @@
 #include "config.h"
 #include "types.h"
 
+__RCSID("$MirOS: contrib/code/jupp/uformat.c,v 1.4 2017/12/02 02:07:35 tg Exp $");
+
 #ifdef HAVE_STDLIB_H
 #include <stdlib.h>
 #endif
index a76b961..be69505 100644 (file)
--- a/uformat.h
+++ b/uformat.h
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/uformat.h,v 1.2 2008/05/13 13:08:28 tg Exp $ */
 /*
  *     User text formatting functions
  *     Copyright
@@ -9,8 +8,9 @@
 #ifndef _JOE_UFORMAT_H
 #define _JOE_UFORMAT_H 1
 
-#include "config.h"
-#include "types.h"
+#ifdef EXTERN_CMD_C
+__RCSID("$MirOS: contrib/code/jupp/uformat.h,v 1.3 2017/12/02 02:07:35 tg Exp $");
+#endif
 
 int ucenter PARAMS((BW *bw));
 P *pbop PARAMS((P *p));
index f2b713a..1fa0703 100644 (file)
--- a/uisrch.c
+++ b/uisrch.c
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/uisrch.c,v 1.7 2017/01/10 19:16:28 tg Exp $ */
 /*
  *     Incremental search
  *     Copyright
@@ -9,6 +8,8 @@
 #include "config.h"
 #include "types.h"
 
+__RCSID("$MirOS: contrib/code/jupp/uisrch.c,v 1.9 2017/12/02 04:32:42 tg Exp $");
+
 #include <stdlib.h>
 
 #include "b.h"
@@ -20,7 +21,6 @@
 #include "usearch.h"
 #include "utils.h"
 #include "charmap.h"
-#include "utf8.h"
 #include "vs.h"
 
 extern int smode;
index d045c61..06cc289 100644 (file)
--- a/uisrch.h
+++ b/uisrch.h
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/uisrch.h,v 1.2 2008/05/13 13:08:28 tg Exp $ */
 /*
  *     Incremental search
  *     Copyright
@@ -9,8 +8,9 @@
 #ifndef _JOE_UISRCH_H
 #define _JOE_UISRCH_H 1
 
-#include "config.h"
-#include "types.h"
+#ifdef EXTERN_CMD_C
+__RCSID("$MirOS: contrib/code/jupp/uisrch.h,v 1.3 2017/12/02 02:07:35 tg Exp $");
+#endif
 
 int uisrch PARAMS((BW *bw));
 int ursrch PARAMS((BW *bw));
diff --git a/umath.c b/umath.c
index 284e493..d4cabb3 100644 (file)
--- a/umath.c
+++ b/umath.c
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/umath.c,v 1.7 2017/03/19 19:19:51 tg Exp $ */
 /*
  *     Math
  *     Copyright
@@ -9,7 +8,8 @@
 #include "config.h"
 #include "types.h"
 
-#include <stdio.h>
+__RCSID("$MirOS: contrib/code/jupp/umath.c,v 1.11 2017/12/02 04:32:42 tg Exp $");
+
 #ifdef HAVE_STDLIB_H
 #include <stdlib.h>
 #endif
 #include "pw.h"
 #include "utils.h"
 #include "vs.h"
-#include "utf8.h"
 #include "charmap.h"
 #include "w.h"
 
 volatile sig_atomic_t merrf;
 const unsigned char *merrt;
 
+#if WANT_MATH
 static char math_res[JOE_MSGBUFSIZE];
 static char *math_exp;
 
@@ -95,9 +95,7 @@ static double expr(int prec, struct var **rtv)
                while ((*ptr >= '0' && *ptr <= '9') || ((*ptr | 0x20) >= 'a' && (*ptr | 0x20) <= 'f'))
                        ++ptr;
        } else if ((*ptr >= '0' && *ptr <= '9') || *ptr == '.') {
-               sscanf((char *)ptr, "%lf", &x);
-               while ((*ptr >= '0' && *ptr <= '9') || *ptr == '.' || *ptr == 'e' || *ptr == 'E')
-                       ++ptr;
+               x = strtod(ptr, &ptr);
        } else if (*ptr == '(') {
                ++ptr;
                x = expr(0, &v);
@@ -279,3 +277,26 @@ int umathres(BW *bw)
        binss(bw->cursor, (void *)math_res);
        return 0;
 }
+#else
+long
+calcl(BW *bw, unsigned char *s)
+{
+       long rv;
+       void *cp = NULL;
+
+       rv = ustol(s, &cp, USTOL_TRIM | USTOL_EOS);
+       if (!cp) {
+               rv = 0;
+               merrt = US "Invalid or out-of-range number";
+               merrf = 1;
+       }
+       return (rv);
+}
+
+int
+unomath(BW *bw)
+{
+       msgnw(bw->parent, US "Sorry, compiled without Math");
+       return (-1);
+}
+#endif
diff --git a/umath.h b/umath.h
index 49ee8f6..64c1fc1 100644 (file)
--- a/umath.h
+++ b/umath.h
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/umath.h,v 1.5 2017/03/19 19:19:51 tg Exp $ */
 /*
  *     Math
  *     Copyright
@@ -9,8 +8,9 @@
 #ifndef _JOE_UMATH_H
 #define _JOE_UMATH_H 1
 
-#include "config.h"
-#include "types.h"
+#ifdef EXTERN_CMD_C
+__RCSID("$MirOS: contrib/code/jupp/umath.h,v 1.8 2017/12/02 04:15:29 tg Exp $");
+#endif
 
 #ifdef HAVE_SIGNAL_H
 #include <signal.h>
 extern volatile sig_atomic_t merrf;       
 extern const unsigned char *merrt;
 
+#if WANT_MATH
 double calc(BW *bw, unsigned char *s);
 int umath(BW *bw);
 int umathins(BW *bw);
 int umathres(BW *bw);
 
+#define calcl(bw,s)    ((long)calc((bw), (s)))
+#define calcldec(bw,s) ((long)(calc((bw), (s)) - 1.0))
+
+#else
+
+long calcl(BW *bw, unsigned char *s);
+int unomath(BW *bw);
+
+#define umath          unomath
+#define umathins       unomath
+#define umathres       unomath
+#define calcldec(bw,s) (calcl((bw), (s)) - 1L)
+
+#endif /* !WANT_MATH */
+
 #endif
diff --git a/undo.c b/undo.c
index 1194132..901187a 100644 (file)
--- a/undo.c
+++ b/undo.c
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/undo.c,v 1.3 2010/04/08 15:31:05 tg Exp $ */
 /*
  *     UNDO system
  *     Copyright
@@ -9,6 +8,8 @@
 #include "config.h"
 #include "types.h"
 
+__RCSID("$MirOS: contrib/code/jupp/undo.c,v 1.4 2017/12/02 02:07:36 tg Exp $");
+
 #ifdef HAVE_STDLIB_H
 #include <stdlib.h>
 #endif
diff --git a/undo.h b/undo.h
index 135a318..8fcadf5 100644 (file)
--- a/undo.h
+++ b/undo.h
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/undo.h,v 1.2 2008/05/13 13:08:29 tg Exp $ */
 /*
  *     UNDO system
  *     Copyright
@@ -9,8 +8,9 @@
 #ifndef _JOE_UNDO_H
 #define _JOE_UNDO_H 1
 
-#include "config.h"
-#include "types.h"
+#ifdef EXTERN_B_C
+__RCSID("$MirOS: contrib/code/jupp/undo.h,v 1.3 2017/12/02 02:07:36 tg Exp $");
+#endif
 
 extern int inundo;
 extern int justkilled;
index 29e216d..8c20d81 100644 (file)
--- a/usearch.c
+++ b/usearch.c
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/usearch.c,v 1.10 2017/01/11 22:56:50 tg Exp $ */
 /*
  *     Search & Replace system
  *     Copyright
@@ -9,7 +8,8 @@
 #include "config.h"
 #include "types.h"
 
-#include <stdio.h>
+__RCSID("$MirOS: contrib/code/jupp/usearch.c,v 1.11 2017/12/02 02:07:36 tg Exp $");
+
 #include <stdlib.h>
 
 #include "b.h"
index 1f56782..f1b8a40 100644 (file)
--- a/usearch.h
+++ b/usearch.h
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/usearch.h,v 1.2 2008/05/13 13:08:29 tg Exp $ */
 /*
  *     Search & Replace system
  *     Copyright
@@ -9,8 +8,9 @@
 #ifndef _JOE_USEARCH_H
 #define _JOE_USEARCH_H 1
 
-#include "config.h"
-#include "types.h"
+#ifdef EXTERN_CMD_C
+__RCSID("$MirOS: contrib/code/jupp/usearch.h,v 1.3 2017/12/02 02:07:36 tg Exp $");
+#endif
 
 SRCH *mksrch PARAMS((unsigned char *pattern, unsigned char *replacement, int ignore, int backwards, int repeat, int replace, int rest));
 void rmsrch PARAMS((SRCH *srch));
index d938d56..79ba2c1 100644 (file)
--- a/ushell.c
+++ b/ushell.c
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/ushell.c,v 1.6 2017/11/18 17:05:51 tg Exp $ */
 /*
  *     Shell-window functions
  *     Copyright
@@ -9,10 +8,9 @@
 #include "config.h"
 #include "types.h"
 
+__RCSID("$MirOS: contrib/code/jupp/ushell.c,v 1.8 2017/12/02 02:07:36 tg Exp $");
+
 #include <unistd.h>
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
 #ifdef HAVE_SYS_STAT_H
 #include <sys/stat.h>
 #endif
index a36929d..255fb04 100644 (file)
--- a/ushell.h
+++ b/ushell.h
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/ushell.h,v 1.3 2012/12/30 18:18:07 tg Exp $ */
 /*
  *     Shell-window functions
  *     Copyright (C) 1992 Joseph H. Allen
@@ -8,8 +7,9 @@
 #ifndef _JOE_USHELL_H
 #define _JOE_USHELL_H 1
 
-#include "config.h"
-#include "types.h"
+#ifdef EXTERN_CMD_C
+__RCSID("$MirOS: contrib/code/jupp/ushell.h,v 1.4 2017/12/02 02:07:36 tg Exp $");
+#endif
 
 int ubknd PARAMS((BW *bw));
 int ukillpid PARAMS((BW *bw));
diff --git a/utag.c b/utag.c
index 61d6053..f6bceb7 100644 (file)
--- a/utag.c
+++ b/utag.c
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/utag.c,v 1.3 2017/08/09 00:46:02 tg Exp $ */
 /*
  *     tags file symbol lookup
  *     Copyright
@@ -9,7 +8,7 @@
 #include "config.h"
 #include "types.h"
 
-#include <stdio.h>
+__RCSID("$MirOS: contrib/code/jupp/utag.c,v 1.5 2017/12/02 04:32:43 tg Exp $");
 
 #include "b.h"
 #include "bw.h"
@@ -20,7 +19,6 @@
 #include "usearch.h"
 #include "utils.h"
 #include "vs.h"
-#include "utf8.h"
 #include "charmap.h"
 #include "w.h"
 
diff --git a/utag.h b/utag.h
index e687852..3566f31 100644 (file)
--- a/utag.h
+++ b/utag.h
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/utag.h,v 1.2 2008/05/13 13:08:30 tg Exp $ */
 /* 
  *     tags file symbol lookup
  *     Copyright
@@ -9,8 +8,9 @@
 #ifndef _JOE_UTAG_H
 #define _JOE_UTAG_H 1
 
-#include "config.h"
-#include "types.h"
+#ifdef EXTERN_CMD_C
+__RCSID("$MirOS: contrib/code/jupp/utag.h,v 1.3 2017/12/02 02:07:37 tg Exp $");
+#endif
 
 int utag PARAMS((BW *bw));
 
diff --git a/utf8.c b/utf8.c
index c180947..eaf2362 100644 (file)
--- a/utf8.c
+++ b/utf8.c
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/utf8.c,v 1.19 2017/01/11 21:48:58 tg Exp $ */
 /*
  *     UTF-8 Utilities
  *     Copyright
@@ -11,7 +10,8 @@
 #include "config.h"
 #include "types.h"
 
-#include <stdio.h>
+__RCSID("$MirOS: contrib/code/jupp/utf8.c,v 1.21 2017/12/02 04:32:43 tg Exp $");
+
 #include <string.h>
 
 #ifdef HAVE_STDLIB_H
@@ -62,7 +62,6 @@
 #endif
 
 #include "rc.h"
-#include "utf8.h"
 #include "charmap.h"
 
 /* UTF-8 Encoder
diff --git a/utf8.h b/utf8.h
index 68e8f26..70ed55e 100644 (file)
--- a/utf8.h
+++ b/utf8.h
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/utf8.h,v 1.4 2013/11/07 21:50:36 tg Exp $ */
 /*
  *     UTF-8 Utilities
  *     Copyright
@@ -9,8 +8,9 @@
 #ifndef _Iutf8
 #define _Iutf8 1
 
-#include "config.h"
-#include "types.h"
+#ifdef EXTERN
+__RCSID("$MirOS: contrib/code/jupp/utf8.h,v 1.5 2017/12/02 02:07:37 tg Exp $");
+#endif
 
 #include "i18n.h"
 
diff --git a/utils.c b/utils.c
index 57f76f1..7f09585 100644 (file)
--- a/utils.c
+++ b/utils.c
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/utils.c,v 1.4 2017/01/10 19:05:17 tg Exp $ */
 /*
  *     Various utilities
  *     Copyright
@@ -9,6 +8,8 @@
  */
 #include "config.h"
 
+__RCSID("$MirOS: contrib/code/jupp/utils.c,v 1.7 2017/12/02 04:32:43 tg Exp $");
+
 #include <errno.h>
 #ifdef HAVE_UNISTD_H
 #include <unistd.h>
@@ -17,8 +18,6 @@
 #include <stdlib.h>
 #endif
 
-#include "i18n.h"
-#include "utf8.h"
 #include "charmap.h"
 #include "blocks.h"
 #include "utils.h"
@@ -187,23 +186,6 @@ int parse_char(unsigned char **pp, unsigned char c)
                return -1;
 }
 
-/* Parse an integer.  Returns 0 for success. */
-
-int parse_int(unsigned char **pp, int *buf)
-{
-       unsigned char *p = *pp;
-       if ((*p>='0' && *p<='9') || *p=='-') {
-               *buf = atoi((char *)p);
-               if(*p=='-')
-                       ++p;
-               while(*p>='0' && *p<='9')
-                       ++p;
-               *pp = p;
-               return 0;
-       } else
-               return -1;
-}
-
 /* Parse a string into a buffer.  Returns 0 for success.
    Leaves escape sequences in string. */
 
diff --git a/utils.h b/utils.h
index 6307291..69e6966 100644 (file)
--- a/utils.h
+++ b/utils.h
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/utils.h,v 1.4 2017/01/10 19:05:17 tg Exp $ */
 /*
  *     Various utilities
  *
 #ifndef _JOE_UTILS_H
 #define _JOE_UTILS_H 1
 
-#include "config.h"
-
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>                 /* we need size_t, ssize_t */
+#ifdef EXTERN_B_C
+__RCSID("$MirOS: contrib/code/jupp/utils.h,v 1.7 2017/12/02 03:52:35 tg Exp $");
 #endif
+
 #ifdef HAVE_SIGNAL_H
 #include <signal.h>
 #endif
@@ -57,10 +55,28 @@ int parse_kw PARAMS((unsigned char **p,unsigned char *kw));
 int parse_tows PARAMS((unsigned char **p,unsigned char *buf));
 int parse_field PARAMS((unsigned char **p,unsigned char *field));
 int parse_char PARAMS((unsigned char  **p,unsigned char c));
-int parse_int PARAMS((unsigned char **p,int *buf));
 int parse_string PARAMS((unsigned char **p,unsigned char *buf,int len));
 int parse_range PARAMS((unsigned char **p,int *first,int *second));
 
 void tty_xonoffbaudrst(void);
 
+/* from compat.c */
+
+#define USTOL_AUTO     0x00
+#define USTOL_DEC      0x01
+#define USTOL_HEX      0x02
+#define USTOL_OCT      0x03
+#define USTOL_LTRIM    0x04
+#define USTOL_RTRIM    0x08
+#define USTOL_TRIM     0x0C
+#define USTOL_EOS      0x10
+
+long ustol(void *, void **, int);
+long ustolb(void *, void **, long, long, int);
+
+#define USTOC_MAX      4 /* arbitrary, but at least 4 */
+
+size_t ustoc_hex(const void *, int *, size_t);
+size_t ustoc_oct(const void *, int *, size_t);
+
 #endif
diff --git a/va.c b/va.c
index 5ff003c..63abb53 100644 (file)
--- a/va.c
+++ b/va.c
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/va.c,v 1.3 2012/06/08 16:55:29 tg Exp $ */
 /*
  *     Variable length array of strings
  *     Copyright
@@ -8,6 +7,8 @@
  */
 #include "config.h"
 
+__RCSID("$MirOS: contrib/code/jupp/va.c,v 1.4 2017/12/02 02:07:37 tg Exp $");
+
 #ifdef HAVE_STDLIB_H
 #include <stdlib.h>
 #endif
diff --git a/va.h b/va.h
index 3027b62..e161c2e 100644 (file)
--- a/va.h
+++ b/va.h
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/va.h,v 1.3 2012/06/08 16:55:29 tg Exp $ */
 /*
  *     Variable length arrays of strings
  *     Copyright
@@ -9,7 +8,9 @@
 #ifndef _JOE_VA_H
 #define _JOE_VA_H 1
 
-#include "config.h"
+#ifdef EXTERN_B_C
+__RCSID("$MirOS: contrib/code/jupp/va.h,v 1.4 2017/12/02 02:07:37 tg Exp $");
+#endif
 
 #include "vs.h"
 
diff --git a/vfile.c b/vfile.c
index e53320c..27e01c5 100644 (file)
--- a/vfile.c
+++ b/vfile.c
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/vfile.c,v 1.8 2013/08/19 22:03:20 tg Exp $ */
 /*
  *     Software virtual memory system
  *     Copyright
@@ -9,13 +8,13 @@
 #include "config.h"
 #include "types.h"
 
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
+__RCSID("$MirOS: contrib/code/jupp/vfile.c,v 1.10 2017/12/02 02:07:38 tg Exp $");
+
 #ifdef HAVE_SYS_STAT_H
 #include <sys/stat.h>
 #endif
 #include <fcntl.h>
+#include <limits.h>
 #ifdef HAVE_STDLIB_H
 #include <stdlib.h>
 #endif
@@ -51,7 +50,7 @@ void vflsh(void)
        for (vfile = vfiles.link.next; vfile != &vfiles; vfile = vfile->link.next) {
                last = -1;
              loop:
-               addr = MAXLONG;
+               addr = LONG_MAX;
                vlowest = NULL;
                for (x = 0; x != HTSIZE; x++)
                        for (vp = htab[x]; vp; vp = vp->next)
@@ -89,7 +88,7 @@ void vflshf(VFILE *vfile)
        int x;
 
       loop:
-       addr = MAXLONG;
+       addr = LONG_MAX;
        vlowest = NULL;
        for (x = 0; x != HTSIZE; x++)
                for (vp = htab[x]; vp; vp = vp->next)
diff --git a/vfile.h b/vfile.h
index 5e3efab..a63520e 100644 (file)
--- a/vfile.h
+++ b/vfile.h
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/vfile.h,v 1.3 2012/06/08 16:55:29 tg Exp $ */
 /*
  *     Software virtual memory system
  *     Copyright
@@ -9,8 +8,9 @@
 #ifndef _JOE_VFILE_H
 #define _JOE_VFILE_H 1
 
-#include "config.h"
-#include "types.h"
+#ifdef EXTERN
+__RCSID("$MirOS: contrib/code/jupp/vfile.h,v 1.4 2017/12/02 02:07:38 tg Exp $");
+#endif
 
 /* Additions:
  *
diff --git a/vs.c b/vs.c
index c80a04c..c468159 100644 (file)
--- a/vs.c
+++ b/vs.c
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/vs.c,v 1.9 2017/01/10 19:16:28 tg Exp $ */
 /*
  *     Variable length strings
  *     Copyright
@@ -9,6 +8,8 @@
 #include "config.h"
 #include "types.h"
 
+__RCSID("$MirOS: contrib/code/jupp/vs.c,v 1.10 2017/12/02 02:07:38 tg Exp $");
+
 #include <stdlib.h>
 
 #include "blocks.h"
@@ -91,7 +92,6 @@ sELEMENT *vsncpy(sELEMENT *vary, int pos, const sELEMENT *array, int len)
 
        if (!vary || pos + len > sSIZ(vary))
                vary = vsensure(vary, pos + len);
-       mkssert(vary != NULL);
        if (pos + len > olen) {
                vary[pos + len] = vary[olen];
                sLen(vary) = pos + len;
diff --git a/vs.h b/vs.h
index 59d681f..9da59cb 100644 (file)
--- a/vs.h
+++ b/vs.h
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/vs.h,v 1.6 2016/10/30 00:19:58 tg Exp $ */
 /*
  *     Dynamic string library
  *     Copyright
@@ -9,7 +8,9 @@
 #ifndef _JOE_VS_H
 #define _JOE_VS_H 1
 
-#include "config.h"
+#ifdef EXTERN
+__RCSID("$MirOS: contrib/code/jupp/vs.h,v 1.7 2017/12/02 02:07:38 tg Exp $");
+#endif
 
 #include <string.h>
 
diff --git a/w.c b/w.c
index ec52a48..90be99f 100644 (file)
--- a/w.c
+++ b/w.c
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/w.c,v 1.7 2017/01/11 22:56:50 tg Exp $ */
 /*
  *     Window system
  *     Copyright
@@ -9,6 +8,8 @@
 #include "config.h"
 #include "types.h"
 
+__RCSID("$MirOS: contrib/code/jupp/w.c,v 1.8 2017/12/02 02:07:38 tg Exp $");
+
 #ifdef HAVE_STDLIB_H
 #include <stdlib.h>
 #endif
diff --git a/w.h b/w.h
index 72ce395..951a8ff 100644 (file)
--- a/w.h
+++ b/w.h
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/w.h,v 1.4 2017/01/11 22:56:50 tg Exp $ */
 /*
  *     Window management
  *     Copyright
@@ -9,8 +8,9 @@
 #ifndef _JOE_W_H
 #define _JOE_W_H 1
 
-#include "config.h"
-#include "types.h"
+#ifdef EXTERN
+__RCSID("$MirOS: contrib/code/jupp/w.h,v 1.5 2017/12/02 02:07:38 tg Exp $");
+#endif
 
 /***************/
 /* Subroutines */
diff --git a/win32.c b/win32.c
index 4c69689..19dd30f 100644 (file)
--- a/win32.c
+++ b/win32.c
@@ -1,5 +1,3 @@
-/* $MirOS: contrib/code/jupp/win32.c,v 1.3 2017/01/11 21:48:58 tg Exp $ */
-
 /*-
  * Copyright (c) 2016, 2017
  *     mirabilos <m@mirbsd.org>
  * of said person's immediate fault when using the work as intended.
  */
 
+#include "config.h"
+
+__RCSID("$MirOS: contrib/code/jupp/win32.c,v 1.4 2017/12/02 02:07:39 tg Exp $");
+
 #ifdef __CYGWIN__
 
 #include <cygwin/version.h>