X-Git-Url: https://git.xandkar.net/?p=khatus.git;a=blobdiff_plain;f=x5%2Fkhatus.c;h=faef5b1799edde6923396a0ba6f5f8ee514e0a64;hp=a41351a9b72842d7c9376216cf3c989441b962c3;hb=bec93767e683bb3f5de385d250d61ac06d436c29;hpb=a182ff0e70549c0754666178106ac7dc76e24f77 diff --git a/x5/khatus.c b/x5/khatus.c index a41351a..faef5b1 100644 --- a/x5/khatus.c +++ b/x5/khatus.c @@ -1,6 +1,8 @@ + #include #include #include +#include #include #include @@ -240,6 +242,7 @@ read_one(File *f, char *buf) b = buf + f->pos; memset(b, ' ', f->width); + /* TODO: Read upto \n or width */ while ((n = read(f->fd, b, f->width)) > 0) { b += n; debug("read %zd from %s\n", n, f->name); @@ -266,11 +269,17 @@ read_all(Config *cfg, char *buf) fd_set fds; int maxfd; int ready; + struct stat st; FD_ZERO(&fds); - /* TODO: stat then check TTL */ + /* TODO: Check TTL */ for (File *f = cfg->files; f; f = f->next) { + /* TODO: Create the FIFO if it doesn't already exist. */ + if (lstat(f->name, &st) < 0) + fatal("Cannot stat \"%s\". Error: %s\n", f->name, strerror(errno)); + if (!(st.st_mode & S_IFIFO)) + fatal("\"%s\" is not a FIFO\n", f->name); debug("opening: %s\n", f->name); if (f->fd < 0) f->fd = open(f->name, O_RDONLY | O_NONBLOCK);