📄 wrap.c
字号:
#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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -