MCPcopy Create free account
hub / github.com/crownengine/crown / expand

Function expand

src/core/filesystem/path.cpp:125–213  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

123 }
124
125 bool expand(DynamicString &expanded, const char *path_template)
126 {
127 const char *ch = path_template;
128 CE_ENSURE(ch != NULL);
129
130 expanded = "";
131 char buf[16];
132
133 while (*ch) {
134 if (*ch != '$') {
135 expanded += *ch;
136 ++ch;
137 continue;
138 }
139
140 ++ch;
141 if (strncmp(ch, "USER_DATA", 9) == 0 && !isalnum((unsigned char)ch[9])) {
142 ch += 9;
143 if (CROWN_PLATFORM_ANDROID) {
144 const char *path = (const char *)g_platform_data._android_internal_data_path;
145 if (path == NULL || path[0] == '\0')
146 return false;
147 expanded += path;
148 } else {
149 TempAllocator256 ta;
150 DynamicString path(ta);
151 environment::user_data_dir(path);
152 if (path.empty())
153 return false;
154
155 expanded += path;
156 }
157 } else if (CROWN_PLATFORM_ANDROID
158 && strncmp(ch, "OBB_PATH", 8) == 0
159 && !isalnum((unsigned char)ch[8])
160 ) {
161 ch += 8;
162 const char *path = (const char *)g_platform_data._android_obb_path;
163 if (path == NULL || path[0] == '\0')
164 return false;
165 expanded += path;
166 } else if (strncmp(ch, "UTC_DATE", 8) == 0 && !isalnum((unsigned char)ch[8])) {
167 ch += 8;
168 date::Date d;
169 date::utc_date(d);
170 date::to_string(buf, sizeof(buf), d);
171 expanded += buf;
172 } else if (strncmp(ch, "UTC_TIME", 8) == 0 && !isalnum((unsigned char)ch[8])) {
173 ch += 8;
174 date::Time t;
175 date::utc_time(t);
176 date::to_string(buf, sizeof(buf), t);
177 expanded += buf;
178 } else if (strncmp(ch, "RANDOM", 6) == 0 && !isalnum((unsigned char)ch[6])) {
179 ch += 6;
180 Random random;
181 const char alphabet[] = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
182 for (u32 ii = 0; ii < 8; ++ii)

Callers 6

EvaluateMethod · 0.85
expandMethod · 0.85
EvaluateMethod · 0.85
expandMethod · 0.85
test_pathFunction · 0.85
main_loopMethod · 0.85

Calls 9

strncmpFunction · 0.85
user_data_dirFunction · 0.85
utc_dateFunction · 0.85
utc_timeFunction · 0.85
dateFunction · 0.85
tmp_dirFunction · 0.85
to_stringFunction · 0.50
timeFunction · 0.50
emptyMethod · 0.45

Tested by 1

test_pathFunction · 0.68