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

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

?? htbrowse.c

?? www工具包. 這是W3C官方支持的www支撐庫. 其中提供通用目的的客戶端的WebAPI: complete HTTP/1.1 (with caching, pipelining, PUT, POS
?? C
?? 第 1 頁 / 共 5 頁
字號:
#ifdef CATCH_SIG#include <signal.h>/*								    SetSignal**  This function sets up signal handlers. This might not be necessary to**  call if the application has its own handlers.*/PRIVATE void SetSignal (void){    /* On some systems (SYSV) it is necessary to catch the SIGPIPE signal    ** when attemting to connect to a remote host where you normally should    ** get `connection refused' back    */    if (signal(SIGPIPE, SIG_IGN) == SIG_ERR) {	HTTRACE(APP_TRACE, "HTSignal.... Can't catch SIGPIPE\n");    } else {	HTTRACE(APP_TRACE, "HTSignal.... Ignoring SIGPIPE\n");    }#ifdef HT_MEMLOG    HTMemLog_flush();#endif}#endif /* CATCH_SIG *//*  Print version information**  -------------------------*/PRIVATE void VersionInfo (LineMode * lm){    HTView * pView = lm ? lm->pView : NULL;    OutputData(pView, "\n\nW3C Reference Software\n\n");    OutputData(pView, "\tW3C Line Mode Browser version %s.\n", APP_VERSION);    OutputData(pView, "\tW3C Reference Library version %s.\n\n",HTLib_version());    OutputData(pView, "Please send feedback to <libwww@w3.org>\n");}/* 	Reference_List**	--------------**  	Print out a list of HyperText References from current document*/PRIVATE void Reference_List (LineMode * lm, BOOL titles){    int refs = HText_sourceAnchors(HTMainText);    if (refs <= 0) {	OutputData(lm->pView, "\n\nThere are no references from this document.\n\n");    } else {	int cnt;	OutputData(lm->pView, "\n*** References from this document ***\n");	for (cnt=1; cnt<=refs; cnt++) {	    HTLink * link =		HTAnchor_mainLink((HTAnchor*)HText_childNumber(HTMainText,cnt));	    HTAnchor * dest = HTLink_destination(link);	    HTParentAnchor * parent = HTAnchor_parent(dest);	    char * address =  HTAnchor_address(dest);	    const char * title = titles ? HTAnchor_title(parent) : NULL;	    OutputData(lm->pView, reference_mark, cnt);	    OutputData(lm->pView, "%s%s\n",		    ((HTAnchor*)parent!=dest) && title ? "in " : "",		    (char *)(title ? title : address));	    HT_FREE(address);	}#ifndef WWW_WIN_WINDOW	fflush(OUTPUT);#endif    }}      /*	History_List**	------------**	Display a history list of nodes visited during the session.*/PRIVATE void History_List (LineMode * lm){    int current = HTHistory_position(lm->history);    int max = HTHistory_count(lm->history);    int cnt;    OutputData(lm->pView, "\n  Documents you have visited: ");    if (max > MAX_HISTORY) {	max = MAX_HISTORY;	OutputData(lm->pView, "(truncated)\n");    } else	OutputData(lm->pView, "\n");    for (cnt=1; cnt<=max; cnt++) {	HTAnchor *anchor = HTHistory_list(lm->history, cnt);    	char *address = HTAnchor_address(anchor);	HTParentAnchor *parent = HTAnchor_parent(anchor);	const char *title = HTAnchor_title(parent);	OutputData(lm->pView, "%s R %d\t%s%s\n",	       (cnt==current) ? "*" : " ",	       cnt,	       ((HTAnchor*)parent!=anchor) && title ? "in " : "",	       title ? title : address);	HT_FREE(address);    }    OutputData(lm->pView, "\n");}/*	Prompt for answer and get text back. Reply text is either NULL on**	error or a dynamic string which the caller must HT_FREE.*/PRIVATE char * AskUser (HTRequest * request, const char * Msg,			const char * deflt){    char buffer[200];    char *reply = NULL;    HTPrint("%s ", Msg ? Msg : "UNKNOWN");    if (deflt)	HTPrint("(RETURN for [%s]) ", deflt);#ifndef NO_STDIO    if (!fgets(buffer, 200, stdin))	return NULL;		       	     /* NULL string on error, Henrik */    buffer[strlen(buffer)-1] = '\0';		        /* Overwrite newline */    if (*buffer)	StrAllocCopy(reply, buffer);    else if (deflt)	StrAllocCopy(reply, deflt);#endif    return reply;}PRIVATE BOOL confirm (HTRequest * request, const char * Msg){    char response[4];    HTPrint("%s (y/n) ", Msg ? Msg : "UNKNOWN");#ifndef NO_STDIO    if (fgets(response, 4, stdin)) 		   /* get reply, max 3 chars */#endif    {	char *ptr = response;	while (*ptr) {	    if (*ptr == '\n') {		*ptr = '\0';		break;	    }	    *ptr = TOUPPER(*ptr);	    ptr++;	}	return (!strcmp(response, "YES") || !strcmp(response, "Y")) ? YES : NO;    }    return NO;}/*	MakeCommandLine**	---------------**	Generate the Prompt line and flush it to the user*/PRIVATE void MakeCommandLine (LineMode * lm, BOOL is_index){    /* First Line */    if (HTAnchor_hasChildren(HTMainAnchor)) {	int refs = HText_sourceAnchors(HTMainText);	if (refs>1)	    OutputData(lm->pView, "1-%d, ", refs);	else	    OutputData(lm->pView, "1, ");	    }    if (HText_canScrollUp(HTMainText)) {	OutputData(lm->pView, "Top, ");	OutputData(lm->pView, "Up, ");    }    if (HText_canScrollDown(HTMainText)) {	OutputData(lm->pView, "BOttom, ");	OutputData(lm->pView, "Down or <RETURN> for more,");    }    /* Second Line */    OutputData(lm->pView, "\n");    if (HTHistory_canBacktrack(lm->history))	OutputData(lm->pView, "Back, ");    if (HTHistory_canForward(lm->history))	OutputData(lm->pView, "Forward, ");    if (is_index)	OutputData(lm->pView, "FIND <keywords>, ");    OutputData(lm->pView, "Quit, or Help: ");	    fflush(stdout);  	           	  /* For use to flush out the prompt */    return;}/***  PUT the current document to the destination specified by the user**  Returns the result of the load function.*/PRIVATE int PutAnchor (LineMode * lm, HTRequest * request){    char * dest = AskUser(request, "Destination: ", NULL);    /*    ** If user has typed a destination then create a new request object and    ** start the PUT operation. The destination is taken relative to the    ** current location.    */    if (dest) {	HTRequest * new_request = Thread_new(lm, YES, LM_UPDATE);	HTPutDocumentRelative(HTMainAnchor, dest, HTMainAnchor, new_request);	HT_FREE(dest);    }    return YES;}/***  Delete the current document.*/PRIVATE int DeleteAnchor (LineMode * lm, HTRequest * request){    int status = HT_INTERNAL;    BOOL doit = confirm(request, "Delete the current document?");    if (doit) {	HTRequest * new_request = Thread_new(lm, YES, LM_UPDATE);	status = HTDeleteAnchor((HTAnchor *) HTMainAnchor, new_request);    }    return status;}/***  This function puts up a stream to a file in order to save a document. This**  is activated by '>', '>>' or '>!' from the prompt line.*/PRIVATE BOOL SaveOutputStream (HTRequest * req, char * This, char * Next){    FILE *fp;    char *fname;    char *fmode;        /* Checks if file exists. Can be overruled by using '>!' */    if (*(This+1) == '>') {	 		   	   /* Append to file */	fmode = "ab";	fname = *(This+2) ? (This+2) : Next;    } else if (*(This+1) == '!') {	fmode = "wb";				           /* Overwrite file */	fname = *(This+2) ? (This+2) : Next;    } else {						/* File name follows */	fmode = "wb";	fname = *(This+1) ? (This+1) : Next;	if (fname) {				       /* See if file exists */	    if ((fp = fopen(fname, "r")) != NULL) {		fclose(fp);		if (!confirm(req, "File exists - overwrite?"))		    return NO;	    }	}    }    if (!fname)					       /* No file name given */	return NO;    if ((fp = fopen(fname, fmode)) == NULL) {	if (SHOW_MSG) HTPrint("Can't access file (%s)\n", fname);	return NO;    }    HTRequest_setOutputStream(req, HTFWriter_new(req, fp, NO));    if (SHOW_MSG) HTPrint("Saving to file `%s\'\n", fname);    return (HTLoadAnchor((HTAnchor*) HTMainAnchor, req) != HT_WOULD_BLOCK);}CSError_t LoadedUsersCallback(CSUser_t * pCSUser, int index, void * pVoid){    LineMode * lm = (LineMode *)pVoid;    OutputData(lm->pView, "%d: %s\n", index, CSUser_name(pCSUser));    return CSError_OK;}CSError_t UserListCallback(char * username, char * url, int index, void * pVoid){    LineMode * lm = (LineMode *)pVoid;    OutputData(lm->pView, "%d: %s %s\n", index, username, url);    return CSError_OK;}PRIVATE BOOL ShowPICSUsers(LineMode * lm){    OutputData(lm->pView, "Loaded users:\n");    CSLoadedUser_enum(&LoadedUsersCallback, (void *)lm);    OutputData(lm->pView, "Listed users:\n");    CSUserList_enum(&UserListCallback, (void *)lm);    return YES;}PRIVATE int PICS_userCallback(CSUser_t * pCSUser, void * pVoid){    LineMode * lm = (LineMode *)pVoid;    char * userName;    char * password = NULL;    HTAlertCallback *cbf;    int ret;    HTAlertPar * reply;    if (lm->noPICSPasswords) {        lm->pCSUser = pCSUser;	return 0;    }    if (!(cbf = HTAlert_find(HT_A_USER_PW)))        return -1;    reply = HTAlert_newReply();    userName = CSUser_name(pCSUser);    if ((ret = (*cbf)(lm->console, HT_A_USER_PW, 		      HT_MSG_NULL, userName, NULL, reply))) {        userName = HTAlert_replyMessage(reply);        password = HTAlert_replySecret(reply);    }    HTAlert_deleteReply(reply);    if (!ret) {        HTPrint("PICS set user *canceled*.\n");	return -1;    }    ret = -1;    if (!userName)	HTPrint("PICS cannot set to no name.\n");    else if (CSUser_checkPassword(pCSUser, password) == NO)        HTPrint("PICS password was not valid.\n");    else {        ret = 0;	lm->pCSUser = pCSUser;    }    HT_FREE(userName);    HT_FREE(password);    return ret;}PRIVATE BOOL SetPICSUser(LineMode * lm, char * userName){    char * password = NULL;    HTAlertCallback *cbf;    BOOL ret;    HTAlertPar * reply;    if (!(cbf = HTAlert_find(HT_A_USER_PW)))        return NO;    reply = HTAlert_newReply();    if ((ret = (*cbf)(lm->console, HT_A_USER_PW, 		      HT_MSG_NULL, userName, NULL, reply))) {        userName = HTAlert_replyMessage(reply);        password = HTAlert_replySecret(reply);    }    HTAlert_deleteReply(reply);    if (!ret) {        HTPrint("PICS set user *canceled*.\n");	return NO;    }    ret = NO;    if (!userName)	HTPrint("Canceled.\n");    else if (!(lm->pCSUser = CSApp_registerUserByName(userName, password))) {        char * url;        if ((url = CSUserList_findURL(userName)) == NULL)	    HTPrint("PICS user \"%s\" is unknown.\n", userName);	else if (!CSLoadedUser_load(url, lm->cwd))	    HTPrint("Can't load PICS user \"%s\".\n", userName);	else if ((CSLoadedUser_find(userName)) == NO)	    HTPrint("PICS user \"%s\" not found in \"%s\".\n", userName, url);	else if (!(lm->pCSUser = CSApp_registerUserByName(userName, password)))	    HTPrint("Failed to set PICS user to \"%s\".\n", userName);	ret = YES;	HT_FREE(url);    }    HT_FREE(userName);    HT_FREE(password);    return ret;}PRIVATE BOOL LoadPICSUser(LineMode * lm, char * url){    CSUser_t * pCSUser;    if (!(pCSUser = CSLoadedUser_load(url, lm->cwd)))        return NO;    lm->pCSUser = pCSUser;    return YES;}CSError_t PICSCallback(HTRequest* pReq, CSLabel_t * pCSLabel, 		       CSUser_t * pCSUser, CSError_t disposition, void * pVoid){    LineMode * lm = (LineMode *)pVoid;    char * mesg;    switch (disposition) {        case CSError_RATING_RANGE:            {	    char * labelStr = CSLabel_getRatingStr(pCSLabel);	    char * userStr = CSUser_getRatingStr(pCSUser);	    char * anchorStr = HTAnchor_address((HTAnchor*)HTRequest_anchor(pReq));            OutputData(lm->pView, "PICS user %s is not allowed to see document: %s\n", 		       CSUser_name(pCSUser), anchorStr);            OutputData(lm->pView, "  %s's \"%s\" rating for service %s (%s) did not include %s\n", 		       CSUser_name(pCSUser), 		       CSLabel_getRatingName(pCSLabel),		       CSLabel_getServiceName(pCSLabel), 		       userStr, labelStr);	    HT_FREE(userStr);	    HT_FREE(labelStr);	    HT_FREE(anchorStr);	    }	    return disposition;        case CSError_BUREAU_NONE: mesg="label bureau was not contacted"; break;        case CSError_RATING_VALUE: mesg="value"; break;        case CSError_RATING_MISSING: mesg="rating not found"; break;        case CSError_SINGLELABEL_MISSING: mesg="no single-labels found"; break;        case CSError_SERVICE_MISSING: mesg="service not available";break;        case CSError_SERVICE_NONE: mesg="no services available for document"; break;        case CSError_RATING_NONE: mesg="no ratings in a service"; break;        case CSError_BAD_DATE: mesg="labels were out of date"; break;        default:HTPrint("PICSCallback: odd error code: %d\n", disposition); return disposition;    }    OutputData(lm->pView, "PICS disallowed document: %s\n", mesg);    return disposition;}/* ------------------------------------------------------------------------- *//*				EVENT FUNCTIONS				     *//* ------------------------------------------------------------------------- *//*	parse_command**	------------**      Given the user's input, deal with it as necessary.**	Any Command which works returns from the routine. If nothing**	works then a search or error message down at the bottom.****	Returns		HT_ERROR	Error has occured or we quit**			HT_OK		Call back was OK*/PRIVATE int parse_command (char* choice, SOCKET s, HTRequest *req, HTEventType type)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
六月丁香综合在线视频| 欧美韩国日本不卡| 亚洲视频一二区| 床上的激情91.| 亚洲欧洲av色图| 99久久99久久精品免费看蜜桃| 欧美大胆一级视频| 蜜桃91丨九色丨蝌蚪91桃色| 欧美日韩久久一区| 午夜久久久影院| 日韩一级片在线观看| 丝袜国产日韩另类美女| 精品视频1区2区| 亚洲成人在线网站| 欧美tickling挠脚心丨vk| 麻豆高清免费国产一区| 欧美va亚洲va| 99在线热播精品免费| 亚洲午夜av在线| 日韩视频在线永久播放| 精一区二区三区| 国产成人99久久亚洲综合精品| 欧美日韩不卡在线| 捆绑变态av一区二区三区| 久久先锋资源网| 欧美综合色免费| 久久精品国产亚洲高清剧情介绍| 精品国产免费人成在线观看| 日韩免费在线观看| 国产精品一区专区| 亚洲午夜私人影院| 337p日本欧洲亚洲大胆精品| 色婷婷综合久久久久中文| 国产一区二区三区在线观看免费视频 | 久久久久久久综合| 欧美日本一区二区在线观看| 欧美喷潮久久久xxxxx| av日韩在线网站| 亚洲国产一区二区a毛片| 欧美大片免费久久精品三p| 韩国成人在线视频| 国产日产欧美精品一区二区三区| 日韩成人av影视| 欧美日韩精品一二三区| 一区二区三区四区在线免费观看| 精品国产免费久久| 日韩精品中文字幕一区二区三区| 972aa.com艺术欧美| 国产激情91久久精品导航| 日韩专区一卡二卡| 亚洲精品乱码久久久久久久久| 久久久99精品免费观看不卡| 日韩欧美电影在线| 欧美久久一区二区| 在线欧美一区二区| 色素色在线综合| 91精品国产手机| 欧美色视频在线| 在线观看欧美黄色| 色哟哟精品一区| 色婷婷激情综合| 欧美日韩在线不卡| 欧洲一区二区av| 欧美日韩中文另类| 国产精品久久久久三级| 欧美激情在线免费观看| 亚洲国产精品二十页| 中文字幕免费不卡在线| 亚洲乱码精品一二三四区日韩在线| 亚洲美女区一区| 亚洲一区二区三区国产| 轻轻草成人在线| 国产宾馆实践打屁股91| 欧美色男人天堂| 久久久久久久综合狠狠综合| 亚洲午夜日本在线观看| 国产精品一区二区无线| 99久久免费视频.com| 欧美日韩国产精品成人| 中文字幕av一区二区三区免费看| 日韩美女久久久| 三级不卡在线观看| 大桥未久av一区二区三区中文| 欧美这里有精品| 亚洲国产成人一区二区三区| 亚洲成人动漫精品| 高清免费成人av| 日韩欧美亚洲一区二区| 亚洲精品欧美在线| 国产成人精品一区二区三区四区 | 亚洲激情图片qvod| 国产盗摄精品一区二区三区在线 | 国产成人在线视频播放| 欧美一区二区网站| 亚洲国产日日夜夜| 91丨九色丨蝌蚪丨老版| 国产欧美一区二区精品忘忧草| 亚洲午夜在线电影| 国产精品的网站| 极品美女销魂一区二区三区免费 | 成人自拍视频在线| 日本一区二区综合亚洲| 国产麻豆一精品一av一免费 | 一本大道久久a久久精二百| 久久精品免视看| 狂野欧美性猛交blacked| 7799精品视频| 日韩精品视频网站| 日韩精品一区二区三区swag | 一区二区三区四区在线| 91国模大尺度私拍在线视频| 中文字幕亚洲欧美在线不卡| 91麻豆免费观看| 夜夜操天天操亚洲| 正在播放一区二区| 精品一二线国产| 欧美国产亚洲另类动漫| 国产女人水真多18毛片18精品视频 | 成人永久看片免费视频天堂| 亚洲色图.com| 欧美精品aⅴ在线视频| 国产综合一区二区| 亚洲视频一区在线观看| 欧美一区二区三区四区在线观看| 国产高清精品久久久久| 亚洲乱码日产精品bd| 久久网站热最新地址| 色哟哟国产精品免费观看| 奇米影视7777精品一区二区| 国产精品色一区二区三区| 制服丝袜亚洲播放| 91麻豆福利精品推荐| 亚洲精品国产无天堂网2021| 日韩一二三区视频| 99国产麻豆精品| 麻豆成人综合网| 亚洲一区免费观看| 美女任你摸久久| 一区二区三区国产豹纹内裤在线| 亚洲天堂av一区| 欧美激情一二三区| 久久久午夜电影| 精品国产伦一区二区三区观看方式 | 久久亚洲捆绑美女| 欧美一区二区三区四区久久 | 成人午夜电影久久影院| 国产精品一级黄| 国产精品91一区二区| 国产成人午夜高潮毛片| 国产91精品精华液一区二区三区| 蜜桃视频一区二区| 日韩综合小视频| 日韩黄色在线观看| 蜜桃视频一区二区三区在线观看| 日韩av网站免费在线| 亚洲电影欧美电影有声小说| 亚洲视频你懂的| 亚洲精品国产视频| 同产精品九九九| 日本不卡一区二区三区高清视频| 免费三级欧美电影| 国产乱子轮精品视频| 国产成人在线视频网站| 成人的网站免费观看| 久久青草国产手机看片福利盒子 | 欧美一区二区三区视频免费| 久久毛片高清国产| 亚洲免费观看在线视频| 亚洲成人精品在线观看| 韩国三级电影一区二区| 国产1区2区3区精品美女| 91视频91自| 日韩精品中文字幕一区| 中文字幕一区二区三区在线观看 | 99久久国产综合精品女不卡| 欧美网站大全在线观看| 亚洲国产精品传媒在线观看| 亚洲国产综合91精品麻豆| 国产精品77777| 欧美一区二区女人| 亚洲人精品午夜| 国产成人免费视频网站高清观看视频 | 亚洲欧美另类久久久精品2019| 激情欧美一区二区| 6080午夜不卡| 亚洲免费av观看| 高清成人在线观看| 337p日本欧洲亚洲大胆精品 | 欧美日韩国产另类一区| 亚洲丝袜制服诱惑| 99精品视频中文字幕| 欧美成人精品高清在线播放| 日韩av电影免费观看高清完整版| 在线亚洲一区二区| 1024精品合集| 91美女在线看| 久久久久久麻豆| 国内外成人在线| 日韩视频一区在线观看| 亚洲成人www|