aboutsummaryrefslogtreecommitdiff
path: root/src/Utils.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Utils.cpp')
-rw-r--r--src/Utils.cpp40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/Utils.cpp b/src/Utils.cpp
index 6d45196..c36a64a 100644
--- a/src/Utils.cpp
+++ b/src/Utils.cpp
@@ -22,6 +22,38 @@ namespace gsr {
}
}
+ bool starts_with(std::string_view str, const char *substr) {
+ size_t len = strlen(substr);
+ return str.size() >= len && memcmp(str.data(), substr, len) == 0;
+ }
+
+ bool ends_with(std::string_view str, const char *substr) {
+ size_t len = strlen(substr);
+ return str.size() >= len && memcmp(str.data() + str.size() - len, substr, len) == 0;
+ }
+
+ std::string strip(const std::string &str) {
+ int start_index = 0;
+ int str_len = str.size();
+
+ for(int i = 0; i < str_len; ++i) {
+ if(str[i] != ' ') {
+ start_index += i;
+ str_len -= i;
+ break;
+ }
+ }
+
+ for(int i = str_len - 1; i >= 0; --i) {
+ if(str[i] != ' ') {
+ str_len = i + 1;
+ break;
+ }
+ }
+
+ return str.substr(start_index, str_len);
+ }
+
std::string get_home_dir() {
const char *home_dir = getenv("HOME");
if(!home_dir) {
@@ -114,6 +146,14 @@ namespace gsr {
return xdg_videos_dir;
}
+ std::string get_pictures_dir() {
+ auto xdg_vars = get_xdg_variables();
+ std::string xdg_videos_dir = xdg_vars["XDG_PICTURES_DIR"];
+ if(xdg_videos_dir.empty())
+ xdg_videos_dir = get_home_dir() + "/Pictures";
+ return xdg_videos_dir;
+ }
+
int create_directory_recursive(char *path) {
int path_len = strlen(path);
char *p = path;