package sftp import ( "path" "path/filepath" ) func (s *Server) toLocalPath(p string) string { if s.workDir != "" && !path.IsAbs(p) { p = path.Join(s.workDir, p) } lp := filepath.FromSlash(p) if path.IsAbs(p) { tmp := lp for len(tmp) > 0 && tmp[0] == '\\' { tmp = tmp[1:] } if filepath.IsAbs(tmp) { // If the FromSlash without any starting slashes is absolute, // then we have a filepath encoded with a prefix '/'. // e.g. "/C:/Windows" to "C:\\Windows" return tmp } tmp += "\\" if filepath.IsAbs(tmp) { // If the FromSlash without any starting slashes but with extra end slash is absolute, // then we have a filepath encoded with a prefix '/' and a dropped '/' at the end. // e.g. "/C:" to "C:\\" return tmp } } return lp }