亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? restart.c

?? xtunnel nat/fw traversal source code
?? C
字號:
/*	File:       restart.c	Contains:   Universal Internet Communication Interface restarting library calls				from _Unix System Programming_, Robbins & Robbins	Copyright:  (c) 2003 by Xten Networks, Inc., all rights reserved.*/#include <errno.h>#include <fcntl.h>#include <limits.h>#include <string.h>//#include <sys/select.h>#include <sys/time.h>#include <sys/wait.h>#include "restart.h"#define BLKSIZE PIPE_BUF#define MILLION 1000000L#define D_MILLION 1000000.0/* Private functions */static int gettimeout(struct timeval end,                               struct timeval *timeoutp) {   gettimeofday(timeoutp, NULL);   timeoutp->tv_sec = end.tv_sec - timeoutp->tv_sec;   timeoutp->tv_usec = end.tv_usec - timeoutp->tv_usec;   if (timeoutp->tv_usec >= MILLION) {      timeoutp->tv_sec++;      timeoutp->tv_usec -= MILLION;   }   if (timeoutp->tv_usec < 0) {      timeoutp->tv_sec--;      timeoutp->tv_usec += MILLION;   }   if ((timeoutp->tv_sec < 0) ||       ((timeoutp->tv_sec == 0) && (timeoutp->tv_usec == 0))) {      errno = ETIME;      return -1;   }   return 0;}/* Restart versions of traditional functions */int r_close(int fildes) {   int retval;   while (retval = close(fildes), retval == -1 && errno == EINTR) ;   return retval;}int r_dup2(int fildes, int fildes2) {   int retval;   while (retval = dup2(fildes, fildes2), retval == -1 && errno == EINTR) ;   return retval;}int r_open2(const char *path, int oflag) {   int retval;   while (retval = open(path, oflag), retval == -1 && errno == EINTR) ;   return retval;}int r_open3(const char *path, int oflag, mode_t mode) {   int retval;   while (retval = open(path, oflag, mode), retval == -1 && errno == EINTR) ;   return retval;}ssize_t r_read(int fd, void *buf, size_t size) {   ssize_t retval;   while (retval = read(fd, buf, size), retval == -1 && errno == EINTR) ;   return retval;}pid_t r_wait(int *stat_loc) {   pid_t retval;   while (((retval = wait(stat_loc)) == -1) && (errno == EINTR)) ;   return retval;}pid_t r_waitpid(pid_t pid, int *stat_loc, int options) {   pid_t retval;   while (((retval = waitpid(pid, stat_loc, options)) == -1) &&           (errno == EINTR)) ;   return retval;}ssize_t r_write(int fd, const void *buf, size_t size) {   char *bufp;   size_t bytestowrite;   ssize_t byteswritten;   size_t totalbytes;   //for (bufp = reinterpret_cast<char*>(buf), bytestowrite = size, totalbytes = 0;   for (bufp = (char*)buf, bytestowrite = size, totalbytes = 0;        bytestowrite > 0;        bufp += byteswritten, bytestowrite -= byteswritten) {      byteswritten = write(fd, bufp, bytestowrite);      if ((byteswritten) == -1 && (errno != EINTR))         return -1;      if (byteswritten == -1)         byteswritten = 0;      totalbytes += byteswritten;   }   return totalbytes;}/* Utility functions */struct timeval add2currenttime(double seconds) {   struct timeval newtime;   gettimeofday(&newtime, NULL);   newtime.tv_sec += (int)seconds;   newtime.tv_usec += (int)((seconds - (int)seconds)*D_MILLION + 0.5);   if (newtime.tv_usec >= MILLION) {      newtime.tv_sec++;      newtime.tv_usec -= MILLION;   }   return newtime;}int copyfile(int fromfd, int tofd) {   int bytesread;   int totalbytes = 0;   while ((bytesread = readwrite(fromfd, tofd)) > 0)      totalbytes += bytesread;   return totalbytes;}ssize_t readblock(int fd, void *buf, size_t size) {   char *bufp;   ssize_t bytesread;   size_t bytestoread;   size_t totalbytes;    //for (bufp = reinterpret_cast<char*>(buf), bytestoread = size, totalbytes = 0;   for (bufp = (char*)buf, bytestoread = size, totalbytes = 0;        bytestoread > 0;        bufp += bytesread, bytestoread -= bytesread) {      bytesread = read(fd, bufp, bytestoread);      if ((bytesread == 0) && (totalbytes == 0))         return 0;      if (bytesread == 0) {         errno = EINVAL;         return -1;      }        if ((bytesread) == -1 && (errno != EINTR))         return -1;      if (bytesread == -1)         bytesread = 0;      totalbytes += bytesread;   }   return totalbytes;}int readline(int fd, char *buf, int nbytes) {   int numread = 0;   int returnval;   while (numread < nbytes - 1) {      returnval = read(fd, buf + numread, 1);      if ((returnval == -1) && (errno == EINTR))         continue;      if ((returnval == 0) && (numread == 0))         return 0;      if (returnval == 0)         break;      if (returnval == -1)         return -1;      numread++;      if (buf[numread-1] == '\n') {         buf[numread] = '\0';         return numread;      }     }      errno = EINVAL;   return -1;}ssize_t readtimed(int fd, void *buf, size_t nbyte, double seconds) {   struct timeval timedone;   timedone = add2currenttime(seconds);   if (waitfdtimed(fd, timedone) == -1)      return (ssize_t)(-1);   return r_read(fd, buf, nbyte);}int readwrite(int fromfd, int tofd) {   char buf[BLKSIZE];   int bytesread;   if ((bytesread = r_read(fromfd, buf, BLKSIZE)) < 0)      return -1;   if (bytesread == 0)      return 0;   if (r_write(tofd, buf, bytesread) < 0)      return -1;   return bytesread;}int readwriteblock(int fromfd, int tofd, char *buf, int size) {   int bytesread;   bytesread = readblock(fromfd, buf, size);   if (bytesread != size)         /* can only be 0 or -1 */      return bytesread;   return r_write(tofd, buf, size);}int waitfdtimed(int fd, struct timeval end) {   fd_set readset;   int retval;   struct timeval timeout;    if ((fd < 0) || (fd >= FD_SETSIZE)) {      errno = EINVAL;      return -1;   }     FD_ZERO(&readset);   FD_SET(fd, &readset);   if (gettimeout(end, &timeout) == -1)      return -1;   while (((retval = select(fd+1, &readset, NULL, NULL, &timeout)) == -1)           && (errno == EINTR)) {      if (gettimeout(end, &timeout) == -1)         return -1;      FD_ZERO(&readset);      FD_SET(fd, &readset);   }   if (retval == 0) {      errno = ETIME;      return -1;   }   if (retval == -1)      return -1;   return 0;}int setblock(int fd) {   int fdflags;   if ((fdflags = fcntl(fd, F_GETFL, 0)) == -1)      return -1;   fdflags &= ~O_NONBLOCK;   if (fcntl(fd, F_SETFL, fdflags) == -1)      return -1;   return 0;}int setnonblock(int fd) {   int fdflags;   if ((fdflags = fcntl(fd, F_GETFL, 0)) == -1)      return -1;   fdflags |= O_NONBLOCK;   if (fcntl(fd, F_SETFL, fdflags) == -1)      return -1;   return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费观看久久久4p| 日本v片在线高清不卡在线观看| 欧美久久久一区| 欧美网站一区二区| 欧美优质美女网站| 欧美亚洲综合在线| 欧美日韩在线一区二区| 欧美三级电影在线看| 欧美日精品一区视频| 4438x成人网最大色成网站| 欧美高清激情brazzers| 欧美va在线播放| 国产午夜精品一区二区三区四区| 国产日韩影视精品| 日韩美女久久久| 亚洲va在线va天堂| 免费不卡在线观看| 国产黄色91视频| 色悠悠亚洲一区二区| 欧美欧美欧美欧美首页| 欧美成人福利视频| 中文字幕日韩一区| 日韩精品色哟哟| 韩日欧美一区二区三区| 99久久夜色精品国产网站| 欧美日韩精品免费观看视频 | 中文字幕乱码久久午夜不卡| 国产拍欧美日韩视频二区| 亚洲日本成人在线观看| 午夜不卡av在线| 国产99久久久精品| 欧美色国产精品| 国产夜色精品一区二区av| 亚洲综合男人的天堂| 精东粉嫩av免费一区二区三区| 成人性视频网站| 欧美肥妇bbw| 中文文精品字幕一区二区| 性做久久久久久免费观看欧美| 国产在线看一区| 91麻豆精品国产91久久久资源速度| 久久香蕉国产线看观看99| 亚洲成人www| thepron国产精品| 日韩视频免费直播| 亚洲国产人成综合网站| 成人在线一区二区三区| 91精品国产品国语在线不卡| 亚洲激情一二三区| 成人a级免费电影| 久久综合色婷婷| 一个色综合av| 成人福利在线看| 精品国产乱码久久久久久牛牛 | 在线播放亚洲一区| 亚洲柠檬福利资源导航| 丰满少妇久久久久久久| 日韩亚洲欧美在线| 亚洲大片免费看| 99精品热视频| 国产精品乱码一区二区三区软件| 精品一区二区免费在线观看| 欧美精品v日韩精品v韩国精品v| 亚洲品质自拍视频网站| 99久免费精品视频在线观看| 精品久久久久香蕉网| 美女脱光内衣内裤视频久久影院| 欧美日韩国产综合久久| 一区二区三区在线视频免费| av网站免费线看精品| 中文字幕在线免费不卡| 成人av网站大全| 亚洲欧美自拍偷拍色图| 91污片在线观看| 亚洲欧美日韩一区二区 | 奇米一区二区三区av| 欧美一区二区三级| 三级一区在线视频先锋| 欧美一区二区黄| 久久99久久99小草精品免视看| 欧美成人乱码一区二区三区| 久久99在线观看| 久久久99精品免费观看不卡| 国产寡妇亲子伦一区二区| 日本一区二区三级电影在线观看| 国产成人av一区| 136国产福利精品导航| 在线观看欧美日本| 日本欧美大码aⅴ在线播放| 精品国产免费视频| 91香蕉视频污| 天堂一区二区在线免费观看| 精品日产卡一卡二卡麻豆| 国产激情视频一区二区三区欧美| 国产精品丝袜久久久久久app| 91麻豆国产香蕉久久精品| 亚洲动漫第一页| 久久久精品tv| 欧美亚洲丝袜传媒另类| 久久精品国产**网站演员| 国产精品区一区二区三| 欧美日韩一区二区三区视频| 久久99久久精品| 亚洲色欲色欲www在线观看| 欧美男女性生活在线直播观看| 久久不见久久见免费视频1| 国产精品传媒视频| 欧美大黄免费观看| 色噜噜狠狠成人中文综合| 日本不卡一二三| 亚洲视频资源在线| 久久嫩草精品久久久久| 在线观看一区二区精品视频| 精品午夜久久福利影院| 亚洲精品视频自拍| 久久精品人人做人人爽97| 在线影院国内精品| 国产不卡在线视频| 亚洲r级在线视频| 成人欧美一区二区三区| 26uuu国产在线精品一区二区| 色妞www精品视频| 国产自产v一区二区三区c| 亚洲一区二区三区四区在线| 中文av一区特黄| 久久先锋影音av鲁色资源| 欧美在线综合视频| 99精品视频在线观看免费| 国产乱人伦偷精品视频不卡| 日韩在线卡一卡二| 亚洲国产成人va在线观看天堂| 中文字幕久久午夜不卡| 精品第一国产综合精品aⅴ| 7777精品久久久大香线蕉| 91视频xxxx| gogogo免费视频观看亚洲一| 久久99精品久久久久久久久久久久| 亚洲午夜一二三区视频| 中文字幕中文字幕中文字幕亚洲无线| 欧美mv日韩mv国产网站app| 欧美日韩国产成人在线91| 欧美性生活一区| 91在线免费视频观看| av不卡在线观看| 成人黄色一级视频| av一区二区三区在线| 白白色 亚洲乱淫| aaa国产一区| 99热这里都是精品| 99久久777色| 日本韩国视频一区二区| 91福利小视频| 91国产丝袜在线播放| 欧美日韩精品一区二区在线播放| 在线精品视频免费观看| 欧美在线视频日韩| 欧美日韩久久不卡| 日韩欧美一二三区| 精品播放一区二区| 国产欧美精品一区二区三区四区 | 色就色 综合激情| 91久久精品一区二区| 在线观看成人小视频| 欧美日韩一本到| 欧美xxxx老人做受| 国产精品午夜电影| 一区二区三区四区蜜桃| 天天色 色综合| 国产一区二区精品久久99| 成人aa视频在线观看| 91老师国产黑色丝袜在线| 欧美色综合久久| 日韩欧美国产一区在线观看| 久久久久国产成人精品亚洲午夜| 国产欧美一区在线| 亚洲精品一卡二卡| 久久se精品一区精品二区| 懂色av一区二区夜夜嗨| 色呦呦日韩精品| 精品久久人人做人人爱| 中文字幕中文字幕一区| 图片区日韩欧美亚洲| 国产高清在线精品| 欧美日韩一区二区电影| 久久精品亚洲一区二区三区浴池 | bt欧美亚洲午夜电影天堂| 91老师片黄在线观看| 日韩三级免费观看| 亚洲欧美精品午睡沙发| 久久精品久久精品| 在线观看成人免费视频| 久久综合九色综合97婷婷女人 | 亚洲视频一区二区免费在线观看| 亚洲成人免费观看| 高潮精品一区videoshd| 欧美精品一卡二卡| 国产精品国产三级国产aⅴ原创| 亚洲成人av一区| 99热精品一区二区| 国产亚洲综合在线|