From cba913c5217fd4071419279da81fd02599715b6a Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 17 Oct 2006 11:05:34 +0000 Subject: [PATCH] * dirOf: return a path if the argument is a path. --- src/libexpr/primops.cc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/libexpr/primops.cc b/src/libexpr/primops.cc index 536345f22..6b4858d80 100644 --- a/src/libexpr/primops.cc +++ b/src/libexpr/primops.cc @@ -316,11 +316,15 @@ static Expr primBaseNameOf(EvalState & state, const ATermVector & args) /* Return the directory of the given path, i.e., everything before the - last slash. */ + last slash. Return either a path or a string depending on the type + of the argument. */ static Expr primDirOf(EvalState & state, const ATermVector & args) { PathSet context; - return makeStr(dirOf(coerceToPath(state, args[0], context)), context); + Expr e = evalExpr(state, args[0]); ATerm dummy; + bool isPath = matchPath(e, dummy); + Path dir = dirOf(coerceToPath(state, e, context)); + return isPath ? makePath(toATerm(dir)) : makeStr(dir, context); }