_IONBF drops all newlines

Jeff Johnston jjohnstn@redhat.com
Mon Jun 7 21:10:00 GMT 2004

Nick THOMPSON wrote:
> Hi all,
> newlib-1.12.0, gcc 3.4 for arm-elf, custom OS.
> I'm new to newlib and am trying to embed it on an ARM946. I have my code
> booting nicely now with stdin/out as default settings (line buffered??).
> However, my code is interactive (i.e. command line editing) and I need
> stdio to be unbuffered so I can use getchar for real time char input and
> putchar/printf output to control a VT100 cursor. So I added...
>     setvbuf(stdin, NULL, _IONBF, 0);
>     setvbuf(stdout, NULL, _IONBF, 0);
> ...early in my code (no output so far), but this seem to make puts not
> output a \n and printf also seems to ignore any \n in the format string.
> putchar('\n') works fine and my serial driver does the conversion to
> CR/LR for the terminal.
> I don't use crt0 and have a custom boot sequence, that sets .data and
> .bss correctly. It doesn't call any kind of newlib init routines, as
> there don't seem to be any (stdio initialised on the fly for example).
> Have I missed something obvious?
> Thanks in advance,
> Nick.


   The puts() should work as follows:  first the original string will be written 
via a _write call, then the "\n" will be written by a _write call.  I have 
included a simple test case which I used to verify on an mn10300 simulator.

   Have you replaced the newlib syscalls?  Can you confirm with a debugger what 
happens with the test case?

-- Jeff J.

-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: tsetbuf.c
URL: <http://sourceware.org/pipermail/newlib/attachments/20040607/be0d2eb4/attachment.c>

More information about the Newlib mailing list