projects
/
xscreensaver
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
http://ftp.x.org/contrib/applications/xscreensaver-2.17.tar.gz
[xscreensaver]
/
utils
/
resources.c
diff --git
a/utils/resources.c
b/utils/resources.c
index d13fb820e3b2764f0c28475ee53cc5d65629a7e8..11e326ea819077755de41d9fd62edb46eeac83ab 100644
(file)
--- a/
utils/resources.c
+++ b/
utils/resources.c
@@
-84,12
+84,28
@@
get_integer_resource (char *res_name, char *res_class)
{
int val;
char c, *s = get_string_resource (res_name, res_class);
{
int val;
char c, *s = get_string_resource (res_name, res_class);
+ char *ss = s;
if (!s) return 0;
if (!s) return 0;
- if (1 == sscanf (s, " %d %c", &val, &c))
+
+ while (*ss && *ss <= ' ') ss++; /* skip whitespace */
+
+ if (ss[0] == '0' && (ss[1] == 'x' || ss[1] == 'X')) /* 0x: parse as hex */
{
{
- free (s);
- return val;
+ if (1 == sscanf (ss+2, "%x %c", &val, &c))
+ {
+ free (s);
+ return val;
+ }
}
}
+ else /* else parse as dec */
+ {
+ if (1 == sscanf (ss, "%d %c", &val, &c))
+ {
+ free (s);
+ return val;
+ }
+ }
+
fprintf (stderr, "%s: %s must be an integer, not %s.\n",
progname, res_name, s);
free (s);
fprintf (stderr, "%s: %s must be an integer, not %s.\n",
progname, res_name, s);
free (s);