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

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

?? mystdio.c

?? Fax and soft modem library source code.
?? C
字號:
#include <stdio.h>
#include <sgtty.h>
#include <sys/time.h>
#include <signal.h>

#include "private.h"
#include "mystdio.h"

#define INTERVAL    100000		    /* timer interrupts every 0.1 secs */
#define PERSEC	    (1000000 / INTERVAL)

#define BUFFERSIZE  1024		    /* power of 2 */
#define BUFFERMASK  (BUFFERSIZE-1)

#define IN_BIT	    1	/* fd 0 */
#define OUT_BIT	    2	/* fd 1 */

struct Buffer
  { Buffer() { head = tail = 0; eof = false; }
    int getch(); void putch(int);
    void fill(), empty();
    int head, tail; bool eof;
    char buf[BUFFERSIZE];
  };

static Buffer inbuffer, outbuffer;
static int timeout;
static termios cmode, rmode;

static void getmode(termios*), setmode(termios*), clockhandler(int);
static uint doselect();
static void fatal(char*);

global void openstdio()
  { getmode(&cmode);					/* get current mode    */
    rmode = cmode;					/* copy the struct     */
    rmode.c_iflag = rmode.c_oflag = rmode.c_lflag = 0;	/* modify for raw mode */
    rmode.c_cc[VMIN] = 1; rmode.c_cc[VTIME] = 0;	/* set timeout params  */
    setmode(&rmode);					/* set raw mode	       */
    timeout = 0;
    signal(SIGALRM, (SIG_PF) clockhandler);
    static itimerval itval = { { 0, INTERVAL }, { 0, INTERVAL } };
    setitimer(ITIMER_REAL, &itval, NULL);		/* set timer interrupting */
  }

global void closestdio()
  { setmode(&cmode);		    /* set cooked mode */
  }

static void getmode(termios *tm)
  { int code = tcgetattr(0, tm);
    unless (code == 0) fatal("tcgetattr failed");
  }

static void setmode(termios *tm)
  { tcsetattr(0, TCSADRAIN, tm);    /* ignore errors here */
  }

global void my_alarm(int n)
  { timeout = n * PERSEC;
  }

global int my_getchar()
  { /* get char from stdin */
    return inbuffer.getch();
  }

int Buffer::getch()
  { return ((head-tail) > 0) ? buf[tail++ & BUFFERMASK] & 0xff :
	   eof ? EOF : NOCHAR;
  }

global void my_putchar(int ch)
  { /* put char to stdout */
    outbuffer.putch(ch);
  }

void Buffer::putch(int ch)
  { if (ch >= 0)
      { if ((head-tail) >= BUFFERSIZE) fatal("putchar buffer overflow");
	buf[head++ & BUFFERMASK] = ch;
      }
  }

static void clockhandler(int sig)
  { signal(SIGALRM, (SIG_PF) clockhandler);	/* reset handler */
    if (timeout > 0 && --timeout == 0) kill(getpid(), SIGUSR1);	    /* "Remote modem is not responding" */
    inbuffer.fill();
    outbuffer.empty();
  }

void Buffer::fill()
  { while ((head-tail) < BUFFERSIZE)
      { uint rdy = doselect();
	unless (rdy & IN_BIT) break;
	int hd = head & BUFFERMASK;
	int tl = tail & BUFFERMASK;
	int nb = read(0, &buf[hd], (tl > hd) ? tl-hd : BUFFERSIZE-hd);
	if (nb < 0) fatal("read failed");
	if (nb == 0) { eof = true; break; }
	head += nb;
      }
  }

void Buffer::empty()
  { while ((head-tail) > 0)
      { uint rdy = doselect();
	unless (rdy & OUT_BIT) break;
	int hd = head & BUFFERMASK;
	int tl = tail & BUFFERMASK;
	int nb = write(1, &buf[tl], (hd > tl) ? hd-tl : BUFFERSIZE-tl);
	if (nb < 0) fatal("write failed");
	if (nb == 0) { eof = true; break; }
	tail += nb;
      }
  }

static uint doselect()
  { uint ib = IN_BIT, ob = OUT_BIT;	/* test stdin, stdout */
    static int tmo[] = { 0, 0 };
    int nb = select(2, &ib, &ob, NULL, tmo);
    if (nb < 0) fatal("select failed");
    return (ib | ob);
  }

extern int errno;

static void fatal(char *msg)
  { fprintf(stderr, "%s [errno=%d]\r\n", msg, errno);
    abort();
  }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕日韩一区二区| 91精品国产91久久久久久最新毛片| 丝瓜av网站精品一区二区| 综合电影一区二区三区| 亚洲三级在线免费| 亚洲欧洲中文日韩久久av乱码| 国产精品久久久久久久岛一牛影视| 久久精品人人做人人综合| 国产欧美精品一区aⅴ影院 | 色香蕉久久蜜桃| 白白色亚洲国产精品| 成人sese在线| 欧美在线观看一区二区| 欧美亚一区二区| 欧美一区二区高清| 精品99一区二区三区| 日本一区二区三区dvd视频在线| 国产婷婷色一区二区三区| 欧美国产欧美综合| 亚洲日本一区二区| 丝袜美腿亚洲色图| 国产精品一二三在| 91麻豆精品秘密| 欧美精品丝袜久久久中文字幕| 日韩一级高清毛片| 国产精品久久久久aaaa樱花 | 在线一区二区三区| 91麻豆精品国产91久久久久久 | 久久你懂得1024| 国产精品电影院| 性做久久久久久久久| 国产美女一区二区| 一本大道av一区二区在线播放| 91麻豆精品国产91久久久久久 | 亚洲高清中文字幕| 久久99精品国产91久久来源| 成人深夜福利app| 欧美剧在线免费观看网站| 久久久.com| 日日骚欧美日韩| 成人av一区二区三区| 欧美一区二区三区爱爱| 国产精品久久久久婷婷| 久久国产精品无码网站| 色呦呦网站一区| 精品久久人人做人人爽| 一区二区三区av电影| 国产成都精品91一区二区三| 91福利社在线观看| 国产日韩欧美麻豆| 免费国产亚洲视频| 一道本成人在线| 国产欧美日韩精品a在线观看| 亚洲一区二区在线视频| a在线播放不卡| 久久亚洲影视婷婷| 日韩电影网1区2区| 在线观看网站黄不卡| 国产精品卡一卡二卡三| 国产综合久久久久久久久久久久| 欧美高清一级片在线| 樱花草国产18久久久久| 成人综合激情网| 国产偷国产偷亚洲高清人白洁| 日韩中文字幕av电影| 欧美性感一区二区三区| 亚洲美腿欧美偷拍| 97久久精品人人做人人爽| 国产亲近乱来精品视频| 国产在线精品一区二区不卡了| 欧美一级欧美三级在线观看 | 这里只有精品电影| 亚洲va欧美va人人爽| 欧美人妖巨大在线| 午夜成人在线视频| 91精品欧美久久久久久动漫 | 久久精品国产色蜜蜜麻豆| 欧美久久久久免费| 日本中文字幕不卡| 日韩午夜在线观看视频| 免费成人av资源网| 2022国产精品视频| 国产精品一区在线观看乱码| 久久精品视频免费| av成人动漫在线观看| 亚洲欧美综合色| 91黄视频在线观看| 日韩精品一二三四| 久久午夜国产精品| 成人app网站| 亚洲已满18点击进入久久| 欧美色图片你懂的| 免费观看91视频大全| 精品国产乱码久久久久久图片| 久久99日本精品| 亚洲国产精品成人久久综合一区| 成人一区二区三区中文字幕| 1区2区3区国产精品| 欧美色图天堂网| 老司机精品视频一区二区三区| 久久只精品国产| 播五月开心婷婷综合| 一区二区三区欧美久久| 欧美一级免费大片| 国产成人精品亚洲日本在线桃色| 亚洲色图在线播放| 3d成人h动漫网站入口| 精品午夜久久福利影院| 国产精品成人网| 91精品国产色综合久久不卡电影| 韩国女主播成人在线| 亚洲欧美电影一区二区| 日韩欧美国产三级| 成人av免费在线| 日本不卡视频在线| 日本一区二区免费在线| 欧美日韩国产一区| 国产东北露脸精品视频| 亚洲国产一区二区三区| 久久久高清一区二区三区| 91成人国产精品| 成人午夜短视频| 三级不卡在线观看| 亚洲天天做日日做天天谢日日欢| 欧美一区二区日韩| 91视频你懂的| 国产精品一区二区三区网站| 午夜欧美大尺度福利影院在线看| 国产丝袜美腿一区二区三区| 777午夜精品免费视频| 99久久综合99久久综合网站| 秋霞午夜av一区二区三区| 亚洲特黄一级片| 国产亚洲综合性久久久影院| 欧美一区二视频| 欧美日韩精品一二三区| 99re热视频精品| 成人免费精品视频| 韩国三级在线一区| 开心九九激情九九欧美日韩精美视频电影| 五月激情综合婷婷| 一区二区三区国产精品| 国产精品国产a| 国产午夜亚洲精品不卡| 精品久久国产字幕高潮| 91精品国产综合久久福利软件| 欧美日韩美少妇| 在线亚洲+欧美+日本专区| 色综合中文字幕| 99精品一区二区| av成人免费在线| 99久久精品久久久久久清纯| 成人一级片网址| 国产91丝袜在线播放| 国产成人亚洲综合a∨猫咪| 激情五月激情综合网| 久久99国产精品久久99| 毛片基地黄久久久久久天堂| 日本成人超碰在线观看| 精品在线视频一区| 精品一区二区三区视频在线观看 | 欧美成人精品高清在线播放| 3d动漫精品啪啪一区二区竹菊 | 另类小说图片综合网| 美女一区二区在线观看| 激情小说亚洲一区| 成人综合婷婷国产精品久久蜜臀| 成人高清在线视频| 91在线国内视频| 在线一区二区三区四区| 欧美日韩精品欧美日韩精品| 欧美另类久久久品| 精品国偷自产国产一区| 中文字幕精品一区| 中文字幕精品三区| 亚洲国产欧美日韩另类综合 | 国产日韩一级二级三级| 亚洲国产精品99久久久久久久久| 亚洲欧洲日产国产综合网| 亚洲精品视频在线| 秋霞av亚洲一区二区三| 国产经典欧美精品| 99久久精品免费精品国产| 欧美久久一二三四区| 国产亚洲精品福利| 亚洲自拍另类综合| 久久精品99国产国产精| 不卡高清视频专区| 欧美日韩精品欧美日韩精品一| 26uuu欧美日本| 亚洲乱码一区二区三区在线观看| 日韩av中文字幕一区二区 | 色偷偷88欧美精品久久久| 欧美日韩电影在线播放| 欧美激情一区二区三区在线| 亚洲视频在线观看三级| 欧美aaaaaa午夜精品| www.欧美色图| 欧美电视剧免费全集观看| 亚洲精品乱码久久久久久久久|