This is the mail archive of the
ecos-discuss@sources.redhat.com
mailing list for the eCos project.
Re: Problem with getchar / gets / fgets
- From: Gary Thomas <gary at mlbassoc dot com>
- To: Nicolas Brouard <nicolas dot brouard at silicomp dot ca>
- Cc: eCos Discussion <ecos-discuss at ecos dot sourceware dot org>
- Date: Tue, 14 Sep 2004 13:37:43 -0600
- Subject: Re: [ECOS] Problem with getchar / gets / fgets
- Organization: MLB Associates
- References: <MFENKKFPNAKOOKBAEHLHEEDACDAA.nicolas.brouard@silicomp.ca>
On Tue, 2004-09-14 at 12:37, Nicolas Brouard wrote:
> Hi,
>
> I'm using a board based on a MPC860 processor.
> I try to make a shell application, but the getchar function (or gets, or
> fgets(stdin)) doesn't work very well. Each character requires to be hit
> about 5 to 10 times after which it shows up.
>
> The test I did is very simple and works perfectly with the powerpc simulator
> target (psim).
> ------------------------------
> #include <stdio.h>
> static char line[256];
> int main(void)
> {
> printf("hello\n");
> while(1)
> {
> printf("toto> ");
> gets(line);
> printf("%s", line);
> }
> return 0;
> }
> ------------------------------
>
> The same problem was posted before in the mailing list, and nobody answers.
> http://sources.redhat.com/ml/ecos-discuss/2003-12/msg00321.html
>
> Does anybody have an idea about that?
This program behaves perfectly - I just ran it on my Adder (PowerPC 852)
I think the behaviour you are seeing is that gets() and getchar() are
line-oriented, buffered calls. Input is only sent on to the program
once a carriage return (newline, '\n') has been entered.
Here's the output I got:
RedBoot> l a.t
Using default protocol (TFTP)
Entry point: 0x00040000, address range: 0x00040000-0x0007f6c8
RedBoot> g
hello
toto> this is a test
this is a test
toto> hello, world!
hello, world!
toto> adef
adef
toto>
Note: the message you quoted from last December shows exactly the
same behaviour.
--
Gary Thomas <gary@mlbassoc.com>
MLB Associates
--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss