X-Git-Url: http://git.vrable.net/?a=blobdiff_plain;f=util.cc;h=0aa5efbb8eb521e14f935bc286de8c081067a62c;hb=fc223ec17dc5e6691291a7b31f6daa8679b484cd;hp=b595eea602f1f11f9e76958afd5efe4a04501c85;hpb=915e73b3fa1f245541611f26268cdd574798e1e2;p=cumulus.git diff --git a/util.cc b/util.cc index b595eea..0aa5efb 100644 --- a/util.cc +++ b/util.cc @@ -23,6 +23,8 @@ #include #include +#include +#include #include #include @@ -115,3 +117,21 @@ long long parse_int(const string &s) { return strtoll(s.c_str(), NULL, 0); } + +/* Mark a file descriptor as close-on-exec. */ +void cloexec(int fd) +{ + long flags = fcntl(fd, F_GETFD); + + if (flags < 0) + return; + + fcntl(fd, F_SETFD, flags | FD_CLOEXEC); +} + +/* Report a fatal error and exit. */ +void fatal(string msg) +{ + fprintf(stderr, "FATAL: %s\n", msg.c_str()); + exit(1); +}