]> mj.ucw.cz Git - libucw.git/blobdiff - ucw/log-conf.c
MD5: The rest of the test suite
[libucw.git] / ucw / log-conf.c
index d0afece0fb7e650ebe9e6f33157bff9c6dff00dd..824d95fcb01df289025f44a19634584531df6214 100644 (file)
@@ -7,13 +7,13 @@
  *     of the GNU Lesser General Public License.
  */
 
-#include "ucw/lib.h"
-#include "ucw/log.h"
-#include "ucw/log-internal.h"
-#include "ucw/conf.h"
-#include "ucw/simple-lists.h"
-#include "ucw/tbf.h"
-#include "ucw/threads.h"
+#include <ucw/lib.h>
+#include <ucw/log.h>
+#include <ucw/log-internal.h>
+#include <ucw/conf.h>
+#include <ucw/simple-lists.h>
+#include <ucw/tbf.h>
+#include <ucw/threads.h>
 
 #include <stdio.h>
 #include <string.h>
@@ -26,6 +26,7 @@ struct stream_config {
   cnode n;
   char *name;
   char *file_name;
+  int file_desc;
   char *syslog_facility;
   u32 levels;
   clist types;                         // simple_list of names
@@ -53,6 +54,7 @@ stream_init(void *ptr)
   struct stream_config *c = ptr;
 
   c->levels = ~0U;
+  c->file_desc = -1;
   return NULL;
 }
 
@@ -102,6 +104,7 @@ static struct cf_section stream_config = {
 #define P(x) PTR_TO(struct stream_config, x)
     CF_STRING("Name", P(name)),
     CF_STRING("FileName", P(file_name)),
+    CF_INT("FileDesc", P(file_desc)),
     CF_STRING("SyslogFacility", P(syslog_facility)),
     CF_BITMAP_LOOKUP("Levels", P(levels), level_names),
     CF_LIST("Types", P(types), &cf_string_list_config),
@@ -293,6 +296,8 @@ do_new_configured(struct stream_config *c)
 
   if (c->file_name)
     ls = log_new_file(c->file_name, (c->stderr_follows ? FF_FD2_FOLLOWS : 0));
+  else if (c->file_desc >= 0)
+    ls = log_new_fd(c->file_desc, (c->stderr_follows ? FF_FD2_FOLLOWS : 0));
   else if (c->syslog_facility)
     ls = log_new_syslog(c->syslog_facility, (c->syslog_pids ? LOG_PID : 0));
   else
@@ -331,17 +336,13 @@ log_new_configured(const char *name)
 void
 log_configured(const char *name)
 {
-  struct log_stream *ls = log_new_configured(name);
-  struct log_stream *def = log_stream_by_flags(0);
-  log_rm_substream(def, NULL);
-  log_add_substream(def, ls);
-  log_close_stream(ls);
+  log_set_default_stream(log_new_configured(name));
 }
 
 #ifdef TEST
 
 #include <unistd.h>
-#include "ucw/getopt.h"
+#include <ucw/getopt.h>
 
 int main(int argc, char **argv)
 {