Message ID | lp8w6d6kui.wl%morita.kazutaka@lab.ntt.co.jp |
---|---|
State | New |
Headers | show |
diff --git a/cmd.c b/cmd.c index aee2a38..733bacd 100644 --- a/cmd.c +++ b/cmd.c @@ -293,14 +293,18 @@ fetchline(void) char * fetchline(void) { - char *p, *line = malloc(MAXREADLINESZ); + char *p, *line = malloc(MAXREADLINESZ), *ret; if (!line) return NULL; - if (!fgets(line, MAXREADLINESZ, stdin)) { - free(line); - return NULL; - } + do { + ret = fgets(line, MAXREADLINESZ, stdin); + } while (ret == NULL && errno == EINTR); + + if (ret == NULL) { + free(line); + return NULL; + } p = line + strlen(line); if (p != line && p[-1] == '\n') p[-1] = '\0';