Advertisement
QenBau

conn.h

Aug 2nd, 2021
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.32 KB | None | 0 0
  1. #if !defined(CONN_H)
  2. #define CONN_H
  3.  
  4. #include <sys/types.h>
  5. #include <sys/socket.h>
  6. #include <sys/uio.h>
  7. #include <sys/un.h>
  8. #include <errno.h>
  9. #include <stdio.h>
  10. #include <stdlib.h>
  11.  
  12. #define SOCKNAME "./cs_sock"
  13. #define MAXBACKLOG 108
  14.  
  15. /** Evita letture parziali
  16. *
  17. * \retval -1 errore (errno settato)
  18. * \retval 0 se durante la lettura da fd leggo EOF
  19. * \retval size se termina con successo
  20. */
  21. static inline int readn(long fd, void *buf, size_t size) {
  22. size_t left = size;
  23. int r;
  24. char *bufptr = (char*)buf;
  25. while(left>0) {
  26. if ((r=read((int)fd ,bufptr,left)) == -1) {
  27. if (errno == EINTR) continue;
  28. return -1;
  29. }
  30. if (r == 0) return 0; // EOF
  31. left -= r;
  32. bufptr += r;
  33. }
  34. return size;
  35. }
  36.  
  37. /** Evita scritture parziali
  38. *
  39. * \retval -1 errore (errno settato)
  40. * \retval 0 se durante la scrittura la write ritorna 0
  41. * \retval 1 se la scrittura termina con successo
  42. */
  43. static inline int writen(long fd, void *buf, size_t size) {
  44. size_t left = size;
  45. int r;
  46. char *bufptr = (char*)buf;
  47. while(left>0) {
  48. if ((r=write((int)fd ,bufptr,left)) == -1) {
  49. if (errno == EINTR) continue;
  50. return -1;
  51. }
  52. if (r == 0) return 0;
  53. left -= r;
  54. bufptr += r;
  55. }
  56. return 1;
  57. }
  58.  
  59.  
  60. #endif /* CONN_H */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement