-
Notifications
You must be signed in to change notification settings - Fork 0
Simple hook system in C
License
jajm/libhook
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
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.
About
Simple hook system in C
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published