pathinfo.cpp 881 B

1234567891011121314151617181920212223242526272829303132333435
  1. #include "pathinfo.h"
  2. #include "dirname.h"
  3. #include "basename.h"
  4. // Verbose should be removed once everythings working correctly
  5. #include "verbose.h"
  6. IGL_INLINE void igl::pathinfo(
  7. const std::string & path,
  8. std::string & dirname,
  9. std::string & basename,
  10. std::string & extension,
  11. std::string & filename)
  12. {
  13. dirname = igl::dirname(path);
  14. basename = igl::basename(path);
  15. std::string::reverse_iterator last_dot =
  16. std::find(
  17. basename.rbegin(),
  18. basename.rend(), '.');
  19. // Was a dot found?
  20. if(last_dot == basename.rend())
  21. {
  22. // filename is same as basename
  23. filename = basename;
  24. // no extension
  25. extension = "";
  26. }else
  27. {
  28. // extension is substring of basename
  29. extension = std::string(last_dot.base(),basename.end());
  30. // filename is substring of basename
  31. filename = std::string(basename.begin(),last_dot.base()-1);
  32. }
  33. }