git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v2 02/14] mingw: implement syslog

From
Erik Faye-Lund <kusmabite@googlemail.com>
Date
Jan 15, 2010, 21:30 UTC
Message-ID
<1263591033-4992-3-git-send-email-kusmabite@gmail.com>
In-Reply-To
<1263591033-4992-1-git-send-email-kusmabite@gmail.com>
From: Mike Pape <dotzenlabs@gmail.com>

Syslog does not usually exist on Windows, so we implement our own using Window's ReportEvent mechanism.

Signed-off-by: Mike Pape <dotzenlabs@gmail.com>
Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com>
---
 compat/mingw.c    |   49 +++++++++++++++++++++++++++++++++++++++++++++++++
 compat/mingw.h    |   15 +++++++++++++++
 daemon.c          |    2 --
 git-compat-util.h |    1 +
 4 files changed, 65 insertions(+), 2 deletions(-)
diff --git a/compat/mingw.c b/compat/mingw.c
index 42ef9e2..54be905 100644
--- a/compat/mingw.c
+++ b/compat/mingw.c
@@ -1351,6 +1351,55 @@ int sigaction(int sig, struct sigaction *in, struct sigaction *out)
 	return 0;
 }
 
+static HANDLE ms_eventlog;
+
+void openlog(const char *ident, int logopt, int facility)
+{
+	if (ms_eventlog)
+		return;
+	ms_eventlog = RegisterEventSourceA(NULL, ident);
+}
+
+void syslog(int priority, const char *fmt, const char *arg)
+{
+	WORD logtype;
+
+	if (strcmp(fmt, "%s")) {
+		warning("format string of syslog() not implemented");
+		return;
+	}
+
+	switch (priority) {
+		case LOG_EMERG:
+		case LOG_ALERT:
+		case LOG_CRIT:
+		case LOG_ERR:
+			logtype = EVENTLOG_ERROR_TYPE;
+			break;
+
+		case LOG_WARNING:
+			logtype = EVENTLOG_WARNING_TYPE;
+			break;
+
+		case LOG_NOTICE:
+		case LOG_INFO:
+		case LOG_DEBUG:
+		default:
+			logtype = EVENTLOG_INFORMATION_TYPE;
+			break;
+	}
+
+	ReportEventA(ms_eventlog,
+	    logtype,
+	    0,
+	    0,
+	    NULL,
+	    1,
+	    0,
+	    (const char **)&arg,
+	    NULL);
+}
+
 #undef signal
 sig_handler_t mingw_signal(int sig, sig_handler_t handler)
 {
diff --git a/compat/mingw.h b/compat/mingw.h
index 07513bb..d934e56 100644
--- a/compat/mingw.h
+++ b/compat/mingw.h
@@ -38,6 +38,19 @@ typedef int socklen_t;
 #define EAFNOSUPPORT WSAEAFNOSUPPORT
 #define ECONNABORTED WSAECONNABORTED
 
+#define LOG_PID     0x01
+
+#define LOG_EMERG   0
+#define LOG_ALERT   1
+#define LOG_CRIT    2
+#define LOG_ERR     3
+#define LOG_WARNING 4
+#define LOG_NOTICE  5
+#define LOG_INFO    6
+#define LOG_DEBUG   7
+
+#define LOG_DAEMON  (3<<3)
+
 struct passwd {
 	char *pw_name;
 	char *pw_gecos;
@@ -166,6 +179,8 @@ struct passwd *getpwuid(int uid);
 int setitimer(int type, struct itimerval *in, struct itimerval *out);
 int sigaction(int sig, struct sigaction *in, struct sigaction *out);
 int link(const char *oldpath, const char *newpath);
+void openlog(const char *ident, int logopt, int facility);
+void syslog(int priority, const char *fmt, const char *arg);
 
 /*
  * replacements of existing functions
diff --git a/daemon.c b/daemon.c
index 918e560..79ba1aa 100644
--- a/daemon.c
+++ b/daemon.c
@@ -4,8 +4,6 @@
 #include "run-command.h"
 #include "strbuf.h"
 
-#include <syslog.h>
-
 #ifndef HOST_NAME_MAX
 #define HOST_NAME_MAX 256
 #endif
diff --git a/git-compat-util.h b/git-compat-util.h
index 5c59687..30e6240 100644
--- a/git-compat-util.h
+++ b/git-compat-util.h
@@ -105,6 +105,7 @@
 #include <netdb.h>
 #include <pwd.h>
 #include <inttypes.h>
+#include <syslog.h>
 #if defined(__CYGWIN__)
 #undef _XOPEN_SOURCE
 #include <grp.h>
-- 
1.6.6.211.g26720
Previous: Erik Faye-LundNext: Janos Laube
Message 3 of 49 in “daemon-win32”
  1. 00/14 daemon-win32Erik Faye-Lund, Jan 15, 2010
  2. 01/14 mingw: add network-wrappers for daemonErik Faye-Lund, Jan 15, 2010
  3. 02/14 mingw: implement syslogErik Faye-Lund, Jan 15, 2010
  4. Janos LaubeJan 15, 2010
  5. Erik Faye-LundJan 15, 2010
  6. Janos LaubeJan 15, 2010
  7. 03/14 compat: add inet_pton and inet_ntop prototypesErik Faye-Lund, Jan 15, 2010
  8. 04/14 inet_ntop: fix a couple of old-style declsErik Faye-Lund, Jan 15, 2010
  9. 05/14 mingw: support waitpid with pid > 0 and WNOHANGErik Faye-Lund, Jan 15, 2010
  10. Johannes SixtJan 15, 2010
  11. Erik Faye-LundJan 16, 2010
  12. 06/14 mingw: use real pidErik Faye-Lund, Jan 15, 2010
  13. Johannes SixtJan 15, 2010
  14. Erik Faye-LundJan 15, 2010
  15. Johannes SixtJan 16, 2010
  16. Erik Faye-LundJan 16, 2010
  17. Erik Faye-LundJan 18, 2010
  18. Johannes SixtJan 19, 2010
  19. Erik Faye-LundJan 19, 2010
  20. 07/14 mingw: add kill emulationErik Faye-Lund, Jan 15, 2010
  21. Johannes SixtJan 15, 2010
  22. Erik Faye-LundJan 16, 2010
  23. 08/14 daemon: use explicit file descriptorErik Faye-Lund, Jan 15, 2010
  24. Johannes SixtJan 15, 2010
  25. Erik Faye-LundJan 16, 2010
  26. 09/14 daemon: use run-command api for async servingErik Faye-Lund, Jan 15, 2010
  27. Johannes SixtJan 15, 2010
  28. 10/14 daemon: use full buffered mode for stderrErik Faye-Lund, Jan 15, 2010
  29. 11/14 mingw: compile git-daemonErik Faye-Lund, Jan 15, 2010
  30. 12/14 Improve the mingw getaddrinfo stub to handle more use casesErik Faye-Lund, Jan 15, 2010
  31. 13/14 daemon: use select() instead of poll()Erik Faye-Lund, Jan 15, 2010
  32. Johannes SixtJan 15, 2010
  33. Erik Faye-LundJan 15, 2010
  34. Erik Faye-LundJan 15, 2010
  35. Johannes SixtJan 16, 2010
  36. Erik Faye-LundJan 16, 2010
  37. Johannes SixtJan 16, 2010
  38. Erik Faye-LundJan 16, 2010
  39. Andreas SchwabJan 16, 2010
  40. Erik Faye-LundJan 16, 2010
  41. Johannes SixtJan 16, 2010
  42. Erik Faye-LundJan 16, 2010
  43. Johannes SixtJan 16, 2010
  44. Erik Faye-LundJan 16, 2010
  45. Johannes SixtJan 16, 2010
  46. Erik Faye-LundJan 16, 2010
  47. 14/14 daemon: report connection from root-processErik Faye-Lund, Jan 15, 2010
  48. Johannes SixtJan 15, 2010
  49. Erik Faye-LundJan 15, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.