aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libbuild2/functions-path.cxx10
-rw-r--r--libbuild2/functions-string.cxx6
-rw-r--r--tests/function/path/testscript11
-rw-r--r--tests/function/string/testscript7
4 files changed, 34 insertions, 0 deletions
diff --git a/libbuild2/functions-path.cxx b/libbuild2/functions-path.cxx
index 72597ff..c23a8a8 100644
--- a/libbuild2/functions-path.cxx
+++ b/libbuild2/functions-path.cxx
@@ -422,6 +422,16 @@ namespace build2
f["size"] += [] (paths v) {return v.size ();};
f["size"] += [] (dir_paths v) {return v.size ();};
+ // $size(<path>)
+ // $size(<dir_path>)
+ //
+ // Return the number of characters (bytes) in the path. Note that for
+ // dir_path the result does not include the trailing directory separator
+ // (except for the POSIX root directory).
+ //
+ f["size"] += [] (path v) {return v.size ();};
+ f["size"] += [] (dir_path v) {return v.size ();};
+
// $sort(<paths> [, <flags>])
// $sort(<dir_paths> [, <flags>])
//
diff --git a/libbuild2/functions-string.cxx b/libbuild2/functions-string.cxx
index 18a4ed6..4a03a5e 100644
--- a/libbuild2/functions-string.cxx
+++ b/libbuild2/functions-string.cxx
@@ -83,6 +83,12 @@ namespace build2
//
f["size"] += [] (strings v) {return v.size ();};
+ // $size(<string>)
+ //
+ // Return the number of characters (bytes) in the string.
+ //
+ f["size"] += [] (string v) {return v.size ();};
+
// $sort(<strings> [, <flags>])
//
// Sort strings in ascending order.
diff --git a/tests/function/path/testscript b/tests/function/path/testscript
index e674497..55d727f 100644
--- a/tests/function/path/testscript
+++ b/tests/function/path/testscript
@@ -119,6 +119,17 @@ if! $posix
}
}
+: size
+:
+{
+ $* <'print $size([path] abc)' >'3' : basics
+ $* <'print $size([path] )' >'0' : zero
+
+ $* <'print $size([dir_path] abc)' >'3' : dir-basics
+ $* <'print $size([dir_path] abc/)' >'3' : dir-separator
+ $* <'print $size([dir_path] )' >'0' : dir-zero
+}
+
: invalid-path
:
p = ($posix ? /../foo : 'c:/../foo');
diff --git a/tests/function/string/testscript b/tests/function/string/testscript
index 5f80bfe..00835ce 100644
--- a/tests/function/string/testscript
+++ b/tests/function/string/testscript
@@ -39,3 +39,10 @@
$* <'print $sort([strings] a c b a, dedup)' >'a b c' : dedup
$* <'print $sort([strings] a C B a, icase)' >'a a B C' : icase
}
+
+: size
+:
+{
+ $* <'print $size([string] abc)' >'3' : basics
+ $* <'print $size([string] )' >'0' : zero
+}