From http://www.jwz.org/xscreensaver/xscreensaver-5.27.tar.gz
[xscreensaver] / driver / prefs.c
index 4d6c80e2b0f60bf563b7ffcd5125e3e0ca2d0da2..e2d765ab377d8cd605497c72890cd3b32c3374c3 100644 (file)
@@ -1635,7 +1635,9 @@ stop_the_insanity (saver_preferences *p)
 
   if (p->dpms_standby == 0 &&     /* if *all* are 0, then DPMS is disabled */
       p->dpms_suspend == 0 &&
-      p->dpms_off     == 0)
+      p->dpms_off     == 0 &&
+      !(p->dpms_quickoff_p)           /* ... but we want to do DPMS quick off */
+      )
     p->dpms_enabled_p = False;
 
 
@@ -1659,16 +1661,18 @@ senescent_p (void)
 {
   time_t now = time ((time_t *) 0);
   struct tm *tm = localtime (&now);
-  char *s, mon[4], year[5];
+  const char *s = screensaver_id;
+  char mon[4], year[5];
   int m, y, months;
-  s = strchr (screensaver_id, '-');
-  s++;
+  s = strchr (s, ' '); if (!s) abort(); s++;
+  s = strchr (s, '('); if (!s) abort(); s++;
+  s = strchr (s, '-'); if (!s) abort(); s++;
   strncpy (mon, s, 3);
-  s = strchr (s, '-');
-  s++;
-  strncpy (year, s, 4);
   mon[3] = 0;
+  s = strchr (s, '-'); if (!s) abort(); s++;
+  strncpy (year, s, 4);
   year[4] = 0;
+  y = atoi (year);
   if      (!strcmp(mon, "Jan")) m = 0;
   else if (!strcmp(mon, "Feb")) m = 1;
   else if (!strcmp(mon, "Mar")) m = 2;
@@ -1682,9 +1686,6 @@ senescent_p (void)
   else if (!strcmp(mon, "Nov")) m = 10;
   else if (!strcmp(mon, "Dec")) m = 11;
   else abort();
-
-  y = (year[0]-'0')*1000 + (year[1]-'0')*100 + (year[2]-'0')*10 +(year[3]-'0');
-
   months = ((((tm->tm_year + 1900) * 12) + tm->tm_mon) -
             (y * 12 + m));