* Revision 1.4 2001/02/06 09:34:53 mdw
* Change ERR response to FAIL for consistency with other programs.
*
* Revision 1.4 2001/02/06 09:34:53 mdw
* Change ERR response to FAIL for consistency with other programs.
*
setvbuf(logfp, 0, _IOLBF, BUFSIZ);
}
setvbuf(logfp, 0, _IOLBF, BUFSIZ);
}
static void version(FILE *fp)
{
pquis(fp, "$, TrIPE version " VERSION "\n");
static void version(FILE *fp)
{
pquis(fp, "$, TrIPE version " VERSION "\n");
const char *sock = "tripesock";
const char *spawnpath = "tripe";
string_v spawnopts = DA_INIT;
const char *sock = "tripesock";
const char *spawnpath = "tripe";
string_v spawnopts = DA_INIT;
selbuf_init(&bu, &sel, STDIN_FILENO, uline, &bu);
selbuf_init(&bs, &sel, fd, sline, &bs);
for (;;) {
selbuf_init(&bu, &sel, STDIN_FILENO, uline, &bu);
selbuf_init(&bs, &sel, fd, sline, &bs);
for (;;) {
- lbuf b;
- lbuf_init(&b, cline, 0);
+ sel_state sel;
+ selbuf b;
+ sig hup;
+
+ sel_init(&sel);
+ selbuf_init(&b, &sel, fd, cline, 0);
+
- struct sigaction sa;
- sa.sa_handler = sighup;
- sa.sa_flags = 0;
- sigemptyset(&sa.sa_mask);
- sigaction(SIGHUP, &sa, 0);
+ sig_init(&sel);
+ sig_add(&hup, SIGHUP, sighup, 0);
- size_t sz;
- ssize_t n;
- if (reopen) {
- logfile(logname);
- reopen = 0;
- }
- sz = lbuf_free(&b, &p);
- n = read(fd, p, sz);
- if (n < 0) {
- if (errno == EINTR || errno == EAGAIN || errno == EWOULDBLOCK)
- continue;
- die(EXIT_FAILURE, "read failed: %s", strerror(errno));
- }
- if (n == 0)
- break;
- lbuf_flush(&b, p, n);
+ if (sel_select(&sel) && errno != EINTR && errno != EAGAIN)
+ die(EXIT_FAILURE, "select failed: %s", strerror(errno));