79 lines
2.1 KiB
C
79 lines
2.1 KiB
C
|
|
/* $begin common.h */
|
||
|
|
#ifndef __COMMON_H__
|
||
|
|
#define __COMMON_H__
|
||
|
|
|
||
|
|
#include <stdio.h>
|
||
|
|
#include <stdlib.h>
|
||
|
|
#include <unistd.h>
|
||
|
|
#include <string.h>
|
||
|
|
#include <setjmp.h>
|
||
|
|
#include <signal.h>
|
||
|
|
#include <sys/time.h>
|
||
|
|
#include <sys/types.h>
|
||
|
|
#include <sys/wait.h>
|
||
|
|
#include <sys/stat.h>
|
||
|
|
#include <fcntl.h>
|
||
|
|
#include <sys/mman.h>
|
||
|
|
#include <errno.h>
|
||
|
|
#include <math.h>
|
||
|
|
#include <pthread.h>
|
||
|
|
#include <semaphore.h>
|
||
|
|
#include <sys/socket.h>
|
||
|
|
#include <netdb.h>
|
||
|
|
#include <netinet/in.h>
|
||
|
|
#include <arpa/inet.h>
|
||
|
|
#include <limits.h>
|
||
|
|
#include <sys/types.h>
|
||
|
|
#include <sys/ipc.h>
|
||
|
|
#include <sys/msg.h>
|
||
|
|
#include <sys/shm.h>
|
||
|
|
#include <sys/sem.h>
|
||
|
|
#include <ctype.h>
|
||
|
|
#include <sys/prctl.h>
|
||
|
|
#include <stdbool.h>
|
||
|
|
|
||
|
|
/* Default file permissions are DEF_MODE & ~DEF_UMASK */
|
||
|
|
/* $begin createmasks */
|
||
|
|
#define DEF_MODE S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH
|
||
|
|
#define DEF_UMASK S_IWGRP|S_IWOTH
|
||
|
|
/* $end createmasks */
|
||
|
|
|
||
|
|
/* Simplifies calls to bind(), connect(), and accept() */
|
||
|
|
/* $begin sockaddrdef */
|
||
|
|
typedef struct sockaddr SA;
|
||
|
|
/* $end sockaddrdef */
|
||
|
|
|
||
|
|
/* Persistent state for the robust I/O (Rio) package */
|
||
|
|
/* $begin rio_t */
|
||
|
|
#define RIO_BUFSIZE 8192
|
||
|
|
typedef struct {
|
||
|
|
int rio_fd; /* descriptor for this internal buf */
|
||
|
|
int rio_cnt; /* unread bytes in internal buf */
|
||
|
|
char *rio_bufptr; /* next unread byte in internal buf */
|
||
|
|
char rio_buf[RIO_BUFSIZE]; /* internal buffer */
|
||
|
|
} rio_t;
|
||
|
|
/* $end rio_t */
|
||
|
|
|
||
|
|
/* External variables */
|
||
|
|
extern int h_errno; /* defined by BIND for DNS errors */
|
||
|
|
extern char **environ; /* defined by libc */
|
||
|
|
|
||
|
|
/* Misc constants */
|
||
|
|
#define MAXLINE 8192 /* max text line length */
|
||
|
|
#define MAXBUF 8192 /* max I/O buffer size */
|
||
|
|
#define LISTENQ 1024 /* second argument to listen() */
|
||
|
|
|
||
|
|
/* 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__ */
|
||
|
|
/* $end common.h */
|