Update of /cvsroot/dhcp-agent/dhcp-agent
In directory usw-pr-cvs1:/tmp/cvs-serv18809
Modified Files:
dhcp-util.c dhcp-util.h
Log Message:
added remove_alarm
Index: dhcp-util.c
===================================================================
RCS file: /cvsroot/dhcp-agent/dhcp-agent/dhcp-util.c,v
retrieving revision 1.17
retrieving revision 1.18
diff -C2 -d -r1.17 -r1.18
*** dhcp-util.c 19 Jun 2002 00:40:12 -0000 1.17
--- dhcp-util.c 19 Jun 2002 00:57:16 -0000 1.18
***************
*** 267,270 ****
--- 267,289 ----
}
+ void remove_interrupt(int sig)
+ {
+ sigset_t signal_set;
+
+ sigemptyset(&signal_set);
+ sigaddset(&signal_set, sig);
+
+ if(sigpending(&signal_set)) {
+ add_interrupt_handler(sig, SIG_IGN);
+ sigfillset(&signal_set);
+ sigdelset(&signal_set, SIGALRM);
+
+ sigsuspend(&signal_set);
+ add_interrupt_handler(sig, SIG_DFL);
+ }
+
+ return;
+ }
+
/* String routines. */
***************
*** 500,508 ****
}
/* will trigger alarm for one time only. */
void set_alarm(struct timeval alarm_time)
{
struct itimerval timer;
- struct timeval disarm_timer = { 0, 0 };
timer.it_interval = alarm_time;
--- 519,528 ----
}
+ static struct timeval disarm_timer = { 0, 0 };
+
/* will trigger alarm for one time only. */
void set_alarm(struct timeval alarm_time)
{
struct itimerval timer;
timer.it_interval = alarm_time;
***************
*** 524,527 ****
--- 544,562 ----
}
+ void remove_alarm(void)
+ {
+ struct itimerval timer;
+
+ timer.it_interval = disarm_timer;
+ timer.it_value = disarm_timer;
+
+ setitimer(ITIMER_REAL, &timer, NULL);
+
+ /* now make sure we don't have a pending SIGARLM. */
+ remove_interrupt(SIGALRM);
+
+ return;
+ }
+
/* sigio handling routine and variable.
* we only need to use this on *BSD
***************
*** 547,550 ****
--- 582,586 ----
void track_sigio(void)
{
+ have_io = 0;
add_interrupt_handler(SIGIO, handle_sigio);
return;
***************
*** 553,560 ****
int had_io(void)
{
! if(have_io) {
! have_io = 0;
! return 1;
! } else
! return 0;
}
--- 589,592 ----
int had_io(void)
{
! return have_io;
}
Index: dhcp-util.h
===================================================================
RCS file: /cvsroot/dhcp-agent/dhcp-agent/dhcp-util.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** dhcp-util.h 19 Jun 2002 00:40:12 -0000 1.4
--- dhcp-util.h 19 Jun 2002 00:57:16 -0000 1.5
***************
*** 49,54 ****
--- 49,56 ----
extern void block_interrupts(void);
extern void add_interrupt_handler(int sigtype, void (*sighandler)(int));
+ extern void remove_interrupt(int sig);
extern int had_alarm(void);
extern void set_alarm(struct timeval alarm_time);
+ extern void remove_alarm(void);
extern void info_message(char *fmt, ...);
extern char *splice_string(const char *s1, const char *s2);
|