aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/poco/Foundation/src/LogFile_WIN32.cpp
diff options
context:
space:
mode:
authororivej <orivej@yandex-team.ru>2022-02-10 16:44:49 +0300
committerDaniil Cherednik <dcherednik@yandex-team.ru>2022-02-10 16:44:49 +0300
commit718c552901d703c502ccbefdfc3c9028d608b947 (patch)
tree46534a98bbefcd7b1f3faa5b52c138ab27db75b7 /contrib/libs/poco/Foundation/src/LogFile_WIN32.cpp
parente9656aae26e0358d5378e5b63dcac5c8dbe0e4d0 (diff)
downloadydb-718c552901d703c502ccbefdfc3c9028d608b947.tar.gz
Restoring authorship annotation for <orivej@yandex-team.ru>. Commit 1 of 2.
Diffstat (limited to 'contrib/libs/poco/Foundation/src/LogFile_WIN32.cpp')
-rw-r--r--contrib/libs/poco/Foundation/src/LogFile_WIN32.cpp222
1 files changed, 111 insertions, 111 deletions
diff --git a/contrib/libs/poco/Foundation/src/LogFile_WIN32.cpp b/contrib/libs/poco/Foundation/src/LogFile_WIN32.cpp
index 6a5c47a29c..f1efce887b 100644
--- a/contrib/libs/poco/Foundation/src/LogFile_WIN32.cpp
+++ b/contrib/libs/poco/Foundation/src/LogFile_WIN32.cpp
@@ -1,111 +1,111 @@
-//
-// LogFile_WIN32.cpp
-//
-// Library: Foundation
-// Package: Logging
-// Module: LogFile
-//
-// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#include "Poco/LogFile_WIN32.h"
-#include "Poco/File.h"
-#include "Poco/Exception.h"
-
-
-namespace Poco {
-
-
-LogFileImpl::LogFileImpl(const std::string& path): _path(path), _hFile(INVALID_HANDLE_VALUE)
-{
- File file(path);
- if (file.exists())
- {
- if (0 == sizeImpl())
- _creationDate = file.getLastModified();
- else
- _creationDate = file.created();
- }
-}
-
-
-LogFileImpl::~LogFileImpl()
-{
- CloseHandle(_hFile);
-}
-
-
-void LogFileImpl::writeImpl(const std::string& text, bool flush)
-{
- if (INVALID_HANDLE_VALUE == _hFile) createFile();
-
- DWORD bytesWritten;
- BOOL res = WriteFile(_hFile, text.data(), (DWORD) text.size(), &bytesWritten, NULL);
- if (!res) throw WriteFileException(_path);
- res = WriteFile(_hFile, "\r\n", 2, &bytesWritten, NULL);
- if (!res) throw WriteFileException(_path);
- if (flush)
- {
- res = FlushFileBuffers(_hFile);
- if (!res) throw WriteFileException(_path);
- }
-}
-
-
-UInt64 LogFileImpl::sizeImpl() const
-{
- if (INVALID_HANDLE_VALUE == _hFile)
- {
- File file(_path);
- if (file.exists()) return file.getSize();
- else return 0;
- }
-
- LARGE_INTEGER li;
- li.HighPart = 0;
- li.LowPart = SetFilePointer(_hFile, 0, &li.HighPart, FILE_CURRENT);
- return li.QuadPart;
-}
-
-
-Timestamp LogFileImpl::creationDateImpl() const
-{
- return _creationDate;
-}
-
-
-const std::string& LogFileImpl::pathImpl() const
-{
- return _path;
-}
-
-
-void LogFileImpl::createFile()
-{
- _hFile = CreateFileA(_path.c_str(), GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
- if (_hFile == INVALID_HANDLE_VALUE) throw OpenFileException(_path);
- SetFilePointer(_hFile, 0, 0, FILE_END);
- // There seems to be a strange "optimization" in the Windows NTFS
- // filesystem that causes it to reuse directory entries of deleted
- // files. Example:
- // 1. create a file named "test.dat"
- // note the file's creation date
- // 2. delete the file "test.dat"
- // 3. wait a few seconds
- // 4. create a file named "test.dat"
- // the new file will have the same creation
- // date as the old one.
- // We work around this bug by taking the file's
- // modification date as a reference when the
- // file is empty.
- if (sizeImpl() == 0)
- _creationDate = File(_path).getLastModified();
- else
- _creationDate = File(_path).created();
-}
-
-} // namespace Poco
+//
+// LogFile_WIN32.cpp
+//
+// Library: Foundation
+// Package: Logging
+// Module: LogFile
+//
+// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#include "Poco/LogFile_WIN32.h"
+#include "Poco/File.h"
+#include "Poco/Exception.h"
+
+
+namespace Poco {
+
+
+LogFileImpl::LogFileImpl(const std::string& path): _path(path), _hFile(INVALID_HANDLE_VALUE)
+{
+ File file(path);
+ if (file.exists())
+ {
+ if (0 == sizeImpl())
+ _creationDate = file.getLastModified();
+ else
+ _creationDate = file.created();
+ }
+}
+
+
+LogFileImpl::~LogFileImpl()
+{
+ CloseHandle(_hFile);
+}
+
+
+void LogFileImpl::writeImpl(const std::string& text, bool flush)
+{
+ if (INVALID_HANDLE_VALUE == _hFile) createFile();
+
+ DWORD bytesWritten;
+ BOOL res = WriteFile(_hFile, text.data(), (DWORD) text.size(), &bytesWritten, NULL);
+ if (!res) throw WriteFileException(_path);
+ res = WriteFile(_hFile, "\r\n", 2, &bytesWritten, NULL);
+ if (!res) throw WriteFileException(_path);
+ if (flush)
+ {
+ res = FlushFileBuffers(_hFile);
+ if (!res) throw WriteFileException(_path);
+ }
+}
+
+
+UInt64 LogFileImpl::sizeImpl() const
+{
+ if (INVALID_HANDLE_VALUE == _hFile)
+ {
+ File file(_path);
+ if (file.exists()) return file.getSize();
+ else return 0;
+ }
+
+ LARGE_INTEGER li;
+ li.HighPart = 0;
+ li.LowPart = SetFilePointer(_hFile, 0, &li.HighPart, FILE_CURRENT);
+ return li.QuadPart;
+}
+
+
+Timestamp LogFileImpl::creationDateImpl() const
+{
+ return _creationDate;
+}
+
+
+const std::string& LogFileImpl::pathImpl() const
+{
+ return _path;
+}
+
+
+void LogFileImpl::createFile()
+{
+ _hFile = CreateFileA(_path.c_str(), GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
+ if (_hFile == INVALID_HANDLE_VALUE) throw OpenFileException(_path);
+ SetFilePointer(_hFile, 0, 0, FILE_END);
+ // There seems to be a strange "optimization" in the Windows NTFS
+ // filesystem that causes it to reuse directory entries of deleted
+ // files. Example:
+ // 1. create a file named "test.dat"
+ // note the file's creation date
+ // 2. delete the file "test.dat"
+ // 3. wait a few seconds
+ // 4. create a file named "test.dat"
+ // the new file will have the same creation
+ // date as the old one.
+ // We work around this bug by taking the file's
+ // modification date as a reference when the
+ // file is empty.
+ if (sizeImpl() == 0)
+ _creationDate = File(_path).getLastModified();
+ else
+ _creationDate = File(_path).created();
+}
+
+} // namespace Poco