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

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

?? raw.c

?? 遠程登陸工具軟件源碼 用于遠程登陸unix
?? C
字號:
#include <stdio.h>
#include <stdlib.h>

#include "putty.h"

#ifndef FALSE
#define FALSE 0
#endif
#ifndef TRUE
#define TRUE 1
#endif

#define RAW_MAX_BACKLOG 4096

typedef struct raw_backend_data {
    const struct plug_function_table *fn;
    /* the above field _must_ be first in the structure */

    Socket s;
    int bufsize;
    void *frontend;
} *Raw;

static void raw_size(void *handle, int width, int height);

static void c_write(Raw raw, char *buf, int len)
{
    int backlog = from_backend(raw->frontend, 0, buf, len);
    sk_set_frozen(raw->s, backlog > RAW_MAX_BACKLOG);
}

static int raw_closing(Plug plug, const char *error_msg, int error_code,
		       int calling_back)
{
    Raw raw = (Raw) plug;

    if (raw->s) {
        sk_close(raw->s);
        raw->s = NULL;
    }
    if (error_msg) {
	/* A socket error has occurred. */
	logevent(raw->frontend, error_msg);
	connection_fatal(raw->frontend, "%s", error_msg);
    }				       /* Otherwise, the remote side closed the connection normally. */
    return 0;
}

static int raw_receive(Plug plug, int urgent, char *data, int len)
{
    Raw raw = (Raw) plug;
    c_write(raw, data, len);
    return 1;
}

static void raw_sent(Plug plug, int bufsize)
{
    Raw raw = (Raw) plug;
    raw->bufsize = bufsize;
}

/*
 * Called to set up the raw connection.
 * 
 * Returns an error message, or NULL on success.
 *
 * Also places the canonical host name into `realhost'. It must be
 * freed by the caller.
 */
static const char *raw_init(void *frontend_handle, void **backend_handle,
			    Config *cfg,
			    char *host, int port, char **realhost, int nodelay,
			    int keepalive)
{
    static const struct plug_function_table fn_table = {
	raw_closing,
	raw_receive,
	raw_sent
    };
    SockAddr addr;
    const char *err;
    Raw raw;

    raw = snew(struct raw_backend_data);
    raw->fn = &fn_table;
    raw->s = NULL;
    *backend_handle = raw;

    raw->frontend = frontend_handle;

    /*
     * Try to find host.
     */
    {
	char *buf;
	buf = dupprintf("Looking up host \"%s\"", host);
	logevent(raw->frontend, buf);
	sfree(buf);
    }
    addr = name_lookup(host, port, realhost, cfg);
    if ((err = sk_addr_error(addr)) != NULL) {
	sk_addr_free(addr);
	return err;
    }

    if (port < 0)
	port = 23;		       /* default telnet port */

    /*
     * Open socket.
     */
    {
	char *buf, addrbuf[100];
	sk_getaddr(addr, addrbuf, 100);
	buf = dupprintf("Connecting to %s port %d", addrbuf, port);
	logevent(raw->frontend, buf);
	sfree(buf);
    }
    raw->s = new_connection(addr, *realhost, port, 0, 1, nodelay, keepalive,
			    (Plug) raw, cfg);
    if ((err = sk_socket_error(raw->s)) != NULL)
	return err;

    return NULL;
}

static void raw_free(void *handle)
{
    Raw raw = (Raw) handle;

    if (raw->s)
	sk_close(raw->s);
    sfree(raw);
}

/*
 * Stub routine (we don't have any need to reconfigure this backend).
 */
static void raw_reconfig(void *handle, Config *cfg)
{
}

/*
 * Called to send data down the raw connection.
 */
static int raw_send(void *handle, char *buf, int len)
{
    Raw raw = (Raw) handle;

    if (raw->s == NULL)
	return 0;

    raw->bufsize = sk_write(raw->s, buf, len);

    return raw->bufsize;
}

/*
 * Called to query the current socket sendability status.
 */
static int raw_sendbuffer(void *handle)
{
    Raw raw = (Raw) handle;
    return raw->bufsize;
}

/*
 * Called to set the size of the window
 */
static void raw_size(void *handle, int width, int height)
{
    /* Do nothing! */
    return;
}

/*
 * Send raw special codes.
 */
static void raw_special(void *handle, Telnet_Special code)
{
    /* Do nothing! */
    return;
}

/*
 * Return a list of the special codes that make sense in this
 * protocol.
 */
static const struct telnet_special *raw_get_specials(void *handle)
{
    return NULL;
}

static Socket raw_socket(void *handle)
{
    Raw raw = (Raw) handle;
    return raw->s;
}

static int raw_sendok(void *handle)
{
    return 1;
}

static void raw_unthrottle(void *handle, int backlog)
{
    Raw raw = (Raw) handle;
    sk_set_frozen(raw->s, backlog > RAW_MAX_BACKLOG);
}

static int raw_ldisc(void *handle, int option)
{
    if (option == LD_EDIT || option == LD_ECHO)
	return 1;
    return 0;
}

static void raw_provide_ldisc(void *handle, void *ldisc)
{
    /* This is a stub. */
}

static void raw_provide_logctx(void *handle, void *logctx)
{
    /* This is a stub. */
}

static int raw_exitcode(void *handle)
{
    Raw raw = (Raw) handle;
    if (raw->s != NULL)
        return -1;                     /* still connected */
    else
        /* Exit codes are a meaningless concept in the Raw protocol */
        return 0;
}

Backend raw_backend = {
    raw_init,
    raw_free,
    raw_reconfig,
    raw_send,
    raw_sendbuffer,
    raw_size,
    raw_special,
    raw_get_specials,
    raw_socket,
    raw_exitcode,
    raw_sendok,
    raw_ldisc,
    raw_provide_ldisc,
    raw_provide_logctx,
    raw_unthrottle,
    1
};

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品亚洲综合一区在线观看| 奇米四色…亚洲| 国产精品乱码一区二区三区软件 | 亚洲综合图片区| 国产精品家庭影院| 国产精品国产成人国产三级| 国产三级精品视频| 亚洲国产精品精华液ab| 国产精品日韩成人| 中文字幕中文乱码欧美一区二区| 中文字幕在线视频一区| 国产精品视频观看| 亚洲欧洲制服丝袜| 亚洲综合视频在线观看| 亚洲成人tv网| 美女任你摸久久| 国产经典欧美精品| 99精品久久99久久久久| 欧美在线啊v一区| 884aa四虎影成人精品一区| 日韩欧美亚洲一区二区| 久久先锋影音av鲁色资源网| 欧美精品一区二区久久久| 国产片一区二区三区| 综合欧美亚洲日本| 午夜精品成人在线视频| 精品一区二区免费看| 成人免费观看男女羞羞视频| 91丨国产丨九色丨pron| 欧美人牲a欧美精品| 精品美女被调教视频大全网站| 亚洲国产精华液网站w| 亚洲精品日韩综合观看成人91| 婷婷夜色潮精品综合在线| 国产精品影视在线观看| 91小视频免费观看| 日韩欧美国产一二三区| 国产精品久久久久久久久快鸭| 亚洲成人1区2区| 懂色av中文字幕一区二区三区| 欧美亚洲尤物久久| 国产欧美日韩久久| 视频一区视频二区中文字幕| 成人app软件下载大全免费| 欧美一卡二卡三卡| 亚洲人成网站精品片在线观看| 午夜精品久久久久久久久| 国产成人精品www牛牛影视| 欧美日韩aaaaaa| 国产精品成人一区二区三区夜夜夜| 三级欧美在线一区| 99精品视频中文字幕| 精品日韩在线一区| 亚洲h动漫在线| 91丨九色丨蝌蚪丨老版| 国产视频亚洲色图| 日本不卡中文字幕| 欧美私人免费视频| **欧美大码日韩| 国产成人亚洲综合a∨婷婷| 欧美一区午夜精品| 亚洲gay无套男同| 欧美唯美清纯偷拍| 亚洲精选免费视频| 91在线播放网址| 综合久久一区二区三区| 成人的网站免费观看| 国产亚洲综合性久久久影院| 麻豆成人91精品二区三区| 欧美日韩中文字幕一区| 亚洲欧美激情插| 99久久久国产精品免费蜜臀| 国产精品久久久久久亚洲毛片| 国产一区二区影院| www激情久久| 久久精品99国产国产精| 欧美精品第1页| 婷婷开心激情综合| 欧美一区日韩一区| 久久福利视频一区二区| 精品嫩草影院久久| 国产麻豆午夜三级精品| 中文字幕免费不卡| 91亚洲国产成人精品一区二区三| 国产精品久久久久一区二区三区| av午夜精品一区二区三区| 国产亚洲精品中文字幕| k8久久久一区二区三区| 亚洲人一二三区| 欧美天堂一区二区三区| 蜜臀99久久精品久久久久久软件| 日韩视频免费直播| 成人综合婷婷国产精品久久蜜臀| 亚洲欧洲99久久| 欧洲一区二区av| 老司机精品视频线观看86| 久久久久久久久久久黄色| 成人黄色软件下载| 亚洲午夜私人影院| 欧美成人一区二区三区在线观看 | 亚洲h动漫在线| 日韩一级二级三级| 成人免费视频一区| 亚洲综合色视频| 精品美女在线播放| 色综合天天综合网天天看片| 日韩精品色哟哟| 国产精品午夜在线| 欧美日韩亚洲综合一区 | 色乱码一区二区三区88| 亚洲.国产.中文慕字在线| 日韩三级视频中文字幕| 99麻豆久久久国产精品免费| 亚洲电影中文字幕在线观看| 精品久久人人做人人爽| 91在线免费视频观看| 免费在线观看日韩欧美| 中文字幕一区二区三| 欧美一区二区三区在线视频| 成人免费毛片a| 卡一卡二国产精品| 亚洲综合免费观看高清完整版在线 | 日韩电影一二三区| 日本一区二区三区久久久久久久久不 | 三级成人在线视频| 国产精品美女久久久久久久久久久| 欧美日韩亚洲另类| 成人18视频日本| 免费在线看成人av| 亚洲午夜久久久久久久久久久| 久久亚洲春色中文字幕久久久| 欧美日韩一区小说| 99久久精品99国产精品 | 亚洲国产精品成人久久综合一区| 欧美精品在线视频| 91成人网在线| eeuss鲁片一区二区三区在线看| 强制捆绑调教一区二区| 亚洲成人精品一区二区| 中文字幕一区二区三区不卡| 久久女同互慰一区二区三区| 日韩一区二区三区视频| 欧美一区二区福利视频| 欧美一二三四区在线| 91精品国产综合久久久久久久| 在线观看一区不卡| 欧美性感一类影片在线播放| 91老师片黄在线观看| 97aⅴ精品视频一二三区| 99国产精品国产精品毛片| 91视视频在线直接观看在线看网页在线看| 国产精品主播直播| 国产高清精品网站| 成人黄色av电影| 99精品视频一区二区| 成人性视频网站| 成人国产电影网| 男男成人高潮片免费网站| 日本一区二区三区dvd视频在线| 欧美v亚洲v综合ⅴ国产v| 69堂精品视频| 久久综合久久鬼色中文字| 欧美一区二区黄| 欧美一区二视频| 97精品久久久午夜一区二区三区 | 精品一区中文字幕| 国产精品一区二区三区网站| 日韩激情中文字幕| 婷婷综合在线观看| 国产精品久久久久久亚洲毛片| 日韩一区有码在线| 亚洲天堂福利av| 亚洲一区二区综合| 美日韩黄色大片| 国内精品久久久久影院薰衣草| 久久电影网电视剧免费观看| 国产精品自拍毛片| 成人夜色视频网站在线观看| 国产 日韩 欧美大片| 国产不卡视频在线观看| 91精品办公室少妇高潮对白| 91久久一区二区| 欧美群妇大交群中文字幕| 欧美一级xxx| 日本一区二区电影| 亚洲欧美电影院| 午夜电影一区二区| 成人免费毛片app| 色哟哟一区二区三区| 欧美亚洲国产一区二区三区va| 精品国产乱子伦一区| 国产日韩欧美不卡| 一区二区三区波多野结衣在线观看| 中文字幕中文字幕在线一区| 免费在线观看一区| 国产91精品精华液一区二区三区| 99视频超级精品| 久久久综合视频| 亚洲精品videosex极品| 美国三级日本三级久久99|