X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-psi;a=blobdiff_plain;f=psi.d%2Fglob.psi;h=4e5589a579fa5b1470e7b074f4b2de62a1986663;hp=61ada04bb65c7f0f41d9360c0ed8de1fff958d6c;hb=16e375c9503246b179550cd97c0739c916dc802a;hpb=c9b3436bd51a4dcf7d6cc6817d4c7a8ad99538d4 diff --git a/psi.d/glob.psi b/psi.d/glob.psi index 61ada04..4e5589a 100644 --- a/psi.d/glob.psi +++ b/psi.d/glob.psi @@ -1,18 +1,31 @@ +#include + function psi\glob(string $pattern, int $flags, array &$glob = NULL, callable $errfn = NULL) : int { let path = strval($pattern); let flags = intval($flags); - let err = callback intval($errfn( - to_string(errmsg), - to_int(errno) + let err = callback( + epath, + eerrno + ) as intval($errfn( + to_string(epath), + to_int(eerrno) )); - let buf = &arrval($glob); - return to_int(glob); + let buf = &arrval($glob, + intval($gl_matchc), + intval($gl_pathc), + intval($gl_offs), + intval($gl_flags), + &arrval($gl_pathv, + strval($gl_pathv) + ) + ); + return glob(path, flags, err, buf) as to_int(glob); set $glob = to_array(*buf, to_int(gl_matchc), to_int(gl_pathc), to_int(gl_offs), to_int(gl_flags), - to_array(gl_pathv, gl_pathc + gl_offs, to_string(gl_pathv)) + to_array(*gl_pathv, gl_pathc + gl_offs, to_string(*gl_pathv)) ); free globfree(buf); }