管理员
  
- 积分
- 165377
- 金钱
- 165377
- 注册时间
- 2010-12-1
- 在线时间
- 2111 小时
|
发表于 2016-10-13 10:22:13
|
显示全部楼层
这是文件夹复制函数哦。在我们综合实验的common.c里面,有参考代码:
[mw_shl_code=cpp,true]//系统更新
//fcpymsg:百分比显示函数
//src:文件来源,"0:",SD卡;"2:",U盘.
//返回值:0,正常
// 其他,错误,0XFF强制退出了
u8 app_system_update(u8(*fcpymsg)(u8*pname,u8 pct,u8 mode),u8* src)
{
u32 totsize=0;
u32 cpdsize=0;
u8 res=0;
u8 *p_app;
u8 *p_spb;
u8 *p_lwip;
u8 rval;
p_app=gui_memin_malloc(100);
p_spb=gui_memin_malloc(100);
p_lwip=gui_memin_malloc(100);
if(p_lwip==NULL)
{
gui_memin_free(p_app);
gui_memin_free(p_spb);
gui_memin_free(p_lwip);
return 1;//内存申请失败
}
sprintf((char*)p_app,"%s%s",src,APP_SYSTEM_APPPATH);
sprintf((char*)p_spb,"%s%s",src,APP_SYSTEM_SPBPATH);
sprintf((char*)p_lwip,"%s%s",src,APP_SYSTEM_LWIPPATH);
totsize+=exf_fdsize(p_app);//得到三个文件夹的总大小
totsize+=exf_fdsize(p_spb);
totsize+=exf_fdsize(p_lwip);
printf("totsize:%d\r\n",totsize);
f_mkdir((const TCHAR *)APP_SYSTEM_DSTPATH);//强制创建目标文件夹
res=exf_fdcopy(fcpymsg,p_app,(u8*)APP_SYSTEM_DSTPATH,&totsize,&cpdsize,1);
if(res)
{
if(res!=0xff)rval=1; //第一阶段复制出错
else rval=0XFF; //强制退出
}else //第一阶段OK,启动第二阶段
{
res=exf_fdcopy(fcpymsg,p_spb,(u8*)APP_SYSTEM_DSTPATH,&totsize,&cpdsize,1);
if(res)
{
if(res!=0xff)rval=2; //第二阶段复制出错
else rval=0XFF; //强制退出
}else //第二阶段OK,启动第三阶段
{
res=exf_fdcopy(fcpymsg,p_lwip,(u8*)APP_SYSTEM_DSTPATH,&totsize,&cpdsize,1);
if(res)
{
if(res!=0xff)rval=3; //第三阶段复制出错
else rval=0XFF; //强制退出
}else //第三阶段OK,启动第四阶段
{
rval=0; //整个过程无错误,无强制退出
}
}
}
gui_memin_free(p_app);
gui_memin_free(p_spb);
gui_memin_free(p_lwip);
return rval;
}[/mw_shl_code]
|
|