X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=sources%2Fsleep1.c;h=2225c96eac15729b79cabedbaad09be25d5e4f25;hp=158e5058927d0f38fa37fc3ff4c6f982ec8f8956;hb=da8455a295d5e2e237711cd930b7052f1b30ea38;hpb=2fa7645d9be0ffb058c335de3f474892fe55af31 diff --git a/sources/sleep1.c b/sources/sleep1.c index 158e505..2225c96 100644 --- a/sources/sleep1.c +++ b/sources/sleep1.c @@ -28,26 +28,10 @@ /* * Include needed headers */ +#define _GNU_SOURCE #include /* unix standard library */ +#include /* 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); +}