David Given
3131dc9915
Partially working port of stdio to CP/M. I'm not sure this will work; it's
...
getting way too complicated (stdio is horribly subtle). I think I need to
rethink things.
2019-06-15 22:22:01 +02:00
David Given
1387c8713b
Now that printf and scanf contain no FILE*-specific code, we can move them into
...
core (and split them up).
2019-06-15 13:53:20 +02:00
David Given
9109d7af7f
First stage in modularising FILE*. Refactor so that printf/scanf don't rely on
...
FILE* innards; allow plats to replace the entire emulated FILE* system.
2019-06-15 13:07:10 +02:00
David Given
79fd34dac6
Call atexit handlers properly, avoiding a NPE and seg fault every time a
...
program exits.
2018-09-09 18:51:00 +02:00
David Given
fd94e219d4
Remove the attic.
2018-06-23 23:16:22 +02:00
David Given
59dbdea48a
Move mktemp to sys; attic getgrent as noone will ever use this.
2018-06-23 23:15:42 +02:00
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
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
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
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
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
George Koehler
75ae957c75
Don't check ferror(fp) when reading fp.
...
If feof(fp) or ferror(fp) was set, then our libc returned EOF for all
later reads without trying to read. Our libc now behaves like BSD
(and probably Illumos and musl) by checking only feof(fp). For
difference, glibc doesn't check feof(fp).
I described the difference between our libc and BSD libc in
https://sourceforge.net/p/tack/mailman/message/35430300/
2017-10-28 16:20:48 -04:00
George Koehler
54028e403e
Delete unused misc/getpw.c from libc.
...
@hexcoder- reported in https://github.com/davidgiven/ack/issues/57
that our getpw() has bugs.
I don't fix these bugs, because Illumos and Linux manual pages say
that getpw() is obsolete. The function can overflow its buffer, so it
is never safe to use. Our libc did not build getpw().
2017-10-28 14:25:39 -04:00
George Koehler
0a2dfd650d
Delete malloc.h and tgmath.h from libc.
...
This malloc.h might get confused with the private malloc.h in our
libc. C programs should #include <stdlib.h> for malloc().
This tgmath.h has no useful content, and never worked because
complex.h is missing.
Touch build.lua (by deleting some whitespace) so the *.h globs see
the deletions.
2017-10-28 14:24:35 -04:00
George Koehler
b00a2c906d
Build fdopen(), hypot(), putenv() in libc.
...
These functions are in POSIX; hypot() is in C99. Also build cabs()
because it rides with hypot(), but don't declare cabs() in any header
file, because our compiler can't parse C99 "double complex" type.
Touch build.lua so it sees that .c files moved.
2017-10-28 13:33:57 -04:00
David Given
c569ca15d8
Clean up how the language libraries refer to plat headers; they should be using
...
the +pkg forms of the rules and getting the headers via the paths in descr,
rather than depending on the +headers version.
2016-12-05 21:05:24 +01:00
David Given
9481487e3d
Implement calloc() (accidentally got dropped with the malloc rewrite).
2016-11-23 22:16:25 +01:00
George Koehler
08f9869a63
Remove unused defines from lang/cem/libcc.ansi/math/localmath.h
...
This undoes part of bfeb736
, and returns to using DBL_MAX_EXP and
DBL_MIN_EXP from float.h.
Add a dependency on math/localmath.h and other local header files so
libc is rebuilt when those headers change.
2016-11-06 15:49:47 -05:00
George Koehler
19ca28e22f
Undo commit bfeb736
for lang/cem/libcc.ansi/headers/float.h
...
This restores the correct values of DBL_MAX, DBL_MIN_EXP, and related
constants. This fixes some range checks within libc, causing
atof("-36e90") and atof("1.44e-288") to return the correct values.
2016-11-06 15:01:25 -05:00
David Given
f67c98e239
Distributions are a pain --- let's not bother any more. Instead, we just tag
...
the repository and download a complete snapshot, old and ancient stuff and all.
2016-09-02 23:00:38 +02:00
David Given
612e38f1c6
Remove the old make-based build system, plus some big chunks of horribly
...
obsolete protomake build system.
2016-09-02 22:17:51 +02:00
David Given
856eb120b3
Add files which got missed in the initial build pass.
2016-08-20 14:04:17 +02:00