-
Notifications
You must be signed in to change notification settings - Fork 0
/
README
83 lines (56 loc) · 2.24 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
libhook is a simple hook system for C.
======================================
Introduction
------------
To use it, you only need to remember two function names: hook_register and
hook_invoke.
Registering a hook is as simple as saying "Hello":
hook_register("hook name", "callback 1", callback1);
This mean “Hey, register my callback function "callback1()" named "callback 1"
to hook "hook name"”.
If you want to register another callback for the same hook, same thing:
hook_register("hook name", "callback 2", callback2);
Now you have two callbacks for this hook ("hook name"), you can invoke it:
hook_invoke("hook name", NULL);
Callback functions will be called in the order they have been registered.
Pretty simple, isn't it? (more documentation can be found at the end of this
document)
Installation
------------
libhook requires two external libraries:
- lll: https://github.com/jajm/lll
- libgends: https://github.com/jajm/libgends
Please install them before installing libhook.
To install, just cd into libhook directory and run
make
make install # you may need root privileges for this
You can configure the install location by editing config.mk (PREFIX)
Documentation
=============
Return values
-------------
Callback functions may have return values. They can be retrieved through the
second parameter of hook_invoke.
gds_slist_node_t *return_values = NULL;
hook_invoke("hook name", &return_values);
/* return_values is a list. To iterate over it, see libgends documentation */
If second parameter of hook_invoke is NULL, return values are simply ignored.
Callback function parameters
----------------------------
To pass parameters to callback functions, just pass it to hook_invoke.
hook_invoke("hook name", NULL, param1, param2);
This is equivalent to
callback1(param1, param2);
callback2(param1, param2);
Note that if callback functions takes more parameters than the number of
parameters passed to hook_invoke, the extra parameters values are undefined.
libhook logs
------------
By default, libhook verbosity is 0. It means that it prints nothing.
To increase verbosity change the value of env variable LIBHOOK_VERBOSITY.
Verbosity levels are:
- 1: error
- 2: warning
- 3: info
- 4: debug
Each level include lower levels.