/* $Id$ * $URL$ * * string plugin * * Copyright (C) 2003, 2004 Michael Reinelt * Copyright (C) 2004 The LCD4Linux Team * * This file is part of LCD4Linux. * * LCD4Linux is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * LCD4Linux is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ /* * exported functions: * * int plugin_init_string (void) * adds some handy string functions * */ #include "config.h" #include #include #include #include #include "debug.h" #include "plugin.h" static void my_strlen(RESULT * result, RESULT * arg1) { double value = strlen(R2S(arg1)); SetResult(&result, R_NUMBER, &value); } /* 'upcase' function (shamelessly stolen from plugin_sample.c)*/ /* returns the string in upper case letters */ static void my_strupper(RESULT * result, RESULT * arg1) { char *value, *p; value = strdup(R2S(arg1)); for (p = value; *p != '\0'; p++) *p = toupper(*p); SetResult(&result, R_STRING, value); 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; } void plugin_exit_string(void) { /* empty */ } 59bffa9e118&showmsg=1&follow=1'>Expand)AuthorFilesLines 2000-08-09[lcd4linux @ 2000-08-09 11:03:07 by reinelt]reinelt1-13/+28 2000-08-09[lcd4linux @ 2000-08-09 09:50:29 by reinelt]reinelt13-127/+204 2000-07-31[lcd4linux @ 2000-07-31 10:43:44 by reinelt]reinelt8-91/+235 2000-07-31[lcd4linux @ 2000-07-31 06:46:35 by reinelt]reinelt4-5/+15 2000-06-04[lcd4linux @ 2000-06-04 21:43:50 by herp]herp1-2/+9 2000-05-21[lcd4linux @ 2000-05-21 06:20:35 by reinelt]reinelt7-35/+148 2000-05-03[lcd4linux @ 2000-05-03 17:14:51 by herp]herp1-1/+1 2000-05-03[lcd4linux @ 2000-05-03 09:37:32 by herp]herp3-0/+658 2000-05-02[lcd4linux @ 2000-05-02 23:07:48 by herp]herp4-15/+24 2000-05-02[lcd4linux @ 2000-05-02 06:05:00 by reinelt]reinelt5-7/+312 2000-04-30[lcd4linux @ 2000-04-30 06:40:42 by reinelt]reinelt2-17/+37 2000-04-28[lcd4linux @ 2000-04-28 05:19:55 by reinelt]reinelt5-12/+554 2000-04-20[lcd4linux @ 2000-04-20 05:48:42 by reinelt]reinelt2-0/+18 2000-04-19[lcd4linux @ 2000-04-19 04:44:20 by reinelt]reinelt1-2/+2 2000-04-17[lcd4linux @ 2000-04-17 05:14:27 by reinelt]reinelt3-5/+119 2000-04-15[lcd4linux @ 2000-04-15 16:56:52 by reinelt]reinelt7-58/+197 2000-04-15[lcd4linux @ 2000-04-15 11:56:35 by reinelt]reinelt4-10/+60 2000-04-15[lcd4linux @ 2000-04-15 11:13:54 by reinelt]reinelt10-28/+144 2000-04-13[lcd4linux @ 2000-04-13 06:09:52 by reinelt]reinelt5-54/+126 2000-04-12[lcd4linux @ 2000-04-12 08:05:45 by reinelt]reinelt6-24/+535 2000-04-10[lcd4linux @ 2000-04-10 04:40:53 by reinelt]reinelt5-31/+65 2000-04-07[lcd4linux @ 2000-04-07 05:42:20 by reinelt]reinelt6-17/+266 2000-04-05[lcd4linux @ 2000-04-05 05:58:36 by reinelt]reinelt4-17/+65