mirror of
https://github.com/jarun/nnn.git
synced 2024-11-28 05:41:31 +00:00
parent
9b5b2b544c
commit
7a1a4e293e
20
src/nnn.c
20
src/nnn.c
|
@ -4300,11 +4300,20 @@ static void rmlistpath()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static ssize_t read_nointr(int fd, void *buf, size_t count)
|
||||||
|
{
|
||||||
|
ssize_t len;
|
||||||
|
do{
|
||||||
|
len = read(fd, buf, count);
|
||||||
|
} while (len == -1 && errno == EINTR);
|
||||||
|
return len;
|
||||||
|
}
|
||||||
|
|
||||||
static void readpipe(int fd, char **path, char **lastname, char **lastdir)
|
static void readpipe(int fd, char **path, char **lastname, char **lastdir)
|
||||||
{
|
{
|
||||||
int r;
|
int r;
|
||||||
char ctx, *nextpath = NULL;
|
char ctx, *nextpath = NULL;
|
||||||
ssize_t len = read(fd, g_buf, 1);
|
ssize_t len = read_nointr(fd, g_buf, 1);
|
||||||
|
|
||||||
if (len != 1)
|
if (len != 1)
|
||||||
return;
|
return;
|
||||||
|
@ -4317,14 +4326,14 @@ static void readpipe(int fd, char **path, char **lastname, char **lastdir)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
len = read(fd, g_buf, 1);
|
len = read_nointr(fd, g_buf, 1);
|
||||||
if (len != 1)
|
if (len != 1)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
char op = g_buf[0];
|
char op = g_buf[0];
|
||||||
|
|
||||||
if (op == 'c') {
|
if (op == 'c') {
|
||||||
len = read(fd, g_buf, PATH_MAX);
|
len = read_nointr(fd, g_buf, PATH_MAX);
|
||||||
if (len <= 0)
|
if (len <= 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -4415,7 +4424,10 @@ static bool run_selected_plugin(char **path, const char *file, char *runfile, ch
|
||||||
_exit(EXIT_SUCCESS);
|
_exit(EXIT_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
int rfd = open(g_pipepath, O_RDONLY);
|
int rfd;
|
||||||
|
do {
|
||||||
|
rfd = open(g_pipepath, O_RDONLY);
|
||||||
|
} while (rfd == -1 && errno == EINTR);
|
||||||
|
|
||||||
readpipe(rfd, path, lastname, lastdir);
|
readpipe(rfd, path, lastname, lastdir);
|
||||||
close(rfd);
|
close(rfd);
|
||||||
|
|
Loading…
Reference in a new issue