Index: ChangeLog
===================================================================
RCS file: /cvsroot/external/sane/ChangeLog,v
retrieving revision 1.1.1.1.2.115
diff -u -r1.1.1.1.2.115 ChangeLog
--- ChangeLog	2000/03/18 03:14:11	1.1.1.1.2.115
+++ ChangeLog	2000/03/18 03:19:11
@@ -1,5 +1,10 @@
 2000-03-18  Petter Reinholdtsen <pere@td.org.uit.no>
 
+	* include/sane/sanei_debug.h sanei/sanei_init_debug.c: Send debug
+	messages to syslog if stderr is a socket.
+
+2000-03-18  Petter Reinholdtsen <pere@td.org.uit.no>
+
 	* backend/Makefile.in tools/libtool-get-dll-ext: New script to
 	detect shared library endings without using 'rev' which is missing
 	on some platforms.
Index: include/sane/sanei_debug.h
===================================================================
RCS file: /cvsroot/external/sane/include/sane/sanei_debug.h,v
retrieving revision 1.1.1.1.2.1
diff -u -r1.1.1.1.2.1 sanei_debug.h
--- sanei_debug.h	2000/01/25 15:37:55	1.1.1.1.2.1
+++ sanei_debug.h	2000/03/18 03:19:12
@@ -1,3 +1,6 @@
+#ifndef _SANEI_DEBUG_H
+#define _SANEI_DEBUG_H
+
 #include <sane/sanei.h>
 
 #define ENTRY(name)	PASTE(PASTE(PASTE(sane_,BACKEND_NAME),_),name)
@@ -8,9 +11,7 @@
 # define HAVE_VARARG_MACROS
 #endif
 
-#ifndef HAVE_VARARG_MACROS
-  extern void sanei_debug (int level, const char *msg, ...);
-#endif
+extern void sanei_debug (int level, const char *msg, ...);
 
 #ifdef NDEBUG
 # define DBG_INIT(backend, var)
@@ -26,28 +27,31 @@
 #define DBG_LEVEL	PASTE(sanei_debug_,BACKEND_NAME)
 
 #if defined(BACKEND_NAME) && !defined(STUBS)
-int PASTE(sanei_debug_,BACKEND_NAME);
+int DBG_LEVEL;
 #endif
 
 # define DBG_INIT()					\
-  sanei_init_debug (STRINGIFY(BACKEND_NAME),		\
-		    &PASTE(sanei_debug_,BACKEND_NAME))
+  sanei_init_debug (STRINGIFY(BACKEND_NAME), &DBG_LEVEL)
 
 /* The cpp that comes with GNU C 2.5 seems to have troubles understanding
    vararg macros.  */
 #ifdef HAVE_VARARG_MACROS
+extern void sanei_debug_max (int level, int max_level, const char *msg, ...);
+
 # define DBG(level, msg, args...)					\
   do {									\
-    if (DBG_LEVEL >= (level)){			\
-      fprintf (stderr, "[" STRINGIFY(BACKEND_NAME) "] " msg, ##args);	\
-      fflush(stderr); \
-    }			\
+      sanei_debug_max ( level, DBG_LEVEL,                               \
+                        "[" STRINGIFY(BACKEND_NAME) "] " msg, ##args);  \
   } while (0)
 
   extern void sanei_init_debug (const char * backend, int * debug_level_var);
 #else
 # define DBG		sanei_debug
-#endif
+#endif /* HAVE_VARARG_MACROS */
 
 # define IF_DBG(x)	x
-#endif
+#endif */ NDEBUG */
+
+#else
+#  warning "sane/sanei_debug.h included more then once!"
+#endif /* _SANEI_DEBUG_H */
Index: sanei/sanei_init_debug.c
===================================================================
RCS file: /cvsroot/external/sane/sanei/sanei_init_debug.c,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 sanei_init_debug.c
--- sanei_init_debug.c	1999/08/09 18:05:59	1.1.1.1
+++ sanei_init_debug.c	2000/03/18 03:19:12
@@ -43,24 +43,33 @@
 #include <ctype.h>
 #include <stdio.h>
 #include <stdlib.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#include <stdarg.h>
+#include <sys/syslog.h>
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#include <sys/stat.h>
 
 #ifdef __EMX__
 # define INCL_DOS
 # include <os2.h>
 #endif
 
+#define BACKEND_NAME sanei_debug
 #include <sane/sanei_debug.h>
 
-#ifndef HAVE_VARARG_MACROS
-  static int max_level = 0;
-#endif
+static int global_max_level = 0;
+
 
 void
 sanei_init_debug (const char * backend, int * var)
 {
   char ch, buf[256] = "SANE_DEBUG_";
   const char * val;
-  int i;
+  unsigned int i;
 
   *var = 0;
 
@@ -84,30 +93,38 @@
 
   *var = atoi (val);
 
-#ifndef HAVE_VARARG_MACROS
-  if (*var > max_level)
-    max_level = *var;
-#endif  
+  if (*var > global_max_level)
+    global_max_level = *var;
 
-  fprintf (stderr, "[sanei_init_debug]: Setting debug level of %s to %d.\n",
-	   backend, *var);
+  DBG (0, "Setting debug level of %s to %d.\n", backend, *var);
 }
 
-#ifndef HAVE_VARARG_MACROS
-
-#include <stdarg.h>
+static void
+debug_msg (int level, int max_level, const char *fmt, va_list ap)
+{
+  if (max_level >= level)
+    {
+      if ( 1 == isfdtype(fileno(stderr), S_IFSOCK) )
+	vsyslog(LOG_DEBUG, fmt, ap);
+      else
+	vfprintf (stderr, fmt, ap);
+    }
+}
 
 void
 sanei_debug (int level, const char *fmt, ...)
 {
   va_list ap;
-
-  if (max_level >= level)
-    {
-      va_start (ap, fmt);
-      vfprintf (stderr, fmt, ap);
-      va_end (ap);
-    }
+  va_start (ap, fmt);
+  debug_msg (level, global_max_level, fmt, ap);
+  va_end (ap); 
 }
 
-#endif /* !HAVE_VARARG_MACROS */
+void
+sanei_debug_max (int level, int max_level, const char *fmt, ...)
+{
+  va_list ap;
+  va_start (ap, fmt);
+  debug_msg (level, max_level, fmt, ap);
+  va_end (ap);
+}
