-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Syslog does not usually exist on Windows, so implement our own using Window's ReportEvent mechanism. Strings containing "%1" gets expanded into them selves by ReportEvent, resulting in an unreadable string. "%2" and above is not a problem. Unfortunately, on Windows an IPv6 address can contain "%1", so expand "%1" to "% 1" before reporting. "%%1" is also a problem for ReportEvent, but that string cannot occur in an IPv6 address. Signed-off-by: Mike Pape <dotzenlabs@gmail.com> Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
- Loading branch information
Mike Pape
authored and
Junio C Hamano
committed
Nov 4, 2010
1 parent
772991a
commit 088d880
Showing
5 changed files
with
96 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
#include "../../git-compat-util.h" | ||
#include "../../strbuf.h" | ||
|
||
static HANDLE ms_eventlog; | ||
|
||
void openlog(const char *ident, int logopt, int facility) | ||
{ | ||
if (ms_eventlog) | ||
return; | ||
|
||
ms_eventlog = RegisterEventSourceA(NULL, ident); | ||
|
||
if (!ms_eventlog) | ||
warning("RegisterEventSource() failed: %lu", GetLastError()); | ||
} | ||
|
||
void syslog(int priority, const char *fmt, ...) | ||
{ | ||
struct strbuf sb = STRBUF_INIT; | ||
struct strbuf_expand_dict_entry dict[] = { | ||
{"1", "% 1"}, | ||
{NULL, NULL} | ||
}; | ||
WORD logtype; | ||
char *str; | ||
int str_len; | ||
va_list ap; | ||
|
||
if (!ms_eventlog) | ||
return; | ||
|
||
va_start(ap, fmt); | ||
str_len = vsnprintf(NULL, 0, fmt, ap); | ||
va_end(ap); | ||
|
||
if (str_len < 0) { | ||
warning("vsnprintf failed: '%s'", strerror(errno)); | ||
return; | ||
} | ||
|
||
str = malloc(str_len + 1); | ||
va_start(ap, fmt); | ||
vsnprintf(str, str_len + 1, fmt, ap); | ||
va_end(ap); | ||
strbuf_expand(&sb, str, strbuf_expand_dict_cb, &dict); | ||
free(str); | ||
|
||
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 **)&sb.buf, NULL); | ||
|
||
strbuf_release(&sb); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
#ifndef SYSLOG_H | ||
#define SYSLOG_H | ||
|
||
#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) | ||
|
||
void openlog(const char *ident, int logopt, int facility); | ||
void syslog(int priority, const char *fmt, ...); | ||
|
||
#endif /* SYSLOG_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters