Implement CONFIG_KEY_UNSIGNED_INTEGER

strtol() does not work when trying to assign 32 bits of data into a
regular signed int on 32 bit systems. Use corresponding strtoul()
instead.
diff --git a/clients/desktop-shell.c b/clients/desktop-shell.c
index 4848449..3d5119a 100644
--- a/clients/desktop-shell.c
+++ b/clients/desktop-shell.c
@@ -107,8 +107,8 @@
 static const struct config_key shell_config_keys[] = {
 	{ "background-image", CONFIG_KEY_STRING, &key_background_image },
 	{ "background-type", CONFIG_KEY_STRING, &key_background_type },
-	{ "panel-color", CONFIG_KEY_INTEGER, &key_panel_color },
-	{ "background-color", CONFIG_KEY_INTEGER, &key_background_color },
+	{ "panel-color", CONFIG_KEY_UNSIGNED_INTEGER, &key_panel_color },
+	{ "background-color", CONFIG_KEY_UNSIGNED_INTEGER, &key_background_color },
 	{ "locking", CONFIG_KEY_BOOLEAN, &key_locking },
 };
 
diff --git a/shared/config-parser.c b/shared/config-parser.c
index 3b8c5c2..10f6f12 100644
--- a/shared/config-parser.c
+++ b/shared/config-parser.c
@@ -32,6 +32,7 @@
 {
 	char *end, *s;
 	int i, len;
+	unsigned int ui;
 	
 	switch (key->type) {
 	case CONFIG_KEY_INTEGER:
@@ -43,6 +44,15 @@
 		*(int *)key->data = i;
 		return 0;
 
+	case CONFIG_KEY_UNSIGNED_INTEGER:
+		ui = strtoul(value, &end, 0);
+		if (*end != '\n') {
+			fprintf(stderr, "invalid integer: %s\n", value);
+			return -1;
+		}
+		*(unsigned int *)key->data = ui;
+		return 0;
+
 	case CONFIG_KEY_STRING:
 		len = strlen(value);
 		s = malloc(len);
diff --git a/shared/config-parser.h b/shared/config-parser.h
index 34f5c31..27f528d 100644
--- a/shared/config-parser.h
+++ b/shared/config-parser.h
@@ -24,9 +24,10 @@
 #define CONFIGPARSER_H
 
 enum config_key_type {
-	CONFIG_KEY_INTEGER,	/* typeof data = int */
-	CONFIG_KEY_STRING,	/* typeof data = char* */
-	CONFIG_KEY_BOOLEAN	/* typeof data = int */
+	CONFIG_KEY_INTEGER,		/* typeof data = int */
+	CONFIG_KEY_UNSIGNED_INTEGER,	/* typeof data = unsigned int */
+	CONFIG_KEY_STRING,		/* typeof data = char* */
+	CONFIG_KEY_BOOLEAN		/* typeof data = int */
 };
 
 struct config_key {