BOOL GetAbsPath(PCHAR FName, int destlen) { int i, j; char Temp[MAXPATHLEN]; if (! GetFileNamePos(FName,&i,&j)) { return FALSE; } if (strlen(FName) > 2 && FName[1] == ':') { // fullpath return TRUE; } else if (FName[0] == '\\' && FName[1] == '\\') { // UNC (\\server\path) return TRUE; } strncpy_s(Temp, sizeof(Temp), FName, _TRUNCATE); strncpy_s(FName,destlen,CurrentDir,_TRUNCATE); if (Temp[0] == '\\' && destlen > 2) { // from drive root (\foo\bar) FName[2] = 0; } else { AppendSlash(FName,destlen); } strncat_s(FName,destlen,Temp,_TRUNCATE); return TRUE; }
String GetFileTitle(const char *fileName) { fileName = GetFileNamePos(fileName); const char *ext = GetFileExtPos(fileName); if(*ext) return String(fileName, (int)(ext - fileName)); else return fileName; }
static String GetTextFolder(String nesting, String decl_module, String text_folder) { if(nesting == "host") return HelpTopicHostDir(); if(!IsNull(decl_module)) return NormalizePathCase(GetFileFolder(decl_module)); String tmod = text_folder; if(!stricmp(GetFileNamePos(tmod), "doc.dpp")) tmod = GetFileFolder(tmod); return NormalizePathCase(tmod); }
String GetFileFolder(const char *fileName) { const char *s = GetFileNamePos(fileName); #ifdef PLATFORM_WIN32 if(s - fileName == 3 && fileName[1] == ':') return String(fileName, 3); #endif #ifdef PLATFORM_POSIX if(s - fileName == 1 && s[0] == '/') return "/"; #endif if(s > fileName) return String(fileName, (int)(s - fileName) - 1); return Null; }
void WorkspaceWork::RenameFile() { if(!filelist.IsCursor()) return; String n = GetActiveFileName(); int i = filelist.GetCursor(); if(i < 0 || i >= fileindex.GetCount()) return; int ii = fileindex[i]; WithEditStringLayout<TopWindow> dlg; CtrlLayoutOKCancel(dlg, "Rename file"); dlg.lbl = "New name"; dlg.text <<= n; dlg.Open(); dlg.text.SetFocus(); int l = int(GetFileNamePos(n) - ~n); int h = int(GetFileExtPos(n) - ~n); if(l >= h) l = 0; dlg.text.SetSelection(l, h); if(dlg.Run() != IDOK) return; n = ~dlg.text; String spath = GetActiveFilePath(); String dpath = SourcePath(GetActivePackage(), n); if(!filelist[i].isdir && GetFileLength(spath) >= 0) { if(!::MoveFile(spath, dpath)) { Exclamation("Failed to rename the file.&&" + GetErrorMessage(GetLastError())); return; } } FileRename(dpath); int s = filelist.GetSbPos(); (String &)actual.file[ii] = n; SaveLoadPackage(false); filelist.SetSbPos(s); filelist.SetCursor(i); if(GetFileExt(spath) == ".iml" || GetFileExt(dpath) == ".iml") SyncWorkspace(); }
String GetFileName(const char *fileName) { return GetFileNamePos(fileName); }
String GetFileDirectory(const char *fileName) { return String(fileName, (int)(GetFileNamePos(fileName) - fileName)); }
const char *GetFileExtPos(const char *fileName) { fileName = GetFileNamePos(fileName); const char *ext = strrchr(fileName, '.'); return ext ? ext : fileName + strlen(fileName); }