X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?p=xscreensaver;a=blobdiff_plain;f=OSX%2FPrefsReader.m;h=e3be145696d796f25f9c84fb0f42bdc84646f315;hp=9ff55bba23692d2bad162209d6632cd80991dab3;hb=c1b9b55ad8d59dc05ef55e316aebf5863e7dfa56;hpb=de460e831dc8578acfa8b72251ab9346c99c1f96 diff --git a/OSX/PrefsReader.m b/OSX/PrefsReader.m index 9ff55bba..e3be1456 100644 --- a/OSX/PrefsReader.m +++ b/OSX/PrefsReader.m @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 2006 Jamie Zawinski +/* xscreensaver, Copyright (c) 2006-2008 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -188,26 +188,29 @@ !strcmp(name, "font") || !strcmp(name, "labelFont") || // grabclient.c !strcmp(name, "titleFont") || + !strcmp(name, "fpsFont") || // fps.c + !strcmp(name, "foreground") || // fps.c !strcmp(name, "background") )) NSLog(@"warning: no preference \"%s\" [string]", name); return NULL; } -#if 0 - if (! [o isKindOfClass:[NSString class]]) { - NSAssert2(0, @"%s = \"%@\" but should have been an NSString", name, o); - abort(); - } -#else if (! [o isKindOfClass:[NSString class]]) { NSLog(@"asked for %s as a string, but it is a %@", name, [o class]); o = [(NSNumber *) o stringValue]; } -#endif NSString *os = (NSString *) o; - const char *result = [os cStringUsingEncoding:NSUTF8StringEncoding]; - return strdup (result); + char *result = strdup ([os cStringUsingEncoding:NSUTF8StringEncoding]); + + // Kludge: if the string is surrounded with single-quotes, remove them. + // This happens when the .xml file says things like arg="-foo 'bar baz'" + if (result[0] == '\'' && result[strlen(result)-1] == '\'') { + result[strlen(result)-1] = 0; + strcpy (result, result+1); + } + + return result; } @@ -227,6 +230,7 @@ !strcmp(name, "mono") || !strcmp(name, "count") || !strcmp(name, "ncolors") || + !strcmp(name, "doFPS") || // fps.c !strcmp(name, "eraseSeconds") // erase.c )) NSLog(@"warning: no preference \"%s\" [float]", name); @@ -245,7 +249,11 @@ - (int) getIntegerResource: (const char *) name { - return (int) [self getFloatResource:name]; + // Sliders might store float values for integral resources; round them. + float v = [self getFloatResource:name]; + int i = (int) (v + (v < 0 ? -0.5 : 0.5)); // ignore sign or -1 rounds to 0 + // if (i != v) NSLog(@"%s: rounded %.3f to %d", name, v, i); + return i; }