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

📄 ws_save_web.h

📁 it is about embeded system
💻 H
字号:
/***************************************************  Copyright(C), 2008 , JUST  File name: ws_save_web.h  Author: StevenZ      Version: 1.0        Date: 080930  Description: 点划式网页浏览器保存网页功能  History: 	080726  完成保存功能	080930  保存方式改为直接保存分析后的网页 ***************************************************/#ifndef _WS_SAVE_WEB_H#define _WS_SAVE_WEB_H#include "ws_share_func.h"//公用的相关函数void wdt_make_filename(struct Web_Data *wd,char sn[256]);void wdt_save_webtmp(char *sn);//void wtl_traverse_save(struct web_text_list*wtlptr,int *s_fd);//void wtl_traverse_number(struct web_text_list*wtlptr,int *flag);//void wdt_save(struct Web_Data *wd,char sn[]);void do_web_save(struct websitedata *wsd);/*save_name=title+日期+.wdt,保存的名字生成*/void wdt_make_filename(struct Web_Data *wd,char sn[256]){	time_t tt;	char *ttemp;	time(&tt);	localtime(&tt);	ttemp=ctime(&tt);	ttemp[strlen(ttemp)-1]='\0';		strcpy(sn,wd->title);	strcat(sn," ");	strcat(sn,ttemp);	strcat(sn,".wdt");}/*直接保存分析后的文件*/void wdt_save_webtmp(char *sn){	FILE *r_fp,*w_fp;	char c; 		r_fp=fopen(WEB_SAVE_R,"r+");	if(NULL==r_fp)	{		printf("can't open file %s\n",WEB_SAVE_R);		exit(1);	}	w_fp=fopen(sn,"w+");	if(NULL==w_fp)	{		printf("can't open file %s\n",sn);		exit(1);	}	while(c=fgetc(r_fp)!=EOF)	{		fputc(c,w_fp);	}	fclose(r_fp);	fclose(w_fp);}/*递归保存分析过后的网页*/void wtl_traverse_save(struct web_text_list*wtlptr,int *s_fd){	int temp,i,j;	char t1[5],t2[5],t3[10];	if(wtlptr->child)		wtl_traverse_save(wtlptr->child,s_fd);	if(wtlptr->next)		wtl_traverse_save(wtlptr->next,s_fd);	temp=wtlptr->tflag;	for(i=0;1;i++)/*int to string*/	{		t2[i]='0'+temp%10;		temp/=10;		if(temp==0)			break;	}	for(j=0;i>=0;i--,j++)	{		t1[j]=t2[i];	}	t1[j]='\0';	DPRINTF("wtlptr->tflag=%d\n",wtlptr->tflag);	DPRINTF("t1=%s\n",t1);	write(*s_fd,t1,j+1);	if(wtlptr->tflag<1)	{/*为头结点时,text为空,写入会断错误*/		write(*s_fd,wtlptr->text,strlen(wtlptr->text)+1);	}	if(wtlptr->prev)	{		strcpy(t3,"b");		temp=wtlptr->prev->sflag;		for(i=0;1;i++)		{			t2[i]='0'+temp%10;			temp/=10;			if(temp==0)				break;		}		for(j=0;i>=0;i--,j++)		{			t1[j]=t2[i];		}		t1[j]='\0';		DPRINTF("wtlptr->prev->sflag=%d\n",wtlptr->prev->sflag);		DPRINTF("t1=%s\n",t1);		strcat(t3,t1);		DPRINTF("t3=%s\n",t3);		write(*s_fd,t3,strlen(t3)+1);		return;	}	else if(wtlptr->parent)	{		strcpy(t3,"p");		temp=wtlptr->parent->sflag;		for(i=0;1;i++)		{			t2[i]='0'+temp%10;			temp/=10;			if(temp==0)				break;		}		for(j=0;i>=0;i--,j++)		{			t1[j]=t2[i];		}		t1[j]='\0';		DPRINTF("wtlptr->parent->sflag=%s\n",t1);		strcat(t3,t1);		DPRINTF("t3=%s\n",t3);		write(*s_fd,t3,strlen(t3)+1);		return;	}	else	{		strcpy(t3,"h");		temp=wtlptr->sflag;		for(i=0;1;i++)		{			t2[i]='0'+temp%10;			temp/=10;			if(temp==0)				break;		}		for(j=0;i>=0;i--,j++)		{			t1[j]=t2[i];		}		t1[j]='\0';		strcat(t3,t1);		DPRINTF("t3=%s\n",t3);		write(*s_fd,t3,strlen(t3)+1);	}}/*网页数据标记*/void wtl_traverse_number(struct web_text_list*wtlptr,int *flag){	if(wtlptr->child)		wtl_traverse_number(wtlptr->child,flag);	if(wtlptr->next)		wtl_traverse_number(wtlptr->next,flag);	wtlptr->sflag=*flag;	DPRINTF("flag=%d\n",*flag);	(*flag)++;}/*开始保存*/void wdt_save(struct Web_Data *wd,char sn[]){	int s_fd;	int flag=0,temp,i,j;	char t1[5],t2[5];		DPRINTF("save_name=%s\n",sn);	s_fd=open(sn,O_WRONLY|O_CREAT|O_TRUNC);	if(s_fd<0)	{		printf("file %s can't open!!",sn);		return;	}	DPRINTF("s_fd=%d\n",s_fd);	/*保存网页标题*/	write(s_fd,wd->title,strlen(wd->title)+1);	/*保存网页ip信息*/	write(s_fd,wd->ip_port,strlen(wd->ip_port)+1);	/*保存总结点数*/	DPRINTF("wd->text_list_head->tflag=%d\n",wd->text_list_head->tflag);	temp=wd->text_list_head->tflag;	for(i=0;1;i++)	{		t2[i]='0'+temp%10;		temp/=10;		if(temp==0)			break;	}	for(j=0;i>=0;i--,j++)	{		t1[j]=t2[i];	}	t1[j]='\0';	write(s_fd,t1,j+1);	/*保存网页内容*/	  /*遍历并编号*/	DPRINTF("traverse_number start!\n");	wtl_traverse_number(wd->text_list_head,&flag);	DPRINTF("traverse_number end!\n");	  /*遍历并保存*/	DPRINTF("traverse_save start!\n");	wtl_traverse_save(wd->text_list_head,&s_fd);	DPRINTF("traverse_save end!\n");	close(s_fd);}/*保存当前网页内容*/void do_web_save(struct websitedata *wsd){	struct Web_Data *wd=&wsd->web_data[wsd->website_head];	char save_name[256];	ShowBitmap(240,200,BGBMPSAVE);	DPRINTF("web saving...\n");	/*切换工作目录,注意有没有wdt文件夹*/	chdir("./wdt");	DPRINTF("dir changed!\n");	/*决定保存的文件名*/	wdt_make_filename(wd,save_name);	DPRINTF("wdt make name!\n");	/*开始保存*/		wdt_save_webtmp(save_name);/*直接保存分析后的文件*/	//wdt_save(wd,save_name);	//DPRINTF("wdt saved!\n");	/*切回工作目录*/	chdir("..");	DPRINTF("dir change back!\n");	DPRINTF("web saved!!\n");	ClearBitmap(240,200,BGBMPSAVE,BGBMPMAIN);}#endif

⌨️ 快捷键说明

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