mirror of https://github.com/kiwix/libkiwix.git
Merge pull request #574 from kiwix/remove_mustache_public_header
Fix public headers inclusion (+ small other fixes)
This commit is contained in:
commit
e2db1b3688
|
@ -13,19 +13,8 @@ headers = [
|
||||||
'search_renderer.h',
|
'search_renderer.h',
|
||||||
'server.h',
|
'server.h',
|
||||||
'kiwixserve.h',
|
'kiwixserve.h',
|
||||||
'name_mapper.h'
|
'name_mapper.h',
|
||||||
|
'tools.h'
|
||||||
]
|
]
|
||||||
|
|
||||||
install_headers(headers, subdir:'kiwix')
|
install_headers(headers, subdir:'kiwix')
|
||||||
|
|
||||||
install_headers(
|
|
||||||
'tools/base64.h',
|
|
||||||
'tools/networkTools.h',
|
|
||||||
'tools/otherTools.h',
|
|
||||||
'tools/pathTools.h',
|
|
||||||
'tools/regexTools.h',
|
|
||||||
'tools/stringTools.h',
|
|
||||||
'tools/archiveTools.h',
|
|
||||||
subdir:'kiwix/tools'
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
|
@ -26,9 +26,6 @@
|
||||||
|
|
||||||
#include <pugixml.hpp>
|
#include <pugixml.hpp>
|
||||||
|
|
||||||
#include "tools/base64.h"
|
|
||||||
#include "tools/pathTools.h"
|
|
||||||
#include "tools/regexTools.h"
|
|
||||||
#include "library.h"
|
#include "library.h"
|
||||||
#include "reader.h"
|
#include "reader.h"
|
||||||
|
|
||||||
|
|
|
@ -29,8 +29,6 @@
|
||||||
#include <string>
|
#include <string>
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
#include "entry.h"
|
#include "entry.h"
|
||||||
#include "tools/pathTools.h"
|
|
||||||
#include "tools/stringTools.h"
|
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
|
@ -47,20 +45,20 @@ class SuggestionItem
|
||||||
// Temporarily making the constructor public until the code move is complete
|
// Temporarily making the constructor public until the code move is complete
|
||||||
public:
|
public:
|
||||||
// Create a sugggestion item.
|
// Create a sugggestion item.
|
||||||
explicit SuggestionItem(std::string title, std::string normalizedTitle,
|
explicit SuggestionItem(const std::string& title, const std::string& normalizedTitle,
|
||||||
std::string path, std::string snippet = "") :
|
const std::string& path, const std::string& snippet = "") :
|
||||||
title(title),
|
title(title),
|
||||||
normalizedTitle(normalizedTitle),
|
normalizedTitle(normalizedTitle),
|
||||||
path(path),
|
path(path),
|
||||||
snippet(snippet) {}
|
snippet(snippet) {}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
const std::string getTitle() {return title;}
|
const std::string& getTitle() const { return title;}
|
||||||
const std::string getNormalizedTitle() {return normalizedTitle;}
|
const std::string& getNormalizedTitle() const { return normalizedTitle;}
|
||||||
const std::string getPath() {return path;}
|
const std::string& getPath() const { return path;}
|
||||||
const std::string getSnippet() {return snippet;}
|
const std::string& getSnippet() const { return snippet;}
|
||||||
|
|
||||||
const bool hasSnippet() {return !snippet.empty();}
|
bool hasSnippet() const { return !snippet.empty();}
|
||||||
|
|
||||||
// Data
|
// Data
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -29,8 +29,6 @@
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include "tools/pathTools.h"
|
|
||||||
#include "tools/stringTools.h"
|
|
||||||
|
|
||||||
#include <zim/search.h>
|
#include <zim/search.h>
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,171 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2021 Matthieu Gautier <mgautier@kymeria.fr>
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 3 of the License, or
|
||||||
|
* any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||||
|
* MA 02110-1301, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef KIWIX_TOOLS_H
|
||||||
|
#define KIWIX_TOOLS_H
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
namespace kiwix {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the current directory.
|
||||||
|
*
|
||||||
|
* @return the current directory (utf8 encoded)
|
||||||
|
*/
|
||||||
|
std::string getCurrentDirectory();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the data directory.
|
||||||
|
*
|
||||||
|
* The data directory is a directory where to put data (zim files, ...)
|
||||||
|
* It depends of the platform and it may be changed by user using environment variable.
|
||||||
|
*
|
||||||
|
* The resolution order is :
|
||||||
|
* - `KIWIX_DATA_DIR` env variable (if set).
|
||||||
|
* - On Windows :
|
||||||
|
* . `$APPDATA/kiwix` if $APPDATA is set
|
||||||
|
* . `$USERPROFILE/kiwix` if $USERPROFILE is set
|
||||||
|
* - Else :
|
||||||
|
* . `$XDG_DATA_HOME/kiwix`if $XDG_DATA_HOME is set
|
||||||
|
* . `$HOME/.local/share/kiwx` if $HOWE is set
|
||||||
|
* - current directory
|
||||||
|
*
|
||||||
|
* @return the path of the data directory (utf8 encoded)
|
||||||
|
*/
|
||||||
|
std::string getDataDirectory();
|
||||||
|
|
||||||
|
/** Return the path of the executable
|
||||||
|
*
|
||||||
|
* Some application may be packaged in auto extractible archive (Appimage) and the
|
||||||
|
* real executable is different of the path of the archive.
|
||||||
|
* If `realPathOnly` is true, return the path of the real executable instead of the
|
||||||
|
* archive launched by the user.
|
||||||
|
*
|
||||||
|
* @param realPathOnly If we must return the real path of the executable.
|
||||||
|
* @return the path of the executable (utf8 encoded)
|
||||||
|
*/
|
||||||
|
std::string getExecutablePath(bool realPathOnly = false);
|
||||||
|
|
||||||
|
/** Tell if the path is a relative path.
|
||||||
|
*
|
||||||
|
* This function is provided as a small helper. It is probably better to use native tools
|
||||||
|
* to manipulate paths.
|
||||||
|
*
|
||||||
|
* @param path A utf8 encoded path.
|
||||||
|
* @return true if the path is relative.
|
||||||
|
*/
|
||||||
|
bool isRelativePath(const std::string& path);
|
||||||
|
|
||||||
|
/** Append a path to another one.
|
||||||
|
*
|
||||||
|
* This function is provided as a small helper. It is probably better to use native tools
|
||||||
|
* to manipulate paths.
|
||||||
|
*
|
||||||
|
* @param basePath the base path.
|
||||||
|
* @param relativePath a path to add to the base path, must be a relative path.
|
||||||
|
* @return The concatenation of the paths, using the right separator.
|
||||||
|
*/
|
||||||
|
std::string appendToDirectory(const std::string& basePath, const std::string& relativePath);
|
||||||
|
|
||||||
|
/** Remove the last element of a path.
|
||||||
|
*
|
||||||
|
* This function is provided as a small helper. It is probably better to use native tools
|
||||||
|
* to manipulate paths.
|
||||||
|
*
|
||||||
|
* @param path a path.
|
||||||
|
* @return The parent directory (or empty string if none).
|
||||||
|
*/
|
||||||
|
std::string removeLastPathElement(const std::string& path);
|
||||||
|
|
||||||
|
/** Get the last element of a path.
|
||||||
|
*
|
||||||
|
* This function is provided as a small helper. It is probably better to use native tools
|
||||||
|
* to manipulate paths.
|
||||||
|
*
|
||||||
|
* @param path a path.
|
||||||
|
* @return The base name of the path or empty string if none (ending with a separator).
|
||||||
|
*/
|
||||||
|
std::string getLastPathElement(const std::string& path);
|
||||||
|
|
||||||
|
/** Compute the absolute path of a relative path based on another one
|
||||||
|
*
|
||||||
|
* Equivalent to appendToDirectory followed by a normalization of the path.
|
||||||
|
*
|
||||||
|
* This function is provided as a small helper. It is probably better to use native tools
|
||||||
|
* to manipulate paths.
|
||||||
|
*
|
||||||
|
* @param path the base path (if empty, current directory is taken).
|
||||||
|
* @param relativePath the relative path.
|
||||||
|
* @return a absolute path.
|
||||||
|
*/
|
||||||
|
std::string computeAbsolutePath(const std::string& path, const std::string& relativePath);
|
||||||
|
|
||||||
|
/** Compute the relative path of a path relative to another one
|
||||||
|
*
|
||||||
|
* This function is provided as a small helper. It is probably better to use native tools
|
||||||
|
* to manipulate paths.
|
||||||
|
*
|
||||||
|
* @param path the base path.
|
||||||
|
* @param absolutePath the absolute path to find the relative path for.
|
||||||
|
* @return a relative path (pointing to absolutePath, relative to path).
|
||||||
|
*/
|
||||||
|
std::string computeRelativePath(const std::string& path, const std::string& absolutePath);
|
||||||
|
|
||||||
|
/** Sleep the current thread.
|
||||||
|
*
|
||||||
|
* This function is provided as a small helper. It is probably better to use native tools.
|
||||||
|
*
|
||||||
|
* @param milliseconds The number of milliseconds to wait for.
|
||||||
|
*/
|
||||||
|
void sleep(unsigned int milliseconds);
|
||||||
|
|
||||||
|
/** Split a string
|
||||||
|
*
|
||||||
|
* This function is provided as a small helper. It is probably better to use native tools.
|
||||||
|
*
|
||||||
|
* Assuming text = "foo:;bar;baz,oups;"
|
||||||
|
*
|
||||||
|
* split(text, ":;", true, true) => ["foo", ":", ";", "bar", ";", "baz,oups", ";"]
|
||||||
|
* split(text, ":;", true, false) => ["foo", "bar", "baz,oups"] (default)
|
||||||
|
* split(text, ":;", false, true) => ["foo", ":", "", ";", "bar", ";", "baz,oups", ";", ""]
|
||||||
|
* split(text, ":;", false, false) => ["foo", "", "bar", "baz,oups", ""]
|
||||||
|
*
|
||||||
|
* @param str The string to split.
|
||||||
|
* @param delims A string of potential delimiters.
|
||||||
|
* Each charater in the string can be a individual delimiters.
|
||||||
|
* @param dropEmpty true if empty part must be dropped from the result.
|
||||||
|
* @param keepDelim true if delimiter must be included from the result.
|
||||||
|
* @return a list of part (potentially containing delimiters)
|
||||||
|
*/
|
||||||
|
std::vector<std::string> split(const std::string& str, const std::string& delims, bool dropEmpty=true, bool keepDelim = false);
|
||||||
|
|
||||||
|
/** Convert language code from iso2 code to iso3
|
||||||
|
*
|
||||||
|
* This function is provided as a small helper. It is probably better to use native tools
|
||||||
|
* to manipulate locales.
|
||||||
|
*
|
||||||
|
* @param a2code a iso2 code string.
|
||||||
|
* @return the corresponding iso3 code.
|
||||||
|
* @throw std::out_of_range if iso2 code is not known.
|
||||||
|
*/
|
||||||
|
std::string converta2toa3(const std::string& a2code);
|
||||||
|
}
|
||||||
|
#endif // KIWIX_TOOLS_H
|
|
@ -6,10 +6,10 @@
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <thread>
|
#include <thread>
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
#include <tools/otherTools.h>
|
#include "tools.h"
|
||||||
#include <tools/pathTools.h>
|
#include "tools/pathTools.h"
|
||||||
#include <tools/stringTools.h>
|
#include "tools/stringTools.h"
|
||||||
#include <downloader.h> // For AriaError
|
#include "downloader.h" // For AriaError
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
# define ARIA2_CMD "aria2c.exe"
|
# define ARIA2_CMD "aria2c.exe"
|
||||||
|
|
|
@ -20,10 +20,13 @@
|
||||||
#include "book.h"
|
#include "book.h"
|
||||||
#include "reader.h"
|
#include "reader.h"
|
||||||
|
|
||||||
|
#include "tools.h"
|
||||||
#include "tools/base64.h"
|
#include "tools/base64.h"
|
||||||
#include "tools/regexTools.h"
|
#include "tools/regexTools.h"
|
||||||
#include "tools/networkTools.h"
|
#include "tools/networkTools.h"
|
||||||
#include "tools/otherTools.h"
|
#include "tools/otherTools.h"
|
||||||
|
#include "tools/stringTools.h"
|
||||||
|
#include "tools/pathTools.h"
|
||||||
|
|
||||||
#include <pugixml.hpp>
|
#include <pugixml.hpp>
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
# include <unistd.h>
|
# include <unistd.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include "tools.h"
|
||||||
#include "tools/pathTools.h"
|
#include "tools/pathTools.h"
|
||||||
#include "tools/stringTools.h"
|
#include "tools/stringTools.h"
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
#include "reader.h"
|
#include "reader.h"
|
||||||
#include "libxml_dumper.h"
|
#include "libxml_dumper.h"
|
||||||
|
|
||||||
|
#include "tools.h"
|
||||||
#include "tools/base64.h"
|
#include "tools/base64.h"
|
||||||
#include "tools/regexTools.h"
|
#include "tools/regexTools.h"
|
||||||
#include "tools/pathTools.h"
|
#include "tools/pathTools.h"
|
||||||
|
|
|
@ -20,10 +20,10 @@
|
||||||
#include "libxml_dumper.h"
|
#include "libxml_dumper.h"
|
||||||
#include "book.h"
|
#include "book.h"
|
||||||
|
|
||||||
|
#include "tools.h"
|
||||||
#include "tools/base64.h"
|
#include "tools/base64.h"
|
||||||
#include "tools/stringTools.h"
|
#include "tools/stringTools.h"
|
||||||
#include "tools/otherTools.h"
|
#include "tools/otherTools.h"
|
||||||
#include "tools/pathTools.h"
|
|
||||||
|
|
||||||
namespace kiwix
|
namespace kiwix
|
||||||
{
|
{
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
|
|
||||||
#include "manager.h"
|
#include "manager.h"
|
||||||
|
|
||||||
|
#include "tools.h"
|
||||||
#include "tools/pathTools.h"
|
#include "tools/pathTools.h"
|
||||||
|
|
||||||
#include <pugixml.hpp>
|
#include <pugixml.hpp>
|
||||||
|
|
|
@ -20,11 +20,12 @@
|
||||||
#include "opds_dumper.h"
|
#include "opds_dumper.h"
|
||||||
#include "book.h"
|
#include "book.h"
|
||||||
|
|
||||||
#include "tools/otherTools.h"
|
|
||||||
|
|
||||||
#include "kiwixlib-resources.h"
|
#include "kiwixlib-resources.h"
|
||||||
#include <mustache.hpp>
|
#include <mustache.hpp>
|
||||||
|
|
||||||
|
#include "tools/stringTools.h"
|
||||||
|
#include "tools/otherTools.h"
|
||||||
|
|
||||||
namespace kiwix
|
namespace kiwix
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,8 @@
|
||||||
#include <zim/item.h>
|
#include <zim/item.h>
|
||||||
#include <zim/error.h>
|
#include <zim/error.h>
|
||||||
|
|
||||||
|
#include "tools.h"
|
||||||
|
#include "tools/stringTools.h"
|
||||||
#include "tools/otherTools.h"
|
#include "tools/otherTools.h"
|
||||||
#include "tools/archiveTools.h"
|
#include "tools/archiveTools.h"
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
|
|
||||||
#include <mustache.hpp>
|
#include <mustache.hpp>
|
||||||
#include "kiwixlib-resources.h"
|
#include "kiwixlib-resources.h"
|
||||||
|
#include "tools/stringTools.h"
|
||||||
|
|
||||||
namespace kiwix
|
namespace kiwix
|
||||||
{
|
{
|
||||||
|
|
|
@ -18,7 +18,6 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include <cmath>
|
|
||||||
|
|
||||||
#include "searcher.h"
|
#include "searcher.h"
|
||||||
#include "reader.h"
|
#include "reader.h"
|
||||||
|
@ -26,6 +25,8 @@
|
||||||
#include <zim/search.h>
|
#include <zim/search.h>
|
||||||
|
|
||||||
#include <mustache.hpp>
|
#include <mustache.hpp>
|
||||||
|
#include <cmath>
|
||||||
|
#include "tools/stringTools.h"
|
||||||
#include "kiwixlib-resources.h"
|
#include "kiwixlib-resources.h"
|
||||||
|
|
||||||
#define MAX_SEARCH_LEN 140
|
#define MAX_SEARCH_LEN 140
|
||||||
|
|
|
@ -43,7 +43,7 @@ extern "C" {
|
||||||
#include "microhttpd_wrapper.h"
|
#include "microhttpd_wrapper.h"
|
||||||
}
|
}
|
||||||
|
|
||||||
#include "tools/otherTools.h"
|
#include "tools.h"
|
||||||
#include "tools/pathTools.h"
|
#include "tools/pathTools.h"
|
||||||
#include "tools/regexTools.h"
|
#include "tools/regexTools.h"
|
||||||
#include "tools/stringTools.h"
|
#include "tools/stringTools.h"
|
||||||
|
|
|
@ -17,10 +17,12 @@
|
||||||
* MA 02110-1301, USA.
|
* MA 02110-1301, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <tools/archiveTools.h>
|
#include "archiveTools.h"
|
||||||
#include <tools/pathTools.h>
|
|
||||||
#include <tools/otherTools.h>
|
#include "tools.h"
|
||||||
#include <tools/stringTools.h>
|
#include "pathTools.h"
|
||||||
|
#include "otherTools.h"
|
||||||
|
#include "stringTools.h"
|
||||||
|
|
||||||
#include <zim/error.h>
|
#include <zim/error.h>
|
||||||
#include <zim/item.h>
|
#include <zim/item.h>
|
||||||
|
|
|
@ -17,7 +17,11 @@
|
||||||
* MA 02110-1301, USA.
|
* MA 02110-1301, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
// Implement function declared in tools.h and tools/otherTools.h
|
||||||
|
#include "tools.h"
|
||||||
#include "tools/otherTools.h"
|
#include "tools/otherTools.h"
|
||||||
|
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <iomanip>
|
#include <iomanip>
|
||||||
|
|
||||||
|
|
|
@ -32,9 +32,7 @@ namespace pugi {
|
||||||
|
|
||||||
namespace kiwix
|
namespace kiwix
|
||||||
{
|
{
|
||||||
void sleep(unsigned int milliseconds);
|
|
||||||
std::string nodeToString(const pugi::xml_node& node);
|
std::string nodeToString(const pugi::xml_node& node);
|
||||||
std::string converta2toa3(const std::string& a2code);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Convert all format tag string to new format
|
* Convert all format tag string to new format
|
|
@ -17,7 +17,10 @@
|
||||||
* MA 02110-1301, USA.
|
* MA 02110-1301, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
// Implement method defined in <kiwix/tools.h> and "tools/pathTools.h"
|
||||||
|
#include "tools.h"
|
||||||
#include "tools/pathTools.h"
|
#include "tools/pathTools.h"
|
||||||
|
|
||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
|
|
||||||
#ifdef __APPLE__
|
#ifdef __APPLE__
|
||||||
|
@ -59,7 +62,6 @@
|
||||||
#define PATH_MAX 1024
|
#define PATH_MAX 1024
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
std::string WideToUtf8(const std::wstring& wstr)
|
std::string WideToUtf8(const std::wstring& wstr)
|
||||||
{
|
{
|
||||||
|
@ -78,7 +80,7 @@ std::wstring Utf8ToWide(const std::string& str)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
bool isRelativePath(const std::string& path)
|
bool kiwix::isRelativePath(const std::string& path)
|
||||||
{
|
{
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
if (path.size() < 3 ) {
|
if (path.size() < 3 ) {
|
||||||
|
@ -173,7 +175,7 @@ std::vector<std::string> normalizeParts(std::vector<std::string>& parts, bool ab
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string computeRelativePath(const std::string& path, const std::string& absolutePath)
|
std::string kiwix::computeRelativePath(const std::string& path, const std::string& absolutePath)
|
||||||
{
|
{
|
||||||
auto parts = kiwix::split(path, SEPARATOR, false);
|
auto parts = kiwix::split(path, SEPARATOR, false);
|
||||||
auto pathParts = normalizeParts(parts, false);
|
auto pathParts = normalizeParts(parts, false);
|
||||||
|
@ -198,11 +200,11 @@ std::string computeRelativePath(const std::string& path, const std::string& abso
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string computeAbsolutePath(const std::string& path, const std::string& relativePath)
|
std::string kiwix::computeAbsolutePath(const std::string& path, const std::string& relativePath)
|
||||||
{
|
{
|
||||||
std::string absolutePath = path;
|
std::string absolutePath = path;
|
||||||
if (path.empty()) {
|
if (path.empty()) {
|
||||||
absolutePath = getCurrentDirectory();
|
absolutePath = kiwix::getCurrentDirectory();
|
||||||
}
|
}
|
||||||
|
|
||||||
auto parts = kiwix::split(absolutePath, SEPARATOR, false);
|
auto parts = kiwix::split(absolutePath, SEPARATOR, false);
|
||||||
|
@ -215,7 +217,7 @@ std::string computeAbsolutePath(const std::string& path, const std::string& rela
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string removeLastPathElement(const std::string& path)
|
std::string kiwix::removeLastPathElement(const std::string& path)
|
||||||
{
|
{
|
||||||
auto parts_ = kiwix::split(path, SEPARATOR, false);
|
auto parts_ = kiwix::split(path, SEPARATOR, false);
|
||||||
auto parts = normalizeParts(parts_, false);
|
auto parts = normalizeParts(parts_, false);
|
||||||
|
@ -226,7 +228,7 @@ std::string removeLastPathElement(const std::string& path)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string appendToDirectory(const std::string& directoryPath, const std::string& filename)
|
std::string kiwix::appendToDirectory(const std::string& directoryPath, const std::string& filename)
|
||||||
{
|
{
|
||||||
std::string newPath = directoryPath;
|
std::string newPath = directoryPath;
|
||||||
if (!directoryPath.empty() && directoryPath.back() != SEPARATOR[0]) {
|
if (!directoryPath.empty() && directoryPath.back() != SEPARATOR[0]) {
|
||||||
|
@ -236,7 +238,7 @@ std::string appendToDirectory(const std::string& directoryPath, const std::strin
|
||||||
return newPath;
|
return newPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string getLastPathElement(const std::string& path)
|
std::string kiwix::getLastPathElement(const std::string& path)
|
||||||
{
|
{
|
||||||
auto parts_ = kiwix::split(path, SEPARATOR);
|
auto parts_ = kiwix::split(path, SEPARATOR);
|
||||||
auto parts = normalizeParts(parts_, false);
|
auto parts = normalizeParts(parts_, false);
|
||||||
|
@ -366,7 +368,7 @@ bool copyFile(const std::string& sourcePath, const std::string& destPath)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string getExecutablePath(bool realPathOnly)
|
std::string kiwix::getExecutablePath(bool realPathOnly)
|
||||||
{
|
{
|
||||||
if (!realPathOnly) {
|
if (!realPathOnly) {
|
||||||
char* cAppImage = ::getenv("APPIMAGE");
|
char* cAppImage = ::getenv("APPIMAGE");
|
||||||
|
@ -420,7 +422,7 @@ bool writeTextFile(const std::string& path, const std::string& content)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string getCurrentDirectory()
|
std::string kiwix::getCurrentDirectory()
|
||||||
{
|
{
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
wchar_t* a_cwd = _wgetcwd(NULL, 0);
|
wchar_t* a_cwd = _wgetcwd(NULL, 0);
|
||||||
|
@ -434,7 +436,7 @@ std::string getCurrentDirectory()
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string getDataDirectory()
|
std::string kiwix::getDataDirectory()
|
||||||
{
|
{
|
||||||
// Try to get the dataDir from the `KIWIX_DATA_DIR` env var
|
// Try to get the dataDir from the `KIWIX_DATA_DIR` env var
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
|
@ -524,4 +526,3 @@ std::string getMimeTypeForFile(const std::string& filename)
|
||||||
|
|
||||||
return mimeType;
|
return mimeType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -26,11 +26,6 @@
|
||||||
std::string WideToUtf8(const std::wstring& wstr);
|
std::string WideToUtf8(const std::wstring& wstr);
|
||||||
std::wstring Utf8ToWide(const std::string& str);
|
std::wstring Utf8ToWide(const std::string& str);
|
||||||
#endif
|
#endif
|
||||||
bool isRelativePath(const std::string& path);
|
|
||||||
std::string computeAbsolutePath(const std::string& path, const std::string& relativePath);
|
|
||||||
std::string computeRelativePath(const std::string& path, const std::string& absolutePath);
|
|
||||||
std::string removeLastPathElement(const std::string& path);
|
|
||||||
std::string appendToDirectory(const std::string& directoryPath, const std::string& filename);
|
|
||||||
|
|
||||||
unsigned int getFileSize(const std::string& path);
|
unsigned int getFileSize(const std::string& path);
|
||||||
std::string getFileSizeAsString(const std::string& path);
|
std::string getFileSizeAsString(const std::string& path);
|
||||||
|
@ -39,10 +34,8 @@ bool fileExists(const std::string& path);
|
||||||
bool makeDirectory(const std::string& path);
|
bool makeDirectory(const std::string& path);
|
||||||
std::string makeTmpDirectory();
|
std::string makeTmpDirectory();
|
||||||
bool copyFile(const std::string& sourcePath, const std::string& destPath);
|
bool copyFile(const std::string& sourcePath, const std::string& destPath);
|
||||||
std::string getLastPathElement(const std::string& path);
|
|
||||||
std::string getExecutablePath(bool realPathOnly = false);
|
|
||||||
std::string getCurrentDirectory();
|
|
||||||
std::string getDataDirectory();
|
|
||||||
bool writeTextFile(const std::string& path, const std::string& content);
|
bool writeTextFile(const std::string& path, const std::string& content);
|
||||||
std::string getMimeTypeForFile(const std::string& filename);
|
std::string getMimeTypeForFile(const std::string& filename);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -17,9 +17,11 @@
|
||||||
* MA 02110-1301, USA.
|
* MA 02110-1301, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <tools/stringTools.h>
|
// Implement function declared in tools.h and tools/stringTools.h
|
||||||
|
#include "tools.h"
|
||||||
|
#include "tools/stringTools.h"
|
||||||
|
|
||||||
#include <tools/pathTools.h>
|
#include "tools/pathTools.h"
|
||||||
#include <unicode/normlzr.h>
|
#include <unicode/normlzr.h>
|
||||||
#include <unicode/rep.h>
|
#include <unicode/rep.h>
|
||||||
#include <unicode/translit.h>
|
#include <unicode/translit.h>
|
||||||
|
@ -268,7 +270,7 @@ std::string kiwix::urlDecode(const std::string& value, bool component)
|
||||||
/* Split string in a token array */
|
/* Split string in a token array */
|
||||||
std::vector<std::string> kiwix::split(const std::string& str,
|
std::vector<std::string> kiwix::split(const std::string& str,
|
||||||
const std::string& delims,
|
const std::string& delims,
|
||||||
bool trimEmpty,
|
bool dropEmpty,
|
||||||
bool keepDelim)
|
bool keepDelim)
|
||||||
{
|
{
|
||||||
std::string::size_type lastPos = 0;
|
std::string::size_type lastPos = 0;
|
||||||
|
@ -277,7 +279,7 @@ std::vector<std::string> kiwix::split(const std::string& str,
|
||||||
while( (pos = str.find_first_of(delims, lastPos)) < str.length() )
|
while( (pos = str.find_first_of(delims, lastPos)) < str.length() )
|
||||||
{
|
{
|
||||||
auto token = str.substr(lastPos, pos - lastPos);
|
auto token = str.substr(lastPos, pos - lastPos);
|
||||||
if (!trimEmpty || !token.empty()) {
|
if (!dropEmpty || !token.empty()) {
|
||||||
tokens.push_back(token);
|
tokens.push_back(token);
|
||||||
}
|
}
|
||||||
if (keepDelim) {
|
if (keepDelim) {
|
||||||
|
@ -287,7 +289,7 @@ std::vector<std::string> kiwix::split(const std::string& str,
|
||||||
}
|
}
|
||||||
|
|
||||||
auto token = str.substr(lastPos);
|
auto token = str.substr(lastPos);
|
||||||
if (!trimEmpty || !token.empty()) {
|
if (!dropEmpty || !token.empty()) {
|
||||||
tokens.push_back(token);
|
tokens.push_back(token);
|
||||||
}
|
}
|
||||||
return tokens;
|
return tokens;
|
||||||
|
|
|
@ -43,7 +43,6 @@ void loadICUExternalTables();
|
||||||
std::string urlEncode(const std::string& value, bool encodeReserved = false);
|
std::string urlEncode(const std::string& value, bool encodeReserved = false);
|
||||||
std::string urlDecode(const std::string& value, bool component = false);
|
std::string urlDecode(const std::string& value, bool component = false);
|
||||||
|
|
||||||
std::vector<std::string> split(const std::string& str, const std::string& delims, bool trimEmpty = true, bool keepDelim = false);
|
|
||||||
std::string join(const std::vector<std::string>& list, const std::string& sep);
|
std::string join(const std::vector<std::string>& list, const std::string& sep);
|
||||||
|
|
||||||
std::string ucAll(const std::string& word);
|
std::string ucAll(const std::string& word);
|
|
@ -2,6 +2,7 @@
|
||||||
#include "../include/manager.h"
|
#include "../include/manager.h"
|
||||||
#include "../include/library.h"
|
#include "../include/library.h"
|
||||||
#include "../include/book.h"
|
#include "../include/book.h"
|
||||||
|
#include "../include/tools.h"
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
|
||||||
|
@ -13,13 +14,13 @@ TEST(ManagerTest, addBookFromPathAndGetIdTest)
|
||||||
auto bookId = manager.addBookFromPathAndGetId("./test/example.zim");
|
auto bookId = manager.addBookFromPathAndGetId("./test/example.zim");
|
||||||
ASSERT_NE(bookId, "");
|
ASSERT_NE(bookId, "");
|
||||||
kiwix::Book book = lib.getBookById(bookId);
|
kiwix::Book book = lib.getBookById(bookId);
|
||||||
EXPECT_EQ(book.getPath(), computeAbsolutePath("", "./test/example.zim"));
|
EXPECT_EQ(book.getPath(), kiwix::computeAbsolutePath("", "./test/example.zim"));
|
||||||
|
|
||||||
const std::string pathToSave = "./pathToSave";
|
const std::string pathToSave = "./pathToSave";
|
||||||
const std::string url = "url";
|
const std::string url = "url";
|
||||||
bookId = manager.addBookFromPathAndGetId("./test/example.zim", pathToSave, url, true);
|
bookId = manager.addBookFromPathAndGetId("./test/example.zim", pathToSave, url, true);
|
||||||
book = lib.getBookById(bookId);
|
book = lib.getBookById(bookId);
|
||||||
auto savedPath = computeAbsolutePath(removeLastPathElement(manager.writableLibraryPath), pathToSave);
|
auto savedPath = kiwix::computeAbsolutePath(kiwix::removeLastPathElement(manager.writableLibraryPath), pathToSave);
|
||||||
EXPECT_EQ(book.getPath(), savedPath);
|
EXPECT_EQ(book.getPath(), savedPath);
|
||||||
EXPECT_EQ(book.getUrl(), url);
|
EXPECT_EQ(book.getUrl(), url);
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,7 +20,8 @@
|
||||||
#include "gtest/gtest.h"
|
#include "gtest/gtest.h"
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include "../include/tools/pathTools.h"
|
#include "../include/tools.h"
|
||||||
|
#include "../src/tools/pathTools.h"
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
# define S "\\"
|
# define S "\\"
|
||||||
|
@ -101,61 +102,61 @@ TEST(pathTools, normalizePartsRelative)
|
||||||
|
|
||||||
TEST(pathTools, isRelativePath)
|
TEST(pathTools, isRelativePath)
|
||||||
{
|
{
|
||||||
ASSERT_TRUE(isRelativePath("foo"));
|
ASSERT_TRUE(kiwix::isRelativePath("foo"));
|
||||||
ASSERT_TRUE(isRelativePath(P2("foo","bar")));
|
ASSERT_TRUE(kiwix::isRelativePath(P2("foo","bar")));
|
||||||
ASSERT_TRUE(isRelativePath(P3(".","foo","bar")));
|
ASSERT_TRUE(kiwix::isRelativePath(P3(".","foo","bar")));
|
||||||
ASSERT_TRUE(isRelativePath(P2("..","foo")));
|
ASSERT_TRUE(kiwix::isRelativePath(P2("..","foo")));
|
||||||
ASSERT_TRUE(isRelativePath(P4("foo","","bar","")));
|
ASSERT_TRUE(kiwix::isRelativePath(P4("foo","","bar","")));
|
||||||
ASSERT_FALSE(isRelativePath(A1("foo")));
|
ASSERT_FALSE(kiwix::isRelativePath(A1("foo")));
|
||||||
ASSERT_FALSE(isRelativePath(A2("foo", "bar")));
|
ASSERT_FALSE(kiwix::isRelativePath(A2("foo", "bar")));
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
ASSERT_FALSE(isRelativePath(P2(A_SAMBA, "foo")));
|
ASSERT_FALSE(kiwix::isRelativePath(P2(A_SAMBA, "foo")));
|
||||||
ASSERT_FALSE(isRelativePath(P3(A_SAMBA, "foo", "bar")));
|
ASSERT_FALSE(kiwix::isRelativePath(P3(A_SAMBA, "foo", "bar")));
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(pathTools, computeAbsolutePath)
|
TEST(pathTools, computeAbsolutePath)
|
||||||
{
|
{
|
||||||
ASSERT_EQ(computeAbsolutePath(A2("a","b"), "foo"),
|
ASSERT_EQ(kiwix::computeAbsolutePath(A2("a","b"), "foo"),
|
||||||
A3("a","b","foo"));
|
A3("a","b","foo"));
|
||||||
ASSERT_EQ(computeAbsolutePath(A3("a","b",""), "foo"),
|
ASSERT_EQ(kiwix::computeAbsolutePath(A3("a","b",""), "foo"),
|
||||||
A3("a","b","foo"));
|
A3("a","b","foo"));
|
||||||
ASSERT_EQ(computeAbsolutePath(A2("a","b"), P2(".","foo")),
|
ASSERT_EQ(kiwix::computeAbsolutePath(A2("a","b"), P2(".","foo")),
|
||||||
A3("a","b","foo"));
|
A3("a","b","foo"));
|
||||||
ASSERT_EQ(computeAbsolutePath(A2("a","b"), P2("..","foo")),
|
ASSERT_EQ(kiwix::computeAbsolutePath(A2("a","b"), P2("..","foo")),
|
||||||
A2("a","foo"));
|
A2("a","foo"));
|
||||||
ASSERT_EQ(computeAbsolutePath(A3("a","b",""), P2("..","foo")),
|
ASSERT_EQ(kiwix::computeAbsolutePath(A3("a","b",""), P2("..","foo")),
|
||||||
A2("a","foo"));
|
A2("a","foo"));
|
||||||
ASSERT_EQ(computeAbsolutePath(A5("a","b","c","d","e"), P2("..","foo")),
|
ASSERT_EQ(kiwix::computeAbsolutePath(A5("a","b","c","d","e"), P2("..","foo")),
|
||||||
A5("a","b","c","d","foo"));
|
A5("a","b","c","d","foo"));
|
||||||
ASSERT_EQ(computeAbsolutePath(A5("a","b","c","d","e"), P5("..","..","..","g","foo")),
|
ASSERT_EQ(kiwix::computeAbsolutePath(A5("a","b","c","d","e"), P5("..","..","..","g","foo")),
|
||||||
A4("a","b","g","foo"));
|
A4("a","b","g","foo"));
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
ASSERT_EQ(computeAbsolutePath(P4(A_SAMBA,"a","b",""), P2("..","foo")),
|
ASSERT_EQ(kiwix::computeAbsolutePath(P4(A_SAMBA,"a","b",""), P2("..","foo")),
|
||||||
P3(A_SAMBA,"a","foo"));
|
P3(A_SAMBA,"a","foo"));
|
||||||
ASSERT_EQ(computeAbsolutePath(P6(A_SAMBA,"a","b","c","d","e"), P5("..","..","..","g","foo")),
|
ASSERT_EQ(kiwix::computeAbsolutePath(P6(A_SAMBA,"a","b","c","d","e"), P5("..","..","..","g","foo")),
|
||||||
P5(A_SAMBA,"a","b","g","foo"));
|
P5(A_SAMBA,"a","b","g","foo"));
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(pathTools, computeRelativePath)
|
TEST(pathTools, computeRelativePath)
|
||||||
{
|
{
|
||||||
ASSERT_EQ(computeRelativePath(A2("a","b"), A3("a","b","foo")),
|
ASSERT_EQ(kiwix::computeRelativePath(A2("a","b"), A3("a","b","foo")),
|
||||||
"foo");
|
"foo");
|
||||||
ASSERT_EQ(computeRelativePath(A3("a","b",""), A3("a","b","foo")),
|
ASSERT_EQ(kiwix::computeRelativePath(A3("a","b",""), A3("a","b","foo")),
|
||||||
"foo");
|
"foo");
|
||||||
ASSERT_EQ(computeRelativePath(A2("a","b"), A2("a","foo")),
|
ASSERT_EQ(kiwix::computeRelativePath(A2("a","b"), A2("a","foo")),
|
||||||
P2("..","foo"));
|
P2("..","foo"));
|
||||||
ASSERT_EQ(computeRelativePath(A3("a","b",""), A2("a","foo")),
|
ASSERT_EQ(kiwix::computeRelativePath(A3("a","b",""), A2("a","foo")),
|
||||||
P2("..","foo"));
|
P2("..","foo"));
|
||||||
ASSERT_EQ(computeRelativePath(A5("a","b","c","d","e"), A5("a","b","c","d","foo")),
|
ASSERT_EQ(kiwix::computeRelativePath(A5("a","b","c","d","e"), A5("a","b","c","d","foo")),
|
||||||
P2("..","foo"));
|
P2("..","foo"));
|
||||||
ASSERT_EQ(computeRelativePath(A5("a","b","c","d","e"), A4("a","b","g","foo")),
|
ASSERT_EQ(kiwix::computeRelativePath(A5("a","b","c","d","e"), A4("a","b","g","foo")),
|
||||||
P5("..","..","..","g","foo"));
|
P5("..","..","..","g","foo"));
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
ASSERT_EQ(computeRelativePath(P3(A_SAMBA,"a","b"), P3(A_SAMBA,"a","foo")),
|
ASSERT_EQ(kiwix::computeRelativePath(P3(A_SAMBA,"a","b"), P3(A_SAMBA,"a","foo")),
|
||||||
P2("..","foo"));
|
P2("..","foo"));
|
||||||
ASSERT_EQ(computeRelativePath(P6(A_SAMBA,"a","b","c","d","e"), P5(A_SAMBA,"a","b","g","foo")),
|
ASSERT_EQ(kiwix::computeRelativePath(P6(A_SAMBA,"a","b","c","d","e"), P5(A_SAMBA,"a","b","g","foo")),
|
||||||
P5("..","..","..","g","foo"));
|
P5("..","..","..","g","foo"));
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -163,73 +164,73 @@ TEST(pathTools, computeRelativePath)
|
||||||
|
|
||||||
TEST(pathTools, removeLastPathElement)
|
TEST(pathTools, removeLastPathElement)
|
||||||
{
|
{
|
||||||
ASSERT_EQ(removeLastPathElement(P3("a","b","c")),
|
ASSERT_EQ(kiwix::removeLastPathElement(P3("a","b","c")),
|
||||||
P2("a","b"));
|
P2("a","b"));
|
||||||
ASSERT_EQ(removeLastPathElement(A3("a","b","c")),
|
ASSERT_EQ(kiwix::removeLastPathElement(A3("a","b","c")),
|
||||||
A2("a","b"));
|
A2("a","b"));
|
||||||
ASSERT_EQ(removeLastPathElement(P4("a","b","c","")),
|
ASSERT_EQ(kiwix::removeLastPathElement(P4("a","b","c","")),
|
||||||
P2("a","b"));
|
P2("a","b"));
|
||||||
ASSERT_EQ(removeLastPathElement(A4("a","b","c","")),
|
ASSERT_EQ(kiwix::removeLastPathElement(A4("a","b","c","")),
|
||||||
A2("a","b"));
|
A2("a","b"));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(pathTools, appendToDirectory)
|
TEST(pathTools, appendToDirectory)
|
||||||
{
|
{
|
||||||
ASSERT_EQ(appendToDirectory(P3("a","b","c"), "foo.xml"),
|
ASSERT_EQ(kiwix::appendToDirectory(P3("a","b","c"), "foo.xml"),
|
||||||
P4("a","b","c","foo.xml"));
|
P4("a","b","c","foo.xml"));
|
||||||
ASSERT_EQ(appendToDirectory(P4("a","b","c",""), "foo.xml"),
|
ASSERT_EQ(kiwix::appendToDirectory(P4("a","b","c",""), "foo.xml"),
|
||||||
P4("a","b","c","foo.xml"));
|
P4("a","b","c","foo.xml"));
|
||||||
ASSERT_EQ(appendToDirectory(P3("a","b","c"), P2("d","foo.xml")),
|
ASSERT_EQ(kiwix::appendToDirectory(P3("a","b","c"), P2("d","foo.xml")),
|
||||||
P5("a","b","c","d","foo.xml"));
|
P5("a","b","c","d","foo.xml"));
|
||||||
ASSERT_EQ(appendToDirectory(P4("a","b","c",""), P2("d","foo.xml")),
|
ASSERT_EQ(kiwix::appendToDirectory(P4("a","b","c",""), P2("d","foo.xml")),
|
||||||
P5("a","b","c","d","foo.xml"));
|
P5("a","b","c","d","foo.xml"));
|
||||||
ASSERT_EQ(appendToDirectory(P3("a","b","c"), P2(".","foo.xml")),
|
ASSERT_EQ(kiwix::appendToDirectory(P3("a","b","c"), P2(".","foo.xml")),
|
||||||
P5("a","b","c",".","foo.xml"));
|
P5("a","b","c",".","foo.xml"));
|
||||||
ASSERT_EQ(appendToDirectory(P4("a","b","c",""), P2(".","foo.xml")),
|
ASSERT_EQ(kiwix::appendToDirectory(P4("a","b","c",""), P2(".","foo.xml")),
|
||||||
P5("a","b","c",".","foo.xml"));
|
P5("a","b","c",".","foo.xml"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TEST(pathTools, goUp)
|
TEST(pathTools, goUp)
|
||||||
{
|
{
|
||||||
ASSERT_EQ(computeAbsolutePath(A3("a","b","c"), ".."),
|
ASSERT_EQ(kiwix::computeAbsolutePath(A3("a","b","c"), ".."),
|
||||||
A2("a", "b"));
|
A2("a", "b"));
|
||||||
ASSERT_EQ(computeAbsolutePath(A3("a","b","c"), P2("..","..")),
|
ASSERT_EQ(kiwix::computeAbsolutePath(A3("a","b","c"), P2("..","..")),
|
||||||
A1("a"));
|
A1("a"));
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
ASSERT_EQ(computeAbsolutePath(A3("a","b","c"), P3("..","..","..")),
|
ASSERT_EQ(kiwix::computeAbsolutePath(A3("a","b","c"), P3("..","..","..")),
|
||||||
"c:");
|
"c:");
|
||||||
ASSERT_EQ(computeAbsolutePath(A3("a","b","c"), P4("..","..","..","..")),
|
ASSERT_EQ(kiwix::computeAbsolutePath(A3("a","b","c"), P4("..","..","..","..")),
|
||||||
"c:");
|
"c:");
|
||||||
ASSERT_EQ(computeAbsolutePath(P4(A_SAMBA,"a","b","c"), ".."),
|
ASSERT_EQ(kiwix::computeAbsolutePath(P4(A_SAMBA,"a","b","c"), ".."),
|
||||||
P3(A_SAMBA,"a", "b"));
|
P3(A_SAMBA,"a", "b"));
|
||||||
ASSERT_EQ(computeAbsolutePath(P4(A_SAMBA,"a","b","c"), P2("..","..")),
|
ASSERT_EQ(kiwix::computeAbsolutePath(P4(A_SAMBA,"a","b","c"), P2("..","..")),
|
||||||
P2(A_SAMBA,"a"));
|
P2(A_SAMBA,"a"));
|
||||||
ASSERT_EQ(computeAbsolutePath(P4(A_SAMBA,"a","b","c"), P3("..","..","..")),
|
ASSERT_EQ(kiwix::computeAbsolutePath(P4(A_SAMBA,"a","b","c"), P3("..","..","..")),
|
||||||
A_SAMBA);
|
A_SAMBA);
|
||||||
ASSERT_EQ(computeAbsolutePath(P4(A_SAMBA,"a","b","c"), P4("..","..","..","..")),
|
ASSERT_EQ(kiwix::computeAbsolutePath(P4(A_SAMBA,"a","b","c"), P4("..","..","..","..")),
|
||||||
A_SAMBA);
|
A_SAMBA);
|
||||||
|
|
||||||
#else
|
#else
|
||||||
ASSERT_EQ(computeAbsolutePath(A3("a","b","c"), P3("..","..","..")),
|
ASSERT_EQ(kiwix::computeAbsolutePath(A3("a","b","c"), P3("..","..","..")),
|
||||||
"/");
|
"/");
|
||||||
ASSERT_EQ(computeAbsolutePath(A3("a","b","c"), P4("..","..","..","..")),
|
ASSERT_EQ(kiwix::computeAbsolutePath(A3("a","b","c"), P4("..","..","..","..")),
|
||||||
"/");
|
"/");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
ASSERT_EQ(computeAbsolutePath(A3("a","b","c"), P2("..", "foo")),
|
ASSERT_EQ(kiwix::computeAbsolutePath(A3("a","b","c"), P2("..", "foo")),
|
||||||
A3("a", "b","foo"));
|
A3("a", "b","foo"));
|
||||||
ASSERT_EQ(computeAbsolutePath(A3("a","b","c"), P3("..","..","foo")),
|
ASSERT_EQ(kiwix::computeAbsolutePath(A3("a","b","c"), P3("..","..","foo")),
|
||||||
A2("a","foo"));
|
A2("a","foo"));
|
||||||
ASSERT_EQ(computeAbsolutePath(A3("a","b","c"), P4("..","..","..","foo")),
|
ASSERT_EQ(kiwix::computeAbsolutePath(A3("a","b","c"), P4("..","..","..","foo")),
|
||||||
A1("foo"));
|
A1("foo"));
|
||||||
ASSERT_EQ(computeAbsolutePath(A3("a","b","c"), P5("..","..","..","..","foo")),
|
ASSERT_EQ(kiwix::computeAbsolutePath(A3("a","b","c"), P5("..","..","..","..","foo")),
|
||||||
A1("foo"));
|
A1("foo"));
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
ASSERT_EQ(computeAbsolutePath(P4(A_SAMBA,"a","b","c"), P4("..","..","..","foo")),
|
ASSERT_EQ(kiwix::computeAbsolutePath(P4(A_SAMBA,"a","b","c"), P4("..","..","..","foo")),
|
||||||
P2(A_SAMBA,"foo"));
|
P2(A_SAMBA,"foo"));
|
||||||
ASSERT_EQ(computeAbsolutePath(P4(A_SAMBA,"a","b","c"), P5("..","..","..","..","foo")),
|
ASSERT_EQ(kiwix::computeAbsolutePath(P4(A_SAMBA,"a","b","c"), P5("..","..","..","..","foo")),
|
||||||
P2(A_SAMBA,"foo"));
|
P2(A_SAMBA,"foo"));
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -241,20 +242,20 @@ TEST(pathTools, dirChange)
|
||||||
std::string p1("c:\\a\\b\\c");
|
std::string p1("c:\\a\\b\\c");
|
||||||
std::string p2("d:\\d\\e\\foo.xml");
|
std::string p2("d:\\d\\e\\foo.xml");
|
||||||
{
|
{
|
||||||
std::string relative_path = computeRelativePath(p1, p2);
|
std::string relative_path = kiwix::computeRelativePath(p1, p2);
|
||||||
ASSERT_EQ(relative_path, p2);
|
ASSERT_EQ(relative_path, p2);
|
||||||
std::string abs_path = computeAbsolutePath(p1, relative_path);
|
std::string abs_path = kiwix::computeAbsolutePath(p1, relative_path);
|
||||||
ASSERT_EQ(abs_path, p2);
|
ASSERT_EQ(abs_path, p2);
|
||||||
ASSERT_EQ(computeAbsolutePath(p1, "..\\..\\..\\..\\..\\d:\\d\\e\\foo.xml"), p2);
|
ASSERT_EQ(kiwix::computeAbsolutePath(p1, "..\\..\\..\\..\\..\\d:\\d\\e\\foo.xml"), p2);
|
||||||
}
|
}
|
||||||
std::string ps("\\\\samba\\d\\e\\foo.xml");
|
std::string ps("\\\\samba\\d\\e\\foo.xml");
|
||||||
{
|
{
|
||||||
std::string relative_path = computeRelativePath(p1, ps);
|
std::string relative_path = kiwix::computeRelativePath(p1, ps);
|
||||||
ASSERT_EQ(relative_path, ps);
|
ASSERT_EQ(relative_path, ps);
|
||||||
std::string abs_path = computeAbsolutePath(p1, relative_path);
|
std::string abs_path = kiwix::computeAbsolutePath(p1, relative_path);
|
||||||
ASSERT_EQ(abs_path, ps);
|
ASSERT_EQ(abs_path, ps);
|
||||||
// I'm not sure this test is valid on windows :/
|
// I'm not sure this test is valid on windows :/
|
||||||
// ASSERT_EQ(computeAbsolutePath(p1, "..\\..\\..\\..\\..\\\\samba\\d\\e\\foo.xml"), ps);
|
// ASSERT_EQ(kiwix::computeAbsolutePath(p1, "..\\..\\..\\..\\..\\\\samba\\d\\e\\foo.xml"), ps);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
|
|
||||||
#include "../include/tools/regexTools.h"
|
#include "../src/tools/regexTools.h"
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
#include "../include/manager.h"
|
#include "../include/manager.h"
|
||||||
#include "../include/server.h"
|
#include "../include/server.h"
|
||||||
#include "../include/name_mapper.h"
|
#include "../include/name_mapper.h"
|
||||||
|
#include "../include/tools.h"
|
||||||
|
|
||||||
using TestContextImpl = std::vector<std::pair<std::string, std::string> >;
|
using TestContextImpl = std::vector<std::pair<std::string, std::string> >;
|
||||||
struct TestContext : TestContextImpl {
|
struct TestContext : TestContextImpl {
|
||||||
|
@ -81,8 +81,8 @@ private: // data
|
||||||
ZimFileServer::ZimFileServer(int serverPort, std::string libraryFilePath)
|
ZimFileServer::ZimFileServer(int serverPort, std::string libraryFilePath)
|
||||||
: manager(&this->library)
|
: manager(&this->library)
|
||||||
{
|
{
|
||||||
if ( isRelativePath(libraryFilePath) )
|
if ( kiwix::isRelativePath(libraryFilePath) )
|
||||||
libraryFilePath = computeAbsolutePath(getCurrentDirectory(), libraryFilePath);
|
libraryFilePath = kiwix::computeAbsolutePath(kiwix::getCurrentDirectory(), libraryFilePath);
|
||||||
manager.readFile(libraryFilePath, true, true);
|
manager.readFile(libraryFilePath, true, true);
|
||||||
|
|
||||||
run(serverPort);
|
run(serverPort);
|
||||||
|
|
Loading…
Reference in New Issue