mirror of
https://github.com/libevent/libevent.git
synced 2025-01-09 00:56:20 +08:00
f74e7258fd
This is one of those patches which will either make matters far simpler after the bugs shake out, or will get reverted pretty quick once we realize that it is a stupid idea. We now post-process the config.h file into a new event-config.h file, whose macros are prefixed with _EVENT_ and which is thus safe for headers to include. Using this, we can define replacement timeval manipulation functions in evutil.h, and use them uniformly through our code. We can also detect which headers are needful in event.h, and include them as required. This is also the perfect time to remove the long-deprecated acconfig.h file, so that autoheader no longer warns. Should resolve the following issues: [ 1826530 ] Header files should have access to autoconf output. [ 1826545 ] acconfig.h is deprecated. [ 1826564 ] On some platforms, event.h can't be included alone. svn:r492
71 lines
1.1 KiB
C
71 lines
1.1 KiB
C
/*
|
|
* Compile with:
|
|
* cc -I/usr/local/include -o time-test time-test.c -L/usr/local/lib -levent
|
|
*/
|
|
|
|
#include <sys/types.h>
|
|
|
|
#ifdef HAVE_CONFIG_H
|
|
#include "config.h"
|
|
#endif
|
|
|
|
#include <sys/stat.h>
|
|
#ifndef WIN32
|
|
#include <sys/queue.h>
|
|
#include <unistd.h>
|
|
#endif
|
|
#include <time.h>
|
|
#ifdef HAVE_SYS_TIME_H
|
|
#include <sys/time.h>
|
|
#endif
|
|
#include <fcntl.h>
|
|
#include <stdlib.h>
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
#include <errno.h>
|
|
|
|
#include <event.h>
|
|
#include <evutil.h>
|
|
|
|
int lasttime;
|
|
|
|
void
|
|
timeout_cb(int fd, short event, void *arg)
|
|
{
|
|
struct timeval tv;
|
|
struct event *timeout = arg;
|
|
int newtime = time(NULL);
|
|
|
|
printf("%s: called at %d: %d\n", __func__, newtime,
|
|
newtime - lasttime);
|
|
lasttime = newtime;
|
|
|
|
evutil_timerclear(&tv);
|
|
tv.tv_sec = 2;
|
|
event_add(timeout, &tv);
|
|
}
|
|
|
|
int
|
|
main (int argc, char **argv)
|
|
{
|
|
struct event timeout;
|
|
struct timeval tv;
|
|
|
|
/* Initalize the event library */
|
|
event_init();
|
|
|
|
/* Initalize one event */
|
|
evtimer_set(&timeout, timeout_cb, &timeout);
|
|
|
|
evutil_timerclear(&tv);
|
|
tv.tv_sec = 2;
|
|
event_add(&timeout, &tv);
|
|
|
|
lasttime = time(NULL);
|
|
|
|
event_dispatch();
|
|
|
|
return (0);
|
|
}
|
|
|