
Hi,
On 22-12-14 13:35, Ian Campbell wrote:
On Fri, 2014-12-19 at 18:10 +0100, Hans de Goede wrote:
Add 2 helper functions to get strings, reps. ints from the options value returned by video_get_video_mode() / video_get_ctfb_res_modes().
I can't quite parse this, what is "reps. ints"?
Oops sorry, that should be resp. for respectively, so with the abbreviations dropped it should read:
"Add 2 helper functions to get strings, respectively integers from the options value returned by video_get_video_mode() / video_get_ctfb_res_modes()."
Which hopefully is more clear, I've fixed this in my personal tree.
Also, it's "separated" not "seperated" (throughout).
I've also fixed this in my personal tree.
Thanks & Regards,
Hans
Signed-off-by: Hans de Goede hdegoede@redhat.com
drivers/video/videomodes.c | 60 +++++++++++++++++++++++++++++++++++++++++++++- drivers/video/videomodes.h | 5 ++++ 2 files changed, 64 insertions(+), 1 deletion(-)
diff --git a/drivers/video/videomodes.c b/drivers/video/videomodes.c index 72841fd..1f79d5f 100644 --- a/drivers/video/videomodes.c +++ b/drivers/video/videomodes.c @@ -113,7 +113,7 @@ const struct ctfb_res_modes res_mode_init[RES_MODES_COUNT] = {
- returns the length to the next seperator
*/ static int -video_get_param_len (char *start, char sep) +video_get_param_len (const char *start, char sep) { int i = 0; while ((*start != 0) && (*start != sep)) { @@ -313,3 +313,61 @@ void video_get_ctfb_res_modes(int default_mode, unsigned int default_depth, xres, yres, depth, refresh, (*mode_ret)->xres, (*mode_ret)->yres, *depth_ret, (*mode_ret)->refresh); }
+/*
- Find the named string option within the ',' seperated options string, and
- store its value in dest.
- @options: ',' seperated options string
- @name: name of the option to look for
- @dest: destination buffer to store the value of the option in
- @dest_len: length of dest
- @def: value to store in dest if the option is not present in options
- */
+void video_get_option_string(const char *options, const char *name,
char *dest, int dest_len, const char *def)
+{
- const char *p = options;
- const int name_len = strlen(name);
- int i, len;
- while (p && (i = video_get_param_len (p, ',')) != 0) {
if (strncmp(p, name, name_len) == 0 && p[name_len] == '=') {
len = i - (name_len + 1);
if (len >= dest_len)
len = dest_len - 1;
memcpy(dest, &p[name_len + 1], len);
dest[len] = 0;
return;
}
p += i;
if (*p != 0)
p++; /* skip ',' */
- }
- strcpy(dest, def);
+}
+/*
- Find the named integer option within the ',' seperated options string, and
- return its value.
- @options: ',' seperated options string
- @name: name of the option to look for
- @def: value to return if the option is not present in options
- */
+int video_get_option_int(const char *options, const char *name, int def) +{
- const char *p = options;
- const int name_len = strlen(name);
- int i;
- while (p && (i = video_get_param_len (p, ',')) != 0) {
if (strncmp(p, name, name_len) == 0 && p[name_len] == '=')
return simple_strtoul(&p[name_len + 1], NULL, 10);
p += i;
if (*p != 0)
p++; /* skip ',' */
- }
- return def;
+} diff --git a/drivers/video/videomodes.h b/drivers/video/videomodes.h index 02419cd..047b8a9 100644 --- a/drivers/video/videomodes.h +++ b/drivers/video/videomodes.h @@ -84,3 +84,8 @@ void video_get_ctfb_res_modes(int default_mode, unsigned int default_depth, const struct ctfb_res_modes **mode_ret, unsigned int *depth_ret, const char **options);
+void video_get_option_string(const char *options, const char *name,
char *dest, int dest_len, const char *def);
+int video_get_option_int(const char *options, const char *name, int def);