OSSP CVS Repository

ossp - Check-in [1990]
Not logged in
[Honeypot]  [Browse]  [Home]  [Login]  [Reports
[Search]  [Ticket]  [Timeline
  [Patchset]  [Tagging/Branching

Check-in Number: 1990
Date: 2002-Mar-13 14:58:39 (local)
2002-Mar-13 13:58:39 (UTC)
User:thl
Branch:
Comment: implemented var_expand inside l2
Tickets:
Inspections:
Files:
ossp-pkg/lmtp2nntp/Makefile.in      1.46 -> 1.47     2 inserted, 2 deleted
ossp-pkg/lmtp2nntp/fixme.h      1.20 -> 1.21     2 inserted, 0 deleted
ossp-pkg/lmtp2nntp/lmtp2nntp_config.c      1.65 -> 1.66     19 inserted, 2 deleted
ossp-pkg/lmtp2nntp/lmtp2nntp_l2.c      added-> 1.1
ossp-pkg/lmtp2nntp/lmtp2nntp_main.c      1.48 -> 1.49     32 inserted, 6 deleted

ossp-pkg/lmtp2nntp/Makefile.in 1.46 -> 1.47

--- Makefile.in  2002/02/14 10:51:50     1.46
+++ Makefile.in  2002/03/13 13:58:39     1.47
@@ -45,8 +45,8 @@
 
 PROG = lmtp2nntp
 HDRS = lmtp2nntp_global.h lmtp2nntp_daemon.h lmtp2nntp_lmtp.h lmtp2nntp_nntp.h lmtp2nntp_argz.h lmtp2nntp_shpat.h lmtp2nntp_msg.h lmtp2nntp_option.h lmtp2nntp_config.h lmtp2nntp_exwrap.h 
-SRCS = lmtp2nntp_main.c   lmtp2nntp_daemon.c lmtp2nntp_lmtp.c lmtp2nntp_nntp.c lmtp2nntp_argz.c lmtp2nntp_shpat.c lmtp2nntp_msg.c lmtp2nntp_option.c lmtp2nntp_config.c lmtp2nntp_exwrap.c lmtp2nntp_version.c 
-OBJS = lmtp2nntp_main.o   lmtp2nntp_daemon.o lmtp2nntp_lmtp.o lmtp2nntp_nntp.o lmtp2nntp_argz.o lmtp2nntp_shpat.o lmtp2nntp_msg.o lmtp2nntp_option.o lmtp2nntp_config.o lmtp2nntp_exwrap.o lmtp2nntp_version.o
+SRCS = lmtp2nntp_main.c   lmtp2nntp_daemon.c lmtp2nntp_lmtp.c lmtp2nntp_nntp.c lmtp2nntp_argz.c lmtp2nntp_shpat.c lmtp2nntp_msg.c lmtp2nntp_option.c lmtp2nntp_config.c lmtp2nntp_exwrap.c lmtp2nntp_version.c lmtp2nntp_l2.c
+OBJS = lmtp2nntp_main.o   lmtp2nntp_daemon.o lmtp2nntp_lmtp.o lmtp2nntp_nntp.o lmtp2nntp_argz.o lmtp2nntp_shpat.o lmtp2nntp_msg.o lmtp2nntp_option.o lmtp2nntp_config.o lmtp2nntp_exwrap.o lmtp2nntp_version.o lmtp2nntp_l2.o
 
 SUBDIRS = @SUBDIR_EX@ @SUBDIR_STR@ @SUBDIR_L2@ @SUBDIR_SA@ @SUBDIR_VAR@ @SUBDIR_VAL@ @SUBDIR_POPT@ @SUBDIR_PCRE@
 


ossp-pkg/lmtp2nntp/fixme.h 1.20 -> 1.21

--- fixme.h      2002/03/04 15:54:28     1.20
+++ fixme.h      2002/03/13 13:58:39     1.21
@@ -126,4 +126,6 @@
 void msg_headermatrixteardwn(msg_t *msg);
 void headerrewrite(lmtp2nntp_t *ctx);
 
+#include "l2.h"
+extern l2_handler_t l2_handler_var;
 #endif /* __FIXME_H__ */


ossp-pkg/lmtp2nntp/lmtp2nntp_config.c 1.65 -> 1.66

--- lmtp2nntp_config.c   2002/03/06 14:26:33     1.65
+++ lmtp2nntp_config.c   2002/03/13 13:58:39     1.66
@@ -119,7 +119,6 @@
 {
     ex_t ex;
     optionval_t *ov;
-    //char *cp;
     int rc;
 
     /* create L2 environment */
@@ -148,11 +147,29 @@
         CU(ERR_EXECUTION);
     }
     if (ov->data.s != NULL) {
+        l2_channel_t *ch;
+
+        if (l2_env_handler(ctx->l2_env, &l2_handler_var) != L2_OK) {
+            fprintf(stderr, "%s:Error: logging failed to register \"%s\" handler \n", ctx->progname, l2_handler_var.name);
+            CU(ERR_EXECUTION);
+        }
+        if ((rc = l2_channel_create(&ctx->l2, ctx->l2_env, l2_handler_var.name)) != L2_OK) {
+            fprintf(stderr, "%s:Error: logging failed to create \"%s\" channel\n", ctx->progname, l2_handler_var.name);
+            CU(ERR_EXECUTION);
+        }
+        if ((rc = l2_channel_configure(ctx->l2, "", ctx->config_varctx)) != L2_OK) {
+            fprintf(stderr, "%s:Error: logging failed to configure \"%s\" channel\n", ctx->progname, l2_handler_var.name);
+            CU(ERR_EXECUTION);
+        }
         //FIXME this is cut off on command line!? fprintf(stderr, "DEBUG: ov->data.s = \"%s\"\n", ov->data.s);
-        if ((rc = l2_spec(&ctx->l2, ctx->l2_env, ov->data.s)) != L2_OK) {
+        if ((rc = l2_spec(&ch, ctx->l2_env, ov->data.s)) != L2_OK) {
             fprintf(stderr, "%s:Error: logging failed to create stream\n", ctx->progname);
             CU(ERR_EXECUTION);
         }
+        if (l2_channel_link(ctx->l2, L2_LINK_CHILD, ch, NULL) != L2_OK) {
+            fprintf(stderr, "%s:Error: logging failed to link child channel\n", ctx->progname);
+            CU(ERR_EXECUTION);
+        }
         if (l2_channel_levels(ctx->l2, L2_LEVEL_ALL, L2_LEVEL_NONE) != L2_OK) { /* FIXME should this globalmask and flushmask be user-configurable? */
             fprintf(stderr, "%s:Error: logging failed to set global logging level\n", ctx->progname);
             CU(ERR_EXECUTION);


ossp-pkg/lmtp2nntp/lmtp2nntp_l2.c -> 1.1

*** /dev/null    Sat Nov 23 01:04:43 2024
--- -    Sat Nov 23 01:04:59 2024
***************
*** 0 ****
--- 1,128 ----
+ 
+ /*
+ **  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 lmtp2nntp, an LMTP speaking local
+ **  mailer which forwards mails as Usenet news articles via NNTP.
+ **  It can be found at http://www.ossp.org/pkg/lmtp2nntp/.
+ **
+ **  This program is free software; you can redistribute it and/or
+ **  modify it under the terms of the GNU General Public  License
+ **  as published by the Free Software Foundation; either version
+ **  2.0 of the License, or (at your option) any later version.
+ **
+ **  This program is distributed in the hope that it will be useful,
+ **  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ **  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ **  General Public License for more details.
+ **
+ **  You should have received a copy of the GNU General Public License
+ **  along with this file; if not, write to the Free Software
+ **  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ **  USA, or contact the OSSP project <ossp@ossp.org>.
+ **
+ **  lmtp2nntp_l2.c: var logging channel for l2
+ */
+ 
+ #include <stdarg.h>
+ #include <stdlib.h>
+ #include "fixme.h"
+ 
+ /* declare private channel configuration */
+ typedef struct {
+     var_t *var;
+ } 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->var = 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;
+ 
+     /* parameter checks */
+     if ((cfg = (l2_ch_var_t *)ctx->vp) == NULL)
+         return L2_ERR_ARG;
+ 
+     /* special parameter parsing */
+     if ((cfg->var = (var_t *)va_arg(ap, void *)) == NULL)
+         return L2_ERR_ARG;
+ 
+     return L2_OK;
+ }
+ 
+ /* 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;
+     l2_channel_t *downstream;
+     l2_result_t rv;
+     var_rc_t var_rc;
+     char *buf2 = NULL;
+     size_t buf2_size;
+ 
+     /* parameter checks */
+     if ((cfg = (l2_ch_var_t *)ctx->vp) == NULL)
+         return L2_ERR_ARG;
+     if (cfg->var == NULL)
+         return L2_ERR_ARG;
+ 
+     /* expand variables */
+     if ((var_rc = var_expand(cfg->var, buf, buf_size, &buf2, &buf2_size, FALSE)) != VAR_OK) {
+         return L2_ERR_USE;
+     }
+ 
+     /* push data downstream */
+     downstream = NULL;
+     while ((rv = l2_channel_downstream(ch, &downstream)) == L2_OK)
+         if ((rv = l2_channel_write(downstream, level, buf2, buf2_size)) != L2_OK)
+             break;
+ 
+     if (buf2 != NULL)
+         free(buf2);
+ 
+     return rv;
+ }
+ 
+ /* 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 */
+     free(cfg);
+ 
+     return L2_OK;
+ }
+ 
+ /* exported channel handler structure */
+ l2_handler_t l2_handler_var = {
+     "lmtp2nntp-l2var",
+     L2_CHANNEL_FILTER,
+     hook_create,
+     hook_configure,
+     NULL,
+     hook_write,
+     NULL,
+     NULL,
+     hook_destroy
+ };
+ 


ossp-pkg/lmtp2nntp/lmtp2nntp_main.c 1.48 -> 1.49

--- lmtp2nntp_main.c     2002/03/06 14:25:39     1.48
+++ lmtp2nntp_main.c     2002/03/13 13:58:39     1.49
@@ -36,6 +36,7 @@
 #include <sys/wait.h>
 #include <sys/stat.h>
 #include <signal.h>
+#include <stdarg.h>
 
 /* third party (included) */
 #include "lmtp2nntp_argz.h"
@@ -126,6 +127,12 @@
     "a-zA-Z0-9.-" /* namechars     */ 
 };
 
+#if 0
+typedef struct {
+    l2_channel_t *l2;
+} logctx_t;
+#endif
+
 static var_rc_t ctx_lookup(
     var_t *var,
     void *_ctx, 
@@ -136,8 +143,19 @@
     var_rc_t rc;
     char *cp;
     optionval_t *ov;
+#if 0
+    logctx_t *logctx = NULL;
+
+    if ((logctx = (logctx_t *)malloc(sizeof(logctx_t))) != NULL) {
+        if (l2_channel_upstream(ctx->l2, &logctx->l2) != L2_OK) {
+            if (l2_channel_downstream(ctx->l2, &logctx->l2) != L2_OK) {
+                logctx->l2 = NULL;
+            }
+        }
+    }
+    if (logctx != NULL && logctx->l2 != NULL) log2(logctx, DEBUG, "ctx_lookup variable \"%s\" (%d)", var_ptr, var_len);
+#endif
 
-    log2(ctx, DEBUG, "ctx_lookup variable \"%s\" (%d)", var_ptr, var_len);
     rc = VAR_ERR_UNDEFINED_VARIABLE;
     if (strncasecmp(var_ptr, "option.", strlen("option.")) == 0) {
         cp = str_dupex(var_ptr, var_len);
@@ -194,10 +212,19 @@
         }
         free(cp);
     }
-    if (rc == VAR_OK)
-        log4(ctx, DEBUG, "ctx_lookup variable \"%s\" (%d) ok: result is \"%s\" (%d)", var_ptr, var_len, *val_ptr, *val_len);
-    else
-        log4(ctx, DEBUG, "ctx_lookup variable \"%s\" (%d) failed: %s (%d)", var_ptr, var_len, var_strerror(var, rc, &cp) == VAR_OK ? cp : "Unknown Error", rc);
+
+#if 0
+    if (rc == VAR_OK) {
+        if (logctx != NULL && logctx->l2 != NULL) log4(ctx, DEBUG, "ctx_lookup variable \"%s\" (%d) ok: result is \"%s\" (%d)", var_ptr, var_len, *val_ptr, *val_len);
+    }
+    else {
+        if (logctx != NULL && logctx->l2 != NULL) log4(ctx, DEBUG, "ctx_lookup variable \"%s\" (%d) failed: %s (%d)", var_ptr, var_len, var_strerror(var, rc, &cp) == VAR_OK ? cp : "Unknown Error", rc);
+    }
+
+    if (logctx != NULL)
+        free(logctx);
+#endif
+
     return rc;
 }
 
@@ -325,7 +352,6 @@
     exit(ERR_EXECUTION);
 }
 
-
 int main(int argc, char **argv)
 {
     int           rc;

CVSTrac 2.0.1