rc: do not exit on EINTR from read
This happens if lldb attaches to rc.
This commit is contained in:
parent
0cc1faf015
commit
c3ae85a004
1 changed files with 10 additions and 1 deletions
|
|
@ -1,4 +1,5 @@
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
|
#include <errno.h>
|
||||||
#include "rc.h"
|
#include "rc.h"
|
||||||
#include "exec.h"
|
#include "exec.h"
|
||||||
#include "io.h"
|
#include "io.h"
|
||||||
|
|
@ -257,7 +258,15 @@ int
|
||||||
emptybuf(io *f)
|
emptybuf(io *f)
|
||||||
{
|
{
|
||||||
int n;
|
int n;
|
||||||
if(f->fd==-1 || (n = Read(f->fd, f->buf, NBUF))<=0) return EOF;
|
if(f->fd==-1)
|
||||||
|
return EOF;
|
||||||
|
Loop:
|
||||||
|
errno = 0;
|
||||||
|
n = Read(f->fd, f->buf, NBUF);
|
||||||
|
if(n < 0 && errno == EINTR)
|
||||||
|
goto Loop;
|
||||||
|
if(n <= 0)
|
||||||
|
return EOF;
|
||||||
f->bufp = f->buf;
|
f->bufp = f->buf;
|
||||||
f->ebuf = f->buf+n;
|
f->ebuf = f->buf+n;
|
||||||
return *f->bufp++&0xff;
|
return *f->bufp++&0xff;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue