summaryrefslogtreecommitdiff
path: root/libgo/go/syslog/syslog_solaris.go
diff options
context:
space:
mode:
Diffstat (limited to 'libgo/go/syslog/syslog_solaris.go')
-rw-r--r--libgo/go/syslog/syslog_solaris.go37
1 files changed, 37 insertions, 0 deletions
diff --git a/libgo/go/syslog/syslog_solaris.go b/libgo/go/syslog/syslog_solaris.go
new file mode 100644
index 0000000000..044351dbfd
--- /dev/null
+++ b/libgo/go/syslog/syslog_solaris.go
@@ -0,0 +1,37 @@
+// Copyright 2011 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// gccgo specific implementation of syslog for Solaris. Solaris uses
+// STREAMS to communicate with syslogd. That is enough of a pain that
+// we just call the libc function.
+
+package syslog
+
+import (
+ "fmt"
+ "os"
+ "syscall"
+)
+
+func unixSyslog() (conn serverConn, err os.Error) {
+ return libcConn(0), nil
+}
+
+type libcConn int
+
+func syslog_c(int, *byte)
+
+func (libcConn) writeBytes(p Priority, prefix string, b []byte) (int, os.Error) {
+ syslog_c(int(p), syscall.StringBytePtr(fmt.Sprintf("%s: %s", prefix, b)))
+ return len(b), nil
+}
+
+func (libcConn) writeString(p Priority, prefix string, s string) (int, os.Error) {
+ syslog_c(int(p), syscall.StringBytePtr(fmt.Sprintf("%s: %s", prefix, s)))
+ return len(s), nil
+}
+
+func (libcConn) close() os.Error {
+ return nil
+}