summaryrefslogtreecommitdiffstats
path: root/inc
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2009-10-26 15:42:27 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2009-10-26 15:42:27 +0100
commitffb51df395d5e0427ef00a6cff1f93a63eaa65e5 (patch)
treeeebbf404c2c7602f2f88b3e68f04d244f5511193 /inc
parent65869764558afc330f9ba0227032d49b9b676e27 (diff)
downloadabrt-ffb51df395d5e0427ef00a6cff1f93a63eaa65e5.tar.gz
abrt-ffb51df395d5e0427ef00a6cff1f93a63eaa65e5.tar.xz
abrt-ffb51df395d5e0427ef00a6cff1f93a63eaa65e5.zip
add bits of infrastructure needed for xmlprc code.
This does not affect existing code in any way. Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'inc')
-rw-r--r--inc/abrtlib.h51
1 files changed, 51 insertions, 0 deletions
diff --git a/inc/abrtlib.h b/inc/abrtlib.h
index 02906f2f..d98be0b6 100644
--- a/inc/abrtlib.h
+++ b/inc/abrtlib.h
@@ -25,6 +25,7 @@
#include <sys/time.h>
#include <sys/types.h>
#include <sys/wait.h>
+#include <arpa/inet.h> /* sockaddr_in, sockaddr_in6 etc */
#include <termios.h>
#include <time.h>
#include <unistd.h>
@@ -100,6 +101,9 @@ void* xzalloc(size_t size);
char* xstrdup(const char *s);
char* xstrndup(const char *s, int n);
+char* skip_whitespace(const char *s);
+char* skip_non_whitespace(const char *s);
+
extern ssize_t safe_read(int fd, void *buf, size_t count);
// NB: will return short read on error, not -1,
// if some data was read before error occurred
@@ -131,6 +135,9 @@ void xstat(const char *name, struct stat *stat_buf);
int is_regular_file(struct dirent *dent, const char *dirname);
void xmove_fd(int from, int to);
+int ndelay_on(int fd);
+int ndelay_off(int fd);
+int close_on_exec_on(int fd);
char* xasprintf(const char *format, ...);
int xopen(const char *pathname, int flags);
@@ -142,6 +149,50 @@ off_t copyfd_eof(int src_fd, int dst_fd);
off_t copyfd_size(int src_fd, int dst_fd, off_t size);
void copyfd_exact_size(int src_fd, int dst_fd, off_t size);
+unsigned long long monotonic_ns(void);
+unsigned long long monotonic_us(void);
+unsigned monotonic_sec(void);
+
+/* networking helpers */
+typedef struct len_and_sockaddr {
+ socklen_t len;
+ union {
+ struct sockaddr sa;
+ struct sockaddr_in sin;
+ struct sockaddr_in6 sin6;
+ } u;
+} len_and_sockaddr;
+enum {
+ LSA_LEN_SIZE = offsetof(len_and_sockaddr, u),
+ LSA_SIZEOF_SA = sizeof(struct sockaddr) > sizeof(struct sockaddr_in6) ?
+ sizeof(struct sockaddr) : sizeof(struct sockaddr_in6),
+};
+void setsockopt_reuseaddr(int fd);
+int setsockopt_broadcast(int fd);
+int setsockopt_bindtodevice(int fd, const char *iface);
+len_and_sockaddr* get_sock_lsa(int fd);
+void xconnect(int s, const struct sockaddr *s_addr, socklen_t addrlen);
+unsigned lookup_port(const char *port, const char *protocol, unsigned default_port);
+int get_nport(const struct sockaddr *sa);
+void set_nport(len_and_sockaddr *lsa, unsigned port);
+len_and_sockaddr* host_and_af2sockaddr(const char *host, int port, sa_family_t af);
+len_and_sockaddr* xhost_and_af2sockaddr(const char *host, int port, sa_family_t af);
+len_and_sockaddr* host2sockaddr(const char *host, int port);
+len_and_sockaddr* xhost2sockaddr(const char *host, int port);
+len_and_sockaddr* xdotted2sockaddr(const char *host, int port);
+int xsocket_type(len_and_sockaddr **lsap, int family, int sock_type);
+int xsocket_stream(len_and_sockaddr **lsap);
+int create_and_bind_stream_or_die(const char *bindaddr, int port);
+int create_and_bind_dgram_or_die(const char *bindaddr, int port);
+int create_and_connect_stream_or_die(const char *peer, int port);
+int xconnect_stream(const len_and_sockaddr *lsa);
+char* xmalloc_sockaddr2host(const struct sockaddr *sa);
+char* xmalloc_sockaddr2host_noport(const struct sockaddr *sa);
+char* xmalloc_sockaddr2hostonly_noport(const struct sockaddr *sa);
+char* xmalloc_sockaddr2dotted(const struct sockaddr *sa);
+char* xmalloc_sockaddr2dotted_noport(const struct sockaddr *sa);
+
+
/* C++ style stuff */
std::string ssprintf(const char *format, ...);