Versione funzionante di un CGI che produce PNG di codici a barre.
[gapil.git] / sources / sleep1.c
index 158e5058927d0f38fa37fc3ff4c6f982ec8f8956..2225c96eac15729b79cabedbaad09be25d5e4f25 100644 (file)
 /* 
  * Include needed headers
  */
+#define _GNU_SOURCE
 #include <unistd.h>      /* unix standard library */
+#include <signal.h>      /* signal standard library */
 
-unsigned int sleep(unsigned int seconds)
-{
-/* 
- * Variables definition  
- */
-    signandler_t prev_handler;
-
-    if ((prev_handler = signal(SIGALRM, alarm_hand)) == SIG_ERR) {
-       printf("Cannot set handler for alarm\n");
-       exit(1);
-    }
-    alarm(second);
-    pause(); 
-    /* restore previous signal handler */
-    signal(SIGALRM, prev_handler);
-    /* remove alarm, return remaining time */
-    return alarm(0);
-}
 void alarm_hand(int sig) {
     /* check if the signal is the right one */
     if (sig != SIGALRM) { /* if not exit with error */
@@ -57,3 +41,19 @@ void alarm_hand(int sig) {
        return;
     }
 }
+unsigned int sleep(unsigned int seconds)
+{
+    sighandler_t prev_handler;
+    /* install and check new handler */
+    if ((prev_handler = signal(SIGALRM, alarm_hand)) == SIG_ERR) {
+       printf("Cannot set handler for alarm\n"); 
+       exit(-1);
+    }
+    /* set alarm and go to sleep */
+    alarm(seconds); 
+    pause(); 
+    /* restore previous signal handler */
+    signal(SIGALRM, prev_handler);
+    /* return remaining time */
+    return alarm(0);
+}