wrap.c

来自「简单 ftp 服务器及客户端」· C语言 代码 · 共 104 行

C
104
字号
#include<errno.h>#include"wrap.h"void perr_exit(const char *s){	perror(s);	exit(1);}int Accept(int fd, struct sockaddr *sa, socklen_t *salenptr){	int n;again:	if((n = accept(fd, sa, salenptr)) < 0) {		if((errno == ECONNABORTED) || (errno == EINTR))			goto again;		else 			perr_exit("accept error");	}	return n;}void Bind(int fd, const struct sockaddr *sa, socklen_t salen){	if(bind(fd, sa, salen)<0)		perr_exit("bind error");}void Connect(int fd, const struct sockaddr *sa, socklen_t salen){	if(connect(fd, sa, salen)<0)		perr_exit("connect error");}void Listen(int fd, int backlog){	if(listen(fd, backlog)<0)		perr_exit("listen error");}int Socket(int family, int type, int protocol){	int n;	if((n = socket(family, type, protocol)) < 0)		perr_exit("socket error");	return n;}ssize_t Read(int fd, void *ptr, size_t nbytes){	ssize_t n;again:		if((n=read(fd, ptr, nbytes)) == -1) {			if(errno == EINTR)				goto again;			else				return -1;		}		return n;}ssize_t Write(int fd, const void *ptr, size_t nbytes){	ssize_t n;again:		if((n = write(fd, ptr, nbytes)) == -1) {			if(errno == EINTR)				goto again;			else				return -1;		}		return n;}void Close(int fd){	if(close(fd) == -1)		perr_exit("close error");}void  cftype(const char *path, char *cfile_type){	if(access(path, X_OK))		strcpy(cfile_type, "644");	else		strcpy(cfile_type, "755");}int iftype(const char *cfile_type, int * ifile_type){	if(!strcmp(cfile_type, "644")) {	   *ifile_type = 0644;		return 0;	}	if(!strcmp(cfile_type, "755")) {	   *ifile_type = 0755;		return 0;	}	return 1;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?