Example #1
0
E_XMLRET IXMLRW::init(const CString& strFilePath)
{
	if (NULL == m_pXmlObj)
	{	
		CString strDllPath = CString(GetCurPath()) + _T("\\XMLRW.dll");
		m_hDll = LoadLibrary(strDllPath);

		if (!m_hDll)
		{
			return XRET_LOADDLLFAIL;
		}
		GETXMLOBJECT pfnGetObj = (GETXMLOBJECT)GetProcAddress(m_hDll, "GetXmlObj");
		
		if (!pfnGetObj)
		{
			return XRET_LOADDLLFAIL;
		}
		m_pXmlObj = pfnGetObj();

		if (!m_pXmlObj)
		{
			return XRET_LOADDLLFAIL;
		}
	}
	m_pXmlObj->InitialPath(strFilePath);

	return XRET_SUCCESS ;
}
//*=================================================================================
//*原型: TSmartServer::TSmartServer()
//*功能: 前置采集服务器类
//*参数: 无
//*返回: 无
//*说明: 前置采集服务器类
//*=================================================================================
TSmartServer::TSmartServer()
{
	nSmartTimeOut = 0 ;
	ZeroMemory(SmartTimeOut, sizeof(SmartTimeOut));

	m_DocList.Clear();
	m_TaskList.Clear();

	gethostname(m_SmartInfo.szHostName, 128);
	strcpy(m_SmartInfo.szVersion, "1.0");

	m_SmartInfo.nWorkMode = 1 ;
	strcpy(m_SmartInfo.szDateTime, "");

	m_SmartInfo.nTick = 0;
	m_SmartInfo.nDevLevel1 = 0;
	m_SmartInfo.nDevLevel1Ack = 0;
	m_SmartInfo.nDevLevel2 = 0;
	m_SmartInfo.nDevLevel2Ack = 0;
	nTotalMemory=0;
	nUseMemory=0;
	nFreeMemory=0;

	TCHAR  szDir[MAX_PATH];

	GetCurPath(szDir);
	wsprintf(szLogDir, "%s\\服务器日志", szDir);
	CreateDirectory(szLogDir, NULL);
}
Example #3
0
void FTP::ExecuteQueue(QueueExecOptions* op)
{
	if(!QuequeSize) return;

	FTPHost   oHost = Host;
	BOOL      oShowHosts = ShowHosts;
	char      oDir[MAX_PATH];
	GetCurPath(oDir, ARRAYSIZE(oDir));
	OverrideMsgCode = ocNone;
	ExecuteQueueINT(op);
	OverrideMsgCode = ocNone;

//Restore plugin state
	if(op->RestoreState)
	{
		if(oShowHosts)
		{
			BackToHosts();
		}
		else if(!Host.CmpConnected(&oHost))
		{
			Host = oHost;
			FullConnect();
			ResetCache=TRUE;
		}

		SetDirectory(oDir,0);
		Invalidate();
	}
}
Example #4
0
LPCSTR FTP::InsertAnotherToQueue(void)
{
	FP_SizeItemList backup,il;
	PanelInfo       pi;
	FTPCopyInfo     ci;

	if(!hConnect || ShowHosts)
		return FMSG(MQErrUploadHosts);

	if(!FP_Info->Control(INVALID_HANDLE_VALUE, FCTL_GETANOTHERPANELINFO, &pi))
		return FMSG(MErrGetPanelInfo);

	if(pi.SelectedItemsNumber <= 0 ||
	        pi.SelectedItemsNumber == 1 && !IS_FLAG(pi.SelectedItems[0].Flags,PPIF_SELECTED))
		return FMSG(MErrNoSelection);

	if(pi.PanelType != PTYPE_FILEPANEL || pi.Plugin)
		return FMSG(MErrNotFiles);

	backup.Add(pi.SelectedItems, pi.SelectedItemsNumber);
	BOOL rc = ExpandList(backup.Items(), backup.Count(), &il, FALSE);
	FP_Screen::FullRestore();

	if(!rc)
		return GetLastError() == ERROR_CANCELLED ? NULL : FMSG(MErrExpandList);

	ci.Download = FALSE;
	GetCurPath(ci.DestPath);
	ListToQueque(&il, &ci);
	return NULL;
}
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
TSmartRegister::TSmartRegister()
{
	TCHAR  szDir[MAX_PATH];
	GetCurPath(szDir);
	wsprintf(strServerINI, "%s\\SmartServer.ini", szDir);

	Reset();
}
Example #6
0
CString& CGlobalVariable::GetStylesDir()
{
	if(m_strStylesDir.IsEmpty())
	{
		m_strStylesDir = GetCurPath() + DIR_STYLES;
		CreateDirectory(m_strStylesDir, NULL);
	}

	return m_strStylesDir;
}
Example #7
0
CString& CGlobalVariable::GetTemplatesDir()
{
	if(m_strTemplatesDir.IsEmpty())
	{
		m_strTemplatesDir = GetCurPath() + DIR_TEMPLATES;
		CreateDirectory(m_strTemplatesDir, NULL);
	}

	return m_strTemplatesDir;
}
bool TSmartRegister::GetModule(char *pszFileName, int nIndex)
{
	TCHAR  szItem[64];
	TCHAR  szFileName[MAX_PATH];

	wsprintf(szItem, "MODULE%d", nIndex);
	if( GetPrivateProfileString("MODULE", szItem, "", szFileName, MAX_PATH, strServerINI) > 0 )
	{
		TCHAR  szDir[MAX_PATH];
		GetCurPath(szDir);
		sprintf(pszFileName, "%s\\%s", szDir, szFileName);
		return true;
	}

	return false;
}
/////////////////////////////////////////////////////////////////////////////
// CApplicationApp construction
CApplicationApp::CApplicationApp()
{
	TCHAR szPath[MAX_PATH];

	GetCurPath(szPath);

	if( szPath[lstrlen(szPath)-1] == '\\' )
	{
		wsprintf(szErrorLogPath, "%设备日志", szPath);
		wsprintf(szDataLogPath,  "%s终端数据", szPath);
		wsprintf(szTempPath,  "%stemp", szPath);
	}
	else
	{
		wsprintf(szErrorLogPath, "%s\\设备日志", szPath);
		wsprintf(szDataLogPath,  "%s\\终端数据", szPath);
		wsprintf(szTempPath,  "%s\\temp", szPath);
	}

	CreateDirectory(szErrorLogPath, NULL);
	CreateDirectory(szTempPath, NULL);
}
Example #10
0
//----------------------------------------------------------------------------
//
//  Function:   ReadSmartTaskPlan
//
//  Synopsis:   得到金仕达主动发出的任务
//
//  Arguments:  pTaskPlan -- 任务计划内容
//
//  History:    2004-09-20   ZhangWei   Created
//
//  Notes:
//
//----------------------------------------------------------------------------
long __stdcall ReadSmartTaskPlan(TSSmartTaskPlan *pTaskPlan)
{

	AFX_MANAGE_STATE(AfxGetStaticModuleState());

	//10分钟发一次设备心跳监控任务 add by dengjun date 20051116	
	static int	  flag =0;
	static DWORD  StartTime=GetTickCount();
	static DWORD  StartTimeStatus=GetTickCount();
	static DWORD  TIMESENDTICK=0;
	static DWORD  TIMESENDSTATUS=0;
	bool bResult = false;	
	char buffer[10240];
	int  nLen = sizeof(buffer);
	char omsg[256];
	bool bEnd = false ;
	
	ST_CPACK apack;
	ST_PACK  apackarray[60];
	int nRow = 0 ;
	int nlen = 0 ;

	WriteLog(".....................ReadSmartTaskPlan...................................");

	DWORD endTime      =GetTickCount()-StartTime;
	DWORD endTimeStuats=GetTickCount()-StartTimeStatus;
	//第一次运行时,需要从配置文件中获取心跳时间间隔
	if( !flag )
	{		
		char  szDir[MAX_PATH];
		char  strServerINI[MAX_PATH];

		memset(szDir,0x00,sizeof szDir);
		memset(&apack, 0x00,sizeof(apack));
		memset(strServerINI,0x00,sizeof strServerINI);
		flag = 1;

		GetCurPath(szDir);
		sprintf(strServerINI, "%s\\SmartServer.ini", szDir);		

		//取黑名单版本及时钟(默认10分钟)
		TIMESENDTICK = GetPrivateProfileInt("SYSTEM", "TICKTIME", 600, strServerINI);
		TIMESENDTICK = 1000*TIMESENDTICK;		

		//终端状态时间(默认为10秒)
		TIMESENDSTATUS = GetPrivateProfileInt("SYSTEM", "STATUSTIME", 10, strServerINI);
		TIMESENDSTATUS = 1000*TIMESENDSTATUS;		
		//WriteLog("ReadSmartTaskPlan()心跳时间[%ld毫秒],发送终端状态时间[%ld毫秒],[%s]\n",TIMESENDTICK,TIMESENDSTATUS,strServerINI);
	}
	
	printf("------------向金仕达获取任务-------------[时间差=%ld::等待时间=%ld]\n",endTime,TIMESENDTICK);
	ZeroMemory(pTaskPlan, sizeof(TSSmartTaskPlan));
	pTaskPlan->nRepeatTime  = 1 ;   //持续多长时间(分钟)
	pTaskPlan->nRepeatTimes = 1;    //重复次数
	
	memset(omsg,  0x00, sizeof omsg  );
	memset(buffer,0x00, sizeof buffer);
	memset(&apack,0x00,sizeof apack  );
	memset(apackarray,0x00,sizeof apackarray);
	
	while( !bEnd )
	{
		nLen = sizeof(buffer);
		memset(buffer, 0, sizeof(buffer));		
		nlen = RecvDataPro(buffer, nLen,10000);
		if( nlen <= 0 )
		{
			return RET_SYSERROR;
		}		
		nRow = 0 ;
		memset(&apack, 0, sizeof(apack));
		memset(apackarray, 0, sizeof(apackarray));
		BOOL bRet=DecodeBufWithArray((unsigned char*)buffer,nlen,&apack,apackarray,&nRow,omsg);	
		if(bRet == FALSE)
		{
			WriteLog("应答数据包报文错误Ret=%d\n", bRet);
			printf("应答数据包报文错误Ret=%d\n", bRet);
			return RET_SYSERROR;
		}
		if(apack.head.retCode)
		{
			WriteLog("金仕达后台业务处理失败,返回码retcode=%d,返回信息[%s]\n",apack.head.retCode,apack.pack.vsmess);
			printf("金仕达后台业务处理失败,返回码retcode=%d,返回信息[%s]\n",apack.head.retCode,apack.pack.vsmess);
			return RET_SYSERROR;//XXX为相应的错误码,也可以直接 return  0;
		}
		if(apack.pack.lvol1<=0)
		{	
			WriteLog("金仕达没有任务下达!!!\n");
			//当没有任务且已经到了发送心跳的时间则发送心跳
			// add by dengjun 20051117 心跳任务			
			if( endTime >= TIMESENDTICK )
			{
				//WriteLog("由于已经到发送心跳包时间,且金仕达没有任务,开始发送终端心跳包............\n");
				memset(&apack,     0x00, sizeof apack    );
				memset(&pTaskPlan, 0x00, sizeof pTaskPlan);
				StartTime			   = GetTickCount();		
				apack.pack.lvol2       = 930057;
				apack.pack.lvol1       = GetTickCount();
				apack.head.RequestType = 930057;		
				nRow=1;
				pTaskPlan->nTask	   = 0;
				//2005-12-20 modified by wenjian 
				bResult=theApp.MakeFirstTaskPlan(pTaskPlan, &apack, apackarray, nRow);						
				return (bResult?RET_OK:RET_SYSERROR);
			}			
			// add by dengjun 20060111 取设备状态
			if( endTimeStuats >= TIMESENDSTATUS)
			{
				//WriteLog("由于已经到发送取终端状态时间,且金仕达没有任务,开始发送终端数据包............\n");
				memset(&apack,     0x00, sizeof apack    );
				memset(&pTaskPlan, 0x00, sizeof pTaskPlan);

				StartTimeStatus		   = GetTickCount();		
				apack.pack.lvol2       = 930058;
				apack.pack.lvol1       = GetTickCount();
				apack.head.RequestType = 930058;		
				nRow=1;
				pTaskPlan->nTask	   = 0;				
				bResult=theApp.MakeFirstTaskPlan(pTaskPlan, &apack, apackarray, nRow);						
				return (bResult?RET_OK:RET_SYSERROR);
			}									
			return RET_NOTASK;		//金仕达没有任务下达
		}
		if( apack.head.firstflag == 1 )
		{
			bResult = theApp.MakeFirstTaskPlan(pTaskPlan, &apack, apackarray, nRow);
		}
		else
		{	
			bResult = theApp.MakeNextTaskPlan(pTaskPlan, &apack, apackarray, nRow);
		}

		if( !apack.head.nextflag )	bEnd = true ;
	}

	//取终端设备状态
	if( endTimeStuats >= TIMESENDSTATUS)
	{
		//WriteLog("由于已经到发送取终端状态时间,且金仕达没有任务,开始发送终端数据包............\n");
		memset(&apack,     0x00, sizeof apack    );		
		StartTimeStatus		   = GetTickCount();		
		apack.pack.lvol2       = 930058;
		apack.pack.lvol1       = GetTickCount();
		apack.head.RequestType = 930058;		
		nRow=1;
		bResult=theApp.MakeFirstTaskPlan(pTaskPlan, &apack, apackarray, nRow);								
	}				
	
	// add by dengjun 20051117 心跳任务			
	if( endTime >= TIMESENDTICK )
	{
		//WriteLog("由于已经到发送心跳包时间,收到金仕达任务,开始发送终端心跳包,与心跳任务一起处理............\n");
		memset(&apack, 0x00,sizeof(apack));		
		StartTime			   = GetTickCount();		
		apack.pack.lvol2       = 930057;
		apack.pack.lvol1       = GetTickCount();
		apack.head.RequestType = 930057;		
		nRow=1;
		bResult = theApp.MakeFirstTaskPlan(pTaskPlan, &apack, apackarray, nRow);						
	}				
	return (bResult?RET_OK:RET_SYSERROR);
}
Example #11
0
int FTP::ExpandList(PluginPanelItem *pi,int icn,FP_SizeItemList* il,BOOL FromPlugin,ExpandListCB cb,LPVOID Param)
{
	PROC(("ExpandList","cn:%d, ilcn:%d/%d, %s, cb:%08X",icn,il ? il->Count() : 0,il ? il->MaxCount : 0,FromPlugin?"PLUGIN":"LOCAL",cb))
	BOOL             pSaved  = Host.Home[0] && SelectFile.Length();
	BOOL             old_ext = hConnect ? hConnect->Host.ExtCmdView : FALSE;
	FTPCurrentStates olds = CurrentState;
	int              rc;
	{
		FTPConnectionBreakable _brk(hConnect,FALSE);
		CurrentState  = fcsExpandList;

		if(hConnect)
		{
			hConnect->Host.ExtCmdView = FALSE;
			hConnect->CurrentState    = fcsExpandList;
		}

		if(!pSaved)
			SaveUsedDirNFile();

		rc = ExpandListINT(pi,icn,il,FromPlugin,cb,Param);

		if(hConnect)
		{
			hConnect->Host.ExtCmdView = old_ext;
			hConnect->CurrentState    = olds;
		}

		CurrentState  = olds;
	}
	Log(("ExpandList rc=%d",rc));
#if defined(__FILELOG__)

	if(rc)
	{
		Log(("Expand succ ends containing:"));

		if(il)
			LogPanelItems(il->Items(), il->Count());
		else
			Log(("Files list does not contains files"));
	}

#endif

	if(!pSaved)
	{
		if(!rc)
		{
			SaveLastError _err;

			if(Host.Home[0])
			{
				char str[MAX_PATH];
				GetCurPath(str, ARRAYSIZE(str));

				if(StrCmpI(str, Host.Home) != 0)
					SetDirectory(Host.Home,FP_LastOpMode);
			}
		}
		else
		{
			SelectFile   = "";
			Host.Home[0] = 0;
		}
	}

	return rc;
}
Example #12
0
void FTP::GetOpenPluginInfo(struct OpenPluginInfo *pi)
{
	PROC(("GetOpenPluginInfo","%s cc: %d pi: %p hC:%p",ShowHosts?"HOSTS":"FTP",CallLevel,pi,hConnect));
	PanelInfo thisPInfo = { 0 };
	static int inside = 0;
	inside++;
	memset(pi, 0, sizeof(*pi));
	pi->StructSize = sizeof(*pi);

//---------------- FLAGS
	if(!hConnect || ShowHosts)
		pi->Flags = OPIF_SHOWPRESERVECASE | OPIF_USEHIGHLIGHTING;
	else
		pi->Flags = OPIF_ADDDOTS | OPIF_USEFILTER | OPIF_USESORTGROUPS | OPIF_USEHIGHLIGHTING |
		            OPIF_SHOWPRESERVECASE;

	Log(("SetFlags %08X", pi->Flags));
//---------------- HOST, CURDIR
	static String curDir;
	GetCurPath(curDir);
	pi->HostFile = NULL;
	pi->CurDir   = curDir.c_str();
//---------------- TITLE
	pi->PanelTitle = PanelTitle;

	if(ShowHosts)
		_snprintf(PanelTitle, ARRAYSIZE(PanelTitle),
		          " FTP: %s ", pi->CurDir);
	else
		_snprintf(PanelTitle, ARRAYSIZE(PanelTitle),
		          (hConnect&&hConnect->Host.ServerType==FTP_TYPE_MVS)? " FTP: %s@%s/%s ": " FTP: %s@%s%s ",
		          Host.User, Host.Host, pi->CurDir);

	if(inside > 1)
	{
		inside--;
		return;
	}

//---------------- FORMAT
	static String Format;

	if(ShowHosts)
		Format = "//Hosts/";
	else
		Format.printf("//%s/",Host.Host);

	Format.cat(pi->CurDir + (*pi->CurDir == '/' || *pi->CurDir == '\\'));
	pi->Format = Format.c_str();
//---------------- INFO LINES
	static struct InfoPanelLine InfoLines[7];
	char *m;
	memset(InfoLines, 0, sizeof(InfoLines));
//Client
	StrCpy(InfoLines[0].Text,FP_GetMsg(MFtpInfoFTPClient),ARRAYSIZE(InfoLines[0].Text));
	InfoLines[0].Separator = TRUE;
	StrCpy(InfoLines[1].Text,FP_GetMsg(MFtpInfoHostName),ARRAYSIZE(InfoLines[0].Text));
	StrCpy(InfoLines[1].Data,Host.HostName,ARRAYSIZE(InfoLines[0].Data));
	StrCpy(InfoLines[2].Text,FP_GetMsg(MFtpInfoHostDescr),ARRAYSIZE(InfoLines[0].Text));
	StrCpy(InfoLines[2].Data,Host.HostDescr,ARRAYSIZE(InfoLines[0].Data));
	StrCpy(InfoLines[3].Text,FP_GetMsg(MFtpInfoHostType),ARRAYSIZE(InfoLines[0].Text));

	if(hConnect)
		FtpSystemInfo(hConnect,InfoLines[3].Data,ARRAYSIZE(InfoLines[0].Data));
	else
		InfoLines[3].Data[0] = 0;

//Titles
	StrCpy(InfoLines[4].Text,FP_GetMsg(MFtpInfoFtpTitle),ARRAYSIZE(InfoLines[0].Text));
	InfoLines[4].Separator=TRUE;
	InfoLines[5].Text[0] = 0;

	if(hConnect)
		StrCpy(InfoLines[5].Data, hConnect->GetStartReply(), ARRAYSIZE(InfoLines[5].Data));
	else
		InfoLines[5].Data[0] = 0;

	m = strpbrk(InfoLines[5].Data,"\n\r");

	if(m) *m = 0;

	StrCpy(InfoLines[6].Text, FP_GetMsg(MResmResume), ARRAYSIZE(InfoLines[0].Text));

	if(hConnect)
		StrCpy(InfoLines[6].Data, FP_GetMsg(FtpIsResume(hConnect)?MResmSupport:MResmNotSupport), ARRAYSIZE(InfoLines[0].Data));
	else
		StrCpy(InfoLines[6].Data, FP_GetMsg(MResmNotConnected), ARRAYSIZE(InfoLines[0].Data));

	pi->InfoLines       = InfoLines;
	pi->InfoLinesNumber = 7;
//---------------- DESCR
	static char *DescrFiles[32],
	       DescrFilesString[256];
	StrCpy(DescrFilesString, Opt.DescriptionNames, ARRAYSIZE(DescrFilesString));
	int   DescrFilesNumber = 0;
	char *NamePtr          = DescrFilesString;

	while(DescrFilesNumber < (int)ARRAYSIZE(DescrFiles))
	{
		while(isspace(*NamePtr)) NamePtr++;

		if(*NamePtr == 0) break;

		DescrFiles[DescrFilesNumber++] = NamePtr;

		if((NamePtr=strchr(NamePtr,',')) == NULL) break;

		*(NamePtr++)=0;
	}

	pi->DescrFiles=DescrFiles;

	if(!Opt.ReadDescriptions)
		pi->DescrFilesNumber=0;
	else
		pi->DescrFilesNumber=DescrFilesNumber;

//---------------- SHORTCUT
	static String ShortcutData;

	if(ShowHosts)
	{
		/*
		HOSTSTS
		  Hostspath
		*/
		ShortcutData.printf("HOST:%s", HostsPath);
	}
	else
	{
		/*
		FTP
		  Host
		  1
		  AskLogin    + 3
		  AsciiMode   + 3
		  PassiveMode + 3
		  UseFirewall + 3
		  HostTable
		  1
		  User
		  1
		  Password
		  1
		  ExtCmdView + 3
		  IOBuffSize (atoi)
		  1
		  FFDup + '0'
		  DecodeCmdLine + '0'
		  1
		*/
		ShortcutData.printf("FTP:%s\x1%c%c%c%c%d\x1%s\x1%s\x1%s\x1%c%d\x1%c\x1%c\x1",
		                    Host.Host,
		                    Host.AskLogin+3, Host.AsciiMode+3, Host.PassiveMode+3, Host.UseFirewall+3, Host.ServerType,
		                    Host.HostTable,
		                    Host.User,
		                    Host.Password,
		                    Host.ExtCmdView+3, Host.IOBuffSize,
		                    '0'+Host.FFDup, '0'+Host.DecodeCmdLine);
	}

	pi->ShortcutData = ShortcutData.c_str();

//---------------- PANEL MODES
//HOSTST
	if(ShowHosts)
	{
		static struct PanelMode PanelModesArray[10];
		static char *ColumnTitles[4] = { NULL };
		static char *ColumnTitles2[4] = { NULL };
		static char  Mode[ 20 ], ModeSz[20], ModeSz2[20];
		int      dizLen = 0,
		         nmLen  = 0,
		         hLen   = 0,
		         hstLen = 0;
		int      n,num;
		FTPHost* p;
		memset(&PanelModesArray,0,sizeof(PanelModesArray));

		if(!thisPInfo.PanelItems)
			FP_Info->Control(this, FCTL_GETPANELINFO, &thisPInfo);

		for(n = 0; n < thisPInfo.ItemsNumber; n++)
		{
			p = FTPHost::Convert(&thisPInfo.PanelItems[n]);

			if(!p) continue;

			dizLen = Max(dizLen,(int)strlen(p->HostDescr));
			nmLen  = Max(nmLen, (int)strlen(p->User));
			hLen   = Max(hLen, (int)strlen(p->Home));
			hstLen = Max(hstLen,(int)strlen(p->Host));
		}

		ColumnTitles[0] = (char*)FP_GetMsg(MHostColumn);
		//==1
		PanelModesArray[1].ColumnTypes   = (char *)"C0";
		PanelModesArray[1].ColumnWidths  = (char *)"0";
		//==2
		num = 1;
		n   = (thisPInfo.PanelRect.right-thisPInfo.PanelRect.left)/2;
		//HOST
		strcpy(Mode,"C0");
		sprintf(ModeSz,hLen || nmLen || dizLen ? "%d" : "0",hstLen);

		//HOME
		if(hLen)
		{
			strcat(Mode,",C1");

			if(hLen < n && (nmLen || dizLen))
			{
				strcat(ModeSz,Message(",%d",hLen));
				n -= hLen;
			}
			else
				strcat(ModeSz,",0");

			ColumnTitles[num++] = (char*)FP_GetMsg(MHomeColumn);
		}

		//UNAME
		if(nmLen)
		{
			strcat(Mode,",C2");

			if(nmLen < n && dizLen)
			{
				strcat(ModeSz,Message(",%d",nmLen));
			}
			else
				strcat(ModeSz,",0");

			ColumnTitles[num++] = (char*)FP_GetMsg(MUserColumn);
		}

		//DIZ
		if(dizLen)
		{
			strcat(Mode,",Z");
			strcat(ModeSz,",0");
			ColumnTitles[num] = (char*)FP_GetMsg(MDescColumn);
		}

		PanelModesArray[2].ColumnTypes   = Mode;
		PanelModesArray[2].ColumnWidths  = ModeSz;
		PanelModesArray[2].ColumnTitles  = ColumnTitles;
		ColumnTitles2[0] = (char*)FP_GetMsg(MHostColumn);
		ColumnTitles2[1] = (char*)FP_GetMsg(MDescColumn);

		if(!dizLen)
		{
			PanelModesArray[3].ColumnTypes   = (char *)"C0";
			PanelModesArray[3].ColumnWidths  = (char *)"0";
		}
		else
		{
			PanelModesArray[3].ColumnTypes   = (char *)"C0,Z";
			PanelModesArray[3].ColumnWidths  = ModeSz2;
			sprintf(ModeSz2,"%d,0",Min((int)(thisPInfo.PanelRect.right-thisPInfo.PanelRect.left)/2,hstLen));
		}

		PanelModesArray[3].ColumnTitles  = ColumnTitles2;
		pi->PanelModesArray  = PanelModesArray;
		pi->PanelModesNumber = ARRAYSIZE(PanelModesArray);
		pi->StartPanelMode   = 0;

		for(n = 1; n <= 3; n++)
		{
			PanelModesArray[n].StatusColumnTypes   = PanelModesArray[n].ColumnTypes;
			PanelModesArray[n].StatusColumnWidths  = PanelModesArray[n].ColumnWidths;
		}
	}
	else
	{
//FTP
		static struct PanelMode PanelModesArray[10];
		memset(PanelModesArray, 0, sizeof(PanelModesArray));
		static char *ColumnTitles[10];
		SetTitles(ColumnTitles, FP_GetMsg(MColumn9), ARRAYSIZE(ColumnTitles));
		PanelModesArray[9].ColumnTypes  = (char*)FP_GetMsg(MColumn9);
		PanelModesArray[9].ColumnWidths = (char*)FP_GetMsg(MSizes9);
		PanelModesArray[9].ColumnTitles = ColumnTitles;
		PanelModesArray[9].FullScreen   = atoi(FP_GetMsg(MFullScreen9));
		static char *ColumnTitles1[10];
		SetTitles(ColumnTitles1, FP_GetMsg(MColumn0), ARRAYSIZE(ColumnTitles));
		PanelModesArray[0].ColumnTypes  = (char*)FP_GetMsg(MColumn0);
		PanelModesArray[0].ColumnWidths = (char*)FP_GetMsg(MSizes0);
		PanelModesArray[0].ColumnTitles = ColumnTitles1;
		PanelModesArray[0].FullScreen   = atoi(FP_GetMsg(MFullScreen0));
		pi->PanelModesArray  = PanelModesArray;
		pi->PanelModesNumber = ARRAYSIZE(PanelModesArray);
	}

//---------------- KEYBAR
	static struct KeyBarTitles KeyBar;
	memset(&KeyBar,0,sizeof(KeyBar));
	KeyBar.ShiftTitles[1-1] = (char *)"";
	KeyBar.ShiftTitles[2-1] = (char *)"";
	KeyBar.ShiftTitles[3-1] = (char *)"";
	KeyBar.AltTitles[6-1]   = (char*)FP_GetMsg(MAltF6);

	if(ShowHosts)
	{
		KeyBar.ShiftTitles[1-1] = (char*)FP_GetMsg(MShiftF1);
		KeyBar.ShiftTitles[4-1] = ShowHosts ? (char*)FP_GetMsg(MShiftF4):NULL;
	}
	else
	{
		KeyBar.ShiftTitles[1-1] = (char*)FP_GetMsg(MShiftF1);
		KeyBar.ShiftTitles[7-1] = (char*)FP_GetMsg(MShiftF7);
	}

	pi->KeyBar=&KeyBar;

//---------------- RESTORE SCREEN
	if(!SkipRestoreScreen && CurrentState != fcsExpandList && CurrentState != fcsOperation && !IS_SILENT(FP_LastOpMode))
		FP_Screen::FullRestore();

//Back
	inside--;
}
Example #13
0
void FTP::AddToQueque(FAR_FIND_DATA* FileName, LPCSTR Path, BOOL Download)
{
	String  str;
	char   *m;
	int     num;
	FTPUrl* p = new FTPUrl;
	memcpy(&p->Host, &Host, sizeof(Host));
	p->Download = Download;
	p->Next     = NULL;
	p->FileName = *FileName;
	p->Error.Null();
	p->DestPath = Path;

	if(Download)
		m = strrchr(FileName->cFileName, '/');
	else
		m = strrchr(FileName->cFileName, '\\');

	if(m)
	{
		*m = 0;
		p->DestPath.Add(m);
		memmove(FileName->cFileName, m+1, m-FileName->cFileName);
	}

	if(Download)
	{
		GetCurPath(p->SrcPath);
		AddEndSlash(p->SrcPath, '/');
		str.printf("%s%s", p->SrcPath.c_str(), FileName->cFileName);
		FixLocalSlash(p->DestPath);
		AddEndSlash(p->DestPath, '\\');
		num = str.Chr('/');
	}
	else
	{
		PanelInfo pi;
		FP_Info->Control(this, FCTL_GETANOTHERPANELINFO, &pi);
		p->SrcPath = pi.CurDir;
		AddEndSlash(p->SrcPath, '\\');
		str.printf("%s%s", p->SrcPath.c_str(), FileName->cFileName);
		FixLocalSlash(str);
		AddEndSlash(p->DestPath, '/');
		num = str.Chr('\\');
	}

	if(num != -1)
	{
		StrCpy(p->FileName.cFileName, str.c_str()+num+1, ARRAYSIZE(p->FileName.cFileName));
		str.SetLength(num);
		p->SrcPath = str;
	}
	else
	{
		StrCpy(p->FileName.cFileName, str.c_str(), ARRAYSIZE(p->FileName.cFileName));
		p->SrcPath.Null();
	}

	if(!UrlsList) UrlsList = p;

	if(UrlsTail)  UrlsTail->Next = p;

	UrlsTail = p;
	QuequeSize++;
}