Am 15.06.2010 19:53, schrieb MORITA Kazutaka: > posix-aio-compat sends a signal in aio operations, so we should > consider that fgets() could be interrupted here. > > Signed-off-by: MORITA Kazutaka <morita.kazut...@lab.ntt.co.jp> > --- > cmd.c | 3 +++ > 1 files changed, 3 insertions(+), 0 deletions(-) > > diff --git a/cmd.c b/cmd.c > index 2336334..460df92 100644 > --- a/cmd.c > +++ b/cmd.c > @@ -272,7 +272,10 @@ fetchline(void) > return NULL; > printf("%s", get_prompt()); > fflush(stdout); > +again: > if (!fgets(line, MAXREADLINESZ, stdin)) { > + if (errno == EINTR) > + goto again; > free(line); > return NULL; > }
This looks like a loop replaced by goto (and braces are missing). What about this instead? do { ret = fgets(...) } while (ret == NULL && errno == EINTR) if (ret == NULL) { fail } Kevin