]> code.delx.au - gnu-emacs/blobdiff - src/atimer.c
2002-08-10 Andrew Choi <akochoi@shaw.ca>
[gnu-emacs] / src / atimer.c
index eafe0f5ebf6ebe8da7d7fa7a8418f01c062fe22f..492aa4ec04e9a0eb68ca79269c69e485b2a1324c 100644 (file)
@@ -35,11 +35,6 @@ Boston, MA 02111-1307, USA.  */
 #include <sys/time.h>
 #endif
 
-/* The ubiquitous min/max macros.  */
-
-#define max(X, Y) ((X) > (Y) ? (X) : (Y))
-#define min(X, Y) ((X) < (Y) ? (X) : (Y))
-
 /* Free-list of atimer structures.  */
 
 static struct atimer *free_atimers;
@@ -62,7 +57,7 @@ static struct atimer *atimers;
 
 int pending_atimers;
 
-/* Block/unblock SIGALRM.. */
+/* Block/unblock SIGALRM.  */
 
 #define BLOCK_ATIMERS   sigblock (sigmask (SIGALRM))
 #define UNBLOCK_ATIMERS sigunblock (sigmask (SIGALRM))
@@ -73,6 +68,7 @@ static void set_alarm P_ ((void));
 static void schedule_atimer P_ ((struct atimer *));
 static struct atimer *append_atimer_lists P_ ((struct atimer *,
                                               struct atimer *));
+SIGTYPE alarm_signal_handler ();
 
 
 /* Start a new atimer of type TYPE.  TIME specifies when the timer is
@@ -176,7 +172,7 @@ cancel_atimer (timer)
       struct atimer **list = i ? &stopped_atimers : &atimers;
       
       /* See if TIMER is active or stopped.  */
-      for (t = *list, prev = 0; t && t != timer; t = t->next)
+      for (t = *list, prev = NULL; t && t != timer; prev = t, t = t->next)
        ;
 
       /* If it is, take it off the its list, and put in on the
@@ -191,6 +187,7 @@ cancel_atimer (timer)
          
          t->next = free_atimers;
          free_atimers = t;
+         break;
        }
     }
 
@@ -394,12 +391,6 @@ alarm_signal_handler (signo)
       EMACS_GET_TIME (now);
     }
   
-#if defined (USG) && !defined (POSIX_SIGNALS)
-  /* USG systems forget handlers when they are used;
-     must reestablish each time.  */
-  signal (SIGALRM, alarm_signal_handler);
-#endif /* USG */
-  
   set_alarm ();
 }