#ifndef __FAR_PLUGIN_FTP_IEFTP
#define __FAR_PLUGIN_FTP_IEFTP

BOOL   FtpChmod(Connection *hConnect,LPCSTR lpszFileName,DWORD Mode);
int    FtpCmdBlock(Connection *hConnect,int block /*TRUE,FALSE,-1*/);
int    FtpConnectMessage(Connection *hConnect,int Msg,LPCSTR HostName,int BtnMsg = MNone__,int btn1 = MNone__, int btn2 = MNone__);
BOOL   FtpDeleteFile(Connection *hConnect,LPCSTR lpszFileName);
BOOL   FtpGetFtpDirectory(Connection *Connect);
BOOL   FtpFindFirstFile(Connection *hConnect,LPCSTR lpszSearchFile,FTPFileInfo* lpFindFileData,BOOL *ResetCache);
BOOL   FtpFindNextFile(Connection *hConnect,FTPFileInfo* lpFindFileData);
BOOL   FtpGetCurrentDirectory(Connection *hConnect, String& lpszCurrentDirectory);
BOOL   FtpGetFile(Connection *hConnect,LPCSTR lpszRemoteFile,LPCSTR lpszNewFile,BOOL Reget,int AsciiMode);
int    FtpGetRetryCount(Connection *hConnect);
BOOL   FtpIsResume(Connection *hConnect);
BOOL   FtpPutFile(Connection *hConnect,LPCSTR lpszLocalFile,LPCSTR lpszNewRemoteFile,BOOL Reput,int AsciiMode);
BOOL   FtpRemoveDirectory(Connection *hConnect,LPCSTR lpszDirectory);
BOOL   FtpRenameFile(Connection *hConnect,LPCSTR lpszExisting,LPCSTR lpszNew);
BOOL   FtpSetCurrentDirectory(Connection *hConnect,LPCSTR lpszDirectory);
void   FtpSetRetryCount(Connection *hConnect,int cn);
BOOL   FtpSetBreakable(Connection *hConnect,BOOL cn);
BOOL   FtpSystemInfo(Connection *hConnect,char *Buffer,int MaxSize);
BOOL   FtpKeepAlive(Connection *hConnect);
BOOL   FtpCmdLineAlive(Connection *hConnect);
int64_t  FtpFileSize(Connection *Connect,LPCSTR fnm);

//------------------------------------------------------------------------
struct FTPConnectionBreakable
{
	Connection *hConnect;
	int         fBreakable;

	FTPConnectionBreakable(Connection *cn, int Breakable)
	{
		hConnect   = cn;
		fBreakable = FtpSetBreakable(hConnect,Breakable);
		Log(("ESC: FTPBreakable %d -> %d", fBreakable, Breakable));
	}
	~FTPConnectionBreakable()
	{
		FtpSetBreakable(hConnect,fBreakable);
		Log(("ESC: FTPBreakable restore to %d", fBreakable));
	}
};

#endif
