David Given
bb78fd158c
Move the big gnarly functions like system() and popen() into sys, and make them
...
build.
2018-06-23 19:18:16 +02:00
David Given
6a729b846a
Move stdio into (mostly) sys.
2018-06-23 18:54:40 +02:00
David Given
af22b7ea85
Change stdio to use atexit() rather than the internal __clean variable; this
...
breaks the dependency between exit/atexit and stdio. Buffers are no longer
flushed on abort() (because it's pretty risky). Move the relevant functions
into sys/core.
2018-06-23 18:35:45 +02:00
David Given
f744a21699
All the opendir()/readdir() stuff is obsolete because it's all implemented in
...
terms of open() and read(), which isn't how it's done any more; move the
functions into an attic.
2018-06-23 18:25:26 +02:00
David Given
df1cdf7762
Add the sys directory for libc functions which use system calls; move the
...
malloc functions in there.
2018-06-23 18:08:03 +02:00
David Given
c4e4505a73
Move the errno functions into core.
2018-06-23 17:52:15 +02:00
David Given
538eefb573
Get em22 working. Remove the leading-underscore system calls from its libsys.
2018-06-23 15:57:57 +02:00
David Given
680b4071b7
Made the two OSX platforms work with the new libc layout.
2018-06-23 12:55:59 +02:00
David Given
b727b7affd
Make linuxppc work.
2018-06-23 12:41:54 +02:00
David Given
b267b56ad9
Made linux68k work; commoned up all the generic linux includes.
2018-06-23 12:35:17 +02:00
David Given
66815ff987
Make linux386 work with the new libc layout.
2018-06-23 12:13:33 +02:00
David Given
32c881474e
Create a basic and probably wrong common unistd.h, which replaces the plat one.
...
Made this work with cpm (but nothing else yet).
2018-06-23 11:46:55 +02:00
David Given
dd0f959245
Move assert into core.
2018-06-23 11:16:06 +02:00
David Given
5fd8d772fd
Move the string-to-float functions into core, after marking them as
...
ACKCONF_WANT_FLOAT.
2018-06-23 11:14:24 +02:00
David Given
94ffa3ba88
libc floating point and stdio floating point can now be turned on and off using
...
ACKCONF variables.
2018-06-23 00:04:14 +02:00
David Given
9bf1d548fc
Rearrange the libc config files, ready for adding new options.
2018-06-22 23:43:15 +02:00
David Given
b21c099a57
Get the em libc working again: remove the modula-2 termcap library, as it's a
...
straight copy of the libc one and having two symbols defined at once gets ass
upset.
2018-06-22 23:17:14 +02:00
David Given
c0276416d8
Move some more libc functions into core.
2018-06-22 22:20:02 +02:00
David Given
d1cdb07719
Realise that the libc core can safely call other libc core functions, even if
...
they're not defined in the core: so putw() can call stdio stuff, for example.
So the earlier concept of pureness isn't necessary. Rename accordingly.
2018-06-21 23:24:23 +02:00
David Given
62025c92bd
The ctype functions are pure.
2018-06-21 23:06:29 +02:00
David Given
d9d7ffe0d7
The maths library is pure.
2018-06-21 23:00:33 +02:00
David Given
f9c059812b
Moved the setjmp functions into the new pure directoy.
2018-06-21 22:55:42 +02:00
David Given
32f47b1d24
Move the pure locale functions into the new pure directory.
2018-06-21 22:54:25 +02:00
David Given
b9d2f353d9
Move the pure stdlib functions into the new pure directory.
2018-06-21 22:52:31 +02:00
David Given
4dbdb7d8d5
Rethink the libc layout.
2018-06-21 22:47:02 +02:00
David Given
83e1b2ad94
Move the str and mem functions into the new src/core.
2018-06-21 22:39:08 +02:00
David Given
93f39e4bbf
Run libcc.ansi through clang-format.
2018-06-21 22:33:47 +02:00
David Given
698613cd7d
Turns out that the compiler needs access to the libpc headers too; refactor
...
into a separate target to avoid build loops and make it work.
2018-06-18 22:17:38 +02:00
David Given
11854f4dfe
Ansify and warning fix.
2018-06-17 22:30:27 +02:00
David Given
5784f5fabe
Run C files through clang-format.
2018-06-17 16:11:29 +02:00
David Given
9ede428e3c
Use cproto to extract all the prototypes.
2018-06-17 16:10:57 +02:00
David Given
9947e7ac63
Added a pc.h to contain libpc prototypes; some ansification.
2018-06-17 15:54:18 +02:00
David Given
d1671fc2e3
Move the private Pascal headers into libpc where they belong.
2018-06-17 15:44:33 +02:00
David Given
13e195d19f
Warning fixes.
2018-06-17 15:42:26 +02:00
David Given
7eaa235fd1
Bodge the ancient em monitor library into building as a libsys for the em22
...
plat. It's completely untested, but it builds and makes e.out executables.
2018-06-13 21:44:25 +09:00
David Given
13a7abdd69
Rename a function to avoid a clash with an em system call.
2018-06-13 21:34:14 +09:00
David Given
d623440c77
Add the core of a simple em22 platform. Unfortunately it doesn't work; the old
...
em libmon vanished decades ago (or never existed), and also ass appears to have
a different idea of what the em opcodes are to everything else and gets
confused.
2018-06-10 20:25:48 +09:00
David Given
3f049a4c29
Basic mid now throws an error on out-of-bounds parameters rather than returning
...
an uninitialised pointer (and crashing).
Fixes : #54
2018-06-05 09:53:56 +09:00
David Given
b85c25e4e5
Fix resource leak.
...
Closes : #75
2018-06-02 20:59:11 +02:00
David Given
d6e65833fb
Format.
2018-06-02 20:57:43 +02:00
David Given
05ddefad65
Adopt a copy of Minix 2's ed; this allows the ACK's antiquated ed scripts to
...
run with a minimum of tweaking. Rewriting them for modern ed looks really hard.
Fixes : #84
2018-06-02 18:02:51 +02:00
David Given
d5a9f1541a
lchar() needs to return the character written. (This happens by magic on 386,
...
but no on PPC.) See #72 .
2018-03-11 11:00:35 +01:00
David Given
6d91bdbbbd
Merge pull request #69 from kernigh/kernigh-stdc
...
use libc assert, strcmp; declare more functions; fewer clang warnings
2017-11-19 12:00:40 +01:00
David Given
fb90b7b8d8
Merge pull request #66 from davidgiven/dtrg-warnings
...
lang/basic/lib: fewer warnings
2017-11-19 11:39:45 +01:00
George Koehler
87a2315037
strcmp, strncmp are in <string.h>
...
*Important:* Do `make clean` to work around a problem and prevent
infinite rebuilds, https://github.com/davidgiven/ack/issues/68
I edit tokens.g in util/LLgen/src, so I regenerate tokens.c. The
regeneration script bootstrap.sh can't find LLgen, but I can run the
same command by typing the path to llgen.
2017-11-14 17:35:35 -05:00
George Koehler
229b80a004
Free buf in GetFile().
...
aprintf() returns a const char *; the assignment to char * caused both
clang and gcc to warn of the dropped const.
Commit 893471a
introduced a tiny memory leak, because GetFile()
stopped freeing buf. The const return type of aprintf() suggests that
the buffer must not be freed.
Now use Malloc() to allocate the buffer and free() to free it. This
also checks if we are out of memory, because Malloc() does the check
and aprintf() currently doesn't.
2017-11-13 21:34:31 -05:00
George Koehler
974fa93491
Silence warning about pointer cast to int.
...
This cast was safe because the pointer is a small constant integer,
but it causes warning from gcc.
2017-11-13 20:58:57 -05:00
George Koehler
ddf9de3f49
strcpy() is in <string.h>
2017-11-13 17:57:02 -05:00
George Koehler
3463f0c944
bts2str(), long2str() are in <ack_string.h>
2017-11-10 18:00:00 -05:00
George Koehler
ca4bd38206
Delete old "assert.h" files; use libc <assert.h>.
...
Edit build.lua for programs losing their private assert.h, so they
depend on a list of .h files excluding assert.h.
Remove modules/src/assert; it would be a dependency of cpp.ansi but we
didn't build it, so cpp.ansi uses the libc assert.
I hope that libc <assert.h> can better report failed assertions. Some
old "assert.h" files didn't report the expression. Some reported a
literal "x", because traditional C expanded the macro parameter x in
"x", but ANSI C89 doesn't expand macro parameters in string literals.
2017-11-09 22:22:13 -05:00