drop ported C++ functions

Remove the following C++ functions/methods, which have all been ported to Rust and no longer have any callers in C++:
common.cpp:
- assert_is_locked/ASSERT_IS_LOCKED

path.cpp:
- path_make_canonical

wutil.cpp:
- wreadlink
- fish_iswgraph
- file_id_t::older_than
This commit is contained in:
David Adam 2023-07-12 18:33:55 +08:00
parent 493cbeb84c
commit 0037e6e98d
6 changed files with 0 additions and 94 deletions

View file

@ -1177,17 +1177,6 @@ void restore_term_foreground_process_group_for_exit() {
} }
} }
void assert_is_locked(std::mutex &mutex, const char *who, const char *caller) {
// Note that std::mutex.try_lock() is allowed to return false when the mutex isn't
// actually locked; fortunately we are checking the opposite so we're safe.
if (unlikely(mutex.try_lock())) {
FLOGF(error, L"%s is not locked when it should be in '%s'", who, caller);
FLOG(error, L"Break on debug_thread_error to debug.");
debug_thread_error();
mutex.unlock();
}
}
/// Test if the specified character is in a range that fish uses internally to store special tokens. /// Test if the specified character is in a range that fish uses internally to store special tokens.
/// ///
/// NOTE: This is used when tokenizing the input. It is also used when reading input, before /// NOTE: This is used when tokenizing the input. It is also used when reading input, before

View file

@ -320,11 +320,6 @@ bool should_suppress_stderr_for_tests();
#define likely(x) __builtin_expect(bool(x), 1) #define likely(x) __builtin_expect(bool(x), 1)
#define unlikely(x) __builtin_expect(bool(x), 0) #define unlikely(x) __builtin_expect(bool(x), 0)
/// Useful macro for asserting that a lock is locked. This doesn't check whether this thread locked
/// it, which it would be nice if it did, but here it is anyways.
void assert_is_locked(std::mutex &mutex, const char *who, const char *caller);
#define ASSERT_IS_LOCKED(m) assert_is_locked(m, #m, __FUNCTION__)
/// Format the specified size (in bytes, kilobytes, etc.) into the specified stringbuffer. /// Format the specified size (in bytes, kilobytes, etc.) into the specified stringbuffer.
wcstring format_size(long long sz); wcstring format_size(long long sz);

View file

@ -384,27 +384,6 @@ dir_remoteness_t path_get_data_remoteness() { return get_data_directory().remote
dir_remoteness_t path_get_config_remoteness() { return get_config_directory().remoteness; } dir_remoteness_t path_get_config_remoteness() { return get_config_directory().remoteness; }
void path_make_canonical(wcstring &path) {
// Ignore trailing slashes, unless it's the first character.
size_t len = path.size();
while (len > 1 && path.at(len - 1) == L'/') len--;
// Turn runs of slashes into a single slash.
size_t trailing = 0;
bool prev_was_slash = false;
for (size_t leading = 0; leading < len; leading++) {
wchar_t c = path.at(leading);
bool is_slash = (c == '/');
if (!prev_was_slash || !is_slash) {
// This is either the first slash in a run, or not a slash at all.
path.at(trailing++) = c;
}
prev_was_slash = is_slash;
}
assert(trailing <= len);
if (trailing < len) path.resize(trailing);
}
bool paths_are_equivalent(const wcstring &p1, const wcstring &p2) { bool paths_are_equivalent(const wcstring &p1, const wcstring &p2) {
if (p1 == p2) return true; if (p1 == p2) return true;

View file

@ -86,10 +86,6 @@ std::vector<wcstring> path_apply_cdpath(const wcstring &dir, const wcstring &wd,
maybe_t<wcstring> path_as_implicit_cd(const wcstring &path, const wcstring &wd, maybe_t<wcstring> path_as_implicit_cd(const wcstring &path, const wcstring &wd,
const environment_t &vars); const environment_t &vars);
/// Remove double slashes and trailing slashes from a path, e.g. transform foo//bar/ into foo/bar.
/// The string is modified in-place.
void path_make_canonical(wcstring &path);
/// Check if two paths are equivalent, which means to ignore runs of multiple slashes (or trailing /// Check if two paths are equivalent, which means to ignore runs of multiple slashes (or trailing
/// slashes). /// slashes).
bool paths_are_equivalent(const wcstring &p1, const wcstring &p2); bool paths_are_equivalent(const wcstring &p1, const wcstring &p2);

View file

@ -284,29 +284,6 @@ int make_fd_blocking(int fd) {
return err == -1 ? errno : 0; return err == -1 ? errno : 0;
} }
maybe_t<wcstring> wreadlink(const wcstring &file_name) {
struct stat buf;
if (lwstat(file_name, &buf) == -1) {
return none();
}
ssize_t bufsize = buf.st_size + 1;
char target_buf[bufsize];
const std::string tmp = wcs2zstring(file_name);
ssize_t nbytes = readlink(tmp.c_str(), target_buf, bufsize);
if (nbytes == -1) {
wperror(L"readlink");
return none();
}
// The link might have been modified after our call to lstat. If the link now points to a path
// that's longer than the original one, we can't read everything in our buffer. Simply give
// up. We don't need to report an error since our only caller will already fall back to ENOENT.
if (nbytes == bufsize) {
return none();
}
return str2wcstring(target_buf, nbytes);
}
/// Wide character realpath. The last path component does not need to be valid. If an error occurs, /// Wide character realpath. The last path component does not need to be valid. If an error occurs,
/// wrealpath() returns none() and errno is likely set. /// wrealpath() returns none() and errno is likely set.
maybe_t<wcstring> wrealpath(const wcstring &pathname) { maybe_t<wcstring> wrealpath(const wcstring &pathname) {
@ -608,14 +585,6 @@ int fish_iswalnum(wint_t wc) {
return iswalnum(wc); return iswalnum(wc);
} }
/// We need this because there are too many implementations that don't return the proper answer for
/// some code points. See issue #3050.
int fish_iswgraph(wint_t wc) {
if (fish_reserved_codepoint(wc)) return 0;
if (fish_is_pua(wc)) return 1;
return iswgraph(wc);
}
/// Convenience variants on fish_wcwswidth(). /// Convenience variants on fish_wcwswidth().
/// ///
/// See fallback.h for the normal definitions. /// See fallback.h for the normal definitions.
@ -870,22 +839,6 @@ static int compare(T a, T b) {
return 0; return 0;
} }
/// \return true if \param rhs has higher mtime seconds than this file_id_t.
/// If identical, nanoseconds are compared.
bool file_id_t::older_than(const file_id_t &rhs) const {
int ret = compare(mod_seconds, rhs.mod_seconds);
if (!ret) ret = compare(mod_nanoseconds, rhs.mod_nanoseconds);
switch (ret) {
case -1:
return true;
case 1:
case 0:
return false;
default:
DIE("unreachable");
}
}
int file_id_t::compare_file_id(const file_id_t &rhs) const { int file_id_t::compare_file_id(const file_id_t &rhs) const {
// Compare each field, stopping when we get to a non-equal field. // Compare each field, stopping when we get to a non-equal field.
int ret = 0; int ret = 0;

View file

@ -86,9 +86,6 @@ void wperror(wcharz_t s);
/// Wide character version of getcwd(). /// Wide character version of getcwd().
wcstring wgetcwd(); wcstring wgetcwd();
/// Wide character version of readlink().
maybe_t<wcstring> wreadlink(const wcstring &file_name);
/// Wide character version of realpath function. /// Wide character version of realpath function.
/// \returns the canonicalized path, or none if the path is invalid. /// \returns the canonicalized path, or none if the path is invalid.
maybe_t<wcstring> wrealpath(const wcstring &pathname); maybe_t<wcstring> wrealpath(const wcstring &pathname);
@ -139,10 +136,8 @@ inline ssize_t wwrite_to_fd(const wcstring &s, int fd) {
// some code points. See issue #3050. // some code points. See issue #3050.
#ifndef FISH_NO_ISW_WRAPPERS #ifndef FISH_NO_ISW_WRAPPERS
#define iswalnum fish_iswalnum #define iswalnum fish_iswalnum
#define iswgraph fish_iswgraph
#endif #endif
int fish_iswalnum(wint_t wc); int fish_iswalnum(wint_t wc);
int fish_iswgraph(wint_t wc);
int fish_wcswidth(const wchar_t *str); int fish_wcswidth(const wchar_t *str);
int fish_wcswidth(const wcstring &str); int fish_wcswidth(const wcstring &str);
@ -178,7 +173,6 @@ struct file_id_t {
bool operator<(const file_id_t &rhs) const; bool operator<(const file_id_t &rhs) const;
static file_id_t from_stat(const struct stat &buf); static file_id_t from_stat(const struct stat &buf);
bool older_than(const file_id_t &rhs) const;
wcstring dump() const; wcstring dump() const;
private: private: