DDraceNetwork Documentation
Loading...
Searching...
No Matches
config_common.h
Go to the documentation of this file.
1#include <base/logger.h>
2#include <base/system.h>
3#include <engine/storage.h>
4
10
11inline void ProcessItem(const char *pItemName, IStorage *pStorage)
12{
13 char aConfig[2048];
14
15 size_t Len = (size_t)str_length(pItemName) + 1; // including '\0'
16 if(Len > sizeof(aConfig))
17 {
18 dbg_msg("config_common", "can't process overlong filename '%s'", pItemName);
19 return;
20 }
21
22 if(!str_endswith(pItemName, ".map"))
23 {
24 dbg_msg("config_common", "can't process non-map file '%s'", pItemName);
25 return;
26 }
27
29 aConfig[Len - sizeof(".map")] = 0;
30 str_append(aConfig, ".cfg");
31 dbg_msg("config_common", "processing '%s'", pItemName);
33}
34
35static int ListdirCallback(const char *pItemName, int IsDir, int StorageType, void *pUser)
36{
37 if(!IsDir)
38 {
40 char aName[2048];
41 str_format(aName, sizeof(aName), "%s/%s", Context.m_pPath, pItemName);
42 ProcessItem(aName, Context.m_pStorage);
43 }
44
45 return 0;
46}
47
48int main(int argc, const char **argv) // NOLINT(misc-definitions-in-headers)
49{
52
53 std::unique_ptr<IStorage> pStorage = CreateLocalStorage();
54 if(!pStorage)
55 {
56 log_error("config_common", "Error creating local storage");
57 return -1;
58 }
59
60 if(argc == 1)
61 {
62 dbg_msg("usage", "%s FILE1 [ FILE2... ]", argv[0]);
63 dbg_msg("usage", "%s DIRECTORY", argv[0]);
64 return -1;
65 }
66 else if(argc == 2 && fs_is_dir(argv[1]))
67 {
70 }
71
72 for(int i = 1; i < argc; i++)
73 {
74 ProcessItem(argv[i], pStorage.get());
75 }
76 return 0;
77}
Definition system.h:2845
Definition storage.h:21
@ TYPE_ALL
Definition storage.h:27
Definition vmath.h:15
int main(int argc, const char **argv)
Definition config_common.h:48
void ProcessItem(const char *pItemName, IStorage *pStorage)
Definition config_common.h:11
static int ListdirCallback(const char *pItemName, int IsDir, int StorageType, void *pUser)
Definition config_common.h:35
static void Process(IStorage *pStorage, const char *pMapName, const char *pConfigName)
Definition config_retrieve.cpp:6
void dbg_msg(const char *sys, const char *fmt,...)
Definition system.cpp:170
int fs_is_dir(const char *path)
Definition system.cpp:2595
void log_set_global_logger_default()
Definition log.cpp:43
int str_length(const char *str)
Definition system.cpp:3073
void str_append(char *dst, const char *src, int dst_size)
Definition system.cpp:3022
int str_copy(char *dst, const char *src, int dst_size)
Definition system.cpp:3039
#define log_error(sys,...)
Definition log.h:23
std::unique_ptr< IStorage > CreateLocalStorage()
Definition storage.cpp:941
Definition config_common.h:6
const char * m_pPath
Definition config_common.h:7
IStorage * m_pStorage
Definition config_common.h:8
#define str_format
Definition system.cpp:3110
const char * str_endswith(const char *str, const char *suffix)
Definition system.cpp:3412