aboutsummaryrefslogtreecommitdiffstats
path: root/NEWS
Commit message (Expand)AuthorAgeFilesLines
...
* Tony Nugent's fixes.Eric S. Raymond1997-02-131-0/+5
* Allow the smtphost option to set the host queried for by ETRN.Eric S. Raymond1997-02-131-0/+7
* Deal with headerless mail.Eric S. Raymond1997-02-131-1/+3
* Version bump.Eric S. Raymond1997-02-121-2/+5
* Trivalent options.Eric S. Raymond1997-02-111-0/+3
* Added RFC1985 ETRN support.Eric S. Raymond1997-02-101-0/+2
* Various minor bugfixes.Eric S. Raymond1997-02-101-0/+18
* Fix stripcr and password-stripping.Eric S. Raymond1997-02-031-0/+3
* Dave Bodenstab's fixes.Eric S. Raymond1997-02-021-0/+6
* This finishes off 3.3.Eric S. Raymond1997-02-021-2/+2
* Shroud password lengths.Eric S. Raymond1997-01-301-1/+3
* Fix Johan Vromans's bug.Eric S. Raymond1997-01-301-0/+3
* Add stripcr option.Eric S. Raymond1997-01-301-0/+3
* Better documentation of .fetchmailrc lexing.Eric S. Raymond1997-01-301-0/+4
* Correct length calculation.Eric S. Raymond1997-01-281-0/+7
* Ready to ship.Eric S. Raymond1997-01-271-1/+5
* CR-strip fix.Eric S. Raymond1997-01-271-0/+6
* Bug fix.Eric S. Raymond1997-01-251-0/+2
* Handle long address lists.Eric S. Raymond1997-01-241-0/+7
* Ready to ship.Eric S. Raymond1997-01-241-2/+2
* Clarification.Eric S. Raymond1997-01-241-1/+2
* Make this aware of RFC2060.Eric S. Raymond1997-01-231-0/+2
* Remove obsolete caveat.Eric S. Raymond1997-01-221-1/+1
* ESMTP SIZE option support.Eric S. Raymond1997-01-221-0/+6
* Support for EHLO and 8BITMIME extension.Eric S. Raymond1997-01-221-0/+15
* Bump the contact-list count.Eric S. Raymond1997-01-221-1/+1
* Handle zero-length messages.Eric S. Raymond1997-01-211-1/+3
* Ready to ship.Eric S. Raymond1997-01-211-2/+2
* RPOP support is back.Eric S. Raymond1997-01-201-2/+4
* Added dns/nodns.Eric S. Raymond1997-01-181-0/+6
* Ready to ship to George Sipe.Eric S. Raymond1997-01-171-1/+1
* Philippe de Muyter's Motorola fixes.Eric S. Raymond1997-01-161-5/+5
* New feature announcement.Eric S. Raymond1997-01-161-0/+2
* About ready to ship.Eric S. Raymond1997-01-151-1/+10
* The batchlimit option is now per user.Eric S. Raymond1997-01-141-0/+7
* Change `interface' and `monitor' options to per-server.Eric S. Raymond1997-01-141-5/+4
* Expunge fix.Eric S. Raymond1997-01-141-0/+3
* Arrange not to save user params after a statement.Eric S. Raymond1997-01-141-0/+3
* Start 2.9 update.Eric S. Raymond1997-01-131-2/+4
* Fix --quit uin root mode bug.Eric S. Raymond1997-01-131-2/+0
* Fixed Alfredo Sanjuan's bug.Eric S. Raymond1997-01-131-0/+10
* Add to-do list.Eric S. Raymond1997-01-131-0/+7
* Ready to ship.Eric S. Raymond1997-01-111-0/+2
* Ready to ship.Eric S. Raymond1997-01-111-3/+3
* Eliminate bug reported by Steven TrainoffEric S. Raymond1997-01-111-0/+4
* Grab hostname from greeting line.Eric S. Raymond1997-01-101-0/+4
* Don't infinite-loop in defaults.Eric S. Raymond1997-01-101-0/+2
* Typo fix.Eric S. Raymond1997-01-101-1/+1
* ssh recipe connection.Eric S. Raymond1997-01-101-0/+2
* Stop netrc parser from complaining about blank lines.Eric S. Raymond1997-01-101-0/+13
nterval * timer while talking to the server, the process no longer * responds to SIGALRM. I put in printf()s to see when it * reached the pause() for the poll interval, and I checked * the return from setitimer(), and everything seemed to be * working fine, except that the pause() just ignored SIGALRM. * I thought maybe the itimer wasn't being fired, so I hit * it with a SIGALRM from the command line, and it ignored * that, too. SIGUSR1 woke it up just fine, and it proceeded * to repoll--but, when the dummy server didn't respond, it * never timed out, and SIGALRM wouldn't make it. * * (continued below...) */ { struct itimerval ntimeout; ntimeout.it_interval.tv_sec = 5; /* repeat alarm every 5 secs */ ntimeout.it_interval.tv_usec = 0; ntimeout.it_value.tv_sec = seconds; ntimeout.it_value.tv_usec = 0; alarm_latch = FALSE; set_signal_handler(SIGALRM, gotsigalrm); /* first trap signals */ setitimer(ITIMER_REAL,&ntimeout,NULL); /* then start timer */ /* there is a very small window between the next two lines */ /* which could result in a deadlock. But this will now be */ /* caught by periodic alarms (see it_interval) */ if (!alarm_latch) pause(); /* stop timer */ ntimeout.it_interval.tv_sec = ntimeout.it_interval.tv_usec = 0; ntimeout.it_value.tv_sec = ntimeout.it_value.tv_usec = 0; setitimer(ITIMER_REAL,&ntimeout,NULL); /* now stop timer */ set_signal_handler(SIGALRM, SIG_IGN); } #else /* * So the workaround I used is to make it sleep by using * select() instead of setitimer()/pause(). select() is * perfectly happy being called with a timeout and * no file descriptors; it just sleeps until it hits the * timeout. The only concern I had was that it might * implement its timeout with SIGALRM--there are some * Unices where this is done, because select() is a library * function--but apparently not. */ { struct timeval timeout; timeout.tv_sec = seconds; timeout.tv_usec = 0; do { lastsig = 0; select(0,0,0,0, &timeout); } while (lastsig == SIGCHLD); } #endif #else /* EMX */ alarm_latch = FALSE; set_signal_handler(SIGALRM, gotsigalrm); _beginthread(itimerthread, NULL, 32768, NULL); /* see similar code above */ if (!alarm_latch) pause(); set_signal_handler(SIGALRM, SIG_IGN); #endif /* ! EMX */ if (lastsig == SIGUSR1 || ((seconds && getuid() == ROOT_UID) && lastsig == SIGHUP)) awoken = TRUE; /* now lock out interrupts again */ set_signal_handler(SIGUSR1, SIG_IGN); if (getuid() == ROOT_UID) set_signal_handler(SIGHUP, SIG_IGN); return(awoken ? lastsig : 0); } #ifdef MAIN int main(int argc, char **argv) { for (;;) { printf("How may I serve you, master?\n"); interruptible_idle(5); } } #endif /* MAIN */ /* idle.c ends here */