summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@lukeshu.com>2017-05-15 18:56:00 -0400
committerLuke Shumaker <lukeshu@lukeshu.com>2017-05-15 18:59:56 -0400
commitf3d1d66387ea8eb9b0c2977315c771a5704604a6 (patch)
tree27b7cf1e16f6c2558465b5a012adaeb5650393ff
parenta7ff2e2b1448e978dc17a8e213a8b88ebdbecedb (diff)
Implement sd_messages
-rw-r--r--readme.go13
-rw-r--r--sd_messages/.gitignore1
-rw-r--r--sd_messages/Makefile41
-rw-r--r--sd_messages/doc.go19
-rwxr-xr-xsd_messages/messages.go.gen17
5 files changed, 90 insertions, 1 deletions
diff --git a/readme.go b/readme.go
index aac1aa7..269e504 100644
--- a/readme.go
+++ b/readme.go
@@ -1,4 +1,4 @@
-// Copyright 2015 Luke Shumaker
+// Copyright 2015, 2017 Luke Shumaker
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@@ -17,4 +17,15 @@
//
// Several of these APIs originated with systemd, but they are all
// very simple, and may be implemented with a variety of systems.
+//
+// Name | Status | Description
+// ------------+--------+-------------------------------------------------------------------------------
+// sd_bus | TODO | Package sd_bus is a lightweight D-Bus client.
+// sd_daemon | DONE | Package sd_daemon implements utilities for writing "new-style" daemons.
+// sd_event | N/A | Not implemented; not nescessary in Go.
+// sd_id128 | DONE | Package sd_id128 reads, generates, and processes 128-bit ID values.
+// sd_journal | TODO | TODO.
+// sd_login | TODO | TODO.
+// sd_messages | DONE | Package sd_messages is a table of constant message IDs understood by journald.
+// ------------+--------+-------------------------------------------------------------------------------
package libsystemd
diff --git a/sd_messages/.gitignore b/sd_messages/.gitignore
new file mode 100644
index 0000000..77a170f
--- /dev/null
+++ b/sd_messages/.gitignore
@@ -0,0 +1 @@
+/messages.go
diff --git a/sd_messages/Makefile b/sd_messages/Makefile
new file mode 100644
index 0000000..512d27c
--- /dev/null
+++ b/sd_messages/Makefile
@@ -0,0 +1,41 @@
+# Copyright (C) 2016-2017 Luke Shumaker <lukeshu@sbcglobal.net>
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# header
+ifneq ($(topsrcdir),)
+include $(topsrcdir)/build-aux/Makefile.head.mk
+else
+srcdir = .
+.DEFAULT_GOAL = files.generate
+endif
+
+# body
+
+SD_MESSAGES_H ?= /usr/include/systemd/sd-messages.h
+
+files.src.gen += messages.go
+
+$(srcdir)/messages.go: $(srcdir)/messages.go.gen $(SD_MESSAGES_H)
+ cd $(@D) && ./$(<F) $(SD_MESSAGES_H) | gofmt > $(@F)
+
+# footer
+ifneq ($(topsrcdir),)
+include $(topsrcdir)/build-aux/Makefile.tail.mk
+else
+files.generate: $(files.src.gen)
+maintainer-clean:
+ rm -f -- $(files.src.gen) $(files.src.int)
+.PHONY: files.generate maintainer-clean
+.DELETE_ON_ERROR:
+endif
diff --git a/sd_messages/doc.go b/sd_messages/doc.go
new file mode 100644
index 0000000..c2967aa
--- /dev/null
+++ b/sd_messages/doc.go
@@ -0,0 +1,19 @@
+// Copyright 2017 Luke Shumaker
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+//go:generate make
+
+// Package sd_messages is a table of constant message IDs understood
+// by journald.
+package sd_messages
diff --git a/sd_messages/messages.go.gen b/sd_messages/messages.go.gen
new file mode 100755
index 0000000..423829b
--- /dev/null
+++ b/sd_messages/messages.go.gen
@@ -0,0 +1,17 @@
+#!/usr/bin/sed -rnf
+1apackage foo
+1aconst (
+/^#define\s+SD_MESSAGE_/ {
+
+ s/^#define\s+SD_MESSAGE_(\S*)/\1 =/
+
+ s/SD_ID128_MAKE\(/ID128{0x/
+ s/,/,0x/g
+ s/\)/}/
+
+ s/(^|_)([A-Z])([A-Z]*)/\U\2\L\3/g
+
+ p
+}
+/^$/p
+$a)