unix_file_system.cpp 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. // tinygettext - A gettext replacement that works directly on .po files
  2. // Copyright (c) 2009 Ingo Ruhnke <grumbel@gmail.com>
  3. //
  4. // This software is provided 'as-is', without any express or implied
  5. // warranty. In no event will the authors be held liable for any damages
  6. // arising from the use of this software.
  7. //
  8. // Permission is granted to anyone to use this software for any purpose,
  9. // including commercial applications, and to alter it and redistribute it
  10. // freely, subject to the following restrictions:
  11. //
  12. // 1. The origin of this software must not be misrepresented; you must not
  13. // claim that you wrote the original software. If you use this software
  14. // in a product, an acknowledgement in the product documentation would be
  15. // appreciated but is not required.
  16. // 2. Altered source versions must be plainly marked as such, and must not be
  17. // misrepresented as being the original software.
  18. // 3. This notice may not be removed or altered from any source distribution.
  19. #include "tinygettext/unix_file_system.hpp"
  20. #include <filesystem>
  21. #include <fstream>
  22. #ifdef WIN32
  23. # include "tinygettext/dirent.h"
  24. #else
  25. # include <dirent.h>
  26. #endif
  27. #include <stdlib.h>
  28. namespace tinygettext {
  29. UnixFileSystem::UnixFileSystem()
  30. {
  31. }
  32. std::vector<std::string>
  33. UnixFileSystem::open_directory(const std::string& pathname)
  34. {
  35. std::vector<std::string> files;
  36. for(auto const& p : std::filesystem::directory_iterator(pathname))
  37. {
  38. files.push_back(p.path().filename().string());
  39. }
  40. return files;
  41. }
  42. std::unique_ptr<std::istream>
  43. UnixFileSystem::open_file(const std::string& filename)
  44. {
  45. return std::unique_ptr<std::istream>(new std::ifstream(filename));
  46. }
  47. } // namespace tinygettext
  48. /* EOF */