Remove fd_read*()
This commit is contained in:
66
src/main.c
66
src/main.c
@@ -84,56 +84,6 @@ gt_set_signal(void)
|
|||||||
sigaction(SIGPIPE, &sa, NULL);
|
sigaction(SIGPIPE, &sa, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
static ssize_t
|
|
||||||
fd_read(int fd, void *data, size_t size)
|
|
||||||
{
|
|
||||||
if ((fd == -1) || !size)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
ssize_t ret = read(fd, data, size);
|
|
||||||
|
|
||||||
if (ret == -1) {
|
|
||||||
if (errno == EAGAIN || errno == EINTR)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
if (errno)
|
|
||||||
perror("read");
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
static size_t
|
|
||||||
fd_read_all(int fd, void *data, size_t size)
|
|
||||||
{
|
|
||||||
size_t done = 0;
|
|
||||||
|
|
||||||
while (done < size) {
|
|
||||||
ssize_t ret = fd_read(fd, (uint8_t *)data + done, size - done);
|
|
||||||
|
|
||||||
if (!ret)
|
|
||||||
break;
|
|
||||||
|
|
||||||
if (ret < 0) {
|
|
||||||
struct pollfd pollfd = {
|
|
||||||
.fd = fd,
|
|
||||||
.events = POLLIN,
|
|
||||||
};
|
|
||||||
|
|
||||||
if (!poll(&pollfd, 1, gt.timeout))
|
|
||||||
break;
|
|
||||||
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
done += ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
return done;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gt_print_secretkey(struct mud *mud)
|
gt_print_secretkey(struct mud *mud)
|
||||||
{
|
{
|
||||||
@@ -165,11 +115,23 @@ gt_setup_secretkey(struct mud *mud, char *keyfile)
|
|||||||
|
|
||||||
unsigned char key[32];
|
unsigned char key[32];
|
||||||
char buf[2 * sizeof(key)];
|
char buf[2 * sizeof(key)];
|
||||||
size_t r = fd_read_all(fd, buf, sizeof(buf));
|
size_t size = 0;
|
||||||
|
|
||||||
|
while (size < sizeof(buf)) {
|
||||||
|
ssize_t r = read(fd, &buf[size], sizeof(buf) - size);
|
||||||
|
|
||||||
|
if (r <= (ssize_t)0) {
|
||||||
|
if (r && (errno == EAGAIN || errno == EINTR))
|
||||||
|
continue;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
size += r;
|
||||||
|
}
|
||||||
|
|
||||||
close(fd);
|
close(fd);
|
||||||
|
|
||||||
if (r != sizeof(buf)) {
|
if (size != sizeof(buf)) {
|
||||||
gt_log("unable to read secret key\n");
|
gt_log("unable to read secret key\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user