diff --git a/selfhost/cmd/ww/main.combined.ww b/selfhost/cmd/ww/main.combined.ww
index f9a17726..1f759d17 100644
--- a/selfhost/cmd/ww/main.combined.ww
+++ b/selfhost/cmd/ww/main.combined.ww
@@ -2876,23 +2876,12 @@ fn pathstr(p: *u8) str = {
};
fn cstreq(a: *u8, b: *u8) bool = {
- let i: u64 = 0u64;
- for (a[i] == b[i]) {
- if (a[i] == 0u8) { return true; };
- i += 1u64;
- };
- return false;
+ return strings.compare(pathstr(a), pathstr(b)) == 0;
};
// cstreqlit — compare a NUL-terminated *u8 to a ww string literal.
fn cstreqlit(a: *u8, lit: str) bool = {
- let n: i32 = lit.len;
- let i: i32 = 0;
- for (i < n) {
- if (a[i] != lit[i]) { return false; };
- i += 1;
- };
- return a[n] == 0u8;
+ return strings.compare(pathstr(a), lit) == 0;
};
// memcpy
@@ -3782,17 +3771,7 @@ fn buildone(selfdir: *u8, src: *u8, entryisdir: i32, out: *u8, incs: *u8, lf: *l
//
/.ww or //.ww
fn cstrendswithlit(p: *u8, lit: str) bool = {
- let plen: u64 = cstrlen(p);
- let slen: u64 = lit.len: u64;
- if (plen < slen) { return false; };
- let off: u64 = plen - slen;
- let i: i32 = 0;
- for (i < lit.len) {
- let iu: u64 = i: u64;
- if (p[off + iu] != lit[i]) { return false; };
- i += 1;
- };
- return true;
+ return strings.hassuffix(pathstr(p), lit);
};
// basenameoff — return the offset of the last path segment within `p`
diff --git a/selfhost/cmd/ww/main.ww b/selfhost/cmd/ww/main.ww
index 212b9869..1904f3c4 100644
--- a/selfhost/cmd/ww/main.ww
+++ b/selfhost/cmd/ww/main.ww
@@ -42,23 +42,12 @@ fn pathstr(p: *u8) str = {
};
fn cstreq(a: *u8, b: *u8) bool = {
- let i: u64 = 0u64;
- for (a[i] == b[i]) {
- if (a[i] == 0u8) { return true; };
- i += 1u64;
- };
- return false;
+ return strings.compare(pathstr(a), pathstr(b)) == 0;
};
// cstreqlit — compare a NUL-terminated *u8 to a ww string literal.
fn cstreqlit(a: *u8, lit: str) bool = {
- let n: i32 = lit.len;
- let i: i32 = 0;
- for (i < n) {
- if (a[i] != lit[i]) { return false; };
- i += 1;
- };
- return a[n] == 0u8;
+ return strings.compare(pathstr(a), lit) == 0;
};
// memcpy
@@ -948,17 +937,7 @@ fn buildone(selfdir: *u8, src: *u8, entryisdir: i32, out: *u8, incs: *u8, lf: *l
// /.ww or //.ww
fn cstrendswithlit(p: *u8, lit: str) bool = {
- let plen: u64 = cstrlen(p);
- let slen: u64 = lit.len: u64;
- if (plen < slen) { return false; };
- let off: u64 = plen - slen;
- let i: i32 = 0;
- for (i < lit.len) {
- let iu: u64 = i: u64;
- if (p[off + iu] != lit[i]) { return false; };
- i += 1;
- };
- return true;
+ return strings.hassuffix(pathstr(p), lit);
};
// basenameoff — return the offset of the last path segment within `p`