| 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 |