structures.cpp
来自「一个支持FTP,SFTP的客户端程序」· C++ 代码 · 共 122 行
CPP
122 行
// FileZilla - a Windows ftp client
// Copyright (C) 2002-2004 - Tim Kosse <tim.kosse@gmx.de>
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include "stdafx.h"
t_directory::t_directory()
{
direntry=0;
num=0;
bCached=FALSE;
}
t_directory::~t_directory()
{
if (direntry)
delete [] direntry;
}
t_directory& t_directory::operator=(const t_directory &a)
{
if (&a==this)
return *this;
if (direntry)
delete [] direntry;
direntry=0;
path=a.path;
num=a.num;
server=a.server;
if (num)
direntry=new t_directory::t_direntry[num];
for (int i=0;i<num;i++)
direntry[i]=a.direntry[i];
bCached=a.bCached;
return *this;
}
t_directory::t_direntry::t_direntry()
{
bUnsure=TRUE;
bLink=FALSE;
EntryTime=CTime::GetCurrentTime();
}
t_directory::t_direntry::t_date::t_date()
{
hasdate=hastime=FALSE;
}
void t_directory::Merge(const t_directory &directory, CTime MergeTime)
{
std::list<t_direntry> AddList;
if (!num)
{
if (!directory.num)
return;
for (int i=0; i<directory.num; i++)
if (directory.direntry[i].EntryTime>=MergeTime)
AddList.push_back(directory.direntry[i]);
}
else
{
ASSERT(num>0 && directory.num>=0);
int i;
CTime oldestTime=CTime::GetCurrentTime();
for (i=0; i<num; i++)
if (direntry[i].EntryTime<oldestTime)
oldestTime=direntry[i].EntryTime;
for (i=0;i<directory.num;i++)
{
int j;
for (j=0; j<num; j++)
{
if (directory.direntry[i].lName==direntry[j].lName)
{
if (directory.direntry[i].dir != direntry[j].dir)
break;
if (directory.direntry[i].EntryTime > direntry[j].EntryTime)
direntry[j]=directory.direntry[i];
break;
}
}
if (j==num && directory.direntry[i].EntryTime>=oldestTime)
AddList.push_back(directory.direntry[i]);
}
}
if (AddList.empty())
return;
t_direntry *tmp=direntry;
direntry=new t_direntry[num + AddList.size()];
int i;
for (i=0; i<num; i++)
direntry[i] = tmp[i];
for (std::list<t_direntry>::iterator iter=AddList.begin(); iter!=AddList.end(); iter++, i++)
direntry[i] = *iter;
num+=AddList.size();
delete [] tmp;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?