X-Git-Url: http://git.vrable.net/?p=cumulus.git;a=blobdiff_plain;f=util.cc;h=0aa5efbb8eb521e14f935bc286de8c081067a62c;hp=b595eea602f1f11f9e76958afd5efe4a04501c85;hb=dd553bb0b2ac2fe7a1904d2f2670f37e3bb25ae6;hpb=5f2e50c2ad75043142dc1812fe19dbd7ad86488c 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); +}