]> git.lizzy.rs Git - bspwm.git/blob - bspc.c
247bbfee49032944c628afcdf5810caac68cd47e
[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
8 #define SOCK_PATH  "BSPWM_SOCKET"
9
10 int main(int argc, char *argv[])
11 {
12     int sock_fd, nbr, i;
13     struct sockaddr_un sock_address;
14     char *sock_path;
15     char response[BUFSIZ];
16     int num_args = argc - 1;
17     char **args = (argv + 1);
18
19     if (num_args < 1)
20         return;
21
22     sock_path = getenv(SOCK_PATH);
23
24     if (sock_path == NULL)
25         return;
26
27     sock_address.sun_family = AF_UNIX;
28     strcpy(sock_address.sun_path, sock_path);
29
30     sock_fd = socket(AF_UNIX, SOCK_STREAM, 0);
31     connect(sock_fd, (struct sockaddr *) &sock_address, sizeof(sock_address));
32
33     for (i = 0; i < num_args; i++) {
34         send(sock_fd, args[i], strlen(args[i]), 0);
35         
36         if ((nbr = recv(sock_fd, response, sizeof(response), 0)) > 0) {
37             response[nbr] = '\0';
38             printf("%s", response);
39         }
40     }
41 }