/* Copyright 1989-91 GROUPE BULL -- See licence conditions in file COPYRIGHT */
/*

/**************** HISTORY OF KLONE REVISIONS *********************************/

$Log: klone.shar,v $
Revision 1.359  2001/02/16 15:47:39  colas
bugfix in kxf

Revision 1.358  2001/02/01 12:28:46  colas
fixes to kxhtml
linux config defaults to glibc systems. Use linux-libc5 for older ones.

Revision 1.357  2000/12/03 23:08:14  colas
get/put with numeric index on Structures returned nil

Revision 1.356  2000/11/03 22:56:12  colas
##### v 2.1a #####
bugfix: print-format with format string ending by % could crash

Revision 1.355  2000/10/13 15:44:03  colas
bugfixes

Revision 1.354  2000/10/13 09:26:25  colas
xml-kxf.kl, a parser for the Koala XML Form

Revision 1.353  2000/10/10 17:08:48  colas
bugfix to xml-sxp.kl & kxhtml

Revision 1.352  2000/10/06 09:48:30  colas

Revision 1.351  2000/10/06 09:32:05  colas

Revision 1.350  2000/10/05 15:39:07  colas

Revision 1.349  2000/09/13 21:37:20  colas
##### v 2.1 #####
fix:
  klgeneric.c: (nconc s s) with s string could crash
  xml-sxp.kl:  entity expansion didnt copy result and was modified in place

Revision 1.348  2000/08/09 15:41:40  colas

Revision 1.347  2000/05/26 15:32:01  colas
fix: bad conversion in date-to-time

Revision 1.346  2000/02/08 14:23:33  colas
bug fix: symbol table memory leak

Revision 1.345  1999/12/15 18:32:06  colas
Some compile flags tweaking for linux (glibc)

Revision 1.344  1999/11/10 16:30:26  colas
SYSV_TIME defined for linux

Revision 1.343  1999/09/17 17:21:53  colas
xml-sxp.kl: parser now supports the UTF-8 encoding (but only to encode
    iso-latin-1 chars, does not supports wide strings yet)

Revision 1.342  1999/09/13 09:05:01  colas
fixes for compiling with the GLIBC (use of errno var)
##### v 2.0beta5 #####
backcompat problem with defstruct fixed

Revision 1.341  1999/09/10 13:47:45  colas
bugfix in new defstruct.kl

Revision 1.340  1999/09/07 08:22:40  colas
kl/: quote-regex.kl: fix for ^
scripts/: enhancements to nfo-clean, tolower

Revision 1.339  1999/08/30 11:21:48  colas
##### v 2.0beta4 #####
minor bug fixes (regexp apply err message)
lib: domatch, dosort, doline are now displacing macros

Revision 1.338  1999/08/23 16:36:31  colas
kl/ files and scripts: cleaned so that no symbols have dots in them

Revision 1.337  1999/08/23 08:38:00  colas
##### v 2.0beta3 #####
Seems to work OK now
KlStructure type for cleaner support
The old defstruct code is still there as defstruct-soft.kl, and is loaded
automatically if the the C code do not provide buil-tin Structure type
structurename-fields accessors functions are now only loaded on demand
C: a new parsing stream context var is introduced to save value of KlReadExpr
revamping of defstruct.kl, but should still be backwards-compatible
note that acessors parts can be get as 'object and 'slot
Assign parsing can be disabled by setting *infix-assigns* to ()
kl/ lib files now locators-less
amc-lisp.el emacs mode is included in distrib

Revision 1.336  1999/08/19 13:37:23  colas
##### v 2.0beta2 #####
New shorthand form: Assign
    We can now write x = y it is read as (setq x y) with a subtype of List so
    that it still prints x = y
    It should work everywhere, but be careful with the blanks... as x=y is
    still a valid single atom, blanks are required.
    Caveats:
    * in a sublist (defun body...) blanks are optional and thus we
    can write: x =(+ 1 2), but at the toplevel we MUST surround = by blanks
    (or tabs, newlines...)
    * x = y = z = value works, but not at toplevel, where only single
    assigns are tolerated, you must write z = value y = z x = y

Revision 1.335  1999/08/18 17:42:33  colas
bugs

Revision 1.334  1999/08/18 09:04:17  colas
##### v 2.0beta1 #####
New: accessors: symbols of the form x.y.z, fields can be numeric or atoms
work on klone defstructs
defstruct.kl: if you set defstruct:-funcs is set to (), the XXX-YYY functions
    are not defined
Bug fix: could crash on type errors on arithmetic, such as (* 1 'a)

Revision 1.333  1999/08/11 15:20:28  colas
"light" substrings obtained by substring-ptr are now fully protected against
    misuse, raising the new error KlE_NO_APPEND / Errors:NoAppend,
    e.g:
    ;; modification is allowed
    ? (put (substring-ptr "abcdef" 2 5) 1 "ab")
     = cab
    ;; but resising is not!
    ? (put (substring-ptr "abcdef" 2 5) 3 "ab")
    Error: cannot resize cde
    (setq fd (open (setq s (substring-ptr "abcdefg"2 5))
	  :type :string :direction :io :if-exists :overwrite))
    ;;we have room for one, but not for 2
    (write-string "12"  fd) (? s)
    12e
    (write-string "12"  fd)
    Error: cannot resize 12e

Revision 1.332  1999/08/10 09:42:08  colas
##### v 1.13 #####

Sockets are now opened as 2 file descriptors, to avoid buffer corruption
    during read/write operations.

Revision 1.331  1999/08/09 12:44:46  colas
script: netscape-new-url
bugfix: pids were not equal to themselves! (eq worked)
now we can execute regexps: (to document!) (still buggy)
  (regexp string [offset]) ==> (regexec regexp string [offset])
  (regexp number [offset]) ==> (regsub regexp number [offset])
new lib: ftplib.kl
new script: ftp-monitor

Revision 1.330  1999/05/21 13:27:48  colas
bugfix to xml parser
bug fix: (- () 1) was crashing with bus error!
bug fix in kl/quote-regex.kl: mishandling of ^

Revision 1.329  1999/03/22 15:15:01  colas
bugfix: the new arithmetic system made addition of numbers non-interegrs
    (reals...) abort with a "not defined" message:
    ? (+ 2.0 1)
    Error: "+" not defined for object 2.0 (of type Real)

Revision 1.328  1999/03/18 14:59:59  colas
fatal-error now has error-number optional (to be used like print-format)

Revision 1.327  1999/03/01 15:52:41  colas
##### v 1.11 #####

print-format was bugged: "%%" was not printing "%" but "4"

Revision 1.326  1999/02/26 17:56:15  colas
bug fix: parsing a string/file with non-closed #(, [, {, #[ would enter an
         infinite loop in flex
bug fix: arithmetic / comparisons of ProcessIds would go into an infinite
         loop and crash

Revision 1.324  1998/12/11 14:15:34  colas
XML parser: xml-sxp,kl

Revision 1.323  1998/08/21 15:57:36  colas
version 1.10
new klone files:
    kl/print-exit.kl to print a message and exit
    kl/ascii-progress-bar.kl implements an ascii progressbar display
scripts vcat, cmpfirst, monitor-file can now use it optionnaly

Revision 1.322  1998/07/09 09:46:22  colas
all scripts begin with the lines:
    #!/bin/sh
    : ; exec klone $0 \"$@\"

Revision 1.321  1998/05/04 15:20:58  colas
new klone files:
  scripts/html-norobots
  kl/concat-paths.kl
  kl/dofile.kl
  kl/real-equal.kl

Revision 1.320  1998/04/27 06:57:51  colas
Some bugs in division (could go into infinite loop)

Revision 1.319  1998/04/21 16:23:52  colas
new klone function: real-equal (kl/real-equal.kl) to test equality of two
    reals with rounding tolerance

Revision 1.318  1998/04/21 14:30:47  colas

Revision 1.317  1998/04/20 09:37:18  colas
(to document) Routines to add other inputs to the default toplevel:
    KlAddInput, KlRemoveInput, KlTriggerInput, KlMainPreSelect

Revision 1.316  1998/04/16 15:20:37  colas
*** empty log message ***

Revision 1.315  1998/04/16 14:47:55  colas
small fixes

Revision 1.314  1998/04/01 13:14:47  colas

Revision 1.313  1998/04/01 09:53:05  colas
General cleanup of the arithmetic stuff, moving it to kl_number.c
    We now use a OO subsystem for arithmetics, = + - * / should work for
    all combinations of Integer, Real, Unsigned, Long...
NOTE: for now, only = and + work with the new system, - * / compare still work
    the old way (will force conversion to int in most cases)

Revision 1.311  1998/03/20 09:37:08  colas
##### v 1.9b #####


Revision 1.310  1998/03/11 16:40:57  colas
ses: pipe data is truncated in chunks of max PIPE_BUF

Revision 1.309  1998/02/12 10:25:18  colas
new klone files expand-real.kl lreverse.kl
scripts: le is now lr because of the "le" program on solaris

Revision 1.308  1997/11/05 14:47:42  colas
ses: if not SES_DEBUG, the message that the extension died had a bad chekcum,
    inducing an infinite loop
*print-format-old-behavior* global variable, if set to t re-implement the old
    print-format behavior for backwards compatibility
    i.e.: (with (*print-readably* t) (print-format "abc")) ==> abc
          instead of "abc"

Revision 1.307  1997/10/22 16:30:50  colas
KlDeclareMethod traps cases of selector out of range

Revision 1.306  1997/10/20 16:10:08  colas
bug in built-in defstruct:slot due to tag change for defstruct

Revision 1.305  1997/10/20 12:47:47  colas
##### v 1.9a #####

some incompatible modification in klone packages
defstruct: structures begin with # (but old behavior can be had), see
    (setq defstruct::tag 'Structure)
filedatabase.kl: internal structures changed, (wasnt widely used yet)
    scripts/filedatabase-upgrade to upgrade databases
misc additiuons to filedatabase.kl and defstruct.kl

Revision 1.304  1997/10/15 14:55:20  colas
bug: timeout in file-lock.kl was too small

Revision 1.303  1997/10/14 15:14:46  colas
misc bugs

Revision 1.302  1997/10/14 13:11:58  colas
misc bugs

Revision 1.301  1997/10/13 15:57:38  colas
misc small bugs

Revision 1.300  1997/10/13 15:25:57  colas
small compile fix for alphas

Revision 1.299  1997/10/13 15:19:58  colas
##### v 1.9 #####

bug corrected: stack frame info was not given
bug corrected: type of lists was copied even when orig was a QuotedExpr,
    resulting in incorrecte (incomplete) QuotedExpr that could crash Klone
    later
print-format did not obey *print-readably* for the resulting string
    (sub values %N were handled Ok)
    (with (*print-readably* t) (print-format "abc")) would print abc
    instead of "abc"
KlUnstripString do not add the enclosing double-quotes anymore around the
    string. They must be added by callers

Revision 1.298  1997/10/09 12:19:17  colas
##### v 1.8c #####

Coercing a stream to string could block on streams in non-blocking mode
    (bug only happening on old SunOS).
Setting the non-blocking mode of a stream would internally set its klone flag
    to the opposite value

Revision 1.297  1997/10/08 16:09:19  colas
glitches
trap-signal was bypassing the KlSignal wrapper function.

Revision 1.296  1997/08/27 10:00:49  colas
small fixes to compile on sunos & osf1

Revision 1.295  1997/08/27 07:49:03  colas
##### v 1.8b #####

new C function: atom-of and undocumented defstruct:slot for speedups
enhancements to defstruct package: mini object model
autodocs of .kl files cleaned up
replace-seq could core dump if second arg was not of the good type

BUG in regexp: could crash on regexp of complex backtracking patterns with
    more than 10 levels of subexprs

Revision 1.294  1997/07/24 14:02:28  colas
##### v 1.8a #####


dolist on strings could yield negative integers for characters:
       (setq s "\xff") (get s 0) ==> 255, but (dolist (c s) (? c)) ==> -1

(directory) could return ".." on some non-standard filesystems (iso9660)


Revision 1.293  1997/06/03 12:39:51  colas
bugs

Revision 1.292  1997/05/16 12:58:04  colas
##### v 1.8 #####

version clean

Revision 1.291  1997/05/14 16:38:18  colas
typo
fix-frame-ps

Revision 1.290  1997/05/13 16:27:00  colas
at last, fixed the GC bug that could happen when setq-ing temp vars (arguments
to funcs evcaluating their args). This is done via a stack record to an
alloca-ted block so that we only suffer a 25% speed decrease (the natural way
of allocatring a record was forcing more than 100% slowdown!)

Revision 1.289  1997/04/28 12:30:33  colas
##### v 1.7 #####

KlStripString had an uneeded 8k limit
exo: describe did not quote slot attributes, could make redefinition of
    classes fail on the propagated redefinition of sub-classes
dolist and dohash are now protected from modification of the list
fixed the problem of dangling GC in temporary variables (hidden list of
      evaluated values of parameters) by having a temporary global flag
      disabling the GC: KlZrtNoGC
      This was done with a slowdown of only 5%, the naive solution was 100%!
tests print time to perform tests

Revision 1.288  1997/03/05 12:00:42  colas
could crash if hashtable was reallocated during a keyword Interning

Revision 1.287  1997/03/04 09:53:20  colas
Converting a file into String could cut in case of errors, which happened only
    on dec alpha on starup of the son process at the other end of the pipe
SIGCHLD trapping fixed on AIX
mixing preparsed and non-preparsed files would close too many times the FDs

Revision 1.286  1997/02/06 16:17:10  colas
C: ExecuteString could bug if passed a non-malloced string pointer
compare methods: shortcut if objects are eq

Revision 1.285  1997/02/06 06:37:42  colas
uchar --> kl_uchar
:handler keyword implemented for ses:send

Revision 1.284  1997/02/04 17:50:21  colas
klko.c in distrib (but empty for wool)
SES_PATH ==> SESPATH
was lacking a } in KlSesFuncPrint for NARY

Revision 1.283  1997/02/01 23:54:40  colas
distrib fixed

Revision 1.282  1997/01/31 11:20:46  colas
SES: bug on big returned lists fixed

Revision 1.281  1997/01/28 17:13:12  colas
some fixes

Revision 1.280  1997/01/27 17:03:37  colas
bugs

Revision 1.279  1997/01/27 16:54:22  colas
new global variable defined with SESDEBUG: *ses:trace*, if set to t
    extensive tracing is done (not all implemented)
patches from OB included

Revision 1.278  1997/01/24 17:47:38  colas
SES_AddInput: mask can be now also write and exception
timers work: SES_AddTimeOut and SES_RemoveTimeOut

Revision 1.277  1997/01/13 08:42:56  colas
shared memory (SYSV) works, still pb with mmap?
now (wait (system (command args...))) returns 255 if command not found
    (could return 127 on machines with signed ints)
lines beginning by #! are now ignored anywhere in parsed input
SES_AddInput and SES_RemoveInput implemented
    (in SES_AddInput, mask is ignored and is always taken as SES_InputReadMask)

Revision 1.276  1996/12/20 14:34:03  colas
new variables *ses:shm-size* *ses:no-shm* *ses:use-mmap*,
    *ses:no-flush-on-overflow*
(ses:load ":foo") now executes "ses_db foo"
SES: bug in long returned lists fixed

Revision 1.275  1996/10/23 16:17:18  colas
*** empty log message ***

Revision 1.274  1996/10/22 13:04:10  colas
bug in trap-signal (multiple args didnt work)

Revision 1.273  1996/10/18 15:59:57  colas
##### 1.6a #####
*:hash could differ on 64-bit machines ==> smartloader didnt work

Revision 1.272  1996/10/18 14:53:49  colas
errors while parsing a stringstream could dump core (KlIsReadingFile)

Revision 1.271  1996/10/17 15:29:51  colas
alignement bug for alpha fixed in KlTrapSignal
getftp enhanced

Revision 1.270  1996/10/02 08:50:21  colas
child death: last pb fixed

Revision 1.269  1996/10/01 07:16:20  colas
*** empty log message ***

Revision 1.268  1996/10/01 07:08:46  colas
potential race condition on process reporting

Revision 1.267  1996/09/30 16:33:33  colas
alpha cc bug workaround
reentrancy problem fixed in SIGCLD reception

Revision 1.266  1996/08/27 12:51:10  colas
dotimes: bug fixed: (dotimes n forms...) did not eval first arg
    (number of iterations)
SES: possible deadlock fixed for long requests
SES: complete ndbm implementation
SES: was returning answers even when no answer expected

Revision 1.265  1996/08/21 15:22:14  colas
SES: tricky memory corruption bug fixed, taht crashed unloading of mdules
     (klsesi.c, line 1785)

Revision 1.264  1996/08/20 11:29:09  colas
bug in read-chars fixed (did not increment cursor position in strings)
toplevel: when printing strings,truncate to 2000 chars max or first
    non-printable char
when an extension was not found, the module was still declared

Revision 1.263  1996/08/09 08:21:34  colas
memory bugs fixed
specs completed

Revision 1.262  1996/08/07 15:58:30  colas
bug fix on DeclareType

Revision 1.261  1996/08/07 13:26:35  colas
new functions: SES_DeclareAtomId, SES_CallAtomId, SES_ReturnAtomId
AtomIds can be used as symbols to "mark" values, and will be undefined when
    module will be unloaded

Revision 1.258  1996/08/05 16:10:16  colas
SES: Implementation of SesCache type: to avoid round-trip to extension.
still bugs

Revision 1.256  1996/08/01 13:37:32  colas
better detection of extension death. if extension was unloaded, silent,
    else if the death was unexpected, trigger an error with the name of
    extension after unloading it

Revision 1.255  1996/07/31 15:43:21  colas
new SES errors in the extension to checkl for buffer flushes before
    reading/returning args

Revision 1.254  1996/07/31 05:49:32  colas
SES: bug corrected in reentrancy: we must be careful not to access buffers
    (input buffer for request fields such as reqid, or output buffer for
    elements being added to list results), as they may have been flushed by
    code called in callbacks
new demo: ses_draw.c, interactive drawing in X.

Revision 1.253  1996/07/29 08:22:46  colas
SES: Bug in returning lists fixed.
    Syncrhonous send text implemented
    convenience function to report type errors ext->main

Revision 1.251  1996/07/24 16:53:20  colas
bug in extension init correcetd (signaled always extension not found)
new error type for extension not found, to differentiate from connection cut:
    KlE_SES_NOT_FOUND = "Errors:SES_NOT_FOUND"
SES_ReturnList implemented (but not yet tested)
bugs

Revision 1.250  1996/07/22 08:55:01  colas
you must define UCHAR_IN_TYPES_H on AIX
error was not properly reported when extension wasnt found.
SES_Any
SES_List (still incomplete)

Revision 1.249  1996/07/18 14:55:36  colas
SES: discard events implemented when handling extension errors

Revision 1.248  1996/07/18 06:51:18  colas
SES: extension --> klone implemented

Revision 1.247  1996/07/16 18:00:28  colas
bugs in profiler

Revision 1.246  1996/07/16 15:26:19  colas
profiler: (moncontrol t) is automatically done after initialisations and
    reading profile, but just before entering the main loop, except if you set
    DONT_START_MONCONTROL=yes (or any non-empty string) in the shell
new file doc/Profiler.readme

Revision 1.245  1996/07/16 14:57:45  colas
correct make of profiled version via "make profiler"

Revision 1.244  1996/07/16 10:05:38  colas
typos were introduced in klprofiler.c at version 1.182
"make klone_p" generates the profiled version in same dir

Revision 1.243  1996/07/15 15:20:12  colas
SES: typo prevented ses:load to find extension without -DSESDEBUG

Revision 1.242  1996/07/15 12:46:14  colas
typo

Revision 1.241  1996/07/15 12:42:13  colas
*ses:modules* is now an active (could crash after modules were unloaded)
profiler code included

Revision 1.240  1996/07/15 07:29:25  colas
now ses works and compile. Still imcomplete, no shared memory

Revision 1.239  1996/07/11 17:12:53  colas
...

Revision 1.238  1996/07/11 15:15:24  colas
...

Revision 1.237  1996/07/11 14:02:08  colas
...

Revision 1.236  1996/07/10 16:55:21  colas

Revision 1.235  1996/07/09 16:56:57  colas
...

Revision 1.234  1996/07/09 13:03:28  colas

Revision 1.233  1996/07/04 15:32:33  colas
undefined symbols when compiling with -DUSE_STANDARD_MALLOC
typos (compile errors with non-ansi-C compiler on kl_exo.h)
memory leak on "match" function (internal regexp bytecode not freed)

Revision 1.232  1996/07/04 12:43:14  colas
typo

Revision 1.231  1996/07/03 15:27:22  colas

Revision 1.230  1996/07/03 15:20:13  colas
new kdb command: Q quits and do not re-enter on error or break.

Revision 1.229  1996/07/01 16:03:39  colas
cosmetic fixes

Revision 1.228  1996/06/28 17:09:55  colas

Revision 1.227  1996/06/28 13:50:30  colas
but in wait fixed: if a son died in a wait, its return code was lost
admin: when doing a klone-u shar, a copy of last shar is saved for diffs

Revision 1.226  1996/06/26 08:27:54  colas

Revision 1.225  1996/05/31 14:01:19  colas
reader: #\x returns an unsigned char in [0..255]. previously could be [-127..127]
vacances

Revision 1.224  1996/05/02 07:45:01  colas
First SES release. non fonctional.

Revision 1.223  1996/04/30 16:48:48  colas
compiles, but still incomplete

Revision 1.222  1996/04/29 16:56:37  colas
seslib.c: obsolete encoding code removed

Revision 1.139  1996/04/19  20:15:39  colas
bugs

Revision 1.138  1996/04/19  20:06:40  colas

Revision 1.221  1996/04/05 17:20:46  colas
default linux is ELF. new linux-aout config file
scripts: ifdef-expand didnt understand ! after a #if
bug fixes:
	* (read-chars non_nil_N string_stream) returned garbage
	* read-char triggered EOF on null bytes
	* read-line triggered EOF on null bytes (string_streams)
bug not fixed:
	* read-line triggered EOF on null bytes (file_streams)

Revision 1.220  1996/03/20 14:45:26  colas
##### v 1.6 #####

better makefile
(print-format ()) core dumped

Revision 1.219  1996/03/18 17:54:03  colas
moved inclusion of unistd.h and stdlib.h on top for solaris 2.55

Revision 1.218  1996/03/14 16:42:20  colas
bug for alpha compilation
new flag -DREAL_PADDING (solaris)

Revision 1.217  1996/03/12 08:46:26  colas
comments were ignored in KlCOuntParentheses

Revision 1.215  1996/02/28 17:06:41  colas
work

Revision 1.214  1996/02/27 16:49:44  colas
better spec SES

Revision 1.213  1996/02/26 16:32:53  colas
new kclist.[ch] files. used for ses only now.

Revision 1.212  1996/02/16 18:08:07  colas
struct-lite.kl

Revision 1.211  1996/02/05 17:36:59  colas
compile warnings

Revision 1.210  1996/02/05 17:16:49  colas
bug: pendsing sub-processes if died immediately after being created.

Revision 1.209  1996/01/31 07:30:18  colas
bug when read-ing a string stream while loading a file
    (code incremented the cursor of a bad file)

Revision 1.208  1996/01/30 14:31:38  colas
floppies better documented

Revision 1.207  1996/01/29 16:53:58  colas
bug when error in a stream with a bad name.

Revision 1.206  1996/01/23 17:06:56  colas
bugs

Revision 1.205  1996/01/10 17:45:19  colas
patches for fully declaring varags functions when compiling in ANSI C

Revision 1.204  1996/01/02 16:36:24  colas
##### v 1.5 #####

now, Klone uses flex and byacc for portability (flex and byacc are available
    everywhere), but more importantly to have a 8-bit scanner. A speedup of
    about 30% is also gained when loading files, but only when using some
    incompatibilities, otherwise by default (compat mode) speedup is less than
    10% compared to the previous lex parser.
    This conversion was immediate for byacc, but flex required lots of changes
    because:
    - flex input routines are not redefinable. To be able to parse either
      fies or strings I had to use flex primitives but had a lot of footwork
      to update the current reading position in strings afterwards
    - yylineno does not work. there is one optional in flex but as it is
      global and not per-buffer, and we dont have hooks into the buffer-change
      mecanism, it is not usable otherwise line numbers would be mixed by
      successive loads. What we do is in case of error, we open the file
      anoter time and count the number of lines upto the current position. It
      is in fact faster this way, but we cannot count lines on non-fseek-able
      files
    - flex matching precedence is not equivalent to lex one, and this
      important fact is not documented. most importantly, if you define new
      special characters, you muste explicitely supress them from the list of
      available characters to start a name (FNCP macro)
    - flex bufferizes a lot. I had to turn off bufferisation to allow the user
      to perform seeks (file-position) and reads on the same file. "load"
      still uses bufferization, though.
    - to be 8-bit clean I could not use the trick of having the EOF being a
      ^D, as ^D could be the upper byte of an unicode string. I had to use
      flex <<EOF>>, which is tricky. the parse rule still have a hole I
      couldnt locate (-s says so...)
    - the flex parser is not as reentrant as lex. I should do something about
      it when I understand when the problem can arise
    - the old WlParseBinaryOld was VERY hard to emulate

INCOMPATIBILITES:
    none should be visible from Klone, neither from the public C API.
    watch for:
    - after modifying in place a string, to re-parse its contents you MUST
      issue a KlStdyyReset(KlStdyy) after redirecting the stdin, for instance
      by KlStdyyRedirect(KlStdpool) in kltoplevel.c
    - Do not directly reference variables KlIsReadingFile and Klyylineno, these
      must be replaced by calls to functions KlIsReadingFile() and
      Klyylinenoget().

When executing a script, the first line #!/... must be explictely skipped in
    main before redirecting the input by a call to KlyySkipExecLine(fd);
    And this works only on regular (fseek-able for rewinding) files.

Revision 1.203  1995/12/22 07:51:41  colas
##### 1.4 #####

bug: KlStringPtrType instead of KlStringType kl_string.c:113
    new function KlStringPtrMake, KlStringMakeNoCopy was mistakenly used for it

flex parser:
    uses at least flex 2.5.2
    new file klparser.flex, generates klparser.fl

new functionality: file-position when setting position returns t on Success
    and () on failure

Revision 1.202  1995/12/20 15:25:00  colas
apropos was broken

Revision 1.201  1995/11/23 17:28:05  colas
##### 1.3c #####
subseq on vectors returned lists

Revision 1.200  1995/11/21 16:55:28  colas
colors and xpm:
    colors.kl and xpm-format.kl
    scripts colors and xpm-clean
Bug#237(ob): C: KlInternDotPrefixed(a, b) was postpending "b", not b !!!

Revision 1.199  1995/11/20 12:45:58  colas
##### 1.3b #####
BUG: (listenv) core dumped...
BUG: + on vectors failed
BUG: sort on vectors failed

Revision 1.198  1995/11/17 17:07:54  colas
binary encodeing parameters changed for archive

Revision 1.197  1995/11/17 14:29:25  colas
bugs klone-u export

Revision 1.196  1995/11/17 12:03:47  colas
wmatch
wregcomp, wregexp, wregsub, wmatch coerce automatically strings into wstrings
    (but not regexps into wregexps)
patch phk for (open ":1234!" :tcp) to force it to effectively reuse the port

Revision 1.195  1995/11/13 15:55:31  colas
new files: kl_wstring.c and kl_wstring.h, holds the WString type.
you need to define WCHARS for compiling them in.
wregexp seems to work! yeah!

Revision 1.194  1995/11/07 17:42:51  colas
bug fixes by Olivier Arsac

Revision 1.193  1995/11/07 10:02:55  colas
C book included in shar

Revision 1.192  1995/11/02 17:29:54  colas
##### Version 1.3a #####
bug in settting symbol-slots via *:symbol-slot if type of atoms differed
    symptom: (PF "%r0\n" (file-stats *stdin*)) ==> bus error
file-stats can now be given a stream as well as a file name
    returns NIL if the stream is a string stream

Revision 1.191  1995/10/30 17:08:22  colas
dist bugs

Revision 1.190  1995/10/30 16:46:52  colas
dist bugs

Revision 1.189  1995/10/30 13:14:17  colas
read-chars do not copy buffer anymore

Revision 1.188  1995/10/25 15:46:44  colas
scripts/follow-link

Revision 1.187  1995/10/23 17:10:29  colas
doc included in shar (frame 3)

Revision 1.186  1995/10/20 16:50:19  colas
bugs distrib

Revision 1.185  1995/10/20 16:23:14  colas
trap-signals: handler can be:
    [() expr] will call expr and exit
    [t expr] will fork a sub-klone that will call expr and exit

Revision 1.184  1995/08/23 17:19:16  colas
file-lock checks filesystem full
nil vectors are printed [] instead of [ ]
filedatabase works!
klone: structp
time :real was broken on SunOS.

Revision 1.183  1995/08/16 15:55:27  colas
bug

Revision 1.182  1995/08/16 08:52:22  colas
new debug function: PSF from C, and (*:psf n) to verbosely print stack
KlExecuteLocalCode modified (one more argument) to evaluate args AFTER pushing
    frame on stack for a better debugging
error in bad argument error

dbtk and sdb: debugged but still quite buggy

:buffered in system removed (didn't work, anyways...)

Revision 1.181  1995/08/10 15:50:04  colas
##### Klone 1.2 #####
klone-update checks syntax
AUTODOC: symbol desc...    now quotes around desc are not mandatory
dbtk: does not print dbtk: symbols anymore
print-margin-words upgraded
RAW STRING char changed to ^^ ! (control-^) much prettyier!
make-subr is renamed into *:make-subr

Revision 1.180  1995/08/03  11:35:30  colas
*** documentation updated ***
replace-string buggy
new way to parse strings: raw between two ^R s
raw strings accepted as autodocs now

Revision 1.179  1995/08/02  14:02:27  colas
*keep-streams-exec*: can be a list of streams that wont be closed on exec in
    the child during system and exec calls
system: if :error and :output were given together, one would have overriden
    the other
kwish.kl: package to fork a sub-wish

Revision 1.178  1995/08/01  16:44:13  colas
argnum incremented by 1 before printing, less confusing for human
domatch debugged
time new optional argument, time type :real/:cpu/:user/:sys

SERIOUS POTENTIAL MEMORY CORRUPTION BUG! take def of REAL_malloc, when
    mallocing ~16kbytes.

malloc revamped with a cache on small values. 20% more speed on (fib 20)!
    (from 360ms to 290ms P90)
    no more REAL_ stuff, everything cleaned

get-internal-run-time: new keyword :type :all returns a triplet of times
    (real user sys)

bugs in errno printing

Makefile repaired: now first make after a clean doesn't break anymore

typep now returns actual object type: WARNING may make tests fail!
    before: (typep :abc String) ==> String
    now:    (typep :abc String) ==> Keyword

print-format:
    new %lN directive (readably and quote newlines in strings)
    new %flambda-nameN directive (apply function to argument)
    not limited to 10 args anymore: %24 is the 24th arg. (before was %2 + 4)

Revision 1.177  1995/07/27  15:55:09  colas
kl_config.h, empty but needed for other coherence with other packages
kl/doline.kl
kl/match.kl (to be finished)
kl/macroexpand.kl

Revision 1.176  1995/07/26  07:34:13  colas
internal C methods compare, dolist, copy were not defined on atoms. 
    now inherit from String

Revision 1.175  1995/07/25  16:39:44  colas
bug in opening socket: connect was done before setting the mode.
and now the non-blocking case of long connects works

Revision 1.174  1995/07/25  06:33:37  colas
bugs in sockets

Revision 1.173  1995/07/24  07:52:40  colas

new files: klnet.h klnet.c
new types for open :type :tcp, name is host:port
		   :type :udp, name is host:port
with name :port the socket is created for listening on port, the open
incrementing the port till bind succeeeds. This incrementation can be
disabled by adding a bang '!' at the end of the port.
The global variable socket:last-bind is set to the port number where the
listening socket was actually bound by bind.

open can be done on a listening socket
    (open socket &key :direction :buffered :blocking :error)
    returns a newly created socket stream

new variable: *errno*, active returns the last errno STRING. can be reset to
    an errno NUMBER (anything >0 is meaningless)

Errors:ErrorOpeningFile can accept a 3rd argument (optional) describing the
    reason of the error
C INCOMPATIBILITY KlOpenError takes now one more parameter: reason (string)
that can be 0, 1, or C string:
    0 = nil string
    1 = strerror()
    current other strings, see klnet.c

new type to open: :pipe, creates a pipe (with both end in one stream, mode
:io. Can be unbuffered and non-blocking.

new function (*:fork) forks a copy of the running program. returns the PID of
the son in the father process, and () in the son. This function is in the *
package because it should be reserved to experienced UNIX programmers.

bug: (read-chars () socket) was returning nothing on pipes & sockets

bug: PV and print-margin-item were bugged

Revision 1.172  1995/07/19  16:43:53  colas
files kl/filedatabase.kl: simple database (still unfinished)
      html/cgi.kl utilities to write CGI scripts
flush now trigger a write error if needed
INCOMPATIBLE CHANGE: syntax #[a b = c] ==> #[a b := c]
:= is a synonym for setq
new C function: get-current-time, no arguments
    returns the time in seconds since 1970 Jan 1 00:00 GMT. Time returned is
    GMT
date functions: date renamed as time instead of seconds for consistency
new lisp function: dosort

NEW:
+ on strings: will automatically convert () to nil strings and numbers to
       their printed representation
+ on numbers: will ignore ()s

*exithook* can contain a lambda that will be evaluated on exit of the program
	   in fact hook: can contain a function or a vector of functions

KlExecuteHook: C function to trigger hooks from C code
smartdoc:help is no more a defunq but now a defun

KlExo: now new keyword allowed in class slots: :properties, must be a p-list
    of properties on the slot indexed by keywords, such as :type

C: new func KlListAppendV(list, N, obj1,..., objN)

Revision 1.169  1995/07/03  13:25:50  colas
error on fcloses on streams open for writes trigger a write error

Revision 1.167  1995/06/01  16:55:49  colas
let, let*, do, do* added as built-ins

Revision 1.166  1995/06/01  16:33:41  colas
bug in kl/hooks.kl: (add-hook 'toto 'tutu) error if toto has () as value.

Revision 1.165  1995/05/30  20:38:17  colas
bugs

Revision 1.162  1995/04/27  16:15:22  colas
bugs

Revision 1.161  1995/04/24  17:02:58  colas
bug if first putenv was of value of length > 256

Revision 1.160  1995/04/21  15:13:23  colas
structs: *** INCOMPATIBLE CHANGE ***
    accessors take as 4th argument the Klone object struct itself, not the C
    struct adress

Revision 1.159  1995/04/19  14:14:25  colas
bugs

Revision 1.158  1995/04/19  09:23:34  colas
reverted to old regexp code (unlimited pars, but dont work on null bytes)
	 because bugs...

Revision 1.157  1995/04/14  16:07:11  colas
bugs

Revision 1.156  1995/04/12  12:34:52  colas
(object-plist object [plist])
    get (set to plist if plist given) the property list of an object
    for this to work, the plist field of the C structure of the object must
    be declared after type declaration by a call to:
    KlDeclarePlistSlot(type_object, C_type, name_of_the_field);
    e.g., for atoms:
    KlDeclarePlistSlot(KlAtomType, KlAtom, p_list);
    dont forget in your C code to:
    [1] initialize the field in instances to 0
    [2] perform a KlDecRef on the field in the Free method

    The field can be declared by hand in object or transparently, named
    "plist" by using KlKLONE_HEADER_PLIST instead of KlKLONE_HEADER

structs: *** INCOMPATIBLE CHANGE ***
    ->print and -> free methods are given the struct itself, not the pointer
    to the C struct anymore.
    A sample free method is provided KlStructClassFreeDefault which frees just
    the obj->ptr

structs: new field "parse" in KlStructClass, used to implement applying a
    structclass. will be called with 3 args: structclass, argc, argv
    where argc and argv are the arguments passed to it.
    USAGE: you should define print as printing, in readable mode an inline
    function such as {FileStats arguments...} where arguments will be used by
    the parse function to rebuilt the struct.

    2 sample routines are provided for basic, flat structs:
    KlStructClassPrintDefault and KlStructClassParseDefault. See klos.c, line
    512 for example of use (in DEBUG mode)

Revision 1.155  1995/04/11  14:13:13  colas

Revision 1.154  1995/04/11  09:56:09  colas
structs:

    (struct-of struct [new-structclass])
    gets or sets (cast for unions) the class of the struct
    returns (or take as argument) a structclass object, of which you can get the
    name by (get structclass 'name)
    WARNING: of course, setting the structclass is *EXTREMELY* dangerous,
    and can lead to bus errors

    get on a structclass:
    'name --> the name (atom)
    'slots --> the list of slot names
    'size  --> ths size (in bytes, not used yet)

Revision 1.153  1995/04/11  07:43:01  colas
emacs-compatible hooks package: kl/hooks.kl
apropos case unsensitive
file-type was broken last release

Revision 1.152  1995/04/04  08:55:32  colas
dolist works on structarrays

Revision 1.151  1995/04/03  16:44:00  colas
work

Revision 1.150  1995/03/24  11:31:55  colas
(catch 'foo bar) now sets *last-caught-tag* to () if no throw have been done
all "catched" changed to "caught" in C code. backcompat macros included at the
    end of klone.h

Revision 1.149  1995/03/22  14:10:51  colas
*** documentation updated ***
Bug#223(jml): require on undefined name crashed
Bug#224(phk): pool in toplevel was broken for multiline strings
let and let* defined as (non-optimal) klone functions
file-types take now an optional argument do-not-follow-symbolic-link

Revision 1.148  1995/03/17  16:52:06  colas
now regular expressions work on strings with null bytes.
dont work yet with null bytes in regexps, though (working on it)

debugged

Revision 1.137  1995/03/16  20:22:16  colas
regexps debugged (really?)

Revision 1.146  1995/03/16  17:20:53  colas
still bugs in regexps

Revision 1.145  1995/03/16  10:28:29  colas
regexps:
    - no more limited to 10 subparentheses, now dynamically allocated
      The number of subparentheses hold by the regexp is accessed by
      #[regexp 'depth]
      number of parentheses is 0 if no subpars

Revision 1.144  1995/03/15  16:39:22  colas
new module: klmath.c, (documented) with functions:
    expt
    log
    sin
    cos
    asin
    atan
    and constants: pi e
    autoloaded: exp, sqrt, tan, acos, sinh, cosh, tanh, asinh, acosh, atanh

Revision 1.142  1995/03/14  14:50:25  colas
select on string streams ALWAYS return true, even at EOF (for coherence with
file streams)

Revision 1.141  1995/03/13  16:52:22  colas

Revision 1.140  1995/03/10  14:41:52  colas
locators: can be excuted now for put only:
    (#[p 'x] 2)  <==>  (put p 'x 2)
    (#[p 'x]) ==>
	 Error: "execute" not defined for object #[p 'x] (of type Locator)

Revision 1.139  1995/03/09  16:38:30  colas
linux: _BSD_SOURCE defined (for compat with imake and signal problems)

Revision 1.138  1995/03/07  17:06:34  colas
bugs

Revision 1.137  1995/03/07  10:24:50  colas
putenv now use standard malloc for compat with libc putenvs
gethooks could be called multiple time when printing an kl_exo

Revision 1.136  1995/01/27  17:01:54  colas
bugs

Revision 1.135  1995/01/27  11:40:05  colas
bugs

Revision 1.134  1995/01/22  22:41:05  colas
C: new convenience function: a "with" in C:
    KlStackFramePushValues(N, var1, newval1, ... varN, newvalN);
new type: ListInline, son of list, returned by read when reading an inline
    if the flag *quote-inlines* is set, instead of collection which induce
    problems since it is not refcount-increasing
wppb:unpreparse: :verbose can have the :debug argument to print also the
    keyword :print to format via a prettyprinter:
    e.g.: (wppb:unpreparse :verbose :debug :print pp "preparse.kl")
preparse: now keeps documentation of functions and methods
    And now, preparsed files end in any loadable extension + "p"

Revision 1.133  1995/01/20  16:14:16  colas

Revision 1.132  1995/01/19  17:34:07  colas
new function: identity, returns (evaluated) argument
bettre unpreparse

Revision 1.131  1995/01/19  04:37:34  colas
delete-nth returns deleted element or ()

Revision 1.130  1995/01/09  10:07:52  colas

Revision 1.129  1995/01/07  06:45:55  colas
bugs

Revision 1.128  1994/12/16  16:07:12  colas
In klone, now vectors are noted [...]. #(...) is still recognized for backcompat

Revision 1.127  1994/12/15  16:22:39  colas
open: new value possible for :if-exists, :error, which triggers an error
    if the file already existed (only for :output or :io direction)

Revision 1.126  1994/12/08  16:46:53  colas

Revision 1.125  1994/12/07  17:27:46  colas
better ftp-list-news
option :allow-other-options for getopts

Revision 1.124  1994/12/06  09:36:50  colas
some operations could crash on closed streams (print, select, change mode,
    coerce to string)

Revision 1.123  1994/12/05  11:15:12  colas
bugs

Revision 1.122  1994/12/05  11:05:20  colas

Revision 1.121  1994/12/02  10:51:08  colas
klone: kl/lock-file.kl

Revision 1.120  1994/11/25  21:54:44  colas
clean

Revision 1.119  1994/11/25  08:34:12  colas
pool-lines dropped. Instead function
    (read-lines-pooled [ stream [ EOF? ]] )
    gobbles sexprs upto at least a complete one, but multiline with prompts
    and returns the string of its input (which may have syntaxic errors)
    throws to EOF on end, or returns the evaluation of EOF? if given
(load file) can now take a keyword :if-does-not-exists which value is
    evaluated and returned if the file could not be loaded. If keyword not
    given or have the value :error, the traditional error is triggered

Revision 1.118  1994/11/25  00:01:30  colas
sample use of pool-lines in kl/sub-toplevel.kl

Revision 1.117  1994/11/24  18:37:44  colas
new function: (pool-lines)
     like the toplevel, but reads just a block of expressions, then returns
     the stream pointing to it

Revision 1.116  1994/11/23  17:56:11  colas
bugs in signals in AIX

Revision 1.115  1994/11/21  15:29:15  colas
bugs in dist for linux

Revision 1.114  1994/11/18  21:53:38  colas
bugs in dist

Revision 1.113  1994/11/18  18:40:12  colas
bug in mksdir and distrib

Revision 1.112  1994/11/17  17:23:31  colas
some patches for linux

Revision 1.111  1994/11/10  17:59:01  colas
wait return code was random!

Revision 1.110  1994/11/04  12:37:37  colas
no more setsid, SIGHUP sent by hand

Revision 1.109  1994/11/02  00:33:59  colas
defvar always resetted value

Revision 1.108  1994/10/21  19:59:08  colas
bugs in dists

Revision 1.107  1994/10/21  17:46:47  colas

Revision 1.106  1994/10/21  17:32:28  colas

Revision 1.105  1994/10/21  13:29:10  colas

Revision 1.104  1994/10/21  12:58:17  colas

Revision 1.103  1994/10/21  12:54:23  colas

revision 1.102 1994/10/21  14:32:29  colas
#\foo was corrupting the parser
There was a bad number of args to KlInit in main.c for distrib
Bug#203(lf): corrected: defun on methods could not be redefined

Revision 1.94  1994/10/13  14:32:29  colas
bug

Revision 1.93  1994/10/12  16:18:07  colas
bug

Revision 1.92  1994/10/12  15:39:29  colas
some perfs enhancements for executing Subrs
there was a bug in erreor handling in KlErrorV

Revision 1.91  1994/10/11  16:09:08  colas
Varags used now:
 *  For list creation: KlListMakeV(n, elements...)
 *  For Apply: KlApplyV(func, n, arguments...)
 *  For Errors: KlErrorV(errorcode, n, arguments...)

Revision 1.90  1994/10/11  10:26:34  colas
sun4 must compile with -DDOUBLE_ALIGN

Revision 1.89  1994/10/10  17:21:25  colas
*package* is now an active setting an internal string
parsing of packaged atoms much faster now
Error KlE_NOT_A_PACKAGE disappears
new C function: progn-times
    (progn-times N insts...) like progn but exec insts N times and return NIL

Revision 1.88  1994/10/07  16:33:08  colas
NO_SETSID compilation flag

Revision 1.87  1994/10/06 16:06:22;  colas
KloneLight functions and KloneLight distrib included

Revision 1.86  1994/10/06 12:05:15;  colas
*SIGHUP-on-exit* (KlSIGHUPOnExit in C), defaults to 1: will send SIGHUP to all
children on exit. if disabled, MUST be disabled before the first system call

Revision 1.85  1994/09/29 10:03:13;  colas
pb in dist

Revision 1.84  1994/09/27 09:34:24;  colas
bug in dist

Revision 1.83  1994/09/23 16:32:59;  colas
(get 'abc n) would not get char number n of name...

Revision 1.82  1994/09/22 07:46:28;  colas
(get <atom> num) didn't work anymore

Revision 1.81  1994/09/14 16:14:57;  colas
defvar can have 1 arg now

Revision 1.80  1994/09/12 16:47:27;  colas

Revision 1.79  1994/09/12 16:46:31;  colas

Revision 1.78  1994/09/12 16:22:34;  colas
now, "foo" 'foo and :foo are different
compile flag -DOLD_ATOM_EQUAL for backcompat, which if set allows
    *atom-equal-fixed* to eb set to get new behavior

Revision 1.77  1994/09/09 17:31:35;  colas
string-make N was not protected against N < 0. Now if N <= 0, a nil string is
    returned
KlInternBytes was bugged since 1.70
-*- not treated now in first line in scripts. Use:
    ;;; EMACS MODES
    ;;; Local Variables: ***
    ;;; mode:lisp ***
    ;;; End: ***
    at the end of the file

`',a marche
one can coerce lists into QuotedExpr now
(seek l e offset) was buggy for offset non 0


Revision 1.76  1994/09/06 12:07:54;  colas
reals: after exponent only two digits were parsed (fix to klparser.lex)
(logshift N s) <==> N << s pour s positif, N >> -s pour s negatif
AUTOLOAD.DIR format (klone-update) version v3, now compatible with v1

Revision 1.75  1994/08/19  16:34:02  colas
parser seems to work! YEAH !!!

Revision 1.74  1994/08/19  16:22:09  colas
bugs...

Revision 1.73  1994/08/19  15:16:00  colas
still cores dumps in wppb

Revision 1.72  1994/08/19  14:11:26  colas
C: (delete-nth list i) deletes nth element i from a list, and silently ignores
    if i is not number () or outside bounds. very useful with seek or seekq

Revision 1.71  1994/08/18  16:28:39  colas
works nearly. needs to debug defun-compilation

Revision 1.70  1994/08/18  12:18:32  colas
(seekq list elt) function does an eq-scan
WARNING: klone-update and autoload now use the builtin hash function, take
    care to regenerate the dictionnaries

Revision 1.69  1994/08/17  18:01:57  colas
...

Revision 1.68  1994/08/17  15:18:36  colas

Revision 1.67  1994/08/17  09:52:51  colas

Revision 1.66  1994/08/16  17:47:17  colas
*quote-inlines* KlQuoteInlines flags. If set to t, will read inlines but not
    eval them, which will be stored as Collections

Revision 1.65  1994/08/16  12:04:51  colas
C level: INCOMPATIBLE CHANGE:
KlParseString takes a new parameter, string length
New C Function: KlStringMakeNoCopy returns a string that SHOULD not be
    modified
New Klone function: substring-ptr like subseq but returns a pointer to the
    string! dangerous (not modifiable and no null terminator)

Revision 1.64  1994/08/12  18:59:30  colas
INCOMPATIBLE CHANGE:
KlFileInPath takes a 3rd arg which is a pointer to a FILE* and is filled to
the open on the file if found, the caller needs to close it.
this allows to get rid of a LOT of stats calls, slow by NFS.

Revision 1.63  1994/08/12  09:37:21  colas
KlLoadFileInPath ==> KlLoad

Revision 1.62  1994/08/11  19:15:45  colas
...

Revision 1.61  1994/08/11  09:18:04  colas
replace-seq debugged
new klone function:
    (replace-string string  regexp replacement &key (npar 0) all)

Revision 1.60  1994/08/11  08:47:43  colas
new checksum functions in klone
new generic function: (replace-seq string substring start-pos end-pos)
    works on string or lists, replaces elts from start to pos by the
    substring/sublist
    returns the string which is physically modified
new error: number out of range with KlErrorNumberOutOfRange(num low, high)

Revision 1.59  1994/08/11  03:01:58  colas
...

Revision 1.58  1994/08/10  16:46:23  colas
full smartloader always tried to be loaded before loading profile

Revision 1.57  1994/08/10  13:54:12  colas
*:load points to the original load function

Revision 1.56  1994/08/10  12:30:26  colas
make-string forgot to add terminating null byte
KlSPutc macro
write-line now correctly prints null bytes

Revision 1.55  1994/08/09  17:46:11  colas
p option added to main

Revision 1.54  1994/08/09  13:57:50  colas
some enhancemnets to kl/date.kl

Revision 1.53  1994/08/08  16:42:51  colas
TODO in shar (but not in distribs)

Revision 1.52  1994/08/08  16:39:31  colas
KlLastSignal holds last signal processed. Useful for sigchild.
minimum of built-in number -1 ==> -2

Revision 1.51  1994/08/05  17:06:40  colas
...

Revision 1.50  1994/08/05  17:01:09  colas
bug: exit was a fsubr

Revision 1.49  1994/08/01  16:59:43  colas
patchs from ISM (ob)

Revision 1.48  1994/08/01  16:46:49  colas
select would return NIL as soon as a SIGCHLD was received. now is ignored, but
timeout can be reset to original value

Revision 1.47  1994/07/27  15:20:51  colas
temporary, messages behave like locators

Revision 1.46  1994/07/22  15:36:33  colas
INCOMPATIBLE CHANGE:
    locators are now written #[...], to let room for the vector-oriented style
prototype of external model into klko.[ch], prefix KlKo

Revision 1.45  1994/07/22  12:50:28  colas
(system ... :nohup t) protects son from signal 1 (do not work with a shell)

Revision 1.44  1994/07/18  13:45:19  colas

Revision 1.43  1994/07/13  12:54:53  colas
(String <stream>) would append garbage if file-position of <stream> was
    not at start

Revision 1.42  1994/07/13  09:44:04  colas
fixed some reentancies problems in errors
Now you should call KlyyparseSyntaxError(char * why), never KlE_SYNTAX_ERROR
    directly...

Revision 1.41  1994/07/12  17:30:30  colas
new keyword :buffered () to system. if set to (), the pipes to the son are
    unbuffered and from the son side too if it is a klone script via setting
    the env variable __KLONE_RESET_STDBUFS__

Revision 1.40  1994/07/06  10:00:26  colas
amiga files repaired
seek did not work with null bytes in string nor did find the null byte
seek now takes an optional 3rd argument: offset
offset could core dump if negative for seek and regexec.
    now if negative set to 0
wait works even on AIX in all cases. (could return -1 and set errno to 0 !!!)

Revision 1.39  1994/07/01  16:07:30  colas
Bug#201(cn): *extensions* pointed to garbaged value
dohash on nil lists crashed

Revision 1.38  1994/06/29  13:11:58  colas
kldebug.c: P: added methods for structs
bug in error handlers fixed

Revision 1.37  1994/06/29  11:33:18  colas
KlExecuteKloneNoReturn and KlExecuteKlone were bugged
    (needed to repeat 1rst arg)

Revision 1.36  1994/06/10  14:36:34  colas
another patch for wait of a process

Revision 1.35  1994/06/09  17:03:23  colas
make-string did not check type of first arg
could deadlock in waiting for a process

Revision 1.34  1994/06/09  13:31:34  colas
KlSafeEval better done
use of waitpid when waitint for one process and blocking to avoid deadlock

Revision 1.33  1994/06/07  15:17:59  colas
(while t ...) special case (faster)

Revision 1.32  1994/06/06  07:56:43  colas
new MACHINE_TYPE more detailed
if print-readably set, reals are printed in max precision
*real-precison* could bug if > 30. now limited to 20 (max is 17 actually)

Revision 1.31  1994/05/27  15:55:25  colas
Dl:open calls itself _init and Dl:close _fini

Revision 1.30  1994/05/27  08:33:51  colas
bug in call to dlopen mode

Revision 1.29  1994/05/26  13:43:26  colas
Dynamic loading (SUN and SGI): uses dlopen, dlclose, dlsym
    new file kldload.c, must be compiled with -KLDLOAD
    Klone functions:
    (Dl:open <module-filename>) ==> returns handle (closed when garbaged)
    (Dl:close <module-handle>)
    (Dl:symbol <module-handle> <C-name> <Subr|FSubr> <arity>)
        binds symbols and returns th (F)Subr

Revision 1.28  1994/05/25  15:25:21  colas
##### Version 0.9b #####

Revision 1.27  1994/05/25  14:05:54  colas
dolist, dohash and compare as primitive methods
compare on lists compares each element

Revision 1.26  1994/05/18  16:56:54  colas

Revision 1.25  1994/05/18  14:44:55  colas
Bug#198(sl): (defun leak:get (&key init ())) ==> coredump fixed (wl_func.c)

Revision 1.24  1994/05/18  09:12:55  colas
...

Revision 1.23  1994/05/17  12:26:41  colas
default max arity of internal methods brought from 3 to 5

Revision 1.22  1994/05/06  15:41:11  colas
...

Revision 1.21  1994/05/05  17:24:24  colas
...
Bug#197 corrected

Revision 1.20  1994/05/05  15:23:08  colas
better avoidance of -*- on BSD43
patch for avoiding defunt process in SCO

Revision 1.19  1994/05/02  16:27:30  colas
...

Revision 1.18  1994/05/02  16:10:21  colas
KlConvertArgToString(o, n) and KlConvertArgTo(o, n, t) macros
to check and convert to if necessary

Revision 1.17  1994/05/02  13:29:10  colas
bugs in parser

Revision 1.16  1994/05/02  12:54:24  colas
default path and extension .:kl and .kl in lib

Revision 1.15  1994/05/02  12:08:28  colas
kltoplevel declared

Revision 1.14  1994/05/02  11:48:06  colas
...

Revision 1.13  1994/04/29  15:18:13  colas
separation of parser into klparser.l and klparser.y and klparser.h for
    better dependencies

Revision 1.12  1994/04/29  08:31:53  colas
system works on aix

Revision 1.11  1994/04/28  16:44:04  colas
...

Revision 1.10  1994/04/25  08:59:52  colas
klstartup.kl trimmed to minimum (smartloader builtin)

Revision 1.9  1994/04/22  17:33:52  colas
...
Revision 1.8  1994/04/22  17:23:37  colas
unified distrib

======================================================================
