1 |
2005-09-06 Joerg Wunsch <j.gnu@uriah.heep.sax.de> |
2005-09-06 Joerg Wunsch <j.gnu@uriah.heep.sax.de> |
2 |
|
|
3 |
|
Major API changes of the standard IO facilities. |
4 |
|
|
5 |
|
Part of these changes (passing user data to get and put) |
6 |
|
have been contributed by Ted Roth as patch #3750. |
7 |
|
|
8 |
|
* include/stdio.h: implement the new prototype for fdevopen() |
9 |
|
that allows passing user data to the backend put and get |
10 |
|
functions; retain a backwards-compatible prototype iff |
11 |
|
__STDIO_FDEVOPEN_COMPAT_12 is defined before including stdio.h; |
12 |
|
move definition of struct __file from stdio_internal.h here, so |
13 |
|
user code will be able to directly declare objects of type FILE; |
14 |
|
include the udata field in struct __file; add macros |
15 |
|
fdev_set_udata() and fdev_get_udata() to access the user data |
16 |
|
field; implement a macro-based, malloc()-free alternative API |
17 |
|
to fdevopen() consisting of the macros fdev_setup_stream() and |
18 |
|
FDEV_SETUP_STREAM() together with _FDEV_SETUP_READ, |
19 |
|
_FDEV_SETUP_WRITE, and _FDEV_SETUP_RW that can be passed to |
20 |
|
declare the open intent; add _FDEV_ERR and _FDEV_EOF to be |
21 |
|
returned by the internal get function; add inline macros |
22 |
|
shadowing the functions clearerr(), feof(), and ferror() (now |
23 |
|
that struct __file is user-visible); add documentation for all |
24 |
|
the API changes in the introduction; sub-structure the |
25 |
|
introductional doxygen comment; remove the "this is likely to |
26 |
|
be changed in future" warning. |
27 |
|
* libc/stdio/fdevopen.c (fdevopen): Update dox for new get and put |
28 |
|
argument types. |
29 |
|
Change the get() and put() function pointers so that they take the |
30 |
|
stream as an argument. |
31 |
|
Remove the definition of __iob[] to avoid the need for dragging |
32 |
|
in fdevopen() to access the standard streams. |
33 |
|
* libc/stdio/fgetc.c (fgetc): Pass stream to get() method; |
34 |
|
set __SERR or __SEOF dependent of the backend's return code. |
35 |
|
* libc/stdio/fputc.c (fputc): Pass stream to put() method. |
36 |
|
* libc/stdio/fputs.c (fputs): Ditto. |
37 |
|
* libc/stdio/fputs_p.c (fputs_P): Ditto. |
38 |
|
* libc/stdio/fwrite.c (fwrite): Ditto. |
39 |
|
* libc/stdio/puts.c (puts): Ditto. |
40 |
|
* libc/stdio/puts_p.c (puts_P): Ditto. |
41 |
|
* libc/stdio/stdio_private.h: remove struct __file from here. |
42 |
|
* libc/stdio/iob.c: New file (split off of fdevopen.c). |
43 |
|
* libc/stdio/Files.am: add iob.c. |
44 |
|
* doc/examples/twitest/twitest.c: convert to the new stdio API. |
45 |
|
* libc/stdio/clearerr.c: undef the shadow macro first. |
46 |
|
* libc/stdio/ferror.c: (Ditto.) |
47 |
|
* libc/stdio/feof.c: (Ditto.) |
48 |
|
* libc/stdio/fclose.c: change inttypes.h into stdint.h. |
49 |
|
* libc/stdio/fgets.c: don't forcibly set __SERR, getc() already |
50 |
|
handled that. |
51 |
|
* libc/stdio/gets.c: (Ditto.) |
52 |
|
* libc/stdio/vfprintf.c: Allocate the fp conversion buffer on |
53 |
|
the stack as opposed to using malloc(). |
54 |
|
* libc/stdio/vfscanf.c: (Ditto.) |
55 |
|
|
56 |
|
2005-09-06 Joerg Wunsch <j.gnu@uriah.heep.sax.de> |
57 |
|
|
58 |
* doc/api/faq.dox: Minor clarifications: make the volatile |
* doc/api/faq.dox: Minor clarifications: make the volatile |
59 |
description a bit more detailed, explain that r2 through r15 are |
description a bit more detailed, explain that r2 through r15 are |
60 |
available for global register assignment, explain .initN sections |
available for global register assignment, explain .initN sections |