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

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

?? htdialog.c

?? www工具包. 這是W3C官方支持的www支撐庫. 其中提供通用目的的客戶端的WebAPI: complete HTTP/1.1 (with caching, pipelining, PUT, POS
?? C
字號:
/*								     HTDialog.c**	MESSAGES AND DIALOGS****	(c) COPYRIGHT MIT 1995.**	Please first read the full copyright statement in the file COPYRIGH.**	@(#) $Id: HTDialog.c,v 2.35 1999/03/01 13:39:31 frystyk Exp $****	This module provides a default implementation of the application part**	of the Message and Dialog part or the Library. You do not have to do**	it like this - you can use exactly the model for mapping codes into**	messages as you like**** Authors**	HFN	Henrik Frystyk*//* Library include files */#include "WWWLib.h"#include "WWWApp.h"#include "WWWHTTP.h"#include "HTDialog.h"					 /* Implemented here *//*** Dialog Messages*/PRIVATE const char * HTDialogs[HT_MSG_ELEMENTS] = {HT_MSG_ENGLISH_INITIALIZER};/*** All errors that are not strictly HTTP errors but originates from, e.g., ** the FTP protocol all have element numbers > HTERR_HTTP_CODES_END, i.e.,** they should be placed after the blank line*/PRIVATE HTErrorMessage HTErrors[HTERR_ELEMENTS] = {HTERR_ENGLISH_INITIALIZER};/* ------------------------------------------------------------------------- *//*			Functions for generating messages		     *//* ------------------------------------------------------------------------- */PUBLIC char * HTDialog_progressMessage (HTRequest * request, HTAlertOpcode op,			                int msgnum, const char * dfault,					void * input){    char * result = NULL;    switch (op) {      case HT_PROG_DNS:	StrAllocMCopy(&result, "Looking up ",		      input ? (char *) input : "",		      NULL);	break;      case HT_PROG_CONNECT:	StrAllocMCopy(&result, "Contacting ",		      input ? (char *) input : "",		      NULL);	break;      case HT_PROG_ACCEPT:	StrAllocCopy(result, "Waiting for connection...");	break;      case HT_PROG_LOGIN:	StrAllocCopy(result, "Logging in...");	break;      case HT_PROG_READ:	if (request) {	    long cl = HTAnchor_length(HTRequest_anchor(request));	    if (cl > 0) {		long b_read = HTRequest_bodyRead(request);		double pro = (double) b_read/cl*100;		char buf[10];		char pct[10];		HTNumToStr((unsigned long) cl, buf, 10);		sprintf(pct, "%d%%", (int) pro);		StrAllocMCopy(&result, "Read (", pct, " of ", buf, ")", NULL);	    } else {		long b_read = HTRequest_bytesRead(request);		int * raw_read = input ? (int *) input : NULL;		if (b_read > 0) {		    char buf[10];		    HTNumToStr(b_read, buf, 10);		    StrAllocMCopy(&result, "Read ", buf, "bytes", NULL);		} else if (raw_read && *raw_read>0) {		    char buf[10];		    HTNumToStr(*raw_read, buf, 10);		    StrAllocMCopy(&result, "Read ", buf, "bytes", NULL);		} else {		    StrAllocCopy(result, "Reading...");		}	    }	}	break;      case HT_PROG_WRITE:	if (request && HTMethod_hasEntity(HTRequest_method(request))) {	    HTParentAnchor *anchor=HTRequest_anchor(HTRequest_source(request));	    long cl = HTAnchor_length(anchor);	    if (cl > 0) {		long b_write = HTRequest_bodyWritten(request);		double pro = (double) b_write/cl*100;		char buf[10];		char pct[10];		HTNumToStr((unsigned long) cl, buf, 10);		sprintf(pct, "%d%%", (int) pro);		StrAllocMCopy(&result, "Writing (", pct, " of ", buf, ")", NULL);	    } else {		long b_written = HTRequest_bytesWritten(request);		int * raw_written = input ? (int *) input : NULL;		if (b_written > 0) {		    char buf[10];		    HTNumToStr(b_written>0 ? b_written : 0, buf, 10);		    StrAllocMCopy(&result, "Writing ", buf, "bytes", NULL);		} if (raw_written && *raw_written>0) {		    char buf[10];		    HTNumToStr(*raw_written, buf, 10);		    StrAllocMCopy(&result, "Writing ", buf, "bytes", NULL);		} else {		    StrAllocCopy(result, "Writing...");		}	    }        }	break;      case HT_PROG_DONE:	StrAllocCopy(result, "Done!");	break;      case HT_PROG_INTERRUPT:	StrAllocCopy(result, "Interrupted!");	break;      case HT_PROG_OTHER:	StrAllocCopy(result, "Working - please wait...");	break;      case HT_PROG_TIMEOUT:	StrAllocCopy(result, "Request timeout - server did not respond.");	break;      default:	StrAllocCopy(result, "UNKNOWN PROGRESS STATE");	break;    }    return result;}PUBLIC char * HTDialog_errorMessage (HTRequest * request, HTAlertOpcode op,			             int msgnum, const char * dfault,				     void * input){    HTList * cur = (HTList *) input;    HTError * pres;    HTErrorShow showmask = HTError_show();    HTChunk * msg = NULL;    int code;    if (!request || !cur) return NULL;    while ((pres = (HTError *) HTList_nextObject(cur))) {	int index = HTError_index(pres);	if (HTError_doShow(pres)) {	    if (!msg) {		HTSeverity severity = HTError_severity(pres);		msg = HTChunk_new(128);		if (severity == ERR_WARN)		    HTChunk_puts(msg, "Warning: ");		else if (severity == ERR_NON_FATAL)		    HTChunk_puts(msg, "Non Fatal Error: ");		else if (severity == ERR_FATAL)		    HTChunk_puts(msg, "Fatal Error: ");		else if (severity == ERR_INFO)		    HTChunk_puts(msg, "Information: ");		else {		    HTChunk_puts(msg, "UNKNOWN ERROR TYPE");		    return HTChunk_toCString(msg);		}		/* Error number */		if ((code = HTErrors[index].code) > 0) {		    char buf[10];		    sprintf(buf, "%d ", code);		    HTChunk_puts(msg, buf);		}	    } else		HTChunk_puts(msg, "\nReason: ");	    if (index == HTERR_SYSTEM) {		int length = 0;		char * pars = (char *) HTError_parameter(pres, &length);		HTChunk_puts(msg, HTError_location(pres));		HTChunk_puts(msg, " ");		HTChunk_puts(msg, HTErrors[index].msg);		if (length && pars) {		    HTChunk_puts(msg, " (");		    HTChunk_puts(msg, pars);		    HTChunk_puts(msg, ")");		}			    } else {		/* Error message */		HTChunk_puts(msg, HTErrors[index].msg);		/* Error parameters */		if (showmask & HT_ERR_SHOW_PARS) {		    int length;		    int cnt;				    char *pars = (char *) HTError_parameter(pres, &length);		    if (length && pars) {			HTChunk_puts(msg, " (");			for (cnt=0; cnt<length; cnt++) {			    char ch = *(pars+cnt);			    if (ch < 0x20 || ch >= 0x7F)				HTChunk_putc(msg, '#');			    else				HTChunk_putc(msg, ch);			}			HTChunk_puts(msg, ") ");		    }		}				/* Error Location */		if (showmask & HT_ERR_SHOW_LOCATION) {		    HTChunk_puts(msg, "This occured in ");		    HTChunk_puts(msg, HTError_location(pres));		    HTChunk_putc(msg, '\n');		}	    }	    /*	    ** Make sure that we don't get this error more than once even	    ** if we are keeping the error stack from one request to another	    */	    HTError_setIgnore(pres);	    	    /* If we only are show the most recent entry then break here */	    if (showmask & HT_ERR_SHOW_FIRST)		break;	}    }    return HTChunk_toCString(msg);}/* ------------------------------------------------------------------------- *//***  Functions for providing user interactions registered in the**  HTAlert module. These functions are the default set of user**  inteactions that are provided by libwww. You are likely to want to generate your own versions**  that can be registered instead.*/PUBLIC BOOL HTProgress (HTRequest * request, HTAlertOpcode op,			int msgnum, const char * dfault, void * input,			HTAlertPar * reply){    char * msg = HTDialog_progressMessage(request, op, msgnum, dfault, input);    if (msg) {	HTPrint("%s\n", msg);	HT_FREE(msg);    }    return YES;}PUBLIC BOOL HTConfirm (HTRequest * request, HTAlertOpcode op,		       int msgnum, const char * dfault, void * input,		       HTAlertPar * reply){    char response[4];	/* One more for terminating NULL -- AL */    HTPrint("%s", HTDialogs[msgnum]);    if (input) HTPrint(" (%s)", (char *) input);    HTPrint(" (y/n) ");    if (fgets(response, 4, stdin)) { 		   /* get reply, max 3 chars */	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;}/*	Prompt for answer and get text back. Reply text is either NULL on**	error or a dynamic string which the caller must HT_FREE.*/PUBLIC BOOL HTPrompt (HTRequest * request, HTAlertOpcode op,		      int msgnum, const char * dfault, void * input,		      HTAlertPar * reply){    HTPrint("%s ", HTDialogs[msgnum]);    if (input) HTPrint(" (%s) ", (char *) input);    if (dfault) HTPrint("(RETURN for [%s]) ", (char *) dfault);    if (reply && msgnum>=0) {        char buffer[200];	if (!fgets(buffer, 200, stdin)) return NO;	buffer[strlen(buffer)-1] = '\0';	        /* Overwrite newline */	if (*buffer)	    HTAlert_setReplyMessage(reply, buffer);	else if (dfault)	    HTAlert_setReplyMessage(reply, (char *) dfault);	else	    return NO;	return YES;    }    return NO;}/*	Prompt for password without echoing the reply. Reply text is**	either NULL on error or a dynamic string which the caller must HT_FREE.*/PUBLIC BOOL HTPromptPassword (HTRequest * request, HTAlertOpcode op,			      int msgnum, const char * dfault, void * input,			      HTAlertPar * reply){    if (reply && msgnum>=0) {#ifdef HAVE_GETPASS	char * pw = (char *) getpass(HTDialogs[msgnum]);	if (pw) HTAlert_setReplySecret(reply, pw);	return YES;#else	/*	**  This is just to be able to get it wo work when getpass() 	**  isn't available.	*/        char buffer[100];	memset(buffer, '\0', 100);        HTPrint("%s ", HTDialogs[msgnum]);	if (!fgets(buffer, 99, stdin)) return NO;	buffer[strlen(buffer)-1] = '\0';	        /* Overwrite newline */        if (*buffer) {            HTAlert_setReplySecret(reply, buffer);            return YES;        }        return NO;#endif /* HAVE_GETPASS */    }    return NO;}/*	Username and password**	---------------------**	Prompt Username and password as an atomic operation*/PUBLIC BOOL HTPromptUsernameAndPassword (HTRequest * request, HTAlertOpcode op,					 int msgnum, const char * dfault,					 void * input, HTAlertPar * reply){    BOOL status = HTPrompt(request, op, msgnum, dfault, input, reply);    return status ?	HTPromptPassword(request, op, HT_MSG_PW, dfault, input, reply) : NO;}/*	HTError_print**	-------------**	Default function that creates an error message using HTAlert() to**	put out the contents of the error_stack messages. Furthermore, the**	error_info structure contains a name of a help file that might be put**	up as a link. This file can then be multi-linguistic.*/PUBLIC BOOL HTError_print (HTRequest * request, HTAlertOpcode op,			   int msgnum, const char * dfault, void * input,			   HTAlertPar * reply){    char * msg = HTDialog_errorMessage(request, op, msgnum, dfault, input);    if (msg) {	HTPrint("%s\n", msg);	HT_FREE(msg);    }    return YES;}/*	NOT USED - HTError_response - NOT USED!!!**	-----------------------------------------**	Default function that creates an error message using HTAlert() to**	put out the contents of the error_stack messages. Furthermore, the**	error_info structure contains a name of a help file that might be put**	up as a link. This file can then be multi-linguistic.*/PUBLIC BOOL HTError_response (HTRequest * request, HTAlertOpcode op,			      int msgnum, const char * dfault, void * input,			      HTAlertPar * reply){    return NO;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产视频一区不卡| 国产一区中文字幕| 国产精品国产自产拍高清av王其 | 成人免费视频视频在线观看免费 | 精品亚洲欧美一区| 精品国产露脸精彩对白| 欧美挠脚心视频网站| 欧美在线观看视频在线| 91啪在线观看| 欧美浪妇xxxx高跟鞋交| 欧美人xxxx| 欧美变态凌虐bdsm| 日韩精品一区二区三区视频播放| 欧美日韩中文字幕精品| 欧美日韩国产另类一区| 欧美一区二区精品| 久久精品男人的天堂| 性感美女极品91精品| 久久精品国产精品青草| 国产精品亚洲第一| av在线一区二区三区| 91视视频在线直接观看在线看网页在线看| 国产成人av在线影院| 色噜噜狠狠色综合欧洲selulu | 成人h动漫精品一区二区| 欧美亚洲综合久久| 日韩亚洲欧美在线| 亚洲欧美综合色| 精品无人码麻豆乱码1区2区| 国产在线视频一区二区| 欧美性欧美巨大黑白大战| 欧美一区永久视频免费观看| 中文字幕在线不卡一区二区三区| 亚洲综合视频在线观看| 国产99久久久国产精品潘金| 欧美亚洲国产一区二区三区va| 色88888久久久久久影院按摩 | 欧美乱妇15p| 国产成人综合视频| 国产精品综合网| 成人av电影在线| 国产自产2019最新不卡| 成人免费视频视频在线观看免费| 972aa.com艺术欧美| 欧美人与性动xxxx| 国产欧美日韩综合精品一区二区| 欧美精品一卡两卡| 精品国产精品一区二区夜夜嗨| 精品久久久三级丝袜| 亚洲欧洲在线观看av| 日本欧美一区二区| 成人黄色在线网站| 欧美性生活久久| 国产网红主播福利一区二区| 亚洲美女少妇撒尿| 精品国产一区二区精华| 国产精品国产三级国产a| 日本不卡一区二区三区高清视频| 国产麻豆视频一区二区| 91精品国产91久久综合桃花| 国产精品美女一区二区| 精品一区二区免费看| 美女mm1313爽爽久久久蜜臀| 欧美午夜片在线看| 亚洲综合久久久| 欧美午夜在线观看| 欧美国产一区二区在线观看| 久久国产麻豆精品| 欧美日韩电影在线播放| 国产一区二区三区免费| 欧美精品123区| 精品国产区一区| 久久99精品国产| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 高清在线观看日韩| 91精品国产免费久久综合| 亚洲欧美一区二区三区国产精品 | 久久99国产精品久久99果冻传媒| 日本视频在线一区| 精品1区2区在线观看| 三级不卡在线观看| 欧美一级二级三级乱码| 国产美女娇喘av呻吟久久| 亚洲人123区| 欧美老肥妇做.爰bbww| 欧美aⅴ一区二区三区视频| 精品国产伦一区二区三区观看方式 | 欧美日韩不卡在线| 国产日韩精品一区二区三区 | 在线免费亚洲电影| 国产精品无码永久免费888| 91在线国产观看| 日本v片在线高清不卡在线观看| 欧美一区二区三区男人的天堂| 捆绑变态av一区二区三区| 国产精品久久免费看| 在线视频国内自拍亚洲视频| 欧美一级日韩一级| 91麻豆国产在线观看| 精品女同一区二区| 欧美成人一级视频| 日本久久一区二区| 精品综合久久久久久8888| 国产精品无圣光一区二区| 日韩一区二区三区观看| 在线精品视频小说1| 美女视频黄频大全不卡视频在线播放| 国产亚洲欧美日韩在线一区| 色欧美片视频在线观看| 精品一区二区三区视频| 亚洲欧美区自拍先锋| 久久久久久一级片| 国产福利精品一区二区| www.成人在线| 欧美一级夜夜爽| 欧美日韩一区二区三区在线| 国产精品理论片| 国产人伦精品一区二区| 久久综合久久鬼色| 成人avav在线| 99久久综合国产精品| 日本不卡在线视频| 大白屁股一区二区视频| 国产一区二区三区黄视频| 亚洲精品videosex极品| 亚洲444eee在线观看| 日韩欧美久久久| 久久久99精品免费观看| 欧洲国产伦久久久久久久| 这里是久久伊人| 欧美日韩免费不卡视频一区二区三区| 91在线观看高清| 欧美日韩在线观看一区二区| 91精品国产手机| 国产精品乱子久久久久| 欧美精品第1页| 日本一区二区三区在线观看| 欧美激情一区二区三区四区| 国产日韩欧美高清| 欧美一三区三区四区免费在线看 | 欧美aaaaa成人免费观看视频| 国产美女精品一区二区三区| 亚洲一区二区三区四区在线观看| 奇米色777欧美一区二区| 日韩黄色免费网站| 成人av影院在线| 日韩视频免费观看高清在线视频| 亚洲天堂2014| 不卡视频一二三四| 日韩欧美一区在线| 国产精品私房写真福利视频| 亚洲成人av福利| 97国产精品videossex| 久久一区二区视频| 美女一区二区在线观看| 亚洲久草在线视频| www久久精品| 亚洲乱码国产乱码精品精98午夜| 性久久久久久久久久久久| 91蝌蚪porny九色| 中文字幕av一区二区三区高 | 欧美性猛交xxxxxx富婆| 精品一区二区在线视频| a亚洲天堂av| 欧美性生活一区| 亚洲精品视频观看| 国产在线不卡一区| 91精品国产欧美一区二区| 国产精品传媒在线| 久久99深爱久久99精品| 喷水一区二区三区| 日欧美一区二区| 亚洲人成精品久久久久久 | 欧美日韩精品一区二区| 国产精品123| 亚洲高清不卡在线| 中文字幕在线不卡一区| 欧美一区二区在线看| 国产91清纯白嫩初高中在线观看| 中文字幕二三区不卡| 色域天天综合网| 亚洲欧美激情插| 精品国产乱码91久久久久久网站| 国产成人av福利| 国产在线看一区| 粉嫩13p一区二区三区| 久久国产精品色婷婷| 免费成人在线视频观看| 99国产精品久| 成人黄页毛片网站| 欧美色综合影院| ...xxx性欧美| 国产乱国产乱300精品| www.亚洲在线| 亚洲乱码国产乱码精品精98午夜 | 欧美性xxxxx极品少妇| 69av一区二区三区| 欧美一区二区视频免费观看| 在线观看视频一区| 在线视频观看一区|