+++ /dev/null
-<hmtl> <head> <title> EiC's Change log </title>\r
-</HEAD>\r
-<body bgcolor="white"> <font size=2>\r
-<!--Navigation Panel-->\r
-\r
-<h1>EiC's Change Log.</h1> <br>\r
-<pre>\r
- Significance of Changes\r
-\r
- * minor change or bug fix \r
- *** a new feature or function\r
- ****** major change or addition\r
-\r
-</pre>\r
-<multicol cols=2>\r
-\r
-\r
-<b> Changes from 4.3.0 to 4.3.1 (next_release) </b>\r
-<pre>\r
-\r
- * fixed bug as reported by Steve Marthouse from vrml3d.com, \r
- that EiC's float conversion mechanism fails to execute \r
- correctly:\r
-\r
- float f = 0.7F;\r
- assert(f == 0.7F);\r
-\r
- * fixed bug as reported by Victor Eruhimov, that during\r
- error recovery EiC would on occassions aborting due to \r
- some bad memory addressing\r
-\r
-</pre>\r
-\r
-\r
-<b> Changes from 4.2.8 to 4.3.0 </b>\r
-<pre>\r
-\r
- ***** With the help of Al Amzeen, EiC compiles using DJGPP \r
- under win32. This provides fairly complete EiC \r
- installation, under win32.\r
-\r
- *** Added `void EiC_setMessageDisplay(void (*)(char*))' \r
- function. The purpose of this function is to allow \r
- an embedding system to control how EiC's error and \r
- warning messages are displayed. This is done by passing\r
- EiC_setMessageDisplay the function it wants used for \r
- displaying EiC's error and warning messages. The \r
- replacement function returns void and must accept a C \r
- style string. The strings passed are stack based and \r
- therefore, should either be displayed straight away or \r
- copied into a buffer space.\r
-\r
- *** added the `getcwd' function to unistd.h. \r
- Compliance: POSIX.1\r
-\r
- *** added SVR4 and 4.3+BSD macro extensions to termios.h\r
-\r
- *** the win32 port of EiC now stores its include files in\r
- EiC\include. The environment variable HOMEofEiC\r
- doesn't need to be set if EiC is installed in \r
- C:\EiC.\r
-\r
- *** Matt Minnis has added a `:quit' command to EiC and\r
- is simply an alias to `:exit'.\r
-\r
- *** More externally visible identifiers prefixed with\r
- `EiC_'.\r
-\r
- * fixed problem with EiC not detecting HOMEofEiC\r
- environment variable under DJGPP and probably also \r
- under win32\r
-\r
- * brought EiC/main/examples/embedEiC.c up todate:\r
- changed the call to init_EiC to EiC_init_EiC and\r
- the include path under win32. \r
-\r
- * fixed compile problems with the FreeBSD port of EiC.\r
-\r
- * fixed one cause of segmentation violation due to certain\r
- types of errors during declaration parsing.\r
-\r
- * fixed bug with EiC's scanf function as reported by\r
- Sean McTigue:\r
- while(scanf("%d", &num)==1)\r
- printf("d\n", num);\r
-\r
- getting caught in a infinite loop when illegal input is\r
- entered.\r
-\r
- * fixed problem with :gen command outputting the\r
- function call to add_builtinfunc rather than to\r
- EiC_add_builtinfunc.\r
-\r
-\r
-</pre>\r
-<b> Changes from 4.2.7 to 4.2.8 (Jun 12 2000) </b>\r
-<pre>\r
-\r
- *** The win32 makefile systems has had some modifications \r
- (still needs more).\r
- The EiC\config\genstdio.c is now incorporated into the make system\r
- and is used to generate standard header files. And EiC\main\main.c\r
- is used rather than EiC\src\main.c, bringing inline more closely\r
- with the Unix version.\r
- \r
- *** The `:clear' command now takes multiple file names delimited\r
- by commas as its arguments:\r
-\r
- :clear file[,<file>]*\r
- \r
- *** More name space tweaking. Most, if not all, externally visible variables \r
- and functions, are now prefixed by EiC_. This is to reduce \r
- the possibility of name conflicts between EiC source code\r
- and any embedding system. \r
-\r
- *** EiC now supports ISO-C signal.h and the signals (SIGXXXX) defined \r
- for POSIX.1 signal.h. See EiC's library documentation \r
- for details.\r
-\r
- *** EiC's interface to the standard C library functions fgets() \r
- and gets() have been made safe against buffer overflows \r
- when used with safe pointers.\r
-\r
- *** Added to unistd.h the functions pause and alarm\r
- compliance: SVr4, SVID, POSIX, X/OPEN, BSD 4.3\r
-\r
- *** Added the standard ISO-C header iso646.h\r
- \r
- * removed limits.h and signal.h as they are now completely\r
- generated via EiC/config/genstdio\r
-\r
- * fixed EiC failure to apply the address operator to functions:\r
-\r
- EiC 1> int foo(int x) { return x;}\r
- EiC 2> foo == &foo; \r
- 1\r
- \r
- * fixed typo in EiC's online :help info for the :gen command \r
-\r
- * fixed access violation problem, as reported by Eroukhimov, \r
- Victor, caused sometimes by an error occuring with the operational\r
- type with in a selection statement.\r
-\r
- * included missing file EiC/test/EiCtests/teststatic3.aux\r
- within EiC's CVS repository.\r
-</pre>\r
-\r
-\r
-<b> Changes from 4.2.6 to 4.2.7 (May 16 2000) </b>\r
-<pre>\r
-\r
- *** A reset operator has been added. It is used to set EiC \r
- to a default internal state. All memory is freed, the \r
- contents of include files and global variables, allocated, \r
- included and declared, after the reset point, are removed. Any\r
- global scalar variables declared prior to the reset point will have \r
- their previous values restored. The default reset point is equivalent\r
- to starting EiC with the -N command line switch:\r
-\r
- EiC > :reset // regain a previous state\r
-\r
- It is also possible for the user to define the `reset point'\r
- by using the `:reset here' command:\r
-\r
- EiC 1> int p = 66;\r
- EiC 2> :reset here // set reset state\r
- EiC 3> p = 88;\r
- 88\r
- EiC 4> :reset\r
- EiC 5> p;\r
- 66\r
-\r
- see EiC's documentation for further details and gotchas.\r
-\r
-\r
- * documentation updated to reflect the `:reset' command.\r
-\r
- * termio and termios.h files have been updated on the Linux\r
- platform to conform with libc6.\r
-\r
- * fixed problem as reported Eroukhimov, Victor that \r
- EiC's source file src/assertp.h fails to define \r
- assertp when NDEBUG is defined. \r
-\r
- * Applied Ken Settle's patch that corrected EiC's \r
- failure to diagnose:\r
-\r
- EiC 1> 0 (15); //Function names cannot be constants\r
-\r
- * Applied Kaz Kylheku's patch to rid EiC's source code\r
- of many externally visible variables, by converting all \r
- object and function declarations, where possible, to static.\r
- This is important as it reduces the possibility of name\r
- conflicts between EiC source code and any embedding\r
- system. It also removed several dead function and variable \r
- definitions.\r
-\r
- * Further refinement to prevent name clashes between\r
- private and public object and function definitions\r
- between EiC functions. \r
-\r
-</pre>\r
-<b> Changes from 4.2.1 to 4.2.6 (Mar 25 2000) </b>\r
-\r
-<pre>\r
-\r
- *** The module termios.h has been interfaced to EiC.\r
- This allows for serial port programming under Unix. \r
-\r
- *** The :gen command has now an extra option, `num', which\r
- controls the number of multiplex callbacks generated:\r
-\r
- :gen <include_file> [num] ["<output_file>"]\r
-\r
- both num and output_file are optional. the \r
- default value for num is 1.\r
-\r
- * Fixed problem reported by Sreeni R. Nair\r
- with a typedef clash between SunOS header file\r
- and eicval.h\r
-\r
- * Fixed the following bugs as reported by \r
- Victor Eroukhimov:\r
-\r
- 1, EiC fails to diagnose:\r
- EiC > char a[5][];\r
- 2, That char a[3][] = {"abc", "def"}; causes\r
- EiC to abort.\r
- 3, That EiC was not initialising char pointers correctly\r
- during declaration:\r
- EiC > char a[] = "adsf"; char *b = a;\r
- EiC > b == a;\r
-\r
- * documentation update and corrections.\r
-\r
- * Fixed bug associated with EiC's :show command\r
- causing illegal storage access when display\r
- struct, union or enum tag specifiers.\r
-\r
- * Fixed the following bugs as reported by \r
- Kaz Kylheku:\r
-\r
- 1, that EiC at times fails to parse character \r
- literals correctly:\r
- EiC > int x;\r
- EiC > assert(x == '\'');\r
- 2, that EiC failed to assign pointers to builtin \r
- code correctly:\r
- EiC > int (*p)(const char *fmt, ...) = printf;\r
- where printf is a builtin function. \r
- 3, that ULONG_MAX definition on the win32 was \r
- incorrect\r
- 4, that static variables declared in a file not \r
- always being hidden from clashes with other objects\r
- declared with the same name but within other\r
- files. \r
- 5, function runEIC in starteic.c has a little transgression related\r
- to the use of the setjmp macro:\r
- if ((E = setjmp(env)) == 0) {\r
- /*...*/\r
- } else if (E == _Err_) {\r
- }\r
-\r
- * Applied David Ell's patch that removed \r
- hard coded directory \r
- reference in the EiC/src/Makefile. \r
-\r
-</pre>\r
-\r
-<b> Changes from 4.2.0 to 4.2.1 (Jan 14 2000) </b>\r
-\r
-<pre>\r
- ****** EiC now supports setjmp.h\r
-\r
- ****** EiC now supports gotos and labels as specified by ANSI-C.\r
-\r
- ****** EiC's parser can now handle LL(N) grammar, Previously it was\r
- only able to parse an LL(1) type grammar. This change in\r
- principle enables more easily language enhancements and\r
- extentions. N is specified via the definition of MAX_TOKENS\r
- in EiC/src/lexer.h and is currently set to 3.\r
-\r
-\r
- *** added the function `putenv' to stdlib.h\r
- Compliance: SVID 3, POSIX, BSD 4.3\r
-\r
- *** added the function `strdup' to string.h\r
- Compliance: SVID 3, BSD 4.3. \r
-\r
- *** Documentation updated to reflect the addition of setjmp.h, \r
- gotos, putenv and strdup.\r
-\r
- * for the win32 port, added missing file sys/time.h\r
-\r
- * fixed bug as reported by Victor that EiC doesn't handle error\r
- recovery correctly with respect to the removal of \r
- prototypes to builtin functions. \r
-\r
- * Incorporated Ken Settle's patch enabling EiC to handle correctly:\r
- \r
- EiC 1> #define FOO int\r
- EiC 2> FOO (*a)(FOO x);\r
-\r
-\r
- * Fixed bug with EiC_parseString, as reported by Kester McKinney,\r
- failing to allocate on occassions sufficient buffer space for \r
- passing the format string.\r
-\r
- * Fixed bug with EiC failing to diagnose correctly: \r
- passing indirectly an unsafe pointer to a function\r
- expecting indirectly a safe pointer or vice versa:\r
-\r
- EiC 1> char * * p;\r
- EiC 2> char * *unsafe q;\r
- EiC 3> void f1(char * * p) {1;}\r
- EiC 4> void f2(char * *unsafe q) {1;}\r
- EiC 5> f1(p); // okay\r
- EiC 6> f1(q); // error\r
- EiC 7> f2(p); // error\r
- EiC 8> f2(q); // okay\r
-\r
- For more information see EiC's documentation covering\r
- pointers: www.pobox.com/~eic/EiC\r
-\r
- * Fixed bug with EiC's address, `@', operator failing to \r
- handle more compilcated data types properly:\r
-\r
- char *vec[] = {"hello", "world"};\r
- char *p[2] @ &vec;\r
-\r
- * Fixed problem related to David Binette's report of a \r
- security concern with respect to EiC's demo cgi program \r
- `uploadfile.eic.cgi'\r
-\r
- * Fixed bug with the definition of CLOCKS_PER_SEC on the \r
- Linux platform as reported by Derek Simkowiak.\r
-\r
- * Fixed several causes of EiC reporting memory violations\r
- when compiling C code with errors coinciding with\r
- implicit or explicit variable casts.\r
-\r
-</pre>\r
-<b>Changes from 4.1.2 to 4.2.0 (Aug 2 1999)</b>\r
-<pre>\r
-\r
- ****** Jean-Bruno Richard has modified EiC's `:gen' command so \r
- that it now automatically handles multiplexed callbacks.\r
-\r
- *** The WIN32 binary distribution of EiC also includes eic.lib\r
- to enable embedding eic, see file c:\eic\examples\embedEiC.c\r
-\r
- *** EiC/config/genstdio now also generates limit.h\r
- and float.h \r
-\r
- *** EiC's builtin function popen and pclose have been ported to \r
- the WIN32 platform\r
- \r
- * several unused files have been removed from the distribution:\r
-\r
- EiC/module/stdClib/src/fopen.c\r
- EiC/module/stdClib/src/scanf.c\r
- \r
- the following files were removed as they are automatically\r
- generated at compile time.\r
-\r
- EiC/module/stdClib/src/_PLATFORM/stdio.h\r
- EiC/module/stdClib/src/_PLATFORM/stdlib.h\r
- EiC/module/stdClib/src/_PLATFORM/errno.h\r
- EiC/module/stdClib/src/_PLATFORM/stdtypes.h\r
- EiC/module/stdClib/src/_PLATFORM/limits.h\r
- EiC/module/stdClib/src/_PLATFORM/float.h\r
- \r
- \r
- * fixed bug with EiC failing to cast result of bitwise\r
- negation `~' to `unsigned int' if operand is `unsigned int' or\r
- to `unsigned long' if operand is `unsigned long'\r
- \r
- * fixed bug with lexical analyzer failing to handle ULONG_MAX\r
- correctly.\r
-\r
- * corrected definition of LONG_MAX for the WIN32 platform.\r
- \r
- * fixed bug with EiC/main/example/embedEiC.c\r
- being platform dependent.\r
-\r
- * fixed Jean-Bruno Richard's report that EiC\r
- was failing to implicitly dereference pointers\r
- to functions when declared as structure members\r
- during function calls:\r
-\r
- EiC 1> void foo() { printf("hello\n"); }\r
- EiC 2> typedef struct { void (*f)(); } Test;\r
- EiC 3> Test *x, y;\r
- EiC 4> x = &y; x->f = foo;\r
- EiC 5> (*x->f)(); // explicit dereference old C style\r
- EiC 5> x->f(); // implicit dereference new C style\r
- EiC 6> y.f(); // implicit dereference new C style\r
-\r
-</pre>\r
-<b>Changes from 4.1.1 to 4.1.2 (Jul 18 1999)</b>\r
-<pre>\r
- \r
- *** Igloo, a port of EiC to WIN32 with opengl support, with \r
- the NT4 glu/glut/opengl DLLs by Jean-Bruno Richard, has\r
- been added to EiC/contribute directory:\r
-\r
- www.pobox.com/~eic/EiCdist/contribute\r
-\r
- *** the WIN32 port now looks for the environmental variable\r
- HOMEofEiC \r
-\r
- *** readline has been ported so it works also under WIN32 using MSVC++.\r
-\r
-</pre> \r
-<b>Changes from 4.1.0 to 4.1.1</b>\r
-<pre>\r
-\r
- * Fixed problems with EiC binary install procedure\r
-\r
-</pre>\r
-<b>Changes from 4.0.1 to 4.1.0 (Jun 26 1999)</b>\r
-<pre>\r
-\r
- *** An EiC module to interface to the C-API of MySQL \r
- (3.22.22-2) is available from:\r
- \r
- http://www.datagrid.com/~eic/modules\r
-\r
- ****** EiC now supports long longs:\r
-\r
- EiC > long long a; unsigned long long b;\r
-\r
- NOTE at this stage `unsigned long long' is simply\r
- mapped to `long long'; that is, `unsigned long long'\r
- is not yet properly supported and is handled as \r
- signed values. \r
-\r
- ****** an alien of port of EiC to the WIN32 platform has been \r
- contributed by Jean-Bruno Richard.\r
- \r
- ***** Ported EiC to FreeBSD.\r
- \r
-\r
- *** The reliance on the use of the `ksh' shell in EiC's make\r
- system has been removed.\r
-\r
- * fixed bug with redeclarations of reference variables \r
- causing any immediately and previously declared \r
- variable in the same translation unit to get corrupted; \r
- example:\r
-\r
- EiC 1> int a; int b @ &a;\r
- EiC 2> double c; extern int b;\r
-\r
- `c' will now be of type `int'.\r
-\r
- * the platform dependent bug with `:gen' and \r
- printf's %p conversion character used for \r
- interfacing with shared variables has been fixed, \r
- by using %ld.\r
-\r
- * fixed bug with EiC's automatic interface generation \r
- failing to handle enumeration constants properly.\r
- \r
- * fixed bug with EiC's automatic interface generation\r
- failing to handle the return of unsafe pointers\r
- correctly.\r
-\r
-\r
-</pre>\r
-<b>Changes from 4.0 to 4.0.1 (May 23 1999)</b>\r
-<pre>\r
-\r
-\r
- *** Debian `deb' and RedHat `rpm' packages for EiC's\r
- binary distribution are now available from home\r
- page.\r
- \r
- *** updated EiC's binary installation procedure -- corrected\r
- some inconsistencies.\r
- \r
- *** changed the names of several files in \r
- EiC/module/cgihtml/cgi-bin to reflect a more \r
- consistent nomenclature.\r
- \r
- * fixed 3 bugs as reported by Larry Battraw:\r
- (1) setting HOMEofEiC in EiC/main/Makefile line 13, \r
- via $(PWD)/.. fails when using bash. Changed to:\r
-\r
- HOMEofEiC := $(shell pwd)/..\r
-\r
- (2) Under linux the file dirent.c tries to include \r
- "direntry.h" when it really wants dirent.h:\r
-\r
- removed inclusion of direntry.h \r
- \r
- (3) In the stdClib directory, the \r
- file stdio.c defines the following on line 66:\r
- static FILE * book2[FOPEN_MAX] = {stdin,stdout,stderr};\r
- Gcc complains about stdin, stdout, etc. not being \r
- constants. corrected initialisation problem.\r
-\r
- * fixed bugs with EiC's binary distribution installation \r
- procedure.\r
-\r
- * fixed bug with EiC's automatic interface generation \r
- returning pointers from builtin code properly.\r
-\r
- * fixed bug with EiC'c automatic interface generation not \r
- handling typedefs correctly.\r
-\r
-\r
-</pre>\r
-<b>Changes from 3.9 to 4.0 Fri (May 17 1999)</b>\r
-<pre>\r
-\r
- ****** EiC now supports callbacks. That is, it is possible for \r
- compiled code to call EiC interpreter functions. The \r
- compiled code doesn't need to be altered. It is all \r
- handled through EiC's interface to builtin code. The \r
- basic design was developed and contributed to EiC by \r
- Jean-Bruno Richard.\r
-\r
- The same builtin code can make callbacks to different\r
- functions, which take different number and different \r
- types of arguments, but not to functions that take a \r
- variable number of arguments. \r
-\r
- At this stage all the basic scalar types and arrays of\r
- scalars are supported through the callback\r
- mechanism. Updates and patches will be made available as\r
- support for more data types are added.\r
- \r
-\r
- ****** Jean-Bruno Richard also initiated EiC's\r
- command `:gen', which is used for automating\r
- the generation of EiC interface code to\r
- compiled library code:\r
-\r
- EiC 1> #include foo.h\r
- EiC 2> :gen foo.h\r
-\r
- The interface routines will be printed\r
- to stdout, unless the optional string argument \r
- is used to redirect the output to a file:\r
-\r
- EiC 3> :gen foo.h "foo.c"\r
-\r
-\r
- ****** Mesa/Opengl has been interfaced to EiC via glut. Its\r
- interface module can be found in: \r
- \r
- www.pobox.com/~eic/modules\r
-\r
- Example code is also given in the module distribution (GL).\r
-\r
- ******* Jochen Pohl has ported EiC to NETBSD and\r
- Solaris/i386. In doing so Jochen Pohl made the following \r
- changes to EiC's distribution:\r
- ./Makefile\r
- ./src/Makefile\r
- - under NetBSD, ksh is installed as /bin/ksh, not /usr/bin/ksh.\r
- ./README\r
- ./config/alignment.c\r
- ./src/metric.h\r
- ./src/ppc403/include/metric.h\r
- - renamed LITTLE_ENDIAN in EIC_LITTLE_ENDIAN to avoid conflict\r
- with system header file\r
- - for i386 and sparc, use hardware name instead of operating\r
- system to define data size and alignment\r
- ./config/makeconfig\r
- - if shell variable PWD not set or empty, set it to `pwd`\r
- - use cp -f to overwrite read only files\r
- ./main/main.c\r
- - define __LITTLE_ENDIAN__ as 1 or 0, depending on whether\r
- the machine is littel endian or not. Needed on some tests\r
- to get them running on both little endian and big endian\r
- machines\r
- - define __LP64__ or __ILP32__, depending on whether the machine\r
- has 64 or 32 bit longs and pointers. Needed in in NetBSD\r
- header files to add (untested) support for alpha CPU.\r
- ./module/stdClib/src/dirent.c:\r
- - telldir() and seekdir() use long, not off_t. would make a\r
- difference on NetBSD, where off_t is long long.\r
- ./src/eicval.h\r
- - on NetBSD, use long instead of off_t for offval (because\r
- off_t is long long)\r
- ./test/runtest\r
- - use either echo -n foo or echo foo\c\r
- ./test/EiCtests/teststdio.c\r
- - fixed assertions (STDC requires that the return value of\r
- fputs() is EOF on error and a nonnegative value otherwise)\r
- ./test/eicScripts/Driver.c.def\r
- ./test/eicScripts/script1.eic\r
- ./test/eicScripts/script2.eic\r
- ./test/eicScripts/www_eic.eic\r
- - change path to eic binary to some standard value\r
- ./test/posix.1/tstfilelock.c\r
- - use memset() to initialize struct flock to zero.\r
- necessary because under NetBSD the l_start and\r
- l_len values are 64 bit, but only 32 bit can be\r
- set from eic\r
- - before F_GETLK, set lock type to F_WRLCK. necessary\r
- because F_GETLK returns the first lock that blocks\r
- the lock description pointed to by the third argument.\r
- if this lock description has lock type F_UNLCK,\r
- probably no lock will be returned.\r
- ./test/sniptests/bitcnt_4.c\r
- ./test/sniptests/bitops.h\r
- - use unsigned long instead of long to avoid infinite\r
- recursion if a negative long is passed to either\r
- ntbl_bitcnt() or btbl_bitcnt().\r
- - fixed btbl_bitcnt() to work on big endian machines too.\r
- ./test/sniptests/dbl2long.c\r
- - make this test work on big endian machines (and, hopefully,\r
- on LP64 machines).\r
-\r
- *** There is now an Advanced section\r
- in EiC's documentation explaining how\r
- to build an EiC module, and how to perform\r
- callbacks.\r
-\r
- www.pobox.com/~eic/EiC\r
-\r
- *** EiC web page now contains a separate section\r
- for EiC modules. \r
-\r
- www.pobox.com/~eic/modules\r
-\r
- *** The parse_form_encoded function of\r
- the EiC's cgihtml library module has been modified\r
- to do buffered IO rather than just single byte\r
- IO. This improves the speed of this\r
- function for http file uploads by 2 to 3 fold.\r
-\r
- *** Several changes and additions have been made to\r
- EiC's module MathStats.\r
-\r
- *** The infinite loop that one runs into by running \r
- "eic < infile" if there is no `:exit' at the end\r
- of the infile has been fixed -- kindof. EiC now\r
- recognises the EOF for this purpose iff the\r
- Non-interactive flag `A' is used:\r
-\r
- eic -As < infile\r
- \r
- Otherwise `:exit' must still be present. \r
-\r
-\r
- * fixed bug with the address operator\r
- not working with pointers:\r
-\r
- EiC 1> int b = 22; int *a = &b;\r
- EiC 2> int *c @ &a;\r
- EiC 3> assert(*c == 22);\r
-\r
- * fixed bug with redeclaration \r
- error being reported for extern\r
- definitions of variables declared\r
- previously as reference variables\r
- via the address `@' operator \r
-\r
- EiC 1> int a; int b @ &a;\r
- EiC 2> extern int b;\r
-\r
- * fixed bug with EiC not being reentrant\r
- with respect to callback code.\r
-\r
- * fixed bug with EiC_parseString failing\r
- if called from a translation unit,\r
- which have strings that gets gabbage collected.\r
- For example:\r
-\r
- EiC > while(i++<5) printf("%d\n",func());\r
-\r
- where func is a builtin function that\r
- calls EiC_parseString. The string\r
- "%d\n", would be gabbage collected after\r
- the first call to EiC_parseString, and\r
- before the calling translation is finished.\r
- \r
-\r
- * fixed bug with EiC reporting a redeclaration error\r
- for macros with null token sequence when seen more \r
- than once:\r
- \r
- EiC 1> #define X\r
- EiC 2> #define X\r
-\r
- * Fixed Jean-Bruno Richard's report of EiC\r
- failing with the unary opertor `+' when\r
- applied to constants:\r
- \r
- EiC 1> #define X 1\r
- EiC 2> +X;\r
-\r
- * Incorporated Tim Baker's bug fixes with respect\r
- to handling declared const types within \r
- unary operations properly and EiC failing to\r
- parse if-statements, if the type of the expression\r
- evaluates to unsigned short int:\r
-\r
- unsigned short a[1] = {1};\r
- if (a[0])\r
- a[0]--;\r
-\r
-</pre>\r
-<b>Changes from 3.8 to 3.9 Fri (Apr 2 1999)</b>\r
-<pre>\r
-\r
- ****** Eugene Brooks has helped modify EiC so it \r
- builds without using its own headers, and\r
- no longer defines its own version of the\r
- stdio functions. This is designed to eliminate\r
- conflicts between system code and EiC when\r
- embedding EiC into other systems\r
- ****** EiC no longer compiles out-of-the-box\r
- under SUNOS 4.1 or less -- unless your C \r
- implementation is ISO/ANSI C compliant \r
- ** EiC now also parses `\r\n' line endings rather\r
- than just the Unix style `\n'\r
- ** Matt Minnis has modified EiC's show\r
- routine so that it also displays a variables\r
- value along with its type\r
- * fixed bug with EiC becoming unstable\r
- when an error occurs during the parsing of a translation\r
- unit with a prototype to a builtin function.\r
- This is a fix to one of EiC's most outstanding\r
- bugs :)\r
- * re-fixed bug with EiC not allowing for the\r
- re-declaration of enumeration types\r
- * fixed bug with EiC's restart mechanism sometimes reporting\r
- an illegal operation when initiated via\r
- eic -r or eic -R\r
- * fixed bug with EiC not handling global scalar const \r
- objects properly.\r
-\r
-</pre> \r
-<b>Changes from 3.7.5 to 3.8 (Feb 6 1999)</b>\r
-<pre>\r
-\r
- ****** added the address specifier operator `@':\r
-\r
- int a @ dddd;\r
-\r
- defines `a' to be an integer whose value\r
- is at address dddd. dddd must be a constant \r
- integral express. This will then, among other things,\r
- allow the following type of call to be setup from \r
- outside EiC:\r
- \r
- double d;\r
- EiC_parseString("double d @ %ld",(long)&d);\r
-\r
- At this stage the address specifier can be applied to\r
- objects or to functions that accept void arguments \r
- and which return void:\r
-\r
- void foo(void) { puts("Hello world!\n");}\r
- EiC_parseString("void foo(void) @ %ld",(long)foo);\r
-\r
- *** Bret Deck and Eugene Brooks have improved\r
- EiC error detection mechanism for identifying array bound\r
- and memory address violations. \r
- *** technical document EiC/doc/tech_docs/typesets.doc\r
- explains how object types and operators are (can be)\r
- added to EiC.\r
- *** I have rationalised/cleaned-up EiC stdClib interface.\r
- However, a major revision of how EiC's implements the\r
- standard C library is under development.\r
- * fixed bug with EiC's interpreter not being\r
- reentrant\r
- * fixed bug with EiC not handling typedef types correctly \r
- with respect to scope such as: \r
- typedef struct { char a; } c;\r
- typedef struct { short c; } scs;\r
- * fixed bug with EiC not determining the sizeof\r
- enumeration types; that is: \r
- sizeof(<enumeration_type>)\r
- * fixed bug with the use of enumeration types\r
- as structure/union members\r
- * fixed bug with EiC not handling pointers to\r
- enumeration variables correctly.\r
- * fixed bug with EiC not allowing for the\r
- re declaration of enumeration types.\r
- * Massaged EiC's tex documents so as LaTeX2html \r
- would do a better job in building EiC's\r
- online documentation. \r
-\r
-\r
-</pre>\r
-<b>Changes from 3.7.2 to 3.7.5 (Nov 23 1998)</b>\r
-<pre>\r
-\r
- ****** added the pointer type qualifiers `safe' and \r
- `unsafe' to the EiC language. For example:\r
-\r
- int * unsafe p;\r
-\r
- defines `p' to be an `unsafe' pointer or a normal C type \r
- pointer, while\r
-\r
- int * safe p; \r
-\r
- defines `p' to be a `safe' pointer, which is the normal \r
- EiC type pointer. \r
- Rationale: to make it easier to interface EiC to builtin \r
- library functions, which use `unsafe' pointers and take \r
- argument types such as: arrays of pointers or structures \r
- with pointer members. \r
- ****** to control the default pointer type, three pragma\r
- directives have been added to the EiC language and which work \r
- on a stack principle:\r
-\r
- #pragma push_safeptr /* default pointer type is safe */\r
- #pragma push_unsafeptr /* default pointer type is unsafe */\r
- #pragma pop_ptr /* return to previous ptr type. */\r
-\r
- *** the EiC_parseString function now accepts variable \r
- arguments:\r
- \r
- EiC_parseString(char *fmt, ...);\r
- \r
- *** the howto documentation for adding builtin \r
- functions to EiC has been upgraded to reflect\r
- the usage of safe and unsafe pointer, see:\r
- .../EiC/doc/tech_doc/builtin.doc\r
- *** the `p' conversion character in printf now \r
- prints out in hexidecimal format.\r
- *** the `p' conversion character in scanf now\r
- matches a hexidecimal input sequence corresponding\r
- to the output style of printf. \r
- * fixed EiC's Linux definitons of various system\r
- types not being libc6 compatible; such as\r
- `struct stat', `struct dirent' and `struct tm'\r
- * fixed bug with the casting of integer constants\r
- to pointers:\r
- int *p = (int*)dddd;\r
- where dddd is a numeric integer constant. \r
- * fixed bug with EiC's `:rm' facility\r
- failing to remove properly typedef definitions\r
- of array types.\r
-\r
-</pre>\r
-<b>Changes from 3.7.1 to 3.7.2 (Aug 23 1998)</b>\r
-<pre>\r
- \r
- * fixed bug with internal signal code not being\r
- GNU libc6 compatible\r
- *** The PowerPC 403 port of EiC has \r
- been incorporated into the main distribution\r
- of EiC.\r
- *** EiC now considers it illegal for the \r
- function `main' not to return type `int'\r
- *** In script mode, control is now passed\r
- to a main function if it exists. This\r
- makes it easier to run C programs via\r
- EiC's script mode\r
- * fixed bug with EiC failing to recognise\r
- the ISO C additional escape-code '\?'\r
-\r
-</pre>\r
-<b>Changes from 3.7 to 3.7.1 </b>\r
-<pre>\r
-\r
- * fixed bug with sys/stat.h for\r
- SOLARIS and IRIX platforms\r
- * fixed bug in readdir on the SOLARIS\r
- and IRIX platforms due to safeptrs \r
-\r
-</pre>\r
-<b>Changes from 3.6 to 3.7</b>\r
-<pre>\r
- \r
- * added the unistd.h function chdir\r
- *** added facilities to interface with EiC\r
- from other programs. \r
- See the EiC/main/README file in the source\r
- distribution for more details.\r
- * fixed bug with printf handling:\r
- printf("%s\n",NULL);\r
- * fixed bug with strtok due to \r
- safe pointers\r
- *** EiC can now be compiled on a HPUX\r
- platform thanks to Alf Clement.\r
- *** The main distribution now has a contribution\r
- section, that includes a port of EiC for the PowerPC\r
- 403 thanks to Larry Battraw.\r
- *** Eugene Kim's upgrade of cgihtml (1.69) \r
- has been incorporated\r
-\r
-</pre>\r
-<b>Changes from 3.5 to 3.6 </b>\r
-<pre>\r
-\r
- *** added module `xv', which\r
- provides a primative interface\r
- to xv. \r
- * Fixed bug in EiC's test-module\r
- EiC/test/EiCtests/testinclude.c \r
- * Documentation updated to reflect\r
- EiC's internet programming facility.\r
- * if EiC is installed in /usr/local\r
- then the environmental variable \r
- HOMEofEiC does not need to be\r
- defined \r
- *** added the command line switch '-e'.\r
- It is used for debugging CGI scripts.\r
- See documentation for details. \r
- * fixed bug with fgetc not returning \r
- the next character as an unsigned char\r
- converted to an int\r
- * fixed bug with EiC core dumping when\r
- the environmental variable HOMEofEiC is \r
- not defined\r
-\r
-</pre>\r
-<b>Changes from 3.4 to 3.5</b>\r
-<pre>\r
-\r
- *** added module `cgihtml'\r
- ****** all global variables and functions declared \r
- static within an include file are now private to \r
- that file, and are only visible within the scope of\r
- the include file. Therefore, in general, their \r
- names will not clash with the names of any global \r
- variable visible from the EiC prompt or within any other \r
- include file.\r
- * fixed bug with EiC becoming internally\r
- unstable after passing structures/unions\r
- by value to functions from scope level\r
- file:\r
- EiC > struct {int a, b;} ab_t;\r
- ...\r
- EiC > foo(ab_t); // eic is now unstable\r
- * fixed bug with type conflicts generated by\r
- declarations of the type:\r
- int ff(char *ff);\r
- and definitions of the type:\r
- int ss(int ss) { return ss;}\r
- * fixed bug caused by safe pointers\r
- when passing structures by value\r
- to functions.\r
- * rationalised slightly the header\r
- files in EiC/src\r
-\r
-</pre>\r
-<b>Changes from 3.3 to 3.4 </b>\r
-<pre>\r
-\r
- *** added modules `tools' and `examples' \r
- * documentation updated\r
- *** most of the example code given in\r
- EiC's documentation is now included\r
- in the directory:\r
- ../EiC/module/examples\r
- *** the installation procedure has\r
- changed; this is because `eicc' no\r
- longer exists.\r
- ****** EiC can run its own shell scripts of the form:\r
- #!/usr/local/bin/eic -f\r
- #include <stdio.h>\r
- printf("Hello, world.\n");\r
- * fixed bug with enum being declared extern:\r
- enum rgb {RED,GREEN, BLUE};\r
- extern enum rgb colour;\r
- enum rgb colour = RED;\r
- * fixed bug with the comma operator processing\r
- syntax of the form:\r
- foo(),f;\r
- * fixed bug with boundary affects, due to \r
- safe pointers, in `memmove' and `strncpy'\r
- * fixed bug with eic failing to cast \r
- `unsigned int' to `long' properly \r
- on platforms where sizeof(int) == sizeof(long)\r
- * fixed bug with eic to pass command line \r
- arguments in double quotes properly:\r
- % eic main2.c " hello world "\r
- * fixed bugs with safe pointers when dealing with:\r
- int a, b; memcpy(&a,&b,sizeof(b));\r
- * fixed bug with using casts with type qualifiers:\r
- (const char *)p;\r
- * fixed bug with the incrementing or deincrementing\r
- of arrays passed to functions:\r
- void foo(char *argv[]) \r
- ...\r
- *++argv; //bug here\r
- * fixed bug with the initialisation of char arrays\r
- of the type:\r
- char buf[13] = "\0""1234456789";\r
- * fixed bug with pp directives of the type: \r
- #if !(hello)\r
- * for main, argv[argc] is now set to NULL on setup. \r
- * fixed bug with the formation of a new macro during\r
- an expansion that extends across multiple lines. \r
-\r
-</pre>\r
-<b>Changes from 3.2 to 3.3 </b>\r
-<pre>\r
-\r
- *** improved array bound checking functionality \r
- * update of EiC's documentation (still needs some work though) \r
- *** implemented the <stdlib.h> function `atexit'\r
- * fixed bug with rename not removing the oldfile\r
- * fixed bug with gets setting the wrong flag, preventing\r
- it from working correctly with the rest of the <stdio.h> \r
- IO functions.\r
- *** added the <stdio.h> function freopen\r
- * fixed several bugs with EiC's <stdio.h> functions\r
-\r
-</pre>\r
-<b>Changes from 3.1 to 3.2</b>\r
-<pre>\r
-\r
- * fixed several bugs in EiC's <string.h>\r
- functions\r
- *** added the switch -N to stop eic from using\r
- any startup.h file when started.\r
- ****** MADE EiC POINTER SAFE (alpha stage) \r
- * fixed bug with EiC repeatedly catching\r
- the same SIGNAL violation\r
- * fixed bug with the initialising of\r
- non STR variables\r
-\r
-</pre>\r
-<b>Changes from 3.0 to 3.1</b>\r
-<pre>\r
-\r
- * fixed defect with showMacro.\r
- * corrected NULL pointer definition.\r
- * fixed typo in "unsigned char" \r
- * fixed checking of function return type\r
- *** added POSIX.1 functions `access' and `fcntl'\r
- * convert to unsigned int for `%b'; i.e. \r
- printf("%b",15) -> binary numbers are unsigned.\r
- * fixed bug with indexing arrays of pointers with\r
- the assign operator.\r
- * prevented interpreter functions from masking \r
- builtin functions.\r
- * fixed problem with the initialisation of a global\r
- char NULL pointer:\r
- char *p = NULL;\r
- *** added the interpreter command ":clear"\r
-\r
-\r
-</pre>\r
-<b>Changes from 0 to 3.0</b>\r
-<pre>\r
-\r
- Too many to list\r
-\r
-</pre>\r
-</multicol>\r
-\r
-\r
-<ADDRESS>\r
-<!-- ADDRESS field used for automatic insertion of links -->\r
-</ADDRESS>\r
-\r
-</body>\r
-</html>\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r