blob: b3ccd0c79542375b966b5290633761fb8f11ffd4 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
#ifndef RAS_SOCKTOOL_H
#define RAS_SOCKTOOL_H
#include <stdbool.h>
#include <sys/types.h>
#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 */
|