util.c
51 lines
| 777 B
| text/x-c
|
CLexer
/ src / util.c
| r0 | /* See LICENSE.dwm file for copyright and license details. */ | |||
| #include <stdarg.h> | ||||
| #include <stdio.h> | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
| #include <fcntl.h> | ||||
| #include "util.h" | ||||
| void | ||||
| die(const char *fmt, ...) { | ||||
| va_list ap; | ||||
| va_start(ap, fmt); | ||||
| vfprintf(stderr, fmt, ap); | ||||
| va_end(ap); | ||||
| if (fmt[0] && fmt[strlen(fmt)-1] == ':') { | ||||
| fputc(' ', stderr); | ||||
| perror(NULL); | ||||
| } else { | ||||
| fputc('\n', stderr); | ||||
| } | ||||
| exit(1); | ||||
| } | ||||
| void * | ||||
| ecalloc(size_t nmemb, size_t size) | ||||
| { | ||||
| void *p; | ||||
| if (!(p = calloc(nmemb, size))) | ||||
| die("calloc:"); | ||||
| return p; | ||||
| } | ||||
| int | ||||
| fd_set_nonblock(int fd) { | ||||
| int flags = fcntl(fd, F_GETFL); | ||||
| if (flags < 0) { | ||||
| perror("fcntl(F_GETFL):"); | ||||
| return -1; | ||||
| } | ||||
| if (fcntl(fd, F_SETFL, flags | O_NONBLOCK) < 0) { | ||||
| perror("fcntl(F_SETFL):"); | ||||
| return -1; | ||||
| } | ||||
| return 0; | ||||
| } | ||||
