/* $begin common.h */ #ifndef __COMMON_H__ #define __COMMON_H__ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include /* Default file permissions */ #define DEF_MODE S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH #define DEF_UMASK S_IWGRP|S_IWOTH /* Simplifies calls to bind(), connect(), and accept() */ typedef struct sockaddr SA; /* Persistent state for the robust I/O (Rio) package */ #define RIO_BUFSIZE 8192 typedef struct { int rio_fd; int rio_cnt; char *rio_bufptr; char rio_buf[RIO_BUFSIZE]; } rio_t; /* External variables */ extern int h_errno; extern char **environ; /* Misc constants */ #define MAXLINE 8192 #define MAXBUF 8192 #define LISTENQ 1024 /* Rio (Robust I/O) package */ ssize_t rio_readn(int fd, void *usrbuf, size_t n); ssize_t rio_writen(int fd, void *usrbuf, size_t n); void rio_readinitb(rio_t *rp, int fd); ssize_t rio_readnb(rio_t *rp, void *usrbuf, size_t n); ssize_t rio_readlineb(rio_t *rp, void *usrbuf, size_t maxlen); /* Client/server helper functions */ int open_client_sock(char *hostname, int portno); int open_listen_sock(int portno); #endif /* __COMMON_H__ */