aboutsummaryrefslogtreecommitdiffstats
path: root/plugin_string.c
diff options
context:
space:
mode:
authorReinhard Tartler <siretart@tauware.de>2007-04-30 09:35:54 +0200
committerReinhard Tartler <siretart@tauware.de>2007-04-30 09:35:54 +0200
commit874ef72c5b807b61bc53dbaa0fa623b40bff1736 (patch)
tree3c44151e2132fa82d3e7eef2aa82eee1c9e1369d /plugin_string.c
parentcbaf3ad73900f63eae0add0e33439a1bf04b5a1e (diff)
downloadlcd4linux-874ef72c5b807b61bc53dbaa0fa623b40bff1736.tar.gz
new upstream version
Diffstat (limited to '')
-rw-r--r--plugin_string.c67
1 files changed, 66 insertions, 1 deletions
diff --git a/plugin_string.c b/plugin_string.c
index 0ec0e7e..f82f265 100644
--- a/plugin_string.c
+++ b/plugin_string.c
@@ -1,4 +1,4 @@
-/* $Id: plugin_string.c 728 2007-01-14 11:14:38Z michael $
+/* $Id: plugin_string.c 773 2007-02-25 12:39:09Z michael $
* $URL: https://ssl.bulix.org/svn/lcd4linux/branches/0.10.1/plugin_string.c $
*
* string plugin
@@ -65,12 +65,77 @@ static void my_strupper(RESULT * result, RESULT * arg1)
free(value);
}
+static void my_strstr(RESULT * result, RESULT * arg1, RESULT * arg2)
+{
+ char *p;
+ double value;
+
+ char *haystack = R2S(arg1);
+ char *needle = R2S(arg2);
+
+ p = strstr(haystack, needle);
+
+ if (p == NULL) {
+ value = -1;
+ } else {
+ value = p - haystack;
+ }
+
+ SetResult(&result, R_NUMBER, &value);
+}
+
+static void my_substr(RESULT * result, int argc, RESULT * argv[])
+{
+ char *str, *p1, *p2;
+ int pos, len;
+
+ if (argc < 2 || argc > 3) {
+ error("substr(): wrong number of parameters");
+ SetResult(&result, R_STRING, "");
+ return;
+ }
+
+ str = strdup(R2S(argv[0]));
+
+ pos = R2N(argv[1]);
+ if (pos < 0)
+ pos = 0;
+
+ if (argc == 3) {
+ len = R2N(argv[2]);
+ if (len < 0)
+ len = 0;
+ } else {
+ len = -1;
+ }
+
+ p1 = str;
+ while (pos > 0 && *p1 != '\0') {
+ p1++;
+ pos--;
+ }
+
+ if (len >= 0) {
+ p2 = p1;
+ while (len > 0 && *p2 != '\0') {
+ p2++;
+ len--;
+ }
+ *p2 = '\0';
+ }
+
+ SetResult(&result, R_STRING, p1);
+ free(str);
+}
+
int plugin_init_string(void)
{
/* register some basic string functions */
AddFunction("strlen", 1, my_strlen);
AddFunction("strupper", 1, my_strupper);
+ AddFunction("strstr", 2, my_strstr);
+ AddFunction("substr", -1, my_substr);
return 0;
}