diff options
author | Wenji Huang <wenji.huang@oracle.com> | 2009-04-27 04:34:42 -0400 |
---|---|---|
committer | Wenji Huang <wenji.huang@oracle.com> | 2009-04-26 23:04:52 -0400 |
commit | 40fc3e43cea224623400ac07b6f03c700d209dec (patch) | |
tree | a515fed92b082c8f1140c31deb006ef1254fabbc | |
parent | 9f38e65363878d1e1bc8f51a0ad2cc4fd0316e13 (diff) | |
download | systemtap-steved-40fc3e43cea224623400ac07b6f03c700d209dec.tar.gz systemtap-steved-40fc3e43cea224623400ac07b6f03c700d209dec.tar.xz systemtap-steved-40fc3e43cea224623400ac07b6f03c700d209dec.zip |
Add function of returning the char in given position of string
* tapset/string.stp: New function stringat.
* testsuite/systemtap.printf/char1.exp: Update test case.
* testsuite/systemtap.printf/char1.stp: Ditto.
-rw-r--r-- | tapset/string.stp | 12 | ||||
-rw-r--r-- | testsuite/systemtap.printf/char1.exp | 2 | ||||
-rw-r--r-- | testsuite/systemtap.printf/char1.stp | 1 |
3 files changed, 14 insertions, 1 deletions
diff --git a/tapset/string.stp b/tapset/string.stp index 2f43aecc..35ee9fa2 100644 --- a/tapset/string.stp +++ b/tapset/string.stp @@ -25,6 +25,18 @@ function substr:string(str:string,start:long, length:long) %{ /* pure */ strlcpy(THIS->__retvalue, THIS->str + THIS->start, length); %} +/** @addtogroup library +* @code function stringat:string(str:string, pos:long) @endcode +* @param str string +* @param pos the given position. 0 = start of the string +* @return Returns the char in given position of string. +*/ +function stringat:long(str:string, pos:long) %{ /* pure */ + if (THIS->pos >= 0 && THIS->pos < strlen(THIS->str)) + THIS->__retvalue = THIS->str[THIS->pos]; + else + THIS->__retvalue = 0; +%} /** @addtogroup library * @code isinstr:long(s1:string,s2:string) @endcode diff --git a/testsuite/systemtap.printf/char1.exp b/testsuite/systemtap.printf/char1.exp index 35aa479f..f9343c0e 100644 --- a/testsuite/systemtap.printf/char1.exp +++ b/testsuite/systemtap.printf/char1.exp @@ -1,3 +1,3 @@ set test "char1" -set ::result_string {stap} +set ::result_string {stapok} stap_run2 $srcdir/$subdir/$test.stp diff --git a/testsuite/systemtap.printf/char1.stp b/testsuite/systemtap.printf/char1.stp index 207d1bc5..564c416b 100644 --- a/testsuite/systemtap.printf/char1.stp +++ b/testsuite/systemtap.printf/char1.stp @@ -3,6 +3,7 @@ probe begin printf("%c", 115) printf("%c", 116) printf("%c%c", 97, 112) + printf("%c%c", stringat("ok", 0), stringat("ok", 1)) print("\n") exit() } |