summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xformat-notify26
1 files changed, 10 insertions, 16 deletions
diff --git a/format-notify b/format-notify
index 5f9dddd..59a9740 100755
--- a/format-notify
+++ b/format-notify
@@ -1,6 +1,6 @@
#!/usr/bin/env python
-import os, sys, re, errno, time, random, syslog
+import os, sys, re, syslog, socket
def add_color(status):
if status == 'WARNING':
@@ -20,7 +20,7 @@ def clean_output(status, output):
def main():
if len(sys.argv) < 5:
- print('Usage: %s (PIPE|--test) SERVICE STATUS OUTPUT' % sys.argv[0])
+ print('Usage: %s (SOCKET|--test) SERVICE STATUS OUTPUT' % sys.argv[0])
sys.exit(1)
file = sys.argv.pop(1)
@@ -38,20 +38,14 @@ def main():
if not os.path.exists(file):
sys.exit(1)
- now = time.time()
- while True:
- try:
- f = os.open(file, os.O_WRONLY | os.O_NONBLOCK)
- break
- except OSError:
- if time.time() - now > 2:
- syslog.syslog("Dropping message: '%s'" % msg)
- sys.exit(1)
- else:
- time.sleep(random.random() * 0.3)
-
- os.write(f, msg)
- os.close(f)
+ s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
+ try:
+ s.connect(file)
+ s.sendall(msg)
+ s.close()
+ except socket.error:
+ syslog.syslog("Dropping message: '%s'" % msg)
+ sys.exit(1)
if __name__ == '__main__':
main()