Thus spake Paul Vixie: > > > > The RAII technique goes like this: > > > > struct ReadFP : boost::non_copyable > > { > > ReadFP(std::string& fname) > > { > > d_fp = fopen(fname.c_str(), "r") > > if(!d_fd) > > throw runtime_error("Opening file "+fname+": "+strerror(errno); > > } > > ~ReadFD() > > { > > fclose(d_fp); > > } > > FILE* d_fp; > > }; > > > > Written like this, you'll never leak an fd 'ever'. The 'boost::non_copyable' > > makes sure no one can copy this struct, which would complicate things. Use:
NB: You could also make it non-copyable without boost by deleting the copy ctor: ReadFP(const ReadFP&) = delete; That's the canonical way with C++11 and later. I'm in favor of using C++ for nmh should I ever dig myself out of the hole I'm in and have time to contribute. -- J. -- Nmh-workers https://lists.nongnu.org/mailman/listinfo/nmh-workers