Commit graph

1947 commits

Author SHA1 Message Date
David Given 3f10299f43 Move the portable time code into core. clock() goes into sys (as it calls
times()).
2018-06-23 19:49:29 +02:00
David Given 64ae1d7583 Move time() into sys; change the name of the variable which controls it. 2018-06-23 19:40:50 +02:00
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