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

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

?? fserve.c

?? 遠程桌面連接工具
?? C
?? 第 1 頁 / 共 5 頁
字號:
    /* send the request */    req.reqType = FS_QueryXBitmaps16;    req.fid = ((FSFontDataPtr) pfont->fpePrivate)->fontid;    req.format = pfont->format;    if (pfont->info.terminalFont)	req.format = req.format & ~(BitmapFormatImageRectMask) |		     BitmapFormatImageRectMax;    req.range = TRUE;    /* each range takes up 4 bytes */    req.length = (SIZEOF(fsQueryXBitmaps16Req) >> 2) + nranges;    req.num_ranges = nranges * 2;	/* protocol wants count of fsChar2bs */    _fs_add_req_log(conn, FS_QueryXBitmaps16);    _fs_write(conn, (char *) &req, SIZEOF(fsQueryXBitmaps16Req));    /* Send ranges to the server... pack into a char array by hand       to avoid structure-packing portability problems and to       handle swapping for version1 protocol */    if (nranges)    {#define RANGE_BUFFER_SIZE 64#define RANGE_BUFFER_SIZE_MASK 63	int i;	char range_buffer[RANGE_BUFFER_SIZE * 4];	char *range_buffer_p;	range_buffer_p = range_buffer;	for (i = 0; i < nranges;)	{	    if (conn->fsMajorVersion > 1)	    {		*range_buffer_p++ = ranges[i].min_char_high;		*range_buffer_p++ = ranges[i].min_char_low;		*range_buffer_p++ = ranges[i].max_char_high;		*range_buffer_p++ = ranges[i].max_char_low;	    }	    else	    {		*range_buffer_p++ = ranges[i].min_char_low;		*range_buffer_p++ = ranges[i].min_char_high;		*range_buffer_p++ = ranges[i].max_char_low;		*range_buffer_p++ = ranges[i].max_char_high;	    }	    if (!(++i & RANGE_BUFFER_SIZE_MASK))	    {		_fs_write(conn, range_buffer, RANGE_BUFFER_SIZE * 4);		range_buffer_p = range_buffer;	    }	}	if (i &= RANGE_BUFFER_SIZE_MASK)	    _fs_write(conn, range_buffer, i * 4);    }    return Suspended;}intfs_load_all_glyphs(pfont)    FontPtr	pfont;{    extern pointer serverClient;	/* This could be any number that					   doesn't conflict with existing					   client values. */    int err;    FSFpePtr conn = (FSFpePtr) pfont->fpe->private;    /*     * The purpose of this procedure is to load all glyphs in the event     * that we're dealing with someone who doesn't understand the finer     * points of glyph caching...  it is called from _fs_get_glyphs() if     * the latter is called to get glyphs that have not yet been loaded.     * We assume that the caller will not know how to handle a return     * value of Suspended (usually the case for a GetGlyphs() caller),     * so this procedure hangs around, freezing the server, for the     * request to complete.  This is an unpleasant kluge called to     * perform an unpleasant job that, we hope, will never be required.     */    while ((err = _fs_load_glyphs(serverClient, pfont, TRUE, 0, 0, NULL)) ==	   Suspended)    {	fd_set TempSelectMask;	if (_fs_wait_for_readable(conn) == -1)	{	    /* We lost our connection.  Don't wait to reestablish it;	       just give up. */	    _fs_connection_died(conn);	    /* Get rid of blockrec */	    fs_client_died(serverClient, pfont->fpe);	    return BadCharRange;	/* As good an error as any other */	}	FD_SET(conn->fs_fd, &TempSelectMask);	fs_wakeup(pfont->fpe, &TempSelectMask);    }    return err;}int_fs_load_glyphs(client, pfont, range_flag, nchars, item_size, data)    pointer     client;    FontPtr     pfont;    Bool	range_flag;    unsigned int nchars;    int         item_size;    unsigned char *data;{    int		nranges = 0;    fsRange     *ranges = NULL;    int         res;    FSBlockDataPtr blockrec;    FSBlockedGlyphPtr blockedglyph;    FSFpePtr    conn = (FSFpePtr) pfont->fpe->private;    FSClientsDependingPtr *clients_depending = NULL;    /* see if the result is already there */    blockrec = (FSBlockDataPtr) conn->blocked_requests;    while (blockrec) {	if (blockrec->type == FS_LOAD_GLYPHS)	{	    blockedglyph = (FSBlockedGlyphPtr) blockrec->data;	    if (blockedglyph->pfont == pfont)	    {		if (blockrec->client == client)		{		    if (blockedglyph->done)		    {			int errcode = blockedglyph->errcode;			signal_clients_depending(&blockedglyph->						 clients_depending);			_fs_remove_block_rec(conn, blockrec);			return errcode;		    }		    else return Suspended;		}		/* We've found an existing LoadGlyphs blockrec for this		   font but for another client.  Rather than build a		   blockrec for it now (which entails some complex		   maintenance), we'll add it to a queue of clients to		   be signalled when the existing LoadGlyphs is		   completed.  */		clients_depending = &blockedglyph->clients_depending;		break;	    }	}	else if (blockrec->type == FS_OPEN_FONT)	{	    FSBlockedFontPtr bfont;	    bfont = (FSBlockedFontPtr) blockrec->data;	    if (bfont->pfont == pfont)	    {		if (blockrec->client == client)		{		    if (bfont->state == FS_DONE_REPLY)		    {			int errcode = bfont->errcode;			signal_clients_depending(&bfont->clients_depending);			_fs_remove_block_rec(conn, blockrec);			if (errcode == Successful) break;			else return errcode;		    }		    else return Suspended;		}		/* We've found an existing OpenFont blockrec for this		   font but for another client.  Rather than build a		   blockrec for it now (which entails some complex		   maintenance), we'll add it to a queue of clients to		   be signalled when the existing OpenFont is		   completed.  */		if (bfont->state != FS_DONE_REPLY)		{		    clients_depending = &bfont->clients_depending;		    break;		}	    }	}		 	blockrec = blockrec->next;    }    /*     * see if the desired glyphs already exist, and return Successful if they     * do, otherwise build up character range/character string     */    res = fs_build_range(pfont, range_flag, nchars, item_size, data,			 &nranges, &ranges);    switch (res)    {	case AccessDone:	    return Successful;	case Successful:	    break;	default:	    return res;    }    /*     * If clients_depending is not null, this request must wait for     * some prior request(s) to complete.     */    if (clients_depending)    {	/* Since we're not ready to send the load_glyphs request yet,	   clean up the damage (if any) caused by the fs_build_range()	   call. */	if (nranges)	{	    _fs_clean_aborted_loadglyphs(pfont, nranges, ranges);	    xfree(ranges);	}	return add_clients_depending(clients_depending, client);    }    /*     * If fsd->generation != conn->generation, the font has been closed     * due to a lost connection.  We will reopen it, which will result     * in one of three things happening:     *	 1) The open will succeed and obtain the same font.  Life     *	    is wonderful.     *	 2) The open will fail.  There is code above to recognize this     *	    and flunk the LoadGlyphs request.  The client might not be     *	    thrilled.     *	 3) Worst case: the open will succeed but the font we open will     *	    be different.  The fs_read_query_info() procedure attempts     *	    to detect this by comparing the existing metrics and     *	    properties against those of the reopened font... if they     *	    don't match, we flunk the reopen, which eventually results     *	    in flunking the LoadGlyphs request.  We could go a step     *	    further and compare the extents, but this should be     *	    sufficient.     */    if (((FSFontDataPtr)pfont->fpePrivate)->generation != conn->generation)    {	/* Since we're not ready to send the load_glyphs request yet,	   clean up the damage caused by the fs_build_range() call. */	_fs_clean_aborted_loadglyphs(pfont, nranges, ranges);	xfree(ranges);	/* Now try to reopen the font. */	return fs_send_open_font(client, (FontPathElementPtr)0,				 (Mask)FontReopen, (char *)0, 0,				 (fsBitmapFormat)0, (fsBitmapFormatMask)0,				 (XID)0, &pfont);    }    return fs_send_load_glyphs(client, pfont, nranges, ranges);}static intfs_read_list(fpe, blockrec)    FontPathElementPtr fpe;    FSBlockDataPtr blockrec;{    FSBlockedListPtr blist = (FSBlockedListPtr) blockrec->data;    FSFpePtr    conn = (FSFpePtr) fpe->private;    fsListFontsReply rep;    char       *data,               *dp;    int         length,                i;    blist->done = TRUE;    /* read reply header */    memcpy(&rep, &blockrec->header, SIZEOF(fsGenericReply));    if (rep.type == FS_Error) {/* XXX -- translate FS error */	_fs_eat_rest_of_error(conn, (fsError *) & rep);	return AllocError;    }    if (_fs_read(conn, (char *) &rep + SIZEOF(fsGenericReply),		 SIZEOF(fsListFontsReply) - SIZEOF(fsGenericReply)) == -1) {	/* nothing to free (i think) */	return StillWorking;    }    length = (rep.length << 2) - SIZEOF(fsListFontsReply);    data = (char *) xalloc(length);    if (!data) {	_fs_drain_bytes_pad(conn, length);	return AllocError;    }    /* read the list */    if (_fs_read_pad(conn, data, length) == -1) {	/* nothing to free (i think) */	return StillWorking;    }    /* copy data into FontPathRecord */    dp = data;    for (i = 0; i < rep.nFonts; i++) {	length = *(unsigned char *)dp++;	if (AddFontNamesName(blist->names, dp, length) != Successful) {	    blist->errcode = AllocError;	    break;	}	dp += length;    }    xfree(data);    return Successful;}static intfs_send_list_fonts(client, fpe, pattern, patlen, maxnames, newnames)    pointer     client;    FontPathElementPtr fpe;    char       *pattern;    int         patlen;    int         maxnames;    FontNamesPtr newnames;{    FSBlockDataPtr blockrec;    FSBlockedListPtr blockedlist;    FSFpePtr    conn = (FSFpePtr) fpe->private;    fsListFontsReq req;    _fs_client_access (conn, client, FALSE);    _fs_client_resolution(conn);    /* make a new block record, and add it to the end of the list */    blockrec = fs_new_block_rec(fpe, client, FS_LIST_FONTS);    if (!blockrec)	return AllocError;    blockedlist = (FSBlockedListPtr) blockrec->data;    blockedlist->patlen = patlen;    blockedlist->errcode = Successful;    blockedlist->names = newnames;    blockedlist->done = FALSE;    /* send the request */    req.reqType = FS_ListFonts;    req.maxNames = maxnames;    req.nbytes = patlen;    req.length = (SIZEOF(fsListFontsReq) + patlen + 3) >> 2;    _fs_add_req_log(conn, FS_ListFonts);    _fs_write(conn, (char *) &req, SIZEOF(fsListFontsReq));    _fs_write_pad(conn, (char *) pattern, patlen);#ifdef NCD    if (configData.ExtendedFontDiags) {	char        buf[256];	memcpy(buf, pattern, MIN(256, patlen));	buf[MIN(256, patlen)] = '\0';	printf("Listing fonts on pattern \"%s\" from font server \"%s\"\n",	       buf, fpe->name);    }#endif    return Suspended;}static intfs_list_fonts(client, fpe, pattern, patlen, maxnames, newnames)    pointer     client;    FontPathElementPtr fpe;    char       *pattern;    int         patlen;    int         maxnames;    FontNamesPtr newnames;{    FSBlockDataPtr blockrec;    FSBlockedListPtr blockedlist;    FSFpePtr    conn = (FSFpePtr) fpe->private;    int         err;    /* see if the result is already there */    blockrec = (FSBlockDataPtr) conn->blocked_requests;    while (blockrec) {	if (blockrec->type == FS_LIST_FONTS && blockrec->client == client) {	    blockedlist = (FSBlockedListPtr) blockrec->data;	    if (blockedlist->patlen == patlen && blockedlist->done) {		err = blockedlist->errcode;		_fs_remove_block_rec(conn, blockrec);		return err;	    }	}	blockrec = blockrec->next;    }    /* didn't find waiting record, so send a new one */    return fs_send_list_fonts(client, fpe, pattern, patlen, maxnames, newnames);}static int  padlength[4] = {0, 3, 2, 1};static intfs_read_list_info(fpe, blockrec)    FontPathElementPtr fpe;    FSBlockDataPtr blockrec;{    FSBlockedListInfoPtr binfo = (FSBlockedListInfoPtr) blockrec->data;    fsListFontsWithXInfoReply rep;    FSFpePtr    conn = (FSFpePtr) fpe->private;    fsPropInfo  pi;    fsPropOffset *po;    char       *name;    pointer     pd;    int		err;    /* clean up anything from the last trip */    if (binfo->name)    {	xfree(binfo->name);	binfo->name = NULL;    }    if (binfo->pfi) {	xfree(binfo->pfi->isStringProp);	xfree(binfo->pfi->props);	xfree(binfo->pfi);	binfo->pfi = NULL;    }    /* get reply header */    memcpy(&rep, &blockrec->header, SIZEOF(fsGenericReply));    if (rep.type == FS_Error) {/* XXX -- translate FS error */	_fs_eat_rest_of_error(conn, (fsError *) & rep);	binfo->errcode = AllocError;	return AllocError;    }    if (conn->fsMajorVersion > 1)	if (rep.nameLength == 0)	    goto done;    /* old protocol sent a full-length reply even for the last one */    if (_fs_read(conn, (char *) &rep + SIZEOF(fsGenericReply),	  SIZEOF(fsListFontsWithXInfoReply) - SIZEOF(fsGenericReply)) == -1) {	goto done;    }    if (rep.nameLength == 0)	goto done;    /* read the data */    name = (char *) xalloc(rep.nameLength);    binfo->pfi = (FontInfoPtr) xalloc(sizeof(FontInfoRec));    if (!name || !binfo->pfi) {	xfree(name);	xfree(binfo->pfi);	binfo->pfi = NULL;	_fs_drain_bytes(conn,			rep.length - (SIZEOF(fsListFontsWithXInfoReply) -				      SIZEOF(fsGenericReply)));	binfo->errcode = AllocError;	return AllocError;    }    if (conn->fsMajorVersion == 1)	if (_fs_read_pad(conn, name, rep.nameLength) == -1)	    goto done;    if (_fs_read_pad(conn, (char *) &pi, SIZEOF(fsPropInfo)) == -1)	    goto done;    po = (fsPropOffset *) xalloc(SIZEOF(fsPropOffset) * pi.num_offsets);    pd = (pointer) xalloc(pi.data_len);    if (!po || !pd) {	xfree(name);	xfree(po);	xfree(pd);	xfree (binfo->pfi);	binfo->pfi = NULL;	binfo->errcode = AllocError;	return AllocError;    }    err = _fs_read_pad(conn, (char *) po,		       (pi.num_offsets * SIZEOF(fsPropOffset)));    if (err != -1)    {	if (conn->fsMajorVersion > 1)	    err = _fs_read(conn, (char *) pd, pi.data_len);	else	    err = _fs_read_pad(conn, (char *) pd, pi.data_len);    }    if (err != -1  &&  conn->fsMajorVersion != 1

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产激情一区二区三区四区| 欧美精品日韩精品| 日韩欧美高清在线| 国产一区二区三区日韩| 久久久99久久| 97se亚洲国产综合在线| 一级日本不卡的影视| 91精品福利视频| 午夜激情一区二区| 精品国产一区二区亚洲人成毛片| 国产成人在线影院| 亚洲欧美经典视频| 欧美日韩国产首页| 日韩精品一区第一页| 亚洲精品一区二区三区四区高清| 成人黄色大片在线观看| 亚洲图片欧美一区| 欧美成人a∨高清免费观看| 久久er精品视频| 亚洲一区二区三区四区中文字幕| 91精品视频网| 99久久精品免费看国产免费软件| 亚洲mv大片欧洲mv大片精品| 欧美精品一区二区蜜臀亚洲| 成人的网站免费观看| 肉丝袜脚交视频一区二区| 精品国产免费久久| 在线视频一区二区免费| 91免费看`日韩一区二区| 高清av一区二区| 国产精品77777| 成人黄色电影在线| 色一情一伦一子一伦一区| 91蝌蚪porny| 成人免费毛片嘿嘿连载视频| 国产一区二区精品久久91| 成人免费一区二区三区视频| 日韩欧美激情一区| 欧美日韩在线亚洲一区蜜芽| 美脚の诱脚舐め脚责91| 国产精品18久久久久| 99riav一区二区三区| 欧美午夜在线观看| 色琪琪一区二区三区亚洲区| 在线观看av不卡| 欧美日韩亚洲综合一区| 色婷婷综合久久久久中文 | 久久精品国产999大香线蕉| 夜夜操天天操亚洲| 亚洲综合在线五月| 亚洲乱码国产乱码精品精的特点| 国产精品久久久久一区二区三区| 中文一区二区在线观看| 久久―日本道色综合久久| 日韩一区二区三区四区五区六区| 日韩欧美一区二区不卡| 欧美精品一区二区三区蜜桃 | 91搞黄在线观看| 色哟哟国产精品免费观看| 一本色道久久加勒比精品 | 国产精品综合网| 高清不卡在线观看av| 成人av在线观| 91精品1区2区| 欧美一区二区免费视频| 国产欧美一区二区三区沐欲| 一区二区在线看| 国产精品自拍在线| 欧美一区二区视频在线观看2020| 国产午夜亚洲精品午夜鲁丝片 | 日韩欧美激情在线| 国产精品你懂的| 日韩不卡免费视频| 91亚洲国产成人精品一区二三| 欧美日韩视频在线观看一区二区三区 | 色综合天天综合网天天狠天天 | 国产精选一区二区三区| 欧美专区亚洲专区| 日本一区二区免费在线| 亚洲va国产天堂va久久en| 白白色 亚洲乱淫| 日韩欧美高清dvd碟片| 亚洲精品成人悠悠色影视| 国产在线视视频有精品| 欧美日韩久久一区| 一区二区三区在线免费视频| 成人综合婷婷国产精品久久免费| 91精品国产一区二区| 亚洲激情校园春色| 99热国产精品| 中文字幕佐山爱一区二区免费| 国产精品自拍在线| 久久久精品tv| 国产一区二区在线视频| 日韩欧美美女一区二区三区| 亚洲一区二区三区精品在线| 色综合中文字幕国产| 国产无一区二区| 高清不卡一区二区在线| 欧美国产精品劲爆| 99久久综合精品| 亚洲日本免费电影| 91福利视频久久久久| 日韩综合小视频| 日韩久久精品一区| 大陆成人av片| 亚洲激情av在线| 69久久夜色精品国产69蝌蚪网 | 国产亲近乱来精品视频| jvid福利写真一区二区三区| 亚洲免费电影在线| 欧美一级欧美一级在线播放| 精品一区二区三区免费| 国产欧美一区二区三区网站| 在线免费观看日韩欧美| 奇米精品一区二区三区四区| 久久老女人爱爱| 91九色最新地址| 精品一区二区三区在线播放| 亚洲欧洲精品一区二区三区| 欧美视频一区二区在线观看| 久久成人综合网| 亚洲色图欧美激情| 久久一留热品黄| 这里只有精品电影| 91丨porny丨首页| 国产一区二区三区观看| 水蜜桃久久夜色精品一区的特点| 国产亚洲欧美色| 51精品秘密在线观看| 色综合久久六月婷婷中文字幕| 国产伦精品一区二区三区免费迷| 亚洲欧美日韩在线播放| 国产精品欧美经典| 2021国产精品久久精品| 91精品久久久久久久91蜜桃| 欧美日韩亚洲国产综合| 色综合天天综合网天天看片| 成人黄色小视频| 成人黄色免费短视频| 国产传媒久久文化传媒| 国产精品亚洲人在线观看| 久久国产精品一区二区| 秋霞成人午夜伦在线观看| 日韩成人免费看| 秋霞电影网一区二区| 麻豆精品国产传媒mv男同| 人人狠狠综合久久亚洲| 日本强好片久久久久久aaa| 青青草伊人久久| 国内欧美视频一区二区| 国产很黄免费观看久久| aaa欧美色吧激情视频| 91国偷自产一区二区使用方法| 色综合久久中文字幕综合网 | 国产毛片精品国产一区二区三区| 看片网站欧美日韩| 国产成人自拍在线| 欧美性生活一区| 欧美成人国产一区二区| 国产精品私人影院| 视频一区二区不卡| 成人综合激情网| 欧美日韩不卡在线| 国产精品网站一区| 日韩高清一区二区| 国精产品一区一区三区mba视频 | 国产视频视频一区| 亚洲国产一区二区三区青草影视| 极品尤物av久久免费看| 色哟哟一区二区在线观看| 精品久久久网站| 亚洲伊人色欲综合网| 国产福利一区二区三区| 欧美日韩美少妇| 自拍偷自拍亚洲精品播放| 久久国产三级精品| 欧美图片一区二区三区| 国产精品久久久久影视| 国产一区二区成人久久免费影院| 91丝袜美女网| 最新国产の精品合集bt伙计| 久久av资源网| 日韩一区二区在线看| 亚洲高清中文字幕| 91九色最新地址| 亚洲美女少妇撒尿| 99精品国产99久久久久久白柏 | 久久久久九九视频| 国产精品一区二区不卡| 精品国产一区二区三区不卡 | 亚洲成人黄色小说| 欧美手机在线视频| 日韩精品乱码免费| 欧美伦理电影网| 美女网站一区二区| 久久久噜噜噜久久人人看| 国产露脸91国语对白| 国产精品视频看| 色婷婷综合久久久|