22 lines
536 B
C
22 lines
536 B
C
#include "libi3.h"
|
|
|
|
#include <err.h>
|
|
#include <fcntl.h>
|
|
|
|
/*
|
|
* Puts the given socket file descriptor into non-blocking mode or dies if
|
|
* setting O_NONBLOCK failed. Non-blocking sockets are a good idea for our
|
|
* IPC model because we should by no means block the window manager.
|
|
*
|
|
*/
|
|
void set_nonblock(int sockfd) {
|
|
int flags = fcntl(sockfd, F_GETFL, 0);
|
|
if (flags & O_NONBLOCK) {
|
|
return;
|
|
}
|
|
flags |= O_NONBLOCK;
|
|
if (fcntl(sockfd, F_SETFL, flags) < 0) {
|
|
err(-1, "Could not set O_NONBLOCK");
|
|
}
|
|
}
|