mirror of
https://github.com/dankamongmen/notcurses
synced 2025-03-10 01:29:05 -04:00
tty_emit(): loop on EAGAIN #894
This commit is contained in:
parent
7100e2b83c
commit
0b70bbd66f
@ -464,13 +464,21 @@ tty_emit(const char* name __attribute__ ((unused)), const char* seq, int fd){
|
||||
if(!seq){
|
||||
return -1;
|
||||
}
|
||||
ssize_t ret = write(fd, seq, strlen(seq));
|
||||
if(ret < 0){
|
||||
//fprintf(stderr, "Error emitting %zub %s escape (%s)\n", strlen(seq), name, strerror(errno));
|
||||
return -1;
|
||||
size_t slen = strlen(seq);
|
||||
size_t written = 0;
|
||||
do{
|
||||
ssize_t ret = write(fd, seq, slen);
|
||||
if(ret > 0){
|
||||
written += ret;
|
||||
}
|
||||
if((size_t)ret != strlen(seq)){
|
||||
//fprintf(stderr, "Short write (%db) for %zub %s sequence\n", ret, strlen(seq), name);
|
||||
if(ret < 0){
|
||||
if(errno != EAGAIN){
|
||||
break;
|
||||
}
|
||||
}
|
||||
}while(written < slen);
|
||||
if(written < slen){
|
||||
//fprintf(stderr, "Error emitting %zub %s escape (%s)\n", strlen(seq), name, strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
|
@ -87,7 +87,7 @@ notcurses_stop_minimal(notcurses* nc){
|
||||
}
|
||||
|
||||
// this wildly unsafe handler will attempt to restore the screen upon
|
||||
// reception of SIG{INT, SEGV, ABRT, QUIT}. godspeed you, black emperor!
|
||||
// reception of SIG{INT, SEGV, ABRT, QUIT, TERM}. godspeed you, black emperor!
|
||||
static void
|
||||
fatal_handler(int signo){
|
||||
notcurses* nc = atomic_load(&signal_nc);
|
||||
|
Loading…
x
Reference in New Issue
Block a user