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

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

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

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

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

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

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

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

Loading…
Cancel
Save