diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2009-08-05 20:16:28 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2009-08-05 20:16:28 +0000 |
commit | 34788417b44044b9d62238dab8d66de2b30879de (patch) | |
tree | 4639cba61d64a7f090967d2a50c30884c9505c57 /cpukit/libmisc/bspcmdline/bspcmdline_getparam.c | |
parent | e152ecb7ec415c7f73fcf39c3dfdda4f90035011 (diff) |
2009-08-05 Joel Sherrill <joel.sherrill@oarcorp.com>
* libmisc/bspcmdline/bspcmdline.h, libmisc/bspcmdline/bspcmdline_get.c,
libmisc/bspcmdline/bspcmdline_getparam.c,
libmisc/bspcmdline/bspcmdline_getparamraw.c,
libmisc/bspcmdline/bspcmdline_getparamrhs.c: New files.
Missed in previous commit.
Diffstat (limited to 'cpukit/libmisc/bspcmdline/bspcmdline_getparam.c')
-rw-r--r-- | cpukit/libmisc/bspcmdline/bspcmdline_getparam.c | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/cpukit/libmisc/bspcmdline/bspcmdline_getparam.c b/cpukit/libmisc/bspcmdline/bspcmdline_getparam.c new file mode 100644 index 0000000000..0df08c91d7 --- /dev/null +++ b/cpukit/libmisc/bspcmdline/bspcmdline_getparam.c @@ -0,0 +1,67 @@ +/* + * COPYRIGHT (c) 1989-2009. + * On-Line Applications Research Corporation (OAR). + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + * + * $Id$ + */ + +#include <rtems/bspcmdline.h> + +#include <stdio.h> + +static void copy_string( + const char *start, + char *value, + size_t length +) +{ + int i; + int quotes; + const char *p = start; + + quotes=0; + for (i=0 ; *p && i<length-1; ) { + if ( *p == '\"' ) { + quotes++; + } else if ( ((quotes % 2) == 0) && *p == ' ' ) + break; + value[i++] = *p++; + value[i] = '\0'; + } + +} + +const char *bsp_cmdline_get_param( + const char *name, + char *value, + size_t length +) +{ + const char *p; + + if ( !name ) + return NULL; + + if ( !value ) + return NULL; + + if ( !length ) + return NULL; + + value[0] = '\0'; + + p = bsp_cmdline_get_param_raw( name ); + + if ( !p ) + return NULL; + + copy_string( p, value, length ); + + return value; +} + + |