aboutsummaryrefslogtreecommitdiffstats
path: root/src/vidmode.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/vidmode.c')
-rw-r--r--src/vidmode.c30
1 files changed, 29 insertions, 1 deletions
diff --git a/src/vidmode.c b/src/vidmode.c
index 12bec8b..df66f8c 100644
--- a/src/vidmode.c
+++ b/src/vidmode.c
@@ -20,6 +20,7 @@
#include <stdlib.h>
#include <stdio.h>
#include <stdint.h>
+#include <string.h>
#ifdef ENABLE_NLS
# include <libintl.h>
@@ -36,8 +37,35 @@
int
-vidmode_init(vidmode_state_t *state, int screen_num, int crtc_num)
+vidmode_init(vidmode_state_t *state, char *args)
{
+ int screen_num = -1;
+
+ /* Parse arguments. */
+ while (args != NULL) {
+ char *next_arg = strchr(args, ':');
+ if (next_arg != NULL) *(next_arg++) = '\0';
+
+ char *value = strchr(args, '=');
+ if (value != NULL) *(value++) = '\0';
+
+ if (strcasecmp(args, "screen") == 0) {
+ if (value == NULL) {
+ fprintf(stderr, _("Missing value for"
+ " parameter: `%s'.\n"),
+ args);
+ return -1;
+ }
+ screen_num = atoi(value);
+ } else {
+ fprintf(stderr, _("Unknown method parameter: `%s'.\n"),
+ args);
+ return -1;
+ }
+
+ args = next_arg;
+ }
+
int r;
/* Open display */