aboutsummaryrefslogtreecommitdiff
path: root/libltrace.c
diff options
context:
space:
mode:
authorJuan Cespedes <cespedes@debian.org>2009-06-25 19:54:10 +0200
committerJuan Cespedes <cespedes@debian.org>2009-06-25 19:54:10 +0200
commit40dc6353a443f2eed64fcada3bcf305e56855b15 (patch)
tree3dfe493fe94bd06148e944d4adf1fae3b1a53b12 /libltrace.c
parentf728123bd75a65a6a1536e198c3c30719e494e71 (diff)
downloadltrace-40dc6353a443f2eed64fcada3bcf305e56855b15.tar.gz
Added support for callbacks to libltrace
Diffstat (limited to 'libltrace.c')
-rw-r--r--libltrace.c27
1 files changed, 26 insertions, 1 deletions
diff --git a/libltrace.c b/libltrace.c
index 381cfa2..6dd9f44 100644
--- a/libltrace.c
+++ b/libltrace.c
@@ -123,9 +123,34 @@ ltrace_init(int argc, char **argv) {
}
}
+static int num_ltrace_callbacks = 0;
+static void (**ltrace_callbacks)(Event *) = NULL;
+
+void
+ltrace_add_callback(void (*func)(Event *)) {
+ ltrace_callbacks = realloc(ltrace_callbacks, (num_ltrace_callbacks+1)*sizeof(*ltrace_callbacks));
+ ltrace_callbacks[num_ltrace_callbacks++] = func;
+
+ {
+ int i;
+
+ printf("*** Added callback\n");
+ printf("\tThere are %d callbacks:\n", num_ltrace_callbacks);
+ for (i=0; i<num_ltrace_callbacks; i++) {
+ printf("\t\t%10p\n", ltrace_callbacks[i]);
+ }
+ }
+}
+
void
ltrace_main(void) {
+ int i;
+ Event * ev;
while (1) {
- process_event(next_event());
+ ev = next_event();
+ for (i=0; i<num_ltrace_callbacks; i++) {
+ ltrace_callbacks[i](ev);
+ }
+ process_event(ev);
}
}