OSSP CVS Repository

ossp - Difference in ossp-pkg/fsl/fsl.c versions 1.9 and 1.10
Not logged in
[Honeypot]  [Browse]  [Home]  [Login]  [Reports
[Search]  [Ticket]  [Timeline
  [History

ossp-pkg/fsl/fsl.c 1.9 -> 1.10

--- fsl.c        2002/07/17 14:28:00     1.9
+++ fsl.c        2002/07/17 15:26:36     1.10
@@ -139,36 +139,13 @@
 
 /* internal context structure */
 static struct {
-    FILE *log;
-    char *logfile;
-    const char *ident;
-    int logopt;
-    int facility;
-    int maskpri;
+    l2_env_t     *l2_env;
+    l2_channel_t *l2_nch;
 } ctx = { 
-    NULL, LOGFILE, "unknown", 0, LOG_USER, 0xff
+    NULL,
+    NULL,
 };
 
-void FIXMEopenlog(const char *ident, int logopt, int facility)
-{
-    /* remember parameters */
-    ctx.ident    = ident;
-    ctx.logopt   = logopt;
-    ctx.facility = facility;
-
-    /* close perhaps still open logfile */
-    if (ctx.log != NULL) {
-        fclose(ctx.log);
-        ctx.log = NULL;
-    }
-
-    /* (re-)open new logfile */
-    if (!(ctx.logopt & LOG_NDELAY) && ctx.log == NULL)
-        if ((ctx.log = fopen(ctx.logfile, "a")) == NULL)
-            return;
-    return;
-}
-
 void traverse(cfg_t *cfg, cfg_node_t *cfgnode)
 {
     int rc;
@@ -279,8 +256,6 @@
 #define OVECSIZE 30 //FIXME find a good place for this
     int ovec[OVECSIZE];
     const char   **acpMatch;
-    l2_env_t     *l2_env;
-    l2_channel_t *l2_nch; /* noop channel */
     l2_channel_t *ch; /* scratch variable */
     l2_result_t   l2rv;
 
@@ -290,28 +265,42 @@
     buf.size = 0;
     cpIdent = NULL;
     cpISF = NULL;
-    l2_env = NULL;
-    l2_nch = NULL;
 
-fprintf(stderr, "DEBUG: BEGIN ident=\"%s\", logopt=0x%.8lx, facility=0x%.8lx\n", ident, (unsigned long)logopt, (unsigned long)facility);
+    /*FIXME this should be available to the user to help him finding out what the application passes along
+     *      fprintf(stderr, "DEBUG: BEGIN ident=\"%s\", logopt=0x%.8lx, facility=0x%.8lx\n", ident, (unsigned long)logopt, (unsigned long)facility);
+     */
+
+    /* check for repeated execution */
+    if (ctx.l2_nch != NULL) {
+        l2_channel_destroy(ctx.l2_nch);
+        ctx.l2_nch = NULL;
+    }
+    if (ctx.l2_env != NULL) {
+        l2_env_destroy(ctx.l2_env);
+        ctx.l2_env = NULL;
+    }
+
+    /*FIXME this should be available to the user to help him finding out what the application passes along
+     *      currently we completely ignore logopt LOG_CONS, LOG_NDELAY, LOG_PERROR, LOG_PID
+     */
 
     /* create L2 environment */
-    if ((l2rv = l2_env_create(&l2_env)) != L2_OK) {
-        cp = l2_env_strerror(l2_env, l2rv); fprintf(stderr, "Error: failed to create L2 environment (%d)\n", l2rv); CU(1); }
-    if ((l2rv = l2_env_levels(l2_env, L2_LEVEL_ALL, L2_LEVEL_NONE)) != L2_OK) {
-        cp = l2_env_strerror(l2_env, l2rv); fprintf(stderr, "Error: logging failed to set global logging level defaults %s(%d)\n", cp, l2rv); CU(1); }
-    if ((l2rv = l2_env_formatter(l2_env, 'D', l2_util_fmt_dump, NULL)) != L2_OK) {
-        cp = l2_env_strerror(l2_env, l2rv); fprintf(stderr, "Error: logging failed to register dump formatter %s(%d)\n", cp, l2rv); CU(1); }
-    if ((l2rv = l2_env_formatter(l2_env, 'S', l2_util_fmt_string, NULL)) != L2_OK) {
-        cp = l2_env_strerror(l2_env, l2rv); fprintf(stderr, "Error: logging failed to register string formatter %s(%d)\n", cp, l2rv); CU(1); }
-    if ((l2rv = l2_env_formatter(l2_env, 'm', l2_util_fmt_errno, NULL)) != L2_OK) {
-        cp = l2_env_strerror(l2_env, l2rv); fprintf(stderr, "Error: logging failed to register errno formatter %s(%d)\n", cp, l2rv); CU(1); }
-    if ((l2rv = l2_env_settimer(l2_env, 20)) != L2_OK) { //FIXME do we need this?
-        cp = l2_env_strerror(l2_env, l2rv); fprintf(stderr, "Error: failed to configure timer %s(%d)\n", cp, l2rv); CU(1); }
+    if ((l2rv = l2_env_create(&ctx.l2_env)) != L2_OK) {
+        cp = l2_env_strerror(ctx.l2_env, l2rv); fprintf(stderr, "Error: failed to create L2 environment (%d)\n", l2rv); CU(1); }
+    if ((l2rv = l2_env_levels(ctx.l2_env, L2_LEVEL_ALL, L2_LEVEL_NONE)) != L2_OK) {
+        cp = l2_env_strerror(ctx.l2_env, l2rv); fprintf(stderr, "Error: logging failed to set global logging level defaults %s(%d)\n", cp, l2rv); CU(1); }
+    if ((l2rv = l2_env_formatter(ctx.l2_env, 'D', l2_util_fmt_dump, NULL)) != L2_OK) {
+        cp = l2_env_strerror(ctx.l2_env, l2rv); fprintf(stderr, "Error: logging failed to register dump formatter %s(%d)\n", cp, l2rv); CU(1); }
+    if ((l2rv = l2_env_formatter(ctx.l2_env, 'S', l2_util_fmt_string, NULL)) != L2_OK) {
+        cp = l2_env_strerror(ctx.l2_env, l2rv); fprintf(stderr, "Error: logging failed to register string formatter %s(%d)\n", cp, l2rv); CU(1); }
+    if ((l2rv = l2_env_formatter(ctx.l2_env, 'm', l2_util_fmt_errno, NULL)) != L2_OK) {
+        cp = l2_env_strerror(ctx.l2_env, l2rv); fprintf(stderr, "Error: logging failed to register errno formatter %s(%d)\n", cp, l2rv); CU(1); }
+    if ((l2rv = l2_env_settimer(ctx.l2_env, 20)) != L2_OK) { //FIXME do we need this?
+        cp = l2_env_strerror(ctx.l2_env, l2rv); fprintf(stderr, "Error: failed to configure timer %s(%d)\n", cp, l2rv); CU(1); }
 
     /* create L2 noop channel */
-    if ((l2rv = l2_channel_create(&l2_nch, l2_env, "noop")) != L2_OK) {
-        cp = l2_env_strerror(l2_env, l2rv); fprintf(stderr, "Error: logging failed to create noop channel; %s(%d)\n", cp, l2rv); CU(1); }
+    if ((l2rv = l2_channel_create(&ctx.l2_nch, ctx.l2_env, "noop")) != L2_OK) {
+        cp = l2_env_strerror(ctx.l2_env, l2rv); fprintf(stderr, "Error: logging failed to create noop channel; %s(%d)\n", cp, l2rv); CU(1); }
 
     /* create IdentSlashFacility */
     if ((cpIdent = strdup((ident != NULL) ? ident : "unknown")) == NULL) {
@@ -443,10 +432,10 @@
         fprintf(stderr, "DEBUG: argident=%s, argmatch=%s, argl2spec=%s\n", argident, argmatch, argl2spec);
 
                 /* create L2 channel throuh spec and link into root channel */
-                if ((l2rv = l2_spec(&ch, l2_env, argl2spec)) != L2_OK) {
-                    cp = l2_env_strerror(l2_env, l2rv); fprintf(stderr, "Error: logging failed to create stream from spec %s(%d)\n", cp, l2rv); CU(1); }
-                if ((l2rv = l2_channel_link(l2_nch, L2_LINK_CHILD, ch, NULL)) != L2_OK) {
-                    cp = l2_env_strerror(l2_env, l2rv); fprintf(stderr, "Error: logging failed to link child channel %s(%d)\n", cp, l2rv); CU(1); }
+                if ((l2rv = l2_spec(&ch, ctx.l2_env, argl2spec)) != L2_OK) {
+                    cp = l2_env_strerror(ctx.l2_env, l2rv); fprintf(stderr, "Error: logging failed to create stream from spec %s(%d)\n", cp, l2rv); CU(1); }
+                if ((l2rv = l2_channel_link(ctx.l2_nch, L2_LINK_CHILD, ch, NULL)) != L2_OK) {
+                    cp = l2_env_strerror(ctx.l2_env, l2rv); fprintf(stderr, "Error: logging failed to link child channel %s(%d)\n", cp, l2rv); CU(1); }
 
                 free(argl2spec);
             }
@@ -456,42 +445,41 @@
         if ((cfgrv = cfg_node_get(cfg, cfgdir, CFG_NODE_ATTR_RBROTH, &cfgdir)) != CFG_OK) {
             (void)cfg_error(cfg, cfgrv, &cp); fprintf(stderr, "Error: cfg_node_get(CFG_NODE_ATTR_RBROTH) failed with error %s (%d)\n", cp, cfgrv); CU(1); }
     }
-    if ((l2rv = l2_channel_open(l2_nch)) != L2_OK) {
-        cp = l2_env_strerror(l2_env, l2rv); fprintf(stderr, "Error: logging failed to open channel stream %s(%d)\n", cp, l2rv); CU(1); }
-    l2_channel_log(l2_nch, L2_LEVEL_DEBUG, "Hello, World!"); //FIXME DEBUG
+    if ((l2rv = l2_channel_open(ctx.l2_nch)) != L2_OK) {
+        cp = l2_env_strerror(ctx.l2_env, l2rv); fprintf(stderr, "Error: logging failed to open channel stream %s(%d)\n", cp, l2rv); CU(1); }
 
-fprintf(stderr, "DEBUG: *END*, buf.base=0x%.8lx, buf.used=%d, buf.size=%d\n", (unsigned long)buf.base, (int)buf.used, (int)buf.size);
     CU(0);
-    FIXMEopenlog(ident, logopt, facility);
 CUS:
     if (cpISF != NULL)
         free(cpISF);
     if (cpIdent != NULL)
         free(cpIdent);
-    if (l2_nch != NULL)
-        l2_channel_destroy(l2_nch);
-    if (l2_env != NULL)
-        l2_env_destroy(l2_env);
 #if 0
     if (cfg != NULL)
         if ((cfgrv = cfg_destroy(cfg)) != CFG_OK) {
             (void)cfg_error(cfg, cfgrv, &cp); fprintf(stderr, "Error: cfg_destroy() failed with error %s (%d)\n", cp, cfgrv); CU(1); }
 #endif
+    if (buf.base != NULL)
+        free(buf.base);
     return;
 }
 
 void closelog(void)
 {
-    /* close open logfile*/
-    if (ctx.log != NULL) {
-        fclose(ctx.log);
-        ctx.log = NULL;
+    if (ctx.l2_nch != NULL) {
+        l2_channel_destroy(ctx.l2_nch);
+        ctx.l2_nch = NULL;
+    }
+    if (ctx.l2_env != NULL) {
+        l2_env_destroy(ctx.l2_env);
+        ctx.l2_env = NULL;
     }
     return;
 }
 
 int setlogmask(int maskpri)
 {
+#if 0
     int omask;
 
     /* remember the logging mask */
@@ -499,6 +487,8 @@
     if (maskpri != 0)
         ctx.maskpri = maskpri;
     return omask;
+#endif
+    return maskpri; //FIXME
 }
 
 void syslog(int priority, const char *message, ...)
@@ -518,103 +508,10 @@
 void vsyslog(int priority, const char *fmt, va_list args)
 #endif
 {
-    time_t now;
-    int saved_errno;
-    char buf[2048];
-    char *cpBuf;
-    int nBuf;
-    char caMsg[2048];
-    char *cpMsg;
-    char *cpFmt;
-    int i;
-    char *cpTime;
-    char *cpLevel;
-
-    /* Check for invalid bits */
-    if (priority & ~(LOG_PRIMASK|LOG_FACMASK))
-        priority &= (LOG_PRIMASK|LOG_FACMASK);
-
-    /* stop processing if mask disabled this call */
-    if (!(LOG_MASK(LOG_PRI(priority)) & ctx.maskpri))
+    if (ctx.l2_nch == NULL)
         return;
 
-    /* make sure we have a reasonable default for facility */
-    if ((priority & LOG_FACMASK) == 0)
-        priority |= ctx.facility;
-
-    /* remember errno for optional %m processing below */
-    saved_errno = errno;
-
-    /* open logfile now (if it was delayed) */
-    if (ctx.log == NULL)
-        if ((ctx.log = fopen(ctx.logfile, "a")) == NULL)
-            return;
-
-    /* determine current time */
-    time(&now);
-    cpTime = ctime(&now) + 4;
-
-    /* determine logging level name */
-    cpLevel = "unknown";
-    for (i = 0; level2string[i].string != NULL; i++) {
-        if (LOG_PRI(priority) == level2string[i].level) {
-            cpLevel = level2string[i].string;
-            break;
-        }
-    }
-    
-    /* start output generation */
-    cpBuf = buf;
-    sprintf(cpBuf, "%.15s <%s> %s", cpTime, cpLevel, ctx.ident);
-    nBuf = strlen(cpBuf);
-
-    /* optionally add process id */
-    if (ctx.logopt & LOG_PID) {
-        sprintf(cpBuf+nBuf, "[%d]", getpid());
-        nBuf += strlen(cpBuf+nBuf);
-    }
-
-    /* end prefix */
-    strcpy(cpBuf+nBuf, ": ");
-    nBuf += 2;
-
-    /* optionally expand %m in format string */
-    cpFmt = (char *)fmt;
-    if (strstr(cpFmt, "%m")) {
-        cpMsg = caMsg;
-        while (cpFmt[0] != '\0') {
-            if (cpFmt[0] == '%' && cpFmt[1] == 'm') {
-                strcpy(cpMsg, strerror(saved_errno));
-                cpMsg += strlen(cpMsg);
-                cpFmt += 2;
-            } else {
-                *cpMsg++ = *cpFmt++;
-                *cpMsg = '\0';
-            }
-        }
-        cpFmt = caMsg;
-    }
-
-    /* append message to output buffer */
-    vsprintf(cpBuf+nBuf, cpFmt, args);
-    nBuf += strlen(cpBuf+nBuf);
-
-    /* append newline if still not present */
-    if (cpBuf[nBuf-1] != '\n') {
-        cpBuf[nBuf++] = '\n';
-        cpBuf[nBuf] = '\0';
-    }
-
-    /* now finally write output buffer to logfile */
-    fwrite(cpBuf, nBuf, 1, ctx.log);
-    fflush(ctx.log);
-
-#ifdef LOG_PERROR
-    /* optionally also write output buffer to stderr */
-    if (ctx.logopt & LOG_PERROR)
-        fwrite(cpBuf, nBuf, 1, stderr);
-#endif
-
+    l2_channel_vlog(ctx.l2_nch, L2_LEVEL_DEBUG, fmt, args);
     return;
 }
 

CVSTrac 2.0.1