]> git.lizzy.rs Git - bspwm.git/blob - bspc.c
Made BSPWM_SOCKET definition optional
[bspwm.git] / bspc.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <string.h>
4 #include <sys/socket.h>
5 #include <sys/un.h>
6 #include <unistd.h>
7 #include "common.h"
8
9 int main(int argc, char *argv[])
10 {
11     int sock_fd, nbr, i;
12     struct sockaddr_un sock_address;
13     char socket_path[BUFSIZ];
14     char msg[BUFSIZ];
15     char rsp[BUFSIZ];
16
17     if (argc < 2)
18         return -1;
19
20     char *sp = getenv(SOCKET_ENV_VAR);
21
22     strcpy(socket_path, (sp == NULL ? DEFAULT_SOCKET_PATH : sp));
23
24     msg[0] = '\0';
25
26     for (i = 1; i < argc; i++) {
27         strcat(msg, argv[i]);
28         if (i < (argc - 1))
29             strcat(msg, TOKEN_SEP);
30     }
31
32     sock_address.sun_family = AF_UNIX;
33     strcpy(sock_address.sun_path, socket_path);
34
35     sock_fd = socket(AF_UNIX, SOCK_STREAM, 0);
36     connect(sock_fd, (struct sockaddr *) &sock_address, sizeof(sock_address));
37
38     send(sock_fd, msg, strlen(msg), 0);
39
40     if ((nbr = recv(sock_fd, rsp, sizeof(rsp), 0)) > 0) {
41         rsp[nbr] = '\0';
42         if (strcmp(rsp, EMPTY_RESPONSE) != 0)
43             printf("%s", rsp);
44     }
45
46     close(sock_fd);
47     return 0;
48 }