#ifndef RAS_SOCKTOOL_H #define RAS_SOCKTOOL_H #include #include #define SOCKADDR(x) ((struct sockaddr*)(x)) #define SOCKADDR_UN(x) ((struct sockaddr_un*)(x)) #define SOCKADDR_IN(x) ((struct sockaddr_in*)(x)) #define SOCKADDR_IN6(x) ((struct sockaddr_in6*)(x)) char* ras_socktool_get_sockname (int sockfd); char* ras_socktool_get_peername (int sockfd); #define RAS_BUFFER_SIZE 8192 typedef struct { char buf[RAS_BUFFER_SIZE]; off_t buf_start; off_t buf_len; char* buf_line; ssize_t buf_line_len; int buf_error : 1; int buf_eof : 1; } RasBuffer; void ras_socktool_buffer_clear (RasBuffer* buf, bool initial); void ras_socktool_buffer_free_line (RasBuffer* buf); char* ras_socktool_getline (int sockfd, RasBuffer* buf, int delim, int* len); int ras_socktool_write_string (int sockfd, const char* str, size_t size); void ras_socktool_reset_signals (void); int ras_socktool_getdtablesize (void); void ras_socktool_close_except (int dontclose); typedef int (*RasSocktoolProgress) (int fd[2], RasBuffer buf[2]); void ras_socktool_exchange_data (int fd[2], RasSocktoolProgress prog_cb); #endif /* RAS_SOCKTOOL_H */