summaryrefslogtreecommitdiffstats
path: root/src/libs/7zip/unix/CPP/myWindows/myDateAndTime.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs/7zip/unix/CPP/myWindows/myDateAndTime.cpp')
-rw-r--r--src/libs/7zip/unix/CPP/myWindows/myDateAndTime.cpp175
1 files changed, 0 insertions, 175 deletions
diff --git a/src/libs/7zip/unix/CPP/myWindows/myDateAndTime.cpp b/src/libs/7zip/unix/CPP/myWindows/myDateAndTime.cpp
deleted file mode 100644
index 0c8deef18..000000000
--- a/src/libs/7zip/unix/CPP/myWindows/myDateAndTime.cpp
+++ /dev/null
@@ -1,175 +0,0 @@
-/**************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Installer Framework.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-**************************************************************************/
-
-#include "windows.h"
-
-#include <QDateTime>
-
-#include <chrono>
-
-/*
- MSDN description about FILETIME structure:
-
- The FILETIME structure is a 64-bit value representing the number of 100-nanosecond intervals
- since January 1, 1601 (UTC).
-
- The DeltaToEpochInMsec can be calculated like this:
-
- \code
- quint64 delta = quint64(QDateTime(QDate(1601, 1, 1)).msecsTo(QDateTime(QDate(1970, 1, 1))))
- * 10000ULL;
- \endcode
-
- But since the value is static, we use a precalculated number here.
-*/
-static const ULONGLONG DeltaToEpochInMsec = 116444736000000000ULL;
-
-inline void LocalDateTimeToFileTime(const QDateTime &dt, ULONGLONG utcOffsetInMsec, FILETIME *ft)
-{
- const ULONGLONG msec = dt.toMSecsSinceEpoch() + utcOffsetInMsec;
- const ULONGLONG nano100 = (msec * 10000ULL) + DeltaToEpochInMsec;
-
- ft->dwLowDateTime = nano100;
- ft->dwHighDateTime = nano100 >> 32;
-
-}
-
-inline void UTCDateTimeToSystemTime(const QDateTime &dt, SYSTEMTIME *st)
-{
- const QDate date = dt.date();
- const QTime time = dt.time();
-
- st->wYear = date.year();
- st->wMonth = date.month();
- st->wDayOfWeek = date.dayOfWeek();
- st->wDay = date.day();
- st->wHour = time.hour();
- st->wMinute = time.minute();
- st->wSecond = time.second();
- st->wMilliseconds = time.msec();
-}
-
-
-// -- WINAPI
-
-BOOL WINAPI FileTimeToSystemTime(CONST FILETIME *source,SYSTEMTIME *target)
-{
- const QDateTime dt = QDateTime(QDate(1601, 1, 1), QTime(0, 0, 0, 1), Qt::UTC).addMSecs
- ((ULONGLONG(source->dwLowDateTime) + (ULONGLONG(source->dwHighDateTime) << 32)) / 10000ULL);
- UTCDateTimeToSystemTime(dt.toUTC(), target);
- return TRUE;
-}
-
-BOOL WINAPI FileTimeToLocalFileTime(CONST FILETIME *source,FILETIME *target)
-{
- const QDateTime dt = QDateTime(QDate(1601, 1, 1), QTime(0, 0, 0, 1), Qt::UTC).addMSecs
- ((ULONGLONG(source->dwLowDateTime) + (ULONGLONG(source->dwHighDateTime) << 32)) / 10000ULL);
-
- LocalDateTimeToFileTime(dt.toLocalTime(), ULONGLONG(QDateTime::currentDateTime()
- .offsetFromUtc()) * 1000ULL, target);
- return TRUE;
-}
-
-BOOLEAN WINAPI RtlTimeToSecondsSince1970(const LARGE_INTEGER *Time, DWORD *Seconds)
-{
- /*
- MSDN suggests to implement the function like this:
-
- 1. Call SystemTimeToFileTime to copy the system time to a FILETIME structure. Call
- GetSystemTime to get the current system time to pass to SystemTimeToFileTime.
- 2. Copy the contents of the FILETIME structure to a ULARGE_INTEGER structure.
- 3. Initialize a SYSTEMTIME structure with the date and time of the first second of
- January 1, 1970.
- 4. Call SystemTimeToFileTime, passing the SYSTEMTIME structure initialized in Step 3
- to the call.
- 5. Copy the contents of the FILETIME structure returned by SystemTimeToFileTime in Step 4
- to a second ULARGE_INTEGER. The copied value should be less than or equal to the value
- copied in Step 2.
- 6. Subtract the 64-bit value in the ULARGE_INTEGER structure initialized in Step 5
- (January 1, 1970) from the 64-bit value of the ULARGE_INTEGER structure initialized
- in Step 2 (the current system time). This produces a value in 100-nanosecond intervals
- since January 1, 1970. To convert this value to seconds, divide by 10,000,000.
-
- We can omit step 1 and 2, cause we get the LARGE_INTEGER passed as function argument.
- */
- SYSTEMTIME stFirstSecondOf1979;
- stFirstSecondOf1979.wSecond = 1;
- stFirstSecondOf1979.wMinute = 0;
- stFirstSecondOf1979.wHour = 0;
- stFirstSecondOf1979.wDay = 1;
- stFirstSecondOf1979.wMonth = 1;
- stFirstSecondOf1979.wYear = 1970;
- stFirstSecondOf1979.wDayOfWeek = 4;
-
- FILETIME ftFirstSecondOf1979;
- SystemTimeToFileTime(&stFirstSecondOf1979, &ftFirstSecondOf1979);
-
- LARGE_INTEGER liFirstSecondOf1979;
- liFirstSecondOf1979.LowPart = ftFirstSecondOf1979.dwLowDateTime;
- liFirstSecondOf1979.HighPart = ftFirstSecondOf1979.dwHighDateTime;
-
- const ULONGLONG diffNano100 = Time->QuadPart - liFirstSecondOf1979.QuadPart;
- *Seconds = diffNano100 / 10000000ULL;
-
- return TRUE;
-}
-
-void WINAPI RtlSecondsSince1970ToFileTime(DWORD Seconds, FILETIME *ft)
-{
- const ULONGLONG nano100 = (ULONGLONG(Seconds) * 10000000ULL) + DeltaToEpochInMsec;
- ft->dwLowDateTime = nano100;
- ft->dwHighDateTime = nano100 >> 32;
-}
-
-VOID WINAPI GetSystemTime(SYSTEMTIME *st)
-{
- UTCDateTimeToSystemTime(QDateTime::currentDateTimeUtc(), st);
-}
-
-VOID WINAPI GetSystemTimeAsFileTime(FILETIME *time)
-{
- SYSTEMTIME st;
- GetSystemTime(&st);
- SystemTimeToFileTime(&st, time);
-}
-
-DWORD WINAPI GetTickCount()
-{
- using namespace std::chrono;
- return duration_cast<milliseconds>(steady_clock::now().time_since_epoch()).count();
-}
-
-BOOL WINAPI SystemTimeToFileTime(const SYSTEMTIME *lpSystemTime, FILETIME *lpFileTime)
-{
- const QDateTime dt(QDate(lpSystemTime->wYear, lpSystemTime->wMonth, lpSystemTime->wDay),
- QTime(lpSystemTime->wHour, lpSystemTime->wMinute, lpSystemTime->wSecond,
- lpSystemTime->wMilliseconds), Qt::UTC);
-
- LocalDateTimeToFileTime(dt.toLocalTime(), 0ULL, lpFileTime);
- return TRUE;
-}