File: path-test.cpp

package info (click to toggle)
exiv2 0.28.7%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 109,216 kB
  • sloc: cpp: 77,667; python: 9,619; javascript: 237; makefile: 193; sh: 172; ansic: 51; sed: 16
file content (44 lines) | stat: -rw-r--r-- 1,083 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
// SPDX-License-Identifier: GPL-2.0-or-later

#include <exiv2/exiv2.hpp>

#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();
  ::atexit(Exiv2::XmpParser::terminate);

  if (argc != 2) {
    std::cout << "Usage: " << argv[0] << " file\n";
    return EXIT_FAILURE;
  }
  std::ifstream file(argv[1]);
  if (!file) {
    std::cerr << *argv[1] << ": Failed to open file for reading\n";
    return EXIT_FAILURE;
  }
  std::string line;
  while (std::getline(file, line)) {
    std::string path, dir, base;
    std::istringstream is(line);
    is >> path >> dir >> base;
    auto p = fs::path(path);
    std::string d = p.parent_path().string();
    std::string b = p.filename().string();

    if (d != dir || b != base) {
      std::cout << path << "\t'" << d << "'\t '" << b << "'\t ==> Testcase failed\n";
    }
  }

  return EXIT_SUCCESS;
}