aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2023-12-01 21:11:01 +0100
committerHugo Hörnquist <hugo@lysator.liu.se>2023-12-01 21:11:01 +0100
commitf47f3c33e002dc86e5e3e78e54b1fe0b58a0f6fd (patch)
tree87c5e849020c2ee517e368ad2388cc1580a59527
parentEmpty env vars equals unset when resolving language. (diff)
downloadcalp-f47f3c33e002dc86e5e3e78e54b1fe0b58a0f6fd.tar.gz
calp-f47f3c33e002dc86e5e3e78e54b1fe0b58a0f6fd.tar.xz
Improve glob errors.
These are the three possible error values specified by POSIX. Resolving the symbols makes the error far clearer. Other errors are still supported, but fall back to integers.
-rw-r--r--module/glob.scm6
1 files changed, 5 insertions, 1 deletions
diff --git a/module/glob.scm b/module/glob.scm
index 20cb4b1c..23a5b51c 100644
--- a/module/glob.scm
+++ b/module/glob.scm
@@ -36,7 +36,11 @@
(unless (zero? globret)
(scm-error 'misc-error "glob"
"Globret errror ~a"
- (list globret)
+ (list
+ (cond ((= globret GLOB_NOSPACE) 'glob-nospace)
+ ((= globret GLOB_ABORTED) 'glob-noabport)
+ ((= globret GLOB_NOMATCH) 'glob-nomatch)
+ (else globret)))
#f))
(let* ((globstr (parse-c-struct (bytevector->pointer bv) (list size_t '* size_t)))
(strvec (pointer->bytevector (cadr globstr) (car globstr) 0