summaryrefslogtreecommitdiffstats
path: root/testsuite/systemtap.string/tokenize.stp
diff options
context:
space:
mode:
authorPrzemyslaw Pawelczyk <przemyslaw@pawelczyk.it>2009-06-18 01:50:31 +0200
committerJosh Stone <jistone@redhat.com>2009-06-17 17:43:48 -0700
commit7f12f9a3f6aeb2452acedced5a54c66c4a19382b (patch)
tree491f2b5f26cc83319d43c2ef45417b446448c276 /testsuite/systemtap.string/tokenize.stp
parent44b73c9d467fe0383d33dce5f1217e023f3b203b (diff)
downloadsystemtap-steved-7f12f9a3f6aeb2452acedced5a54c66c4a19382b.tar.gz
systemtap-steved-7f12f9a3f6aeb2452acedced5a54c66c4a19382b.tar.xz
systemtap-steved-7f12f9a3f6aeb2452acedced5a54c66c4a19382b.zip
Fix tokenize function and test.
Previous implementation was error-prone, because allowed returning empty tokens (mimiced strsep()), which is fine if there is a NULL semantic. Unfortunately SystemTap doesn't provide it in scripts and has only blank string (""), therefore testing against it was misleading. The solution is to return only non-empty tokens (mimic strtok()). * tapset/string.stp: Fix tokenize. * testsuite/systemtap.string/tokenize.stp: Improve and add case with more than one delimiter in the delim string. * testsuite/systemtap.string/tokenize.exp: Ditto. * stapfuncs.3stap.in: Update tokenize description. * doc/langref.tex: Ditto. Signed-off-by: Josh Stone <jistone@redhat.com>
Diffstat (limited to 'testsuite/systemtap.string/tokenize.stp')
-rw-r--r--testsuite/systemtap.string/tokenize.stp75
1 files changed, 47 insertions, 28 deletions
diff --git a/testsuite/systemtap.string/tokenize.stp b/testsuite/systemtap.string/tokenize.stp
index 10703d90..1b253c8d 100644
--- a/testsuite/systemtap.string/tokenize.stp
+++ b/testsuite/systemtap.string/tokenize.stp
@@ -5,42 +5,61 @@ probe begin
teststr3 = "1,,2,3, ,4"
teststr4 = ""
teststr5 = "this is a string with no delimiters"
+ teststr6 = "this is a string, which has two delimiters"
tok = tokenize(teststr1, "|")
while (tok != "") {
- printf("%s\n", tok)
+ println(tok)
tok = tokenize("", "|")
}
- tok = tokenize(teststr1, ",")
- while (tok != "") {
- printf("%s\n", tok)
- tok = tokenize("", "|")
- }
+ println("-")
+
+ tok = tokenize(teststr1, ",")
+ while (tok != "") {
+ println(tok)
+ tok = tokenize("", "|")
+ }
+ println("-")
+
tok = tokenize(teststr2, ",")
- while (tok != "") {
- printf("%s\n", tok)
- tok = tokenize("", ",")
- }
-
- tok = tokenize(teststr3, ",")
- while (tok != "") {
- printf("%s\n", tok)
- tok = tokenize("", ",")
- }
-
- tok = tokenize(teststr4, ",")
- while (tok != "") {
- printf("%s\n", tok)
- tok = tokenize("", ",")
- }
-
- tok = tokenize(teststr5, ",")
- while (tok != "") {
- printf("%s\n", tok)
- tok = tokenize("", ",")
- }
+ while (tok != "") {
+ println(tok)
+ tok = tokenize("", ",")
+ }
+
+ println("-")
+
+ tok = tokenize(teststr3, ",")
+ while (tok != "") {
+ println(tok)
+ tok = tokenize("", ",")
+ }
+
+ println("-")
+
+ tok = tokenize(teststr4, ",")
+ while (tok != "") {
+ println(tok)
+ tok = tokenize("", ",")
+ }
+
+ println("-")
+
+ tok = tokenize(teststr5, ",")
+ while (tok != "") {
+ println(tok)
+ tok = tokenize("", ",")
+ }
+
+ println("-")
+
+ tok = tokenize(teststr6, ", ")
+ while (tok != "") {
+ println(tok)
+ tok = tokenize("", ", ")
+ }
exit()
}