util.c 795 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. /* See LICENSE.dwm file for copyright and license details. */
  2. #include <stdarg.h>
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <string.h>
  6. #include <fcntl.h>
  7. #include "util.h"
  8. void
  9. die(const char *fmt, ...) {
  10. va_list ap;
  11. va_start(ap, fmt);
  12. vfprintf(stderr, fmt, ap);
  13. va_end(ap);
  14. if (fmt[0] && fmt[strlen(fmt)-1] == ':') {
  15. fputc(' ', stderr);
  16. perror(NULL);
  17. } else {
  18. fputc('\n', stderr);
  19. }
  20. exit(1);
  21. }
  22. void *
  23. ecalloc(size_t nmemb, size_t size)
  24. {
  25. void *p;
  26. if (!(p = calloc(nmemb, size)))
  27. die("calloc:");
  28. return p;
  29. }
  30. int
  31. fd_set_nonblock(int fd) {
  32. int flags = fcntl(fd, F_GETFL);
  33. if (flags < 0) {
  34. perror("fcntl(F_GETFL):");
  35. return -1;
  36. }
  37. if (fcntl(fd, F_SETFL, flags | O_NONBLOCK) < 0) {
  38. perror("fcntl(F_SETFL):");
  39. return -1;
  40. }
  41. return 0;
  42. }