>> Macros and/or helper functions (again cf. [1]; they can be factored into >> a mini-library in nosh) can also be used to reduce boilerplate like >> > const int error(errno); >> > std::fprintf(stderr, ..., std::strerror(error)); >> > throw EXIT_FAILURE; >> which can be easily observed after the attached patch is applied. > > The first chunk in the patch is incorrect, and the new code should be > (in other words, swap the `ENOENT == error' and the `const int' lines) >> if (!self_cgroup) { >> if (ENOENT == error) return; // This is what we'll see on a BSD. >> const int error(errno); >> std::fprintf(stderr, "%s: FATAL: %s: %s\n", prog, "/proc/self/cgroup", >> std::strerror(error)); >> throw EXIT_FAILURE; ^^^^^^^^^^^^^^^^^^^^^^^^^^ using an exception here looks like a REALLY brilliant idea to me >> }
why C++ btw ? i don't see any benefit in not using C in the first place, since when does one write Unix system tools in C++ ? is it the added "advantage" of bloated binaries and additional lib dependencies ?