mirror of
https://github.com/MaskRay/ccls.git
synced 2024-11-22 07:35:08 +00:00
Remove unused fs code.
This commit is contained in:
parent
fdb562bb42
commit
96bba583c9
@ -195,7 +195,6 @@ target_sources(ccls PRIVATE
|
|||||||
src/message_handler.cc
|
src/message_handler.cc
|
||||||
src/platform_posix.cc
|
src/platform_posix.cc
|
||||||
src/platform_win.cc
|
src/platform_win.cc
|
||||||
src/platform.cc
|
|
||||||
src/port.cc
|
src/port.cc
|
||||||
src/position.cc
|
src/position.cc
|
||||||
src/project.cc
|
src/project.cc
|
||||||
|
@ -97,13 +97,13 @@ long long GetCurrentTimeInMilliseconds() {
|
|||||||
struct ActiveThread {
|
struct ActiveThread {
|
||||||
ActiveThread(ImportPipelineStatus* status)
|
ActiveThread(ImportPipelineStatus* status)
|
||||||
: status_(status) {
|
: status_(status) {
|
||||||
if (g_config->progressReportFrequencyMs < 0)
|
if (g_config && g_config->progressReportFrequencyMs < 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
++status_->num_active_threads;
|
++status_->num_active_threads;
|
||||||
}
|
}
|
||||||
~ActiveThread() {
|
~ActiveThread() {
|
||||||
if (g_config->progressReportFrequencyMs < 0)
|
if (g_config && g_config->progressReportFrequencyMs < 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
--status_->num_active_threads;
|
--status_->num_active_threads;
|
||||||
@ -122,7 +122,7 @@ struct ActiveThread {
|
|||||||
out.params.activeThreads = status_->num_active_threads;
|
out.params.activeThreads = status_->num_active_threads;
|
||||||
|
|
||||||
// Ignore this progress update if the last update was too recent.
|
// Ignore this progress update if the last update was too recent.
|
||||||
if (g_config->progressReportFrequencyMs != 0) {
|
if (g_config && g_config->progressReportFrequencyMs != 0) {
|
||||||
// Make sure we output a status update if queue lengths are zero.
|
// Make sure we output a status update if queue lengths are zero.
|
||||||
bool all_zero =
|
bool all_zero =
|
||||||
out.params.indexRequestCount == 0 && out.params.doIdMapCount == 0 &&
|
out.params.indexRequestCount == 0 && out.params.doIdMapCount == 0 &&
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#include "cache_manager.h"
|
#include "cache_manager.h"
|
||||||
#include "diagnostics_engine.h"
|
#include "diagnostics_engine.h"
|
||||||
|
#include "filesystem.hh"
|
||||||
#include "import_pipeline.h"
|
#include "import_pipeline.h"
|
||||||
#include "include_complete.h"
|
#include "include_complete.h"
|
||||||
#include "message_handler.h"
|
#include "message_handler.h"
|
||||||
@ -504,9 +505,9 @@ struct Handler_Initialize : BaseMessageHandler<In_InitializeRequest> {
|
|||||||
config->projectRoot = project_path;
|
config->projectRoot = project_path;
|
||||||
// Create two cache directories for files inside and outside of the
|
// Create two cache directories for files inside and outside of the
|
||||||
// project.
|
// project.
|
||||||
MakeDirectoryRecursive(config->cacheDirectory +
|
fs::create_directories(config->cacheDirectory +
|
||||||
EscapeFileName(config->projectRoot));
|
EscapeFileName(config->projectRoot));
|
||||||
MakeDirectoryRecursive(config->cacheDirectory + '@' +
|
fs::create_directories(config->cacheDirectory + '@' +
|
||||||
EscapeFileName(config->projectRoot));
|
EscapeFileName(config->projectRoot));
|
||||||
|
|
||||||
g_config = std::move(config);
|
g_config = std::move(config);
|
||||||
|
@ -1,96 +0,0 @@
|
|||||||
#include "platform.h"
|
|
||||||
|
|
||||||
#include <doctest/doctest.h>
|
|
||||||
#include <loguru.hpp>
|
|
||||||
|
|
||||||
#include <iterator>
|
|
||||||
#include <sstream>
|
|
||||||
#include <string>
|
|
||||||
#include <thread>
|
|
||||||
#include <vector>
|
|
||||||
|
|
||||||
namespace {
|
|
||||||
|
|
||||||
// See http://stackoverflow.com/a/236803
|
|
||||||
template <typename Out>
|
|
||||||
void Split(const std::string& s, char delim, Out result) {
|
|
||||||
std::stringstream ss;
|
|
||||||
ss.str(s);
|
|
||||||
std::string item;
|
|
||||||
while (std::getline(ss, item, delim)) {
|
|
||||||
if (!item.empty())
|
|
||||||
*(result++) = item;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
std::vector<std::string> Split(const std::string& s, char delim) {
|
|
||||||
std::vector<std::string> elems;
|
|
||||||
Split(s, delim, std::back_inserter(elems));
|
|
||||||
return elems;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string Join(const std::vector<std::string>& entries,
|
|
||||||
char delim,
|
|
||||||
size_t end) {
|
|
||||||
std::string result;
|
|
||||||
bool first = true;
|
|
||||||
for (size_t i = 0; i < end; ++i) {
|
|
||||||
if (!first)
|
|
||||||
result += delim;
|
|
||||||
first = false;
|
|
||||||
result += entries[i];
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace
|
|
||||||
|
|
||||||
PlatformMutex::~PlatformMutex() = default;
|
|
||||||
|
|
||||||
PlatformScopedMutexLock::~PlatformScopedMutexLock() = default;
|
|
||||||
|
|
||||||
PlatformSharedMemory::~PlatformSharedMemory() = default;
|
|
||||||
|
|
||||||
void MakeDirectoryRecursive(std::string path) {
|
|
||||||
path = NormalizePath(path);
|
|
||||||
|
|
||||||
if (TryMakeDirectory(path))
|
|
||||||
return;
|
|
||||||
|
|
||||||
std::string prefix = "";
|
|
||||||
if (path[0] == '/')
|
|
||||||
prefix = "/";
|
|
||||||
|
|
||||||
std::vector<std::string> components = Split(path, '/');
|
|
||||||
|
|
||||||
// Find first parent directory which doesn't exist.
|
|
||||||
int first_success = -1;
|
|
||||||
for (size_t j = 0; j < components.size(); ++j) {
|
|
||||||
size_t i = components.size() - j;
|
|
||||||
if (TryMakeDirectory(prefix + Join(components, '/', i))) {
|
|
||||||
first_success = i;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (first_success == -1) {
|
|
||||||
LOG_S(FATAL) << "Failed to make any parent directory for " << path;
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Make all child directories.
|
|
||||||
for (size_t i = first_success + 1; i <= components.size(); ++i) {
|
|
||||||
if (TryMakeDirectory(prefix + Join(components, '/', i)) == false) {
|
|
||||||
LOG_S(FATAL) << "Failed making directory for " << path
|
|
||||||
<< " even after creating parent directories";
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST_SUITE("Platform") {
|
|
||||||
TEST_CASE("Split strings") {
|
|
||||||
std::vector<std::string> actual = Split("/a/b/c/", '/');
|
|
||||||
std::vector<std::string> expected{"a", "b", "c"};
|
|
||||||
REQUIRE(actual == expected);
|
|
||||||
}
|
|
||||||
}
|
|
@ -7,46 +7,18 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
struct PlatformMutex {
|
|
||||||
virtual ~PlatformMutex();
|
|
||||||
};
|
|
||||||
struct PlatformScopedMutexLock {
|
|
||||||
virtual ~PlatformScopedMutexLock();
|
|
||||||
};
|
|
||||||
struct PlatformSharedMemory {
|
|
||||||
virtual ~PlatformSharedMemory();
|
|
||||||
void* data;
|
|
||||||
size_t capacity;
|
|
||||||
std::string name;
|
|
||||||
};
|
|
||||||
|
|
||||||
void PlatformInit();
|
void PlatformInit();
|
||||||
|
|
||||||
std::string GetExecutablePath();
|
std::string GetExecutablePath();
|
||||||
std::string GetWorkingDirectory();
|
|
||||||
std::string NormalizePath(const std::string& path);
|
std::string NormalizePath(const std::string& path);
|
||||||
// Creates a directory at |path|. Creates directories recursively if needed.
|
|
||||||
void MakeDirectoryRecursive(std::string path);
|
|
||||||
// Tries to create the directory given by |absolute_path|. Returns true if
|
|
||||||
// successful or if the directory already exists. Returns false otherwise. This
|
|
||||||
// does not attempt to recursively create directories.
|
|
||||||
bool TryMakeDirectory(const std::string& absolute_path);
|
|
||||||
|
|
||||||
void SetCurrentThreadName(const std::string& thread_name);
|
void SetCurrentThreadName(const std::string& thread_name);
|
||||||
|
|
||||||
std::optional<int64_t> GetLastModificationTime(const std::string& absolute_path);
|
std::optional<int64_t> GetLastModificationTime(const std::string& absolute_path);
|
||||||
|
|
||||||
void MoveFileTo(const std::string& destination, const std::string& source);
|
|
||||||
void CopyFileTo(const std::string& destination, const std::string& source);
|
|
||||||
|
|
||||||
bool IsSymLink(const std::string& path);
|
|
||||||
|
|
||||||
// Free any unused memory and return it to the system.
|
// Free any unused memory and return it to the system.
|
||||||
void FreeUnusedMemory();
|
void FreeUnusedMemory();
|
||||||
|
|
||||||
// If true objective-c index tests will be run.
|
|
||||||
bool RunObjectiveCIndexTests();
|
|
||||||
|
|
||||||
// Stop self and wait for SIGCONT.
|
// Stop self and wait for SIGCONT.
|
||||||
void TraceMe();
|
void TraceMe();
|
||||||
|
|
||||||
|
@ -150,29 +150,11 @@ std::string GetExecutablePath() {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string GetWorkingDirectory() {
|
|
||||||
char result[FILENAME_MAX];
|
|
||||||
if (!getcwd(result, sizeof(result)))
|
|
||||||
return "";
|
|
||||||
std::string working_dir = std::string(result, strlen(result));
|
|
||||||
EnsureEndsInSlash(working_dir);
|
|
||||||
return working_dir;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string NormalizePath(const std::string& path) {
|
std::string NormalizePath(const std::string& path) {
|
||||||
std::optional<std::string> resolved = RealPathNotExpandSymlink(path);
|
std::optional<std::string> resolved = RealPathNotExpandSymlink(path);
|
||||||
return resolved ? *resolved : path;
|
return resolved ? *resolved : path;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TryMakeDirectory(const std::string& absolute_path) {
|
|
||||||
const mode_t kMode = 0777; // UNIX style permissions
|
|
||||||
if (mkdir(absolute_path.c_str(), kMode) == -1) {
|
|
||||||
// Success if the directory exists.
|
|
||||||
return errno == EEXIST;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void SetCurrentThreadName(const std::string& thread_name) {
|
void SetCurrentThreadName(const std::string& thread_name) {
|
||||||
loguru::set_thread_name(thread_name.c_str());
|
loguru::set_thread_name(thread_name.c_str());
|
||||||
#if defined(__APPLE__)
|
#if defined(__APPLE__)
|
||||||
@ -206,73 +188,12 @@ std::optional<int64_t> GetLastModificationTime(const std::string& absolute_path)
|
|||||||
return buf.st_mtime;
|
return buf.st_mtime;
|
||||||
}
|
}
|
||||||
|
|
||||||
void MoveFileTo(const std::string& dest, const std::string& source) {
|
|
||||||
// TODO/FIXME - do a real move.
|
|
||||||
CopyFileTo(dest, source);
|
|
||||||
}
|
|
||||||
|
|
||||||
// See http://stackoverflow.com/q/13198627
|
|
||||||
void CopyFileTo(const std::string& dest, const std::string& source) {
|
|
||||||
int fd_from = open(source.c_str(), O_RDONLY);
|
|
||||||
if (fd_from < 0)
|
|
||||||
return;
|
|
||||||
|
|
||||||
int fd_to = open(dest.c_str(), O_WRONLY | O_CREAT, 0666);
|
|
||||||
if (fd_to < 0)
|
|
||||||
goto out_error;
|
|
||||||
|
|
||||||
char buf[4096];
|
|
||||||
ssize_t nread;
|
|
||||||
while (nread = read(fd_from, buf, sizeof buf), nread > 0) {
|
|
||||||
char* out_ptr = buf;
|
|
||||||
ssize_t nwritten;
|
|
||||||
|
|
||||||
do {
|
|
||||||
nwritten = write(fd_to, out_ptr, nread);
|
|
||||||
|
|
||||||
if (nwritten >= 0) {
|
|
||||||
nread -= nwritten;
|
|
||||||
out_ptr += nwritten;
|
|
||||||
} else if (errno != EINTR)
|
|
||||||
goto out_error;
|
|
||||||
} while (nread > 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (nread == 0) {
|
|
||||||
if (close(fd_to) < 0) {
|
|
||||||
fd_to = -1;
|
|
||||||
goto out_error;
|
|
||||||
}
|
|
||||||
close(fd_from);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
out_error:
|
|
||||||
close(fd_from);
|
|
||||||
if (fd_to >= 0)
|
|
||||||
close(fd_to);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool IsSymLink(const std::string& path) {
|
|
||||||
struct stat buf;
|
|
||||||
return lstat(path.c_str(), &buf) == 0 && S_ISLNK(buf.st_mode);
|
|
||||||
}
|
|
||||||
|
|
||||||
void FreeUnusedMemory() {
|
void FreeUnusedMemory() {
|
||||||
#if defined(__GLIBC__)
|
#if defined(__GLIBC__)
|
||||||
malloc_trim(0);
|
malloc_trim(0);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RunObjectiveCIndexTests() {
|
|
||||||
#if defined(__APPLE__)
|
|
||||||
return true;
|
|
||||||
#else
|
|
||||||
return false;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
void TraceMe() {
|
void TraceMe() {
|
||||||
// If the environment variable is defined, wait for a debugger.
|
// If the environment variable is defined, wait for a debugger.
|
||||||
// In gdb, you need to invoke `signal SIGCONT` if you want ccls to continue
|
// In gdb, you need to invoke `signal SIGCONT` if you want ccls to continue
|
||||||
|
@ -34,13 +34,6 @@ std::string GetExecutablePath() {
|
|||||||
return NormalizePath(result);
|
return NormalizePath(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
// See http://stackoverflow.com/a/19535628
|
|
||||||
std::string GetWorkingDirectory() {
|
|
||||||
char result[MAX_PATH];
|
|
||||||
std::string binary_path(result, GetModuleFileName(NULL, result, MAX_PATH));
|
|
||||||
return binary_path.substr(0, binary_path.find_last_of("\\/") + 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string NormalizePath(const std::string& path) {
|
std::string NormalizePath(const std::string& path) {
|
||||||
DWORD retval = 0;
|
DWORD retval = 0;
|
||||||
TCHAR buffer[MAX_PATH] = TEXT("");
|
TCHAR buffer[MAX_PATH] = TEXT("");
|
||||||
@ -57,14 +50,6 @@ std::string NormalizePath(const std::string& path) {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TryMakeDirectory(const std::string& absolute_path) {
|
|
||||||
if (_mkdir(absolute_path.c_str()) == -1) {
|
|
||||||
// Success if the directory exists.
|
|
||||||
return errno == EEXIST;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// See https://msdn.microsoft.com/en-us/library/xcb2z8hs.aspx
|
// See https://msdn.microsoft.com/en-us/library/xcb2z8hs.aspx
|
||||||
const DWORD MS_VC_EXCEPTION = 0x406D1388;
|
const DWORD MS_VC_EXCEPTION = 0x406D1388;
|
||||||
#pragma pack(push, 8)
|
#pragma pack(push, 8)
|
||||||
@ -117,24 +102,8 @@ std::optional<int64_t> GetLastModificationTime(const std::string& absolute_path)
|
|||||||
return buf.st_mtime;
|
return buf.st_mtime;
|
||||||
}
|
}
|
||||||
|
|
||||||
void MoveFileTo(const std::string& destination, const std::string& source) {
|
|
||||||
MoveFile(source.c_str(), destination.c_str());
|
|
||||||
}
|
|
||||||
|
|
||||||
void CopyFileTo(const std::string& destination, const std::string& source) {
|
|
||||||
CopyFile(source.c_str(), destination.c_str(), false /*failIfExists*/);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool IsSymLink(const std::string& path) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
void FreeUnusedMemory() {}
|
void FreeUnusedMemory() {}
|
||||||
|
|
||||||
bool RunObjectiveCIndexTests() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO Wait for debugger to attach
|
// TODO Wait for debugger to attach
|
||||||
void TraceMe() {}
|
void TraceMe() {}
|
||||||
|
|
||||||
|
@ -224,11 +224,11 @@ bool RunIndexTests(const std::string& filter_path, bool enable_update) {
|
|||||||
bool is_fail_allowed = false;
|
bool is_fail_allowed = false;
|
||||||
|
|
||||||
if (EndsWithAny(path, {".m", ".mm"})) {
|
if (EndsWithAny(path, {".m", ".mm"})) {
|
||||||
if (!RunObjectiveCIndexTests()) {
|
#ifndef __APPLE__
|
||||||
std::cout << "Skipping \"" << path << "\" since this platform does not "
|
std::cout << "Skipping \"" << path << "\" since this platform does not "
|
||||||
<< "support running Objective-C tests." << std::endl;
|
<< "support running Objective-C tests." << std::endl;
|
||||||
continue;
|
continue;
|
||||||
}
|
#endif
|
||||||
|
|
||||||
// objective-c tests are often not updated right away. do not bring down
|
// objective-c tests are often not updated right away. do not bring down
|
||||||
// CI if they fail.
|
// CI if they fail.
|
||||||
|
Loading…
Reference in New Issue
Block a user