summaryrefslogtreecommitdiff
path: root/tools/lldb-mi/MIUtilFileStd.cpp
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2019-10-23 17:53:01 +0000
committerDimitry Andric <dim@FreeBSD.org>2019-10-23 17:53:01 +0000
commitead246455adf1a215ec2715dad6533073a6beb4e (patch)
treef3f97a47d77053bf96fe74cdbd6fae74380e8a92 /tools/lldb-mi/MIUtilFileStd.cpp
parentfdb00c4408990a0a63ef7f496d809ce59f263bc5 (diff)
Notes
Diffstat (limited to 'tools/lldb-mi/MIUtilFileStd.cpp')
-rw-r--r--tools/lldb-mi/MIUtilFileStd.cpp282
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 )
-}