#include "FileNameTools.h" #include #include #include #include #include #include #include bool FNT_hasExtension(const char* filename, const char *ending) { int lenf = strlen (filename); int lene = strlen (ending); if (lenf <= lene) return false; return (0 == strcmp (filename+lenf-lene, ending)); } string FNT_rootname(string filename) { string::size_type dotPos = filename.find_last_of("."); if (dotPos == string::npos) { return filename; } else { string rootname = filename.substr(0,dotPos); return rootname; } } string FNT_extension(string filename) { string::size_type dotPos = filename.find_last_of("."); if (dotPos == string::npos) { return ""; } else { string ext = filename.substr(dotPos,filename.size()); return ext; } } string FNT_removeTrailingSlash(string filename) { string newfile=filename; while (newfile[newfile.size()-1]=='/') { newfile=newfile.substr(0,newfile.size()-1); } return newfile; } string FNT_tail(string filename) { string filenoslash=FNT_removeTrailingSlash(filename); string::size_type slashPos = filenoslash.find_last_of("/"); if (slashPos == string::npos) { return filenoslash; } else { string tail = filenoslash.substr(slashPos+1,filename.size()); return tail; } } string FNT_dirname(string filename) { //string filenoslash=FNT_removeTrailingSlash(filename); string::size_type slashPos = filename.find_last_of("/"); if (slashPos == string::npos) { return "."; } else if (slashPos == 0) { return "/"; } else { string tail = filename.substr(0,slashPos); return tail; } } bool fileExists(const char *filename) { struct stat st; if (stat(filename, &st) < 0) { if (errno != ENOENT) // stat() failed for a reason other than // "file doesn't exist" perror(filename); return false; } else return true; }