aboutsummaryrefslogtreecommitdiff
path: root/src/string.cpp
diff options
context:
space:
mode:
authorJeroen van Rijn <Kelimion@users.noreply.github.com>2022-04-06 18:26:23 +0200
committerJeroen van Rijn <Kelimion@users.noreply.github.com>2022-04-24 13:37:26 +0200
commit3cab2592c3e5a06882ffd711871a08c893b043f1 (patch)
treea012d5e76f816ea36a8e6489f38cdca9088ad4a5 /src/string.cpp
parent5422a3b17eae821df4adf869960995e922eb0e76 (diff)
Compiler: Add early error for output path being a directory.
- Introduce new `Path` type and an array of build paths on the build context. - Resolve input and output paths/files early (before parsing). - Error early if inputs are missing or outputs are directories. - Plumb new file path generation into linker stage instead of its adhoc method. TODO: - Remove more adhoc file path generation in parser and linker stage. - Make intermediate object file generation use new path system. - Round out and robustify Path helper functions.
Diffstat (limited to 'src/string.cpp')
-rw-r--r--src/string.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/string.cpp b/src/string.cpp
index d3dbc6904..3515df48e 100644
--- a/src/string.cpp
+++ b/src/string.cpp
@@ -245,15 +245,14 @@ gb_inline isize string_extension_position(String const &str) {
return dot_pos;
}
-String path_extension(String const &str) {
+String path_extension(String const &str, bool include_dot = true) {
isize pos = string_extension_position(str);
if (pos < 0) {
return make_string(nullptr, 0);
}
- return substring(str, pos, str.len);
+ return substring(str, include_dot ? pos : pos + 1, str.len);
}
-
String string_trim_whitespace(String str) {
while (str.len > 0 && rune_is_whitespace(str[str.len-1])) {
str.len--;
@@ -328,7 +327,10 @@ String directory_from_path(String const &s) {
break;
}
}
- return substring(s, 0, i);
+ if (i >= 0) {
+ return substring(s, 0, i);
+ }
+ return substring(s, 0, 0);
}
String concatenate_strings(gbAllocator a, String const &x, String const &y) {