http://packetstormsecurity.org/UNIX/admin/xscreensaver-4.14.tar.gz
[xscreensaver] / hacks / phosphor.c
index 22e9495e3fd832c0608de34e17dc9e9e8850dd3a..8ba63dd28390b4f467474981837dcf5d06c8f5f7 100644 (file)
@@ -1,4 +1,4 @@
-/* xscreensaver, Copyright (c) 1999 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 1999, 2000 Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -450,7 +450,6 @@ static void
 set_cursor (p_state *state, Bool on)
 {
   if (set_cursor_1 (state, on))
-;
     {
       if (state->cursor_timer)
         XtRemoveTimeOut (state->cursor_timer);
@@ -529,6 +528,7 @@ static void
 scroll (p_state *state)
 {
   int x, y;
+
   for (x = 0; x < state->grid_width; x++)
     {
       p_cell *from = 0, *to = 0;
@@ -553,7 +553,7 @@ scroll (p_state *state)
         }
 
       to = from;
-      if (to->state == FLARE || to->state == NORMAL)
+      if (to && (to->state == FLARE || to->state == NORMAL))
         {
           to->state = FADE;
           to->changed = True;
@@ -566,6 +566,8 @@ scroll (p_state *state)
 static void
 print_char (p_state *state, int c)
 {
+  static char last_c = 0;
+
   p_cell *cell = &state->cells[state->grid_width * state->cursor_y
                               + state->cursor_x];
 
@@ -580,11 +582,16 @@ print_char (p_state *state, int c)
 
   if (c == '\r' || c == '\n')
     {
-      state->cursor_x = 0;
-      if (state->cursor_y == state->grid_height - 1)
-        scroll (state);
+      if (c == '\n' && last_c == '\r')
+        ;   /* CRLF -- do nothing */
       else
-        state->cursor_y++;
+        {
+          state->cursor_x = 0;
+          if (state->cursor_y == state->grid_height - 1)
+            scroll (state);
+          else
+            state->cursor_y++;
+        }
     }
   else if (c == '\014')
     {
@@ -610,6 +617,8 @@ print_char (p_state *state, int c)
         }
     }
   set_cursor (state, True);
+
+  last_c = c;
 }
 
 
@@ -769,7 +778,7 @@ char *defaults [] = {
   "*ticks:                20",
   "*delay:                50000",
   "*cursor:               333",
-  "*program:            " ZIPPY_PROGRAM,
+  "*program:            " FORTUNE_PROGRAM,
   "*relaunch:             5",
   0
 };