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); }
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(); } }
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(); }
CString& CGlobalVariable::GetStylesDir() { if(m_strStylesDir.IsEmpty()) { m_strStylesDir = GetCurPath() + DIR_STYLES; CreateDirectory(m_strStylesDir, NULL); } return m_strStylesDir; }
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); }
//---------------------------------------------------------------------------- // // 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); }
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; }
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--; }
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++; }