mirror of
https://github.com/Dushistov/sdcv.git
synced 2025-12-15 09:21:55 +00:00
remove file module, move code to utils
This commit is contained in:
@@ -49,8 +49,6 @@ set(sdcv_SRCS
|
||||
src/distance.cpp
|
||||
src/distance.hpp
|
||||
src/mapfile.hpp
|
||||
src/file.hpp
|
||||
src/file.cpp
|
||||
)
|
||||
|
||||
if (ENABLE_NLS)
|
||||
|
||||
43
src/file.cpp
43
src/file.cpp
@@ -1,43 +0,0 @@
|
||||
#include <algorithm>
|
||||
|
||||
#include <glib.h>
|
||||
|
||||
#include "file.hpp"
|
||||
|
||||
static void __for_each_file(const std::string& dirname, const std::string& suff,
|
||||
const std::list<std::string>& order_list, const std::list<std::string>& disable_list,
|
||||
const std::function<void (const std::string&, bool)>& f)
|
||||
{
|
||||
GDir *dir = g_dir_open(dirname.c_str(), 0, nullptr);
|
||||
if (dir) {
|
||||
const gchar *filename;
|
||||
|
||||
while ((filename = g_dir_read_name(dir))!=nullptr) {
|
||||
const std::string fullfilename(dirname+G_DIR_SEPARATOR_S+filename);
|
||||
if (g_file_test(fullfilename.c_str(), G_FILE_TEST_IS_DIR))
|
||||
__for_each_file(fullfilename, suff, order_list, disable_list, f);
|
||||
else if (g_str_has_suffix(filename, suff.c_str()) &&
|
||||
std::find(order_list.begin(), order_list.end(),
|
||||
fullfilename)==order_list.end()) {
|
||||
const bool disable = std::find(disable_list.begin(),
|
||||
disable_list.end(),
|
||||
fullfilename)!=disable_list.end();
|
||||
f(fullfilename, disable);
|
||||
}
|
||||
}
|
||||
g_dir_close(dir);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void for_each_file(const std::list<std::string>& dirs_list, const std::string& suff,
|
||||
const std::list<std::string>& order_list, const std::list<std::string>& disable_list,
|
||||
const std::function<void (const std::string&, bool)>& f)
|
||||
{
|
||||
for (const std::string & item : order_list) {
|
||||
const bool disable = std::find(disable_list.begin(), disable_list.end(), item) != disable_list.end();
|
||||
f(item, disable);
|
||||
}
|
||||
for (const std::string& item : dirs_list)
|
||||
__for_each_file(item, suff, order_list, disable_list, f);
|
||||
}
|
||||
10
src/file.hpp
10
src/file.hpp
@@ -1,10 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include <list>
|
||||
#include <string>
|
||||
#include <functional>
|
||||
|
||||
extern void for_each_file(const std::list<std::string>& dirs_list, const std::string& suff,
|
||||
const std::list<std::string>& order_list, const std::list<std::string>& disable_list,
|
||||
const std::function<void (const std::string&, bool)>& f);
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include "file.hpp"
|
||||
#include "stardict_lib.hpp"
|
||||
#include "readline.hpp"
|
||||
|
||||
|
||||
@@ -11,8 +11,8 @@
|
||||
#include <glib/gstdio.h>
|
||||
|
||||
#include "distance.hpp"
|
||||
#include "file.hpp"
|
||||
#include "mapfile.hpp"
|
||||
#include "utils.hpp"
|
||||
|
||||
#include "stardict_lib.hpp"
|
||||
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
#include <glib/gi18n.h>
|
||||
#include <cstdlib>
|
||||
#include <cstdio>
|
||||
#include <algorithm>
|
||||
|
||||
#include "utils.hpp"
|
||||
|
||||
@@ -67,3 +68,41 @@ char *locale_to_utf8(const char *loc_str)
|
||||
|
||||
return str;
|
||||
}
|
||||
|
||||
static void __for_each_file(const std::string& dirname, const std::string& suff,
|
||||
const std::list<std::string>& order_list, const std::list<std::string>& disable_list,
|
||||
const std::function<void (const std::string&, bool)>& f)
|
||||
{
|
||||
GDir *dir = g_dir_open(dirname.c_str(), 0, nullptr);
|
||||
if (dir) {
|
||||
const gchar *filename;
|
||||
|
||||
while ((filename = g_dir_read_name(dir))!=nullptr) {
|
||||
const std::string fullfilename(dirname+G_DIR_SEPARATOR_S+filename);
|
||||
if (g_file_test(fullfilename.c_str(), G_FILE_TEST_IS_DIR))
|
||||
__for_each_file(fullfilename, suff, order_list, disable_list, f);
|
||||
else if (g_str_has_suffix(filename, suff.c_str()) &&
|
||||
std::find(order_list.begin(), order_list.end(),
|
||||
fullfilename)==order_list.end()) {
|
||||
const bool disable = std::find(disable_list.begin(),
|
||||
disable_list.end(),
|
||||
fullfilename)!=disable_list.end();
|
||||
f(fullfilename, disable);
|
||||
}
|
||||
}
|
||||
g_dir_close(dir);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void for_each_file(const std::list<std::string>& dirs_list, const std::string& suff,
|
||||
const std::list<std::string>& order_list, const std::list<std::string>& disable_list,
|
||||
const std::function<void (const std::string&, bool)>& f)
|
||||
{
|
||||
for (const std::string & item : order_list) {
|
||||
const bool disable = std::find(disable_list.begin(), disable_list.end(), item) != disable_list.end();
|
||||
f(item, disable);
|
||||
}
|
||||
for (const std::string& item : dirs_list)
|
||||
__for_each_file(item, suff, order_list, disable_list, f);
|
||||
}
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
|
||||
#include <glib.h>
|
||||
#include <string>
|
||||
#include <list>
|
||||
#include <functional>
|
||||
|
||||
template <typename T, typename unref_res_t, void (*unref_res)(unref_res_t *)>
|
||||
class ResourceWrapper {
|
||||
@@ -57,3 +59,7 @@ namespace glib {
|
||||
|
||||
extern char *locale_to_utf8(const char *locstr);
|
||||
extern std::string utf8_to_locale_ign_err(const std::string& utf8_str);
|
||||
|
||||
extern void for_each_file(const std::list<std::string>& dirs_list, const std::string& suff,
|
||||
const std::list<std::string>& order_list, const std::list<std::string>& disable_list,
|
||||
const std::function<void (const std::string&, bool)>& f);
|
||||
|
||||
Reference in New Issue
Block a user