aboutsummaryrefslogtreecommitdiff
path: root/alarm-tools/alarms-show.c
diff options
context:
space:
mode:
authorDavid Phillips <david@sighup.nz>2018-06-27 19:50:25 +1200
committerDavid Phillips <david@sighup.nz>2018-06-27 19:56:24 +1200
commit4816ac8405f3f8a18f0e296b9a748a27d66fed0e (patch)
tree37124c1d7786147c7a76030e47f44ddab8873be1 /alarm-tools/alarms-show.c
parent737b8916cfa2ba16edeee3d9518e3b5715724c0d (diff)
downloadalarmd-4816ac8405f3f8a18f0e296b9a748a27d66fed0e.tar.xz
Change from TCP to UNIX sockets, massive clean up
Diffstat (limited to 'alarm-tools/alarms-show.c')
-rw-r--r--alarm-tools/alarms-show.c40
1 files changed, 15 insertions, 25 deletions
diff --git a/alarm-tools/alarms-show.c b/alarm-tools/alarms-show.c
index ba466a5..7613489 100644
--- a/alarm-tools/alarms-show.c
+++ b/alarm-tools/alarms-show.c
@@ -6,6 +6,7 @@
#include <sys/socket.h>
#include <netdb.h>
#include <unistd.h>
+#include <sys/un.h>
#include "alarmd_proto.h"
@@ -52,6 +53,10 @@ int dump_alarms(int sock)
printf("[%s] %s\n", is_raised ? "\x1b[1;31mRAISE\x1b[0m" : "\x1b[1;32mCLEAR\x1b[0m", buffer);
}
+ if (count == 0) {
+ printf("No alarms registered.\n");
+ }
+
if (i < count) {
fprintf(stderr, "Not all alarms received, output must be missing some\n");
return 1;
@@ -66,37 +71,22 @@ int main(void)
{
int sock = 0;
char buffer[128];
- struct addrinfo hints, *s_info, *p;
+ struct sockaddr_un server;
- bzero(&hints, sizeof(hints));
- hints.ai_family = AF_UNSPEC;
- hints.ai_socktype = SOCK_STREAM;
-
- /* FIXME spec custom hostname on cmd line */
- if (getaddrinfo("localhost", ALARMD_PORT, &hints, &s_info) != 0) {
- perror("getaddrinfo");
+ if ((sock = socket(AF_UNIX, SOCK_STREAM, 0)) < 0) {
+ perror("socket");
return 1;
}
- for (p = s_info; p != NULL; p = p->ai_next) {
- if ((sock = socket(p->ai_family, p->ai_socktype, p->ai_protocol)) < 0) {
- perror("socket");
- continue;
- }
- if (connect(sock, p->ai_addr, p->ai_addrlen) < 0) {
- close(sock);
- perror("connect");
- continue;
- }
- break;
- }
-
- if (!p) {
- fprintf(stderr, "Connection to server failed\n");
+ server.sun_family = AF_UNIX;
+ strcpy(server.sun_path, "/home/david/alarmd_sock");
+ printf("Connecting...\n");
+ if (connect(sock, (struct sockaddr *)&server, strlen(server.sun_path) + sizeof(server.sun_family)) < 0) {
+ close(sock);
+ perror("connect");
return 1;
}
-
- freeaddrinfo(s_info);
+ printf("Connected.\n");
dump_alarms(sock);
close(sock);