diff options
-rw-r--r-- | plugin.c | 8 | ||||
-rw-r--r-- | plugin_string.c | 46 |
2 files changed, 52 insertions, 2 deletions
@@ -1,4 +1,4 @@ -/* $Id: plugin.c,v 1.41 2006/04/15 05:22:52 reinelt Exp $ +/* $Id: plugin.c,v 1.42 2006/07/29 21:12:31 lfcorreia Exp $ * * plugin handler for the Evaluator * @@ -23,6 +23,9 @@ * * * $Log: plugin.c,v $ + * Revision 1.42 2006/07/29 21:12:31 lfcorreia + * Add UPPERCASE string plugin function + * * Revision 1.41 2006/04/15 05:22:52 reinelt * mpd plugin from Stefan Kuhne * @@ -218,6 +221,8 @@ int plugin_init_math(void); void plugin_exit_math(void); int plugin_init_string(void); void plugin_exit_string(void); +int plugin_init_strupper(void); +void plugin_exit_strupper(void); int plugin_init_test(void); void plugin_exit_test(void); int plugin_init_time(void); @@ -280,6 +285,7 @@ int plugin_init(void) plugin_init_cfg(); plugin_init_math(); plugin_init_string(); + plugin_init_strupper(); plugin_init_test(); plugin_init_time(); diff --git a/plugin_string.c b/plugin_string.c index e1fd0a4..464d9e8 100644 --- a/plugin_string.c +++ b/plugin_string.c @@ -1,4 +1,4 @@ -/* $Id: plugin_string.c,v 1.8 2005/05/08 04:32:45 reinelt Exp $ +/* $Id: plugin_string.c,v 1.9 2006/07/29 21:12:31 lfcorreia Exp $ * * string plugin * @@ -23,6 +23,9 @@ * * * $Log: plugin_string.c,v $ + * Revision 1.9 2006/07/29 21:12:31 lfcorreia + * Add UPPERCASE string plugin function + * * Revision 1.8 2005/05/08 04:32:45 reinelt * CodingStyle added and applied * @@ -96,3 +99,44 @@ void plugin_exit_string(void) { /* empty */ } + +/* 'upcase' function (shamelessly stolen from plugin_sample.c)*/ +/* takes one argument, a string */ +/* returns the string in upper case letters */ + +static void my_upcase(RESULT * result, RESULT * arg1) +{ + char *value, *p; + + /* create a local copy of the argument */ + /* Do *NOT* try to modify the original string! */ + value = strdup(R2S(arg1)); + + /* process the string */ + for (p = value; *p != '\0'; p++) + *p = toupper(*p); + + /* store result */ + /* when called with R_STRING, it assumes the */ + /* next parameter to be a pointer to a string */ + /* 'value' is already a char*, so use 'value', not '&value' */ + SetResult(&result, R_STRING, value); + + /* free local copy again */ + /* Note that SetResult() makes its own string copy */ + free(value); +} + +int plugin_init_strupper(void) +{ + + /* register my UPPERCASE transforming function */ + AddFunction("strupper", 1, my_upcase); + + return 0; +} + +void plugin_exit_strupper(void) +{ + /* empty */ +} |