diff options
Diffstat (limited to 'tools/lldb-mi/MIUtilFileStd.cpp')
-rw-r--r-- | tools/lldb-mi/MIUtilFileStd.cpp | 282 |
1 files changed, 0 insertions, 282 deletions
diff --git a/tools/lldb-mi/MIUtilFileStd.cpp b/tools/lldb-mi/MIUtilFileStd.cpp deleted file mode 100644 index 2d8a05985e59..000000000000 --- a/tools/lldb-mi/MIUtilFileStd.cpp +++ /dev/null @@ -1,282 +0,0 @@ -//===-- MIUtilFileStd.cpp ---------------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -// Third party headers -#include <assert.h> -#include <cerrno> -#include <stdio.h> -#include <string.h> - -// In-house headers: -#include "MICmnResources.h" -#include "MIUtilFileStd.h" -#include "lldb/Host/FileSystem.h" - -#include "llvm/Support/ConvertUTF.h" -#include "llvm/Support/Errno.h" - -//++ -// Details: CMIUtilFileStd constructor. -// Type: Method. -// Args: None. -// Return: None. -// Throws: None. -//-- -CMIUtilFileStd::CMIUtilFileStd() - : m_fileNamePath(CMIUtilString()), m_pFileHandle(nullptr) -#if defined(_MSC_VER) - , - m_constCharNewLine("\r\n") -#else - , - m_constCharNewLine("\n") -#endif // #if defined( _MSC_VER ) - , - m_bFileError(false) { -} - -//++ -// Details: CMIUtilFileStd destructor. -// Type: Method. -// Args: None. -// Return: None. -// Throws: None. -//-- -CMIUtilFileStd::~CMIUtilFileStd() { Close(); } - -//++ -// Details: Open file for writing. On the first call to this function after -// *this object -// is created the file is either created or replace, from then on open -// only opens -// an existing file. -// Type: Method. -// Args: vFileNamePath - (R) File name path. -// vwrbNewCreated - (W) True - file recreated, false - file appended -// too. -// Return: MIstatus::success - Functional succeeded. -// MIstatus::failure - Functional failed. -// Throws: None. -//-- -bool CMIUtilFileStd::CreateWrite(const CMIUtilString &vFileNamePath, - bool &vwrbNewCreated) { - // Reset - m_bFileError = false; - vwrbNewCreated = false; - - if (vFileNamePath.empty()) { - m_bFileError = true; - SetErrorDescription(MIRSRC(IDS_UTIL_FILE_ERR_INVALID_PATHNAME)); - return MIstatus::failure; - } - - // File is already open so exit - if (m_pFileHandle != nullptr) - return MIstatus::success; - -#if !defined(_MSC_VER) - // Open with 'write' and 'binary' mode - m_pFileHandle = llvm::sys::RetryAfterSignal(nullptr, ::fopen, - vFileNamePath.c_str(), "wb"); -#else - // Open a file with exclusive write and shared read permissions - std::wstring path; - if (llvm::ConvertUTF8toWide(vFileNamePath.c_str(), path)) - m_pFileHandle = ::_wfsopen(path.c_str(), L"wb", _SH_DENYWR); - else { - errno = EINVAL; - m_pFileHandle = nullptr; - } -#endif // !defined( _MSC_VER ) - - if (m_pFileHandle == nullptr) { - m_bFileError = true; - SetErrorDescriptionn(MIRSRC(IDS_UTIL_FILE_ERR_OPENING_FILE), - strerror(errno), vFileNamePath.c_str()); - return MIstatus::failure; - } - - vwrbNewCreated = true; - m_fileNamePath = vFileNamePath; - - return MIstatus::success; -} - -//++ -// Details: Write data to existing opened file. -// Type: Method. -// Args: vData - (R) Text data. -// Return: MIstatus::success - Functional succeeded. -// MIstatus::failure - Functional failed. -// Throws: None. -//-- -bool CMIUtilFileStd::Write(const CMIUtilString &vData) { - if (vData.size() == 0) - return MIstatus::success; - - if (m_bFileError) - return MIstatus::failure; - - if (m_pFileHandle == nullptr) { - m_bFileError = true; - SetErrorDescriptionn(MIRSRC(IDE_UTIL_FILE_ERR_WRITING_NOTOPEN), - m_fileNamePath.c_str()); - return MIstatus::failure; - } - - // Get the string size - MIuint size = vData.size(); - if (::fwrite(vData.c_str(), 1, size, m_pFileHandle) == size) { - // Flush the data to the file - ::fflush(m_pFileHandle); - return MIstatus::success; - } - - // Not all of the data has been transferred - m_bFileError = true; - SetErrorDescriptionn(MIRSRC(IDE_UTIL_FILE_ERR_WRITING_FILE), - m_fileNamePath.c_str()); - return MIstatus::failure; -} - -//++ -// Details: Write data to existing opened file. -// Type: Method. -// Args: vData - (R) Text data. -// vCharCnt - (R) Text data length. -// Return: MIstatus::success - Functional succeeded. -// MIstatus::failure - Functional failed. -// Throws: None. -//-- -bool CMIUtilFileStd::Write(const char *vpData, const MIuint vCharCnt) { - if (vCharCnt == 0) - return MIstatus::success; - - if (m_bFileError) - return MIstatus::failure; - - if (m_pFileHandle == nullptr) { - m_bFileError = true; - SetErrorDescriptionn(MIRSRC(IDE_UTIL_FILE_ERR_WRITING_NOTOPEN), - m_fileNamePath.c_str()); - return MIstatus::failure; - } - - if (::fwrite(vpData, 1, vCharCnt, m_pFileHandle) == vCharCnt) { - // Flush the data to the file - ::fflush(m_pFileHandle); - return MIstatus::success; - } - - // Not all of the data has been transferred - m_bFileError = true; - SetErrorDescriptionn(MIRSRC(IDE_UTIL_FILE_ERR_WRITING_FILE), - m_fileNamePath.c_str()); - return MIstatus::failure; -} - -//++ -// Details: Close existing opened file. Note Close() must must an open! -// Type: Method. -// Args: None. -// Return: None. -// Throws: None. -//-- -void CMIUtilFileStd::Close() { - if (m_pFileHandle == nullptr) - return; - - ::fclose(m_pFileHandle); - m_pFileHandle = nullptr; - // m_bFileError = false; Do not reset as want to remain until next attempt at - // open or create -} - -//++ -// Details: Retrieve state of whether the file is ok. -// Type: Method. -// Args: None. -// Return: True - file ok. -// False - file has a problem. -// Throws: None. -//-- -bool CMIUtilFileStd::IsOk() const { return !m_bFileError; } - -//++ -// Details: Status on a file existing already. -// Type: Method. -// Args: vFileNamePath. -// Return: True - Exists. -// False - Not found. -// Throws: None. -//-- -bool CMIUtilFileStd::IsFileExist(const CMIUtilString &vFileNamePath) const { - if (vFileNamePath.empty()) - return false; - - FILE *pTmp = nullptr; - pTmp = llvm::sys::RetryAfterSignal(nullptr, ::fopen, - vFileNamePath.c_str(), "wb"); - if (pTmp != nullptr) { - ::fclose(pTmp); - return true; - } - - return false; -} - -//++ -// Details: Retrieve the file current carriage line return characters used. -// Type: Method. -// Args: None. -// Return: CMIUtilString & - Text. -// Throws: None. -//-- -const CMIUtilString &CMIUtilFileStd::GetLineReturn() const { - return m_constCharNewLine; -} - -//++ -// Details: Given a file name directory path, strip off the filename and return -// the path. -// It look for either backslash or forward slash. -// Type: Method. -// Args: vDirectoryPath - (R) Text directory path. -// Return: CMIUtilString - Directory path. -// Throws: None. -//-- -CMIUtilString -CMIUtilFileStd::StripOffFileName(const CMIUtilString &vDirectoryPath) { - const size_t nPos = vDirectoryPath.rfind('\\'); - size_t nPos2 = vDirectoryPath.rfind('/'); - if ((nPos == std::string::npos) && (nPos2 == std::string::npos)) - return vDirectoryPath; - - if (nPos > nPos2) - nPos2 = nPos; - - const CMIUtilString strPath(vDirectoryPath.substr(0, nPos2).c_str()); - return strPath; -} - -//++ -// Details: Return either backslash or forward slash appropriate to the OS this -// application -// is running on. -// Type: Static method. -// Args: None. -// Return: char - '/' or '\' character. -// Throws: None. -//-- -char CMIUtilFileStd::GetSlash() { -#if !defined(_MSC_VER) - return '/'; -#else - return '\\'; -#endif // !defined( _MSC_VER ) -} |