/** \return Replica file name for given offset from lowest replica number. */ FileName File::RepName::RepFilename(int offset) const { FileName trajFilename; trajFilename.SetFileName_NoExpansion( Prefix_ + extChar_ + integerToString(lowestRepnum_ + offset, ExtWidth_) + CompressExt_ ); return trajFilename; }
// ----------------------------------------------------------------------------- File::NameArray File::ExpandToFilenames(std::string const& fnameArg) { NameArray fnames; #ifdef _WIN32 fnames.push_back( fnameArg ); #else if (fnameArg.empty()) return fnames; wordexp_t expanded; int err = wordexp( fnameArg.c_str(), &expanded, WRDE_NOCMD ); WexpErr( err ); if ( err == 0 ) { for (unsigned int i = 0; i != expanded.we_wordc; i++) { if (expanded.we_wordv[i] == 0) mprinterr("Internal Error: Bad expansion at %i\n", i); else { FileName fn; fn.SetFileName_NoExpansion( expanded.we_wordv[i] ); fnames.push_back( fn ); } } wordfree( &expanded ); } #endif /* _WIN32 */ return fnames; }
//TODO make this more efficient by just modifying full and base names FileName FileName::PrependFileName( std::string const& prefix ) const { FileName out; out.SetFileName_NoExpansion(dirPrefix_ + prefix + baseName_); return out; }