aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf/QUtil.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libqpdf/QUtil.cc')
-rw-r--r--libqpdf/QUtil.cc26
1 files changed, 26 insertions, 0 deletions
diff --git a/libqpdf/QUtil.cc b/libqpdf/QUtil.cc
index 0ffc6e26..3ac467d4 100644
--- a/libqpdf/QUtil.cc
+++ b/libqpdf/QUtil.cc
@@ -141,6 +141,32 @@ QUtil::get_env(std::string const& var, std::string* value)
#endif
}
+time_t
+QUtil::get_current_time()
+{
+#ifdef _WIN32
+ // The procedure to get local time at this resolution comes from
+ // the Microsoft documentation. It says to convert a SYSTEMTIME
+ // to a FILETIME, and to copy the FILETIME to a ULARGE_INTEGER.
+ // The resulting number is the number of 100-nanosecond intervals
+ // between January 1, 1601 and now. POSIX threads wants a time
+ // based on January 1, 1970, so we adjust by subtracting the
+ // number of seconds in that time period from the result we get
+ // here.
+ SYSTEMTIME sysnow;
+ GetSystemTime(&sysnow);
+ FILETIME filenow;
+ SystemTimeToFileTime(&sysnow, &filenow);
+ ULARGE_INTEGER uinow;
+ uinow.LowPart = filenow.dwLowDateTime;
+ uinow.HighPart = filenow.dwHighDateTime;
+ ULONGLONG now = uinow.QuadPart;
+ return ((now / 10000000LL) - 11644473600LL);
+#else
+ return time(0);
+#endif
+}
+
std::string
QUtil::toUTF8(unsigned long uval)
{