summaryrefslogtreecommitdiff
path: root/src/user/lib
diff options
context:
space:
mode:
authordzwdz2022-08-28 13:02:10 +0200
committerdzwdz2022-08-28 13:02:10 +0200
commitf0bda71fe2a4df4201c6195be1fe46cf895c134d (patch)
tree098f6d4007d74569d486b515d95986b8c145d492 /src/user/lib
parentc43b0ac7672b0d8fce8b1ea0a0dbe4383d60485e (diff)
shared/path_simplify: return an unsigned value
Diffstat (limited to 'src/user/lib')
-rw-r--r--src/user/lib/include/unistd.h3
-rw-r--r--src/user/lib/unistd.c2
2 files changed, 4 insertions, 1 deletions
diff --git a/src/user/lib/include/unistd.h b/src/user/lib/include/unistd.h
index 1f0c002..59af24b 100644
--- a/src/user/lib/include/unistd.h
+++ b/src/user/lib/include/unistd.h
@@ -19,6 +19,9 @@ char *getcwd(char *buf, size_t size);
* except for the root dir. Includes the null byte.
* If size isn't enough to fit the path, returns the amount of bytes needed to fit
* it, including the null byte.
+ *
+ * Note that some errors are only detected if *out != NULL, so you must check the return
+ * value twice.
* @return 0 on failure, length of the path otherwise */
size_t absolutepath(char *out, const char *in, size_t size);
diff --git a/src/user/lib/unistd.c b/src/user/lib/unistd.c
index 1a50c3e..ce43551 100644
--- a/src/user/lib/unistd.c
+++ b/src/user/lib/unistd.c
@@ -163,7 +163,7 @@ size_t absolutepath(char *out, const char *in, size_t size) {
if (pos <= size) {
pos = path_simplify(out, out, pos);
- if (pos > 0) out[pos] = '\0';
+ if (pos == 0) return 0;
}
if (pos + 1 <= size) out[pos] = '\0';