
Zachary Turner wrote:
Anyway, I don't think that bringing Windows-specific code to other platforms is a good idea. If you want cross-platform code, use cross-platform types, such as time_t, ptime or local_time.
That's just it, I'm trying to use ptime.
Then why not simply send ptime over the network?
A conversion has to exist somewhere, why shouldn't it exist in boost rather than me duplicating code for no particular benefit? If I decide that a unix epoch based time is going to be my "cross-platform network format" when I serialize / deserialize then I lose precision on Windows. If I decide that a windows epoch based time is going to be my cross platform network format, then I have to make an almost exact duplicate of the from_ftime function.
That choice is up to you. However, as I implied earlier, I see no point in using platform-dependent types in a cross-platform code, except for the lower-level wrappers around the native OS API.
Besides, my application does raw parsing of an NTFS filesystem. You can have NTFS filesystems on Linux. Usually the APIs abstract the fact that times are stored internally in the filesystem in FILETIME format, but that's no longer the case when you have raw access to the file systme.
I can't comment on that as I'm not aware of NTFS internals. I'm not the maintainer of Boost.DateTime, but this use case doesn't convince me as it looks too exotic to me.