aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2020-03-20 15:48:27 -0700
committerChris Robinson <[email protected]>2020-03-20 15:48:27 -0700
commit12775513ae666b0433e63b82b80de87019770b35 (patch)
tree1d6f14f74c21dcbd31e06a9cc6de6fc05cb3d0ed
parent0d11de3e8d7f5df5bed784d102fc659809ccb9a9 (diff)
Cleanup some helper code
-rw-r--r--alc/helpers.cpp67
1 files changed, 36 insertions, 31 deletions
diff --git a/alc/helpers.cpp b/alc/helpers.cpp
index 5b3733d0..2725f542 100644
--- a/alc/helpers.cpp
+++ b/alc/helpers.cpp
@@ -78,7 +78,7 @@ const PathNamePair &GetProcBinary()
if(!ret.fname.empty() || !ret.path.empty())
return ret;
- al::vector<WCHAR> fullpath(256);
+ auto fullpath = al::vector<WCHAR>(256);
DWORD len;
while((len=GetModuleFileNameW(nullptr, fullpath.data(), static_cast<DWORD>(fullpath.size()))) == fullpath.size())
fullpath.resize(fullpath.size() << 1);
@@ -133,10 +133,9 @@ void al_print(FILE *logfile, const char *fmt, ...)
}
-static inline int is_slash(int c)
-{ return (c == '\\' || c == '/'); }
+namespace {
-static void DirectorySearch(const char *path, const char *ext, al::vector<std::string> *const results)
+void DirectorySearch(const char *path, const char *ext, al::vector<std::string> *const results)
{
std::string pathstr{path};
pathstr += "\\*";
@@ -165,8 +164,12 @@ static void DirectorySearch(const char *path, const char *ext, al::vector<std::s
TRACE(" got %s\n", name.c_str());
}
+} // namespace
+
al::vector<std::string> SearchDataFiles(const char *ext, const char *subdir)
{
+ auto is_slash = [](int c) noexcept -> int { return (c == '\\' || c == '/'); }
+
static std::mutex search_lock;
std::lock_guard<std::mutex> _{search_lock};
@@ -228,10 +231,11 @@ al::vector<std::string> SearchDataFiles(const char *ext, const char *subdir)
void SetRTPriority(void)
{
- bool failed = false;
if(RTPrioLevel > 0)
- failed = !SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_TIME_CRITICAL);
- if(failed) ERR("Failed to set priority level for thread\n");
+ {
+ if(!SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_TIME_CRITICAL))
+ ERR("Failed to set priority level for thread\n");
+ }
}
#else
@@ -273,24 +277,22 @@ const PathNamePair &GetProcBinary()
#endif
if(pathname.empty())
{
+ static const char SelfLinkNames[][32]{
+ "/proc/self/exe",
+ "/proc/self/file",
+ "/proc/curproc/exe",
+ "/proc/curproc/file"
+ };
+
pathname.resize(256);
- const char *selfname{"/proc/self/exe"};
- ssize_t len{readlink(selfname, pathname.data(), pathname.size())};
- if(len == -1 && errno == ENOENT)
- {
- selfname = "/proc/self/file";
- len = readlink(selfname, pathname.data(), pathname.size());
- }
- if(len == -1 && errno == ENOENT)
- {
- selfname = "/proc/curproc/exe";
- len = readlink(selfname, pathname.data(), pathname.size());
- }
- if(len == -1 && errno == ENOENT)
+ const char *selfname{};
+ ssize_t len{};
+ for(const char *name : SelfLinkNames)
{
- selfname = "/proc/curproc/file";
+ selfname = name;
len = readlink(selfname, pathname.data(), pathname.size());
+ if(len >= 0 || errno != ENOENT) break;
}
while(len > 0 && static_cast<size_t>(len) == pathname.size())
@@ -335,7 +337,9 @@ void al_print(FILE *logfile, const char *fmt, ...)
}
-static void DirectorySearch(const char *path, const char *ext, al::vector<std::string> *const results)
+namespace {
+
+void DirectorySearch(const char *path, const char *ext, al::vector<std::string> *const results)
{
TRACE("Searching %s for *%s\n", path, ext);
DIR *dir{opendir(path)};
@@ -344,8 +348,7 @@ static void DirectorySearch(const char *path, const char *ext, al::vector<std::s
const auto base = results->size();
const size_t extlen{strlen(ext)};
- struct dirent *dirent;
- while((dirent=readdir(dir)) != nullptr)
+ while(struct dirent *dirent{readdir(dir)})
{
if(strcmp(dirent->d_name, ".") == 0 || strcmp(dirent->d_name, "..") == 0)
continue;
@@ -370,6 +373,8 @@ static void DirectorySearch(const char *path, const char *ext, al::vector<std::s
TRACE(" got %s\n", name.c_str());
}
+} // namespace
+
al::vector<std::string> SearchDataFiles(const char *ext, const char *subdir)
{
static std::mutex search_lock;
@@ -450,22 +455,22 @@ al::vector<std::string> SearchDataFiles(const char *ext, const char *subdir)
void SetRTPriority()
{
- bool failed = false;
#if defined(HAVE_PTHREAD_SETSCHEDPARAM) && !defined(__OpenBSD__)
if(RTPrioLevel > 0)
{
- struct sched_param param;
+ struct sched_param param{};
/* Use the minimum real-time priority possible for now (on Linux this
- * should be 1 for SCHED_RR) */
+ * should be 1 for SCHED_RR).
+ */
param.sched_priority = sched_get_priority_min(SCHED_RR);
- failed = !!pthread_setschedparam(pthread_self(), SCHED_RR, &param);
+ if(pthread_setschedparam(pthread_self(), SCHED_RR, &param))
+ ERR("Failed to set priority level for thread\n");
}
#else
/* Real-time priority not available */
- failed = (RTPrioLevel>0);
+ if(RTPrioLevel > 0)
+ ERR("Cannot set priority level for thread\n");
#endif
- if(failed)
- ERR("Failed to set priority level for thread\n");
}
#endif