Opened 8 years ago
Closed 2 years ago
#854 closed discussion (wontfix)
avoid using non-standard sys/stat.h
Reported by: | Peter | Owned by: | Peter |
---|---|---|---|
Priority: | major | Milestone: | |
Component: | utility | Version: | trunk |
Keywords: | Cc: |
Description
We use <sys/stat.h>
in FileUtil
and in utility/utility.cc
. The header <sys/stat.h>
is required in POSIX and provides e.g. the stat struct
. But it is not required in C++ standard, so it is a bit ugly that we use it here. It would be fairly easy to re-implement FileUtil using boost::filesystem, which might take care of some corner cases. Same think for functions like mkdir
, mkdir_p
, and remove
.
Change History (2)
comment:1 Changed 2 years ago by
Milestone: | yat 0.x+ → yat 0.20 |
---|---|
Owner: | changed from Jari Häkkinen to Peter |
Status: | new → accepted |
comment:2 Changed 2 years ago by
Milestone: | yat 0.20 |
---|---|
Resolution: | → wontfix |
Status: | accepted → closed |
While most of the functionality is directly available in boost::filesystem (included in c++17) and many functions could be simplified to a simple call to boost, plus some care to not change the type of exception thrown in case of error. But FileUtil::permissions
looks like a bit of pain to reimplement. There is a function to retrieve all the permission bits, but with all I mean all, that is, bits for the owner, bits for the group and both for the world. In the current implementation, we call access
to check if we have r/w/x permission for the file and access figures out whether we're the owner or member of the group, to work out which permission that is relevant. I suppose it's possible to reproduce that behaviour via boost interface, but I'm not sure how and I think it's too tedious and error prone to dig into. Trying to build yat on a system without <sys/stat.h>
that system either should put in a museum or one will have problem to even run configure.
I'll have a go at this. If it's straightforward, it'll be included in 0.20.