⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 www.c

📁 web browser
💻 C
📖 第 1 页 / 共 2 页
字号:
                nowAt = nowAt_text;            }            ptr++;            continue;        }        if (*ptr == ' ' || *ptr == '\t') {            *ptr = 0;            ptr++;            nowAt = nowAt_start;            continue;        }        if ((*ptr == '\'' || *ptr == '\"' || *ptr == '`') && nowAt == nowAt_start) {            lookFor = *ptr;            nowAt = nowAt_start;            ptr++;            continue;        }        if (nowAt == nowAt_start) {            argv[argc++] = ptr;            nowAt = nowAt_text;        }        ptr++;    }}extern int main(int, char**);extern HTView * HTView_create(char* name, int rows, int cols, LineMode * pLm);extern BOOL HTView_destroy(HTView * pView);int PASCAL WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow){    int argc;    char** argv;    WNDCLASS wc = {    0, //UINT    style    monitorWndProc, //WNDPROC	lpfnWndProc    0, //int         cbClsExtra    sizeof(long), //int         cbWndExtra - HTRequest* and LineMode*    hInstance, //HINSTANCE	hInstance - fill in later    LoadIcon(hInstance, MAKEINTRESOURCE(IDI_WWW)), //HICON	hIcon    LoadCursor(NULL, IDC_ARROW), //HCURSOR	hCursor    (HBRUSH)(COLOR_WINDOW+1), //HBRUSH	hbrBackground    MAKEINTRESOURCE(IDM_SNP), //LPCSTR	lpszMenuName    WWWClassName}; //LPCSTR	lpszClassName    RegisterClass(&wc); // don't check error as class may be laying around from previously use    if (!(PMonitorView = HTView_create("WWW Console", 50, 80, 0)))    	return (0);    HTTrace_setCallback(&OutputConsole);    argc = makeArgcArgv(hInstance, &argv, lpszCmdLine);    main(argc, argv);    HTView_destroy(PMonitorView);    PMonitorView = 0;    return (0);}PUBLIC HTView * HTView_create(char* name, int rows, int cols, LineMode * pLm){    HTView * pView;    DWORD style;static nextX = 0;static nextY = 0;    if ((pView = (HTView *)HT_CALLOC(1, sizeof(HTView))) == NULL || 	(pView->pScrollInfo = (ScrollInfo_t *)HT_CALLOC(1, sizeof(ScrollInfo_t))) == NULL || 	(pView->pFontInfo = (FontInfo_t *)HT_CALLOC(1, sizeof(FontInfo_t))) == NULL || 	(pView->pScrollInfo->screenBuf = (char *)HT_CALLOC(rows * cols, sizeof(char))) == NULL)	HT_OUTOFMEM("HTView");    pView->rows = pView->pScrollInfo->maxRows = rows;    pView->cols = pView->pScrollInfo->maxCols = cols;    pView->pScrollInfo->control = Scroll_control_crBegetsLf|Scroll_control_lfBegetsCr|Scroll_control_autoWrap|Scroll_control_BSbegetsSpace;    if (Font_SetupInfo(pView->pFontInfo) || Scroll_SetupInfo(pView->pScrollInfo, rows, cols))	return (0);    style = WS_CAPTION | WS_VISIBLE | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX;    style |= PMonitorView ? WS_POPUPWINDOW : WS_POPUPWINDOW;    pView->pLm = pLm;//    pView->hWnd = CreateWindow(WWWClassName, pView->name, style, CW_USEDEFAULT, CW_USEDEFAULT,     pView->hWnd = CreateWindow(WWWClassName, pView->name, style, nextX, nextY, 				CW_USEDEFAULT, CW_USEDEFAULT, 0, 0, HInstance, (LPVOID)pView);    nextX += 400;    nextY += 100;    return pView;}PUBLIC BOOL HTView_destroy(HTView * pView){    DestroyWindow(pView->hWnd);    Scroll_DestroyInfo(pView->pScrollInfo);    Font_DestroyInfo(pView->pFontInfo);	return YES;}/* ------------------------------------------------------------------------- *//*  This was copied from HTDialog.c, will be put into resource or something  *//*** Dialog Messages*/PRIVATE 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};/* ------------------------------------------------------------------------- */#if 0typedef enum {Dialog_PROMPT, Dialog_CONFIRM, Dialog_Passwd, Dialog_UserPasswd} Dialog_type;#endiftypedef struct {    HTRequest * request;    HTAlertOpcode op;    int msgnum;    const char * dfault;    void * input;    HTAlertPar * reply;    int type;    char * buf;    size_t bufLen;    WPARAM * pWParam;} DialogParms;BOOL PASCAL AlertDialogProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam){    DialogParms * pParms = (DialogParms *)GetProp(hDlg, MAKEINTATOM(0x100));    switch (uMsg) {	case WM_INITDIALOG: {	    pParms = (DialogParms *)lParam;	    SetProp(hDlg, MAKEINTATOM(0x100), (HANDLE)pParms);	    SetDlgItemText(hDlg, IDC_PROMPT1, HTDialogs[pParms->msgnum]);	    if (pParms->type == IDD_CONFIRM || pParms->type == IDD_PROMPT) {	    }	    if (pParms->type == IDD_PROMPT) {		if (pParms->dfault)		    SetDlgItemText(hDlg, IDC_TEXT, pParms->dfault);	    }	    if (pParms->type == IDD_PASSWD || pParms->type == IDD_USERPASSWD) {		if (pParms->dfault)		    SetDlgItemText(hDlg, IDC_USER, pParms->dfault);	    }	    return TRUE;	}    case WM_COMMAND:	*pParms->pWParam = LOWORD(wParam);	switch (LOWORD(wParam)) {	    case IDOK:		if (pParms->type == IDD_PROMPT) {		    char space[256];		    GetDlgItemText(hDlg, IDC_TEXT, space, sizeof(space) - 1);		    HTAlert_setReplyMessage(pParms->reply, space);		}		if (pParms->type == IDD_PASSWD || pParms->type == IDD_USERPASSWD) {		    char space[256];		    GetDlgItemText(hDlg, IDC_PASSWD, space, sizeof(space) - 1);		    HTAlert_setReplySecret(pParms->reply, space);		}		if (pParms->type == IDD_USERPASSWD) {		    char space[256];		    GetDlgItemText(hDlg, IDC_USER, space, sizeof(space) - 1);		    HTAlert_setReplyMessage(pParms->reply, space);		}		EndDialog(hDlg, TRUE);		return (TRUE);	    case IDCANCEL:		EndDialog(hDlg, TRUE);		return (TRUE);	}	break;    case WM_DESTROY:	RemoveProp(hDlg, MAKEINTATOM(0x100));	break ;    }    return (FALSE);} // AlertDialogProc()PRIVATE int DialogParms_do(HTRequest * request, HTAlertOpcode op, 				      int msgnum, const char * dfault, 				      void * input, HTAlertPar * reply, 				      int resource, 				      WPARAM * pWParam, 				      HTRequest * pRequest){    int ret;    HTView * pView;    DialogParms * pParms;    pView = LineMode_getView(Context_getLineMode(pRequest));    if ((pParms = (DialogParms *)HT_CALLOC(1, sizeof(DialogParms))) == NULL)	HT_OUTOFMEM("DialogParms");    pParms->request = request;    pParms->op = op;    pParms->msgnum = msgnum;    pParms->dfault = dfault;    pParms->input = input;    pParms->reply = reply;    pParms->type = resource;    pParms->pWParam = pWParam;    ret = Lib_ModalDialogBoxParam(HInstance, MAKEINTRESOURCE(resource), pView->hWnd, 				  (DLGPROC)AlertDialogProc, (LPARAM)pParms);    HT_FREE(pParms);    return ret;}PUBLIC BOOL HTProgress (HTRequest * request, HTAlertOpcode op,                                int msgnum, const char * dfault, void * input,                                HTAlertPar * reply){    static int inside = 0;    char space[256];    HTView * pView;    pView = LineMode_getView(Context_getLineMode(request));    if (!request) {	if (WWWTRACE) HTTrace("HTProgress.. Bad argument\n");	return NO;    }    switch (op) {      case HT_PROG_DNS:	sprintf(space, "Looking up %s\n", (char *) input);	break;      case HT_PROG_CONNECT:	sprintf(space, "Contacting host...\n");	break;      case HT_PROG_ACCEPT:	sprintf(space, "Waiting for connection...\n");	break;      case HT_PROG_READ:	{	    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];		HTNumToStr((unsigned long) cl, buf, 10);		sprintf(space, "Read (%d%% of %s)\n", (int) pro, buf);	    } else		sprintf(space, "Reading...\n");	}	break;      case HT_PROG_WRITE:	if (HTRequest_isPostWeb(request)) {	    HTParentAnchor *anchor=HTRequest_anchor(HTRequest_source(request));	    long cl = HTAnchor_length(anchor);	    if (cl > 0) {		long b_write = HTRequest_bytesWritten(request);		double pro = (double) b_write/cl*100;		char buf[10];		HTNumToStr((unsigned long) cl, buf, 10);		sprintf(space, "Written (%d%% of %s)\n", (int) pro, buf);	    } else		sprintf(space, "Writing...\n");	} else	    return YES;	break;      case HT_PROG_DONE:	sprintf(space, "Finished\n");	break;      case HT_PROG_OTHER:	sprintf(space, "Waiting for HT_FREE socket...\n");	break;      default:	sprintf(space, "UNKNOWN PROGRESS STATE\n");	break;    }    if (inside) return YES;    inside = 1;    MessageBox(pView->hWnd, space, "HTProgress", MB_OK);    inside = 0;    return YES;}PUBLIC BOOL HTError_print (HTRequest * request, HTAlertOpcode op,			   int msgnum, const char * dfault, void * input,			   HTAlertPar * reply){    HTList *cur = (HTList *) input;    HTError *pres;    HTErrorShow showmask = HTError_show();    HTChunk *msg = NULL;    int code;    if (WWWTRACE) HTTrace("HTError..... Generating message\n");    if (!request || !cur) return NO;    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 {		    if (WWWTRACE)			HTTrace("HTError..... Unknown Classification of Error (%d)...\n", severity);		    HTChunk_delete(msg);		    return NO;		}		/* Error number */		if ((code = HTErrors[index].code) > 0) {		    char buf[10];		    sprintf(buf, "%d ", code);		    HTChunk_puts(msg, buf);		}	    } else		HTChunk_puts(msg, "\nReason: ");	    HTChunk_puts(msg, HTErrors[index].msg);	    /* Error message */	    if (showmask & HT_ERR_SHOW_PARS) {		 /* Error parameters */		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, ") ");		}	    }	    if (showmask & HT_ERR_SHOW_LOCATION) {	   /* Error 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;	}    }    if (msg) {	HTChunk_putc(msg, '\n');	HTTrace("WARNING: %s\n", HTChunk_data(msg));	HTChunk_delete(msg);    }    return YES;}PUBLIC BOOL HTConfirm (HTRequest * request, HTAlertOpcode op,                                int msgnum, const char * dfault, void * input,                                HTAlertPar * reply){    WPARAM wParam = 0;    int ret;    ret = DialogParms_do(request, op, msgnum, dfault, input, reply, 			 IDD_CONFIRM, &wParam, request);    return wParam == IDOK;}PUBLIC BOOL HTPrompt (HTRequest * request, HTAlertOpcode op,                                int msgnum, const char * dfault, void * input,                                HTAlertPar * reply){    WPARAM wParam = 0;    int ret;    ret = DialogParms_do(request, op, msgnum, dfault, input, reply, 			 IDD_PROMPT, &wParam, request);    return wParam == IDOK;}PUBLIC BOOL HTPromptPassword (HTRequest * request, HTAlertOpcode op,                                int msgnum, const char * dfault, void * input,                                HTAlertPar * reply){    WPARAM wParam = 0;    int ret;    ret = DialogParms_do(request, op, msgnum, dfault, input, reply, 			 IDD_PASSWD, &wParam, request);    return wParam == IDOK;}PUBLIC BOOL HTPromptUsernameAndPassword (HTRequest * request, HTAlertOpcode op,                                int msgnum, const char * dfault, void * input,                                HTAlertPar * reply){    WPARAM wParam = 0;    int ret;    ret = DialogParms_do(request, op, msgnum, dfault, input, reply, 			 IDD_USERPASSWD, &wParam, request);    return wParam == IDOK;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -