Index: ossp-pkg/l2/l2_ch_var.c RCS File: /v/ossp/cvs/ossp-pkg/l2/Attic/l2_ch_var.c,v co -q -kk -p'1.1' '/v/ossp/cvs/ossp-pkg/l2/Attic/l2_ch_var.c,v' | diff -u /dev/null - -L'ossp-pkg/l2/l2_ch_var.c' 2>/dev/null --- ossp-pkg/l2/l2_ch_var.c +++ - 2024-05-07 19:40:39.304273313 +0200 @@ -0,0 +1,120 @@ +/* +** L2 - OSSP 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/) +** +** This file is part of OSSP L2, a flexible logging library which +** can be found at http://www.ossp.org/pkg/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_var.c: OSSP var channel implementation +*/ + +#include "l2.h" +/*#include "l2_var.h"*/ + +/* declare private channel configuration */ +typedef struct { + char *vardef; +} l2_ch_var_t; + +/* create channel */ +static l2_result_t hook_create(l2_context_t *ctx, l2_channel_t *ch) +{ + l2_ch_var_t *cfg; + + /* allocate private channel configuration */ + if ((cfg = (l2_ch_var_t *)malloc(sizeof(l2_ch_var_t))) == NULL) + return L2_ERR_MEM; + + /* initialize configuration with reasonable defaults */ + cfg->vardef = NULL; + + /* link private channel configuration into channel context */ + ctx->vp = cfg; + + return L2_OK; +} + +/* configure channel */ +static l2_result_t hook_configure(l2_context_t *ctx, l2_channel_t *ch, const char *fmt, va_list ap) +{ + l2_ch_var_t *cfg; + l2_param_t pa[1]; + l2_result_t rv; + l2_env_t *env; + + /* parameter checks */ + if ((cfg = (l2_ch_var_t *)ctx->vp) == NULL) + return L2_ERR_ARG; + + /* feed and call generic parameter parsing engine */ + L2_PARAM_SET(pa[0], variable, STR, &cfg->vardef); + L2_PARAM_END(pa[1]); + l2_channel_env(ch, &env); + rv = l2_util_setparams(env, pa, fmt, ap); + + return rv; +} + +/* write to channel */ +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) +{ + l2_ch_var_t *cfg; + + /* parameter checks */ + if ((cfg = (l2_ch_var_t *)ctx->vp) == NULL) + return L2_ERR_ARG; + if (cfg->vardef == NULL) + return L2_ERR_ARG; + + /* expand variables */ +/* FIXME */ + + return L2_OK; +} + +/* destroy channel */ +static l2_result_t hook_destroy(l2_context_t *ctx, l2_channel_t *ch) +{ + l2_ch_var_t *cfg = (l2_ch_var_t *)ctx->vp; + + /* destroy channel configuration */ + if (cfg->vardef != NULL) + free(cfg->vardef); + free(cfg); + + return L2_OK; +} + +/* exported channel handler structure */ +l2_handler_t l2_handler_var = { + "var", + L2_CHANNEL_FILTER, + hook_create, + hook_configure, + NULL, + hook_write, + NULL, + NULL, + hook_destroy +}; +