OSSP CVS Repository |
|
Date | Version | Description |
---|---|---|
1.25 | Check-in [954]: Source l2.h is now automatically generated by autoconf. Rerun ./configure to get a fresh l2.h revision, do not checkout from cvs! By ms. (diff) | |
1.24 | Check-in [945]: added L2_LEVEL_NONE - 2nd attempt By thl. (diff) | |
1.23 | Check-in [944]: added L2_LEVEL_NONE By thl. (diff) | |
1.22 | Check-in [909]: add version information to public API By thl. (diff) | |
1.21 | Check-in [900]: First cut for an SMTP output channel. This is very useful for (additionally) logging L2_LEVEL_PANIC messages in real-time to a mailbox via direct SMTP connection to a mail server. Internally it is very simple, because it is based on our new Socket Abstraction (SA) library (l2_ut_sa.[ch])... By rse. (diff) | |
1.20 | Check-in [873]: Replace generic L2_ERROR with more granular L2_ERR_XXX and make sure that we always check with "!= L2_OK". By rse. (diff) | |
1.19 | Check-in
[871]:
Add two cool extra formatter functions ;)
l2_util_fmt_string: This can be used like %s, but instead of fetching only a "char *" from the var-args stack, it fetches a "char *" plus a "size_t" and this way allows one to log only a sub-string of a larger string without the need for any temporary buffers, etc. l2_util_fmt_dump: This can be used as "%{type}X" for dumping arbitrary octets. The parameter "type" can be either "text" (the default if only "%X" is used) for dumping the octets as text but with non-printable characters replaced by "\xXX" constructs; "hex" for dumping the octets in hexadecimal as "XX:XX:XX:XX" or "base64" for dumping the octets Base64 encoded. All three are intended for making it easier to produce reasonable L2_LEVEL_DEBUG messages without having to fiddle around with temporary buffers and having to care with non-printable characters. For instance, using... : l2_stream_formatter(st, 'D', l2_util_fmt_dump, NULL); : l2_stream_vlog(st, L2_LEVEL_DEBUG, "%{text}D %{hex}D %{base64}D\n", "foo", 12345, "foo\1bar", 7, "foo\1bar", 7, "foo\1bar", 7); : ...produces "foo\x01bar 66:6f:6f:01:62:61:72 Zm9vAWJhcg==" in the output. By rse. (diff) | |
1.18 | Check-in [859]: added to utility functions for transforming levelmask between string and int and vice versa By thl. (diff) | |
1.17 | Check-in [851]: Provide an L2_TYPE_STRING for the channel configuration steps. This is like L2_TYPE_CHARPTR but treats the target as a NUL-terminated string and performs a strdup() on it. This make the channels simpler, because they no longer have to post-process the configuration step in order to make own copies of provided strings. By rse. (diff) | |
1.16 | Check-in [847]: Be pedantically correct: handler hooks return "l2_result_t" and not "int", although currently it is just an int/enum. By rse. (diff) | |
1.15 | Check-in
[843]:
Revamp channel handler API:
Instead of passing the downstream channel to all channels we instead provide a l2_channel_downstream() function and provide the current channel. This way the handler API is prototype-wise fully orthogonal with the channel API (which it implements) and we no longer pass information to 2/3 of our (output) channels which is of no use there. Additionally add a channel type field to l2_handler_t which allows a handler to say what type of channel it implements (filter or output). This information is now used in l2_channel_stack() to make sure that one can only stack a filter channel on top of another channel. For convinience reasons there is also a new l2_channel_type() function which allows one to query the type of a particular channel. By rse. (diff) | |
1.14 | Check-in [842]: cleanup level API (no need for retrieving old mask just in one function - either in all or in none). By rse. (diff) | |
1.13 | Check-in
[835]:
Wohhooooo! Here comes the underlying message formatting support:
1. renamed l2_channel_setparam() to l2_util_setparam() because it is just a utility function and is not tied to any channel. 2. moved l2_util_setparam() to its own l2_ut_param.c source file. 3. added l2_ut_format.c which contains a slightly adjusted version of Str's str_format() stuff under the name l2_util_format(). 4. use l2_util_format() in l2_stream.c instead of vsnprintf() and this way finally support l2_formatter_t callbacks. 5. cleanup adjustments to the l2_stream_formatter() API. Let's rock... By rse. (diff) | |
1.12 | Check-in [825]: - replace "int" with "l2_result_t" in L2 channel API - use a 2^n for L2_LEVEL_XXX in order to be able to create mask - remember loglevel for each channel - rewrite test suite By rse. (diff) | |
1.11 | Check-in [823]: revamped L2 stream API By rse. (diff) | |
1.10 | Check-in [814]: Revert to last version due to new design of l2_ch_socket_t. By ms. (diff) | |
1.9 | Check-in [768]: Added unsigned short type to PARAMETER macros for sockaddr_in struct. By ms. (diff) | |
1.8 | Check-in [675]: Fix more ossp.com references by replacing with the correct domain name ossp.org. By rse. (diff) | |
1.7 | Check-in [492]: cleanup style By rse. (diff) | |
1.6 | Check-in [491]: change terminology: below -> downstream By rse. (diff) | |
1.5 | Check-in [490]: o rename l2_error_t to l2_result_t o introduce internal channel state for API robustness By rse. (diff) | |
1.4 | Check-in [485]: Simplify things by merging the parameter stuff into l2_channel.c and the l2_stream_t related things into l2_stream.c By rse. (diff) | |
1.3 | Check-in [476]: the "int l2_channel_configure(l2_channel_t *ch, const char *fmt, ...);" beast was my idea, so it is fair to also provide the necessary tool for implementing the underlying handler functions. Here it is, l2_param_parse(). By rse. (diff) | |
1.2 | Check-in [456]: Fill in channel handler template code. By rse. (diff) | |
1.1 | Check-in [449]: Initial revision By rse. | |
1.1.1.1 | Check-in [450]: L2 initial source tree By rse. (diff) |