fix common.h path in client
[flowgen.git] / common.c
blob10a79dc76c9852cb9fac0a02e0813eca9b4b0b19
1 /*
2 * Copyright (c) 2017 Mohamed Aslan <maslan@sce.carleton.ca>
4 * Permission to use, copy, modify, and distribute this software for any
5 * purpose with or without fee is hereby granted, provided that the above
6 * copyright notice and this permission notice appear in all copies.
8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 #include <stdio.h>
18 #include <stdarg.h>
19 #include <err.h>
20 #include <sys/event.h>
21 #include "common.h"
25 * one shot timer
27 void
28 atimer(int ev_queue, int id, unsigned int t)
30 struct kevent kev;
32 EV_SET(&kev, id, EVFILT_TIMER, EV_ADD | EV_ENABLE | EV_ONESHOT, 0, t, NULL);
33 if ((kevent(ev_queue, &kev, 1, NULL, 0, NULL)) == -1)
34 err(1, "timer");
38 * periodic timer with period p
40 void
41 timer(int ev_queue, int id, unsigned int p)
43 struct kevent kev;
45 EV_SET(&kev, id, EVFILT_TIMER, EV_ADD | EV_ENABLE, 0, p, NULL);
46 if ((kevent(ev_queue, &kev, 1, NULL, 0, NULL)) == -1)
47 err(1, "timer");
50 void
51 log_init(struct log *lg)
53 if (lg->type == LOG_CSV) {
54 if ((lg->fd = fopen(lg->param.filename, "w")) == NULL)
55 errx(1, "error creating log file.");
59 void
60 log_free(struct log *lg)
62 if (lg->type == LOG_CSV)
63 fclose(lg->fd);
66 void
67 f_log(struct log *lg, const char *fmt, ...)
69 va_list ap;
71 va_start(ap, fmt);
72 if (lg->type == LOG_CSV) {
73 if (vfprintf(lg->fd, fmt, ap) < -1)
74 errx(1, "vfprintf");
76 va_end(ap);