head 1.15; access; symbols L2_0_9_13:1.15 FSL_1_7_0:1.15 L2_0_9_12:1.15 LMTP2NNTP_1_4_1:1.15 LMTP2NNTP_1_4_0:1.15 FSL_1_6_1:1.15 L2_0_9_11:1.15 FSL_1_6_0:1.14 FSL_1_6b2:1.14 L2_0_9_10:1.14 FSL_1_6b1:1.14 L2_0_9_9:1.14 LMTP2NNTP_1_3_0:1.13 LMTP2NNTP_1_3b2:1.13 LMTP2NNTP_1_3b1:1.13 LMTP2NNTP_1_3a3:1.13 FSL_1_5_0:1.13 LMTP2NNTP_1_3a2:1.13 FSL_1_5a3:1.13 LMTP2NNTP_1_3a1:1.13 FSL_1_5a2:1.13 L2_0_9_8:1.13 FSL_1_5a1:1.13 L2_0_9_7:1.13 L2_0_9_6:1.13 FSL_1_4_0:1.13 FSL_1_4b1:1.13 L2_0_9_5:1.13 FSL_1_4a1:1.13 FSL_1_3_0:1.13 FSL_1_3b1:1.13 L2_0_9_4:1.13 FSL_1_2_1:1.13 L2_0_9_3:1.13 FSL_1_2_0:1.13 L2_0_9_2:1.13 FSL_1_1_0:1.13 FSL_1_1b1:1.13 WORKOFF:1.13.0.2 WORKOFF_BP:1.13 FSL_1_0_8:1.13 LMTP2NNTP_1_2_0:1.13 LMTP2NNTP_1_2b4:1.13 LMTP2NNTP_1_2b3:1.13 LMTP2NNTP_1_2b2:1.13 LMTP2NNTP_1_2b1:1.13 LMTP2NNTP_1_2a8:1.13 LMTP2NNTP_1_2a7:1.13 FSL_1_0_7:1.13 FSL_1_0_6:1.12 FSL_1_0_5:1.12 FSL_1_0_4:1.12 L2_0_9_1:1.12 FSL_1_0_3:1.12 LMTP2NNTP_1_2a6:1.12 FSL_1_0_2:1.12 FSL_1_0_1:1.12 FSL_1_0_0:1.12 FSL_0_9_0:1.12 L2_0_9_0:1.12 FSL_0_1_12:1.11 FSL_0_1_11:1.11 FSL_0_1_10:1.11 FSL_0_1_9:1.11 FSL_0_1_8:1.11 FSL_0_1_7:1.11 FSL_0_1_6:1.11 FSL_0_1_5:1.11 FSL_0_1_1:1.11 LMTP2NNTP_1_2a5:1.11 LMTP2NNTP_1_2a4:1.11 LMTP2NNTP_1_2a3:1.11 LMTP2NNTP_1_2a1:1.10 LMTP2NNTP_1_1_1:1.8 LMTP2NNTP_1_1_0:1.8 LMTP2NNTP_1_1b4:1.8 LMTP2NNTP_1_1b3:1.8 L2_CHANNEL_ONLY_REVAMPING_BEFORE:1.8 LMTP2NNTP_1_1b2:1.8 LMTP2NNTP_1_1b1:1.8 L2_0_1_0:1.8 START_MICHAEL:1.4 L2_INITIAL:1.1.1.1 OSSP:1.1.1; locks; strict; comment @ * @; 1.15 date 2005.10.03.08.08.11; author rse; state Exp; branches; next 1.14; 1.14 date 2005.01.24.15.03.17; author rse; state Exp; branches; next 1.13; 1.13 date 2003.01.06.11.41.51; author rse; state Exp; branches; next 1.12; 1.12 date 2002.07.30.19.08.24; author rse; state Exp; branches; next 1.11; 1.11 date 2002.01.02.17.07.38; author rse; state Exp; branches; next 1.10; 1.10 date 2001.11.07.11.37.18; author rse; state Exp; branches; next 1.9; 1.9 date 2001.11.04.14.08.24; author rse; state Exp; branches; next 1.8; 1.8 date 2001.09.12.09.42.34; author ms; state Exp; branches; next 1.7; 1.7 date 2001.09.05.07.47.12; author rse; state Exp; branches; next 1.6; 1.6 date 2001.09.04.19.18.49; author rse; state Exp; branches; next 1.5; 1.5 date 2001.09.04.15.41.17; author rse; state Exp; branches; next 1.4; 1.4 date 2001.08.15.10.36.03; author rse; state Exp; branches; next 1.3; 1.3 date 2001.05.26.08.02.55; author rse; state Exp; branches; next 1.2; 1.2 date 2001.05.11.17.07.52; author rse; state Exp; branches; next 1.1; 1.1 date 2001.05.10.19.46.01; author rse; state Exp; branches 1.1.1.1; next ; 1.1.1.1 date 2001.05.10.19.46.01; author rse; state Exp; branches; next ; desc @@ 1.15 log @Adjust copyright messages for new year 2005. @ text @/* ** OSSP l2 - Flexible Logging ** Copyright (c) 2001-2005 Cable & Wireless ** Copyright (c) 2001-2005 The OSSP Project ** Copyright (c) 2001-2005 Ralf S. Engelschall ** ** This file is part of OSSP l2, a flexible logging library which ** can be found at http://www.ossp.org/pkg/lib/l2/. ** ** Permission to use, copy, modify, and distribute this software for ** any purpose with or without fee is hereby granted, provided that ** the above copyright notice and this permission notice appear in all ** copies. ** ** THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED ** WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF ** MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ** IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR ** CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF ** USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, ** OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT ** OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ** SUCH DAMAGE. ** ** l2_ch_null.c: null/discard channel implementation */ #include "l2.h" l2_handler_t l2_handler_null = { "null", L2_CHANNEL_OUTPUT, NULL, NULL, NULL, NULL, NULL, NULL, NULL }; @ 1.14 log @Adjust copyright messages for new year 2005. @ text @d3 3 a5 3 ** Copyright (c) 2001-2004 Cable & Wireless ** Copyright (c) 2001-2004 The OSSP Project ** Copyright (c) 2001-2004 Ralf S. Engelschall @ 1.13 log @- remove trailing whitespaces - adjust copyright messages - consistently use "OSSP l2" - consistently talk about "Flexible Logging" - use standard OSSP ASCII-art @ text @d3 3 a5 3 ** Copyright (c) 2001-2003 Cable & Wireless Deutschland GmbH ** Copyright (c) 2001-2003 The OSSP Project (http://www.ossp.org/) ** Copyright (c) 2001-2003 Ralf S. Engelschall @ 1.12 log @polish for release @ text @d2 4 a5 3 ** OSSP l2 - Logging Library ** Copyright (c) 2001-2002 The OSSP Project (http://www.ossp.org/) ** Copyright (c) 2001-2002 Cable & Wireless Deutschland (http://www.cw.com/de/) d7 1 a7 1 ** This file is part of OSSP L2, a flexible logging library which @ 1.11 log @bump copyright year @ text @d2 1 a2 1 ** L2 - OSSP Logging Library d7 1 a7 1 ** can be found at http://www.ossp.org/pkg/l2/. @ 1.10 log @More preparations for forthcoming channel tree specification parser (especially to allow the parser to determine the handler structure from a handler name without introducing another and this way redundant sub-API): - add "char *name" to l2_handler_t in order to tag each handler structure with the corresponding channel name - add l2_env_handler() function to add handler to l2_env_t objects. All l2_handler_xxxx are automatically pre-configured there after l2_env_create(). - change l2_channel_create() to take a "const char *name" (handler name) instead of the "l2_handler_t *h" (handler pointer) to make the stuff consistent and more clear. - adjust l2_test.c to reflect the changes. @ text @d3 2 a4 2 ** Copyright (c) 2001 The OSSP Project (http://www.ossp.org/) ** Copyright (c) 2001 Cable & Wireless Deutschland (http://www.cw.com/de/) @ 1.9 log @Simplify "null" (discard) output channel to minimum implementation and provide an additional "nop" (no-operation) filter channel for typical use as the root channel in a channel tree. @ text @d33 1 @ 1.8 log @Upgraded both stream and channel-level APIs to include new L2_LEVEL parameter design. @ text @d27 1 a27 1 ** l2_ch_null.c: null channel implementation a31 35 static l2_result_t hook_create(l2_context_t *ctx, l2_channel_t *ch) { return L2_OK; } static l2_result_t hook_configure(l2_context_t *ctx, l2_channel_t *ch, const char *fmt, va_list ap) { return L2_OK; } static l2_result_t hook_open(l2_context_t *ctx, l2_channel_t *ch) { return L2_OK; } static l2_result_t hook_write(l2_context_t *ctx, l2_channel_t *ch, l2_level_t level, const char *buf, size_t buf_size) { return L2_OK; } static l2_result_t hook_flush(l2_context_t *ctx, l2_channel_t *ch) { return L2_OK; } static l2_result_t hook_close(l2_context_t *ctx, l2_channel_t *ch) { return L2_OK; } static l2_result_t hook_destroy(l2_context_t *ctx, l2_channel_t *ch) { return L2_OK; } d34 7 a40 7 hook_create, hook_configure, hook_open, hook_write, hook_flush, hook_close, hook_destroy @ 1.7 log @Be politically correct: channels are intended to be implemented also by users, which have only access to the public API (l2.h), so do not even try to use anything more in our own shipped channels. @ text @d47 1 a47 1 static l2_result_t hook_write(l2_context_t *ctx, l2_channel_t *ch, const char *buf, size_t buf_size) @ 1.6 log @Be pedantically correct: handler hooks return "l2_result_t" and not "int", although currently it is just an int/enum. @ text @a30 1 #include "l2_p.h" @ 1.5 log @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. @ text @d33 1 a33 1 static int hook_create(l2_context_t *ctx, l2_channel_t *ch) d38 1 a38 1 static int hook_configure(l2_context_t *ctx, l2_channel_t *ch, const char *fmt, va_list ap) d43 1 a43 1 static int hook_open(l2_context_t *ctx, l2_channel_t *ch) d48 1 a48 1 static int hook_write(l2_context_t *ctx, l2_channel_t *ch, const char *buf, size_t buf_size) d53 1 a53 1 static int hook_flush(l2_context_t *ctx, l2_channel_t *ch) d58 1 a58 1 static int hook_close(l2_context_t *ctx, l2_channel_t *ch) d63 1 a63 1 static int hook_destroy(l2_context_t *ctx, l2_channel_t *ch) @ 1.4 log @Fix more ossp.com references by replacing with the correct domain name ossp.org. @ text @d33 1 a33 1 static int hook_create(l2_context_t *ctx) d38 1 a38 1 static int hook_configure(l2_context_t *ctx, const char *fmt, va_list ap) d43 1 a43 1 static int hook_open(l2_context_t *ctx, l2_channel_t *downstream) d48 1 a48 2 static int hook_write(l2_context_t *ctx, l2_channel_t *downstream, const char *buf, size_t buf_size) d53 1 a53 1 static int hook_flush(l2_context_t *ctx, l2_channel_t *downstream) d58 1 a58 1 static int hook_close(l2_context_t *ctx, l2_channel_t *downstream) d63 1 a63 1 static int hook_destroy(l2_context_t *ctx) d69 1 @ 1.3 log @change terminology: below -> downstream @ text @d7 1 a7 1 ** can be found at http://www.ossp.com/pkg/l2/. @ 1.2 log @Fill in channel handler template code. @ text @d43 1 a43 1 static int hook_open(l2_context_t *ctx, l2_channel_t *below) d48 1 a48 1 static int hook_write(l2_context_t *ctx, l2_channel_t *below, d54 1 a54 1 static int hook_flush(l2_context_t *ctx, l2_channel_t *below) d59 1 a59 1 static int hook_close(l2_context_t *ctx, l2_channel_t *below) @ 1.1 log @Initial revision @ text @d33 46 @ 1.1.1.1 log @L2 initial source tree @ text @@