add support for gcc and clang 7

Uses std::experimental::filesystem

Signed-off-by: Rosen Penev <rosenp@gmail.com>
main
Rosen Penev 2 years ago
parent e19ec79f98
commit 77834807c2

@ -17,16 +17,15 @@
#include "types.hpp" #include "types.hpp"
#include "xmp_exiv2.hpp" #include "xmp_exiv2.hpp"
// + standard includes
#include <sys/stat.h> // for stat()
#include <sys/types.h> // for stat()
#include <filesystem>
#include <fstream> #include <fstream>
#include <iomanip> #include <iomanip>
#include <iostream> #include <iostream>
#include <mutex> #include <mutex>
#include <sstream> #include <sstream>
// + standard includes
#include <sys/stat.h> // for stat()
#include <sys/types.h> // for stat()
#ifdef EXV_HAVE_UNISTD_H #ifdef EXV_HAVE_UNISTD_H
#include <unistd.h> // for stat() #include <unistd.h> // for stat()
#endif #endif
@ -46,7 +45,13 @@
} while (false) } while (false)
#endif #endif
#if __has_include(<filesystem>)
#include <filesystem>
namespace fs = std::filesystem; namespace fs = std::filesystem;
#else
#include <experimental/filesystem>
namespace fs = std::experimental::filesystem;
#endif
// ***************************************************************************** // *****************************************************************************
// local declarations // local declarations

@ -5,9 +5,14 @@
#include <cstdio> #include <cstdio>
#include <cstring> #include <cstring>
#include <filesystem>
#if __has_include(<filesystem>)
#include <filesystem>
namespace fs = std::filesystem; namespace fs = std::filesystem;
#else
#include <experimental/filesystem>
namespace fs = std::experimental::filesystem;
#endif
namespace Util { namespace Util {
// https://raw.githubusercontent.com/skeeto/getopt/master/getopt.h // https://raw.githubusercontent.com/skeeto/getopt/master/getopt.h

@ -2,11 +2,16 @@
#include <exiv2/exiv2.hpp> #include <exiv2/exiv2.hpp>
#include <filesystem>
#include <fstream> #include <fstream>
#include <iostream> #include <iostream>
#if __has_include(<filesystem>)
#include <filesystem>
namespace fs = std::filesystem; namespace fs = std::filesystem;
#else
#include <experimental/filesystem>
namespace fs = std::experimental::filesystem;
#endif
int main(int argc, char* const argv[]) { int main(int argc, char* const argv[]) {
Exiv2::XmpParser::initialize(); Exiv2::XmpParser::initialize();

@ -19,7 +19,6 @@
#include <cstdlib> // for alloc, realloc, free #include <cstdlib> // for alloc, realloc, free
#include <cstring> // std::memcpy #include <cstring> // std::memcpy
#include <ctime> // timestamp for the name of temporary file #include <ctime> // timestamp for the name of temporary file
#include <filesystem>
#include <fstream> // write the temporary file #include <fstream> // write the temporary file
#include <iostream> #include <iostream>
@ -43,7 +42,13 @@
#include <windows.h> #include <windows.h>
#endif #endif
#if __has_include(<filesystem>)
#include <filesystem>
namespace fs = std::filesystem; namespace fs = std::filesystem;
#else
#include <experimental/filesystem>
namespace fs = std::experimental::filesystem;
#endif
// ***************************************************************************** // *****************************************************************************
// class member definitions // class member definitions

@ -12,15 +12,16 @@
#include <algorithm> #include <algorithm>
#include <array> #include <array>
#include <cstring> #include <cstring>
#include <filesystem>
#include <sstream> #include <sstream>
#include <stdexcept> #include <stdexcept>
#ifdef EXV_HAVE_UNISTD_H #if __has_include(<filesystem>)
#include <unistd.h> // for stat() #include <filesystem>
#endif
namespace fs = std::filesystem; namespace fs = std::filesystem;
#else
#include <experimental/filesystem>
namespace fs = std::experimental::filesystem;
#endif
#if defined(_WIN32) #if defined(_WIN32)
// clang-format off // clang-format off
@ -42,7 +43,10 @@ namespace fs = std::filesystem;
#include <sys/sysctl.h> #include <sys/sysctl.h>
#include <sys/types.h> #include <sys/types.h>
#include <sys/un.h> #include <sys/un.h>
#include <unistd.h> #endif
#ifdef EXV_HAVE_UNISTD_H
#include <unistd.h> // for stat()
#endif #endif
#ifndef _MAX_PATH #ifndef _MAX_PATH
@ -374,7 +378,7 @@ std::string getProcessPath() {
ret = path; ret = path;
} }
#elif defined(__unix__) #elif defined(__unix__)
ret = std::filesystem::read_symlink("/proc/self/exe"); ret = fs::read_symlink("/proc/self/exe");
#endif #endif
const size_t idxLastSeparator = ret.find_last_of(EXV_SEPARATOR_CHR); const size_t idxLastSeparator = ret.find_last_of(EXV_SEPARATOR_CHR);

@ -15,14 +15,16 @@
#include "utils.hpp" #include "utils.hpp"
// + standard includes // + standard includes
#ifdef EXV_ENABLE_INIH
#include <INIReader.h>
#endif
#include <array> #include <array>
#include <filesystem>
#include <iostream> #include <iostream>
#if __has_include(<filesystem>)
#include <filesystem>
namespace fs = std::filesystem; namespace fs = std::filesystem;
#else
#include <experimental/filesystem>
namespace fs = std::experimental::filesystem;
#endif
#if !defined(_WIN32) #if !defined(_WIN32)
#include <pwd.h> #include <pwd.h>
@ -33,7 +35,10 @@ namespace fs = std::filesystem;
#define CSIDL_PROFILE 40 #define CSIDL_PROFILE 40
#endif #endif
#include <process.h> #include <process.h>
#endif
#ifdef EXV_ENABLE_INIH
#include <INIReader.h>
#endif #endif
// ***************************************************************************** // *****************************************************************************

@ -5,10 +5,16 @@
#include <error.hpp> // Need to include this header for the Exiv2::Error exception #include <error.hpp> // Need to include this header for the Exiv2::Error exception
#include <gtest/gtest.h> #include <gtest/gtest.h>
#if __has_include(<filesystem>)
#include <filesystem> #include <filesystem>
namespace fs = std::filesystem;
#else
#include <experimental/filesystem>
namespace fs = std::experimental::filesystem;
#endif
using namespace Exiv2; using namespace Exiv2;
namespace fs = std::filesystem;
TEST(TheImageFactory, createsInstancesForFewSupportedTypesInMemory) { TEST(TheImageFactory, createsInstancesForFewSupportedTypesInMemory) {
// Note that the constructor of these Image classes take an 'create' argument // Note that the constructor of these Image classes take an 'create' argument

@ -7,13 +7,18 @@
// Auxiliary headers // Auxiliary headers
#include <cerrno> #include <cerrno>
#include <cstdio> #include <cstdio>
#include <filesystem>
#include <fstream> #include <fstream>
#include <stdexcept> #include <stdexcept>
#include <gtest/gtest.h> #include <gtest/gtest.h>
#if __has_include(<filesystem>)
#include <filesystem>
namespace fs = std::filesystem; namespace fs = std::filesystem;
#else
#include <experimental/filesystem>
namespace fs = std::experimental::filesystem;
#endif
using namespace Exiv2; using namespace Exiv2;

Loading…
Cancel
Save