Skip to content

Commit ca7e53e

Browse files
committed
string_replace_substring - move out implicit strlen
1 parent b90c2d4 commit ca7e53e

File tree

6 files changed

+72
-70
lines changed

6 files changed

+72
-70
lines changed

gfx/video_shader_parse.c

+57-57
Original file line numberDiff line numberDiff line change
@@ -63,21 +63,21 @@
6363

6464
enum wildcard_type
6565
{
66-
RARCH_WILDCARD_CONTENT_DIR = 0,
67-
RARCH_WILDCARD_CORE,
68-
RARCH_WILDCARD_GAME,
69-
RARCH_WILDCARD_VIDEO_DRIVER,
70-
RARCH_WILDCARD_VIDEO_USER_ROTATION,
71-
RARCH_WILDCARD_VIDEO_ALLOW_CORE_ROTATION,
72-
RARCH_WILDCARD_CORE_REQUESTED_ROTATION,
73-
RARCH_WILDCARD_VIDEO_FINAL_ROTATION,
74-
RARCH_WILDCARD_SCREEN_ORIENTATION,
75-
RARCH_WILDCARD_VIEWPORT_ASPECT_ORIENTATION,
76-
RARCH_WILDCARD_CORE_ASPECT_ORIENTATION,
77-
RARCH_WILDCARD_PRESET_DIR,
78-
RARCH_WILDCARD_PRESET,
79-
RARCH_WILDCARD_VIDEO_DRIVER_SHADER_EXT,
80-
RARCH_WILDCARD_VIDEO_DRIVER_PRESET_EXT
66+
RARCH_WC_CONTENT_DIR = 0,
67+
RARCH_WC_CORE,
68+
RARCH_WC_GAME,
69+
RARCH_WC_VIDEO_DRIVER,
70+
RARCH_WC_VIDEO_USER_ROTATION,
71+
RARCH_WC_VIDEO_ALLOW_CORE_ROTATION,
72+
RARCH_WC_CORE_REQUESTED_ROTATION,
73+
RARCH_WC_VIDEO_FINAL_ROTATION,
74+
RARCH_WC_SCREEN_ORIENTATION,
75+
RARCH_WC_VIEWPORT_ASPECT_ORIENTATION,
76+
RARCH_WC_CORE_ASPECT_ORIENTATION,
77+
RARCH_WC_PRESET_DIR,
78+
RARCH_WC_PRESET,
79+
RARCH_WC_VIDEO_DRIVER_SHADER_EXT,
80+
RARCH_WC_VIDEO_DRIVER_PRESET_EXT
8181
};
8282

8383
struct wildcard_token
@@ -87,24 +87,6 @@ struct wildcard_token
8787
size_t token_size;
8888
};
8989

90-
static struct wildcard_token wildcard_tokens[SHADER_NUM_WILDCARDS] = {
91-
{RARCH_WILDCARD_CONTENT_DIR, "$CONTENT-DIR$", STRLEN_CONST("$CONTENT-DIR$")},
92-
{RARCH_WILDCARD_CORE, "$CORE$", STRLEN_CONST("$CORE$")},
93-
{RARCH_WILDCARD_GAME, "$GAME$", STRLEN_CONST("$GAME$")},
94-
{RARCH_WILDCARD_VIDEO_DRIVER, "$VID-DRV$", STRLEN_CONST("$VID-DRV$")},
95-
{RARCH_WILDCARD_VIDEO_DRIVER_PRESET_EXT, "$VID-DRV-PRESET-EXT$", STRLEN_CONST("$VID-DRV-PRESET-EXT$")},
96-
{RARCH_WILDCARD_VIDEO_DRIVER_SHADER_EXT, "$VID-DRV-SHADER-EXT$", STRLEN_CONST("$VID-DRV-SHADER-EXT$")},
97-
{RARCH_WILDCARD_CORE_REQUESTED_ROTATION, "$CORE-REQ-ROT$", STRLEN_CONST("$CORE-REQ-ROT$")},
98-
{RARCH_WILDCARD_VIDEO_ALLOW_CORE_ROTATION, "$VID-ALLOW-CORE-ROT$", STRLEN_CONST("$VID-ALLOW-CORE-ROT$")},
99-
{RARCH_WILDCARD_VIDEO_USER_ROTATION, "$VID-USER-ROT$", STRLEN_CONST("$VID-USER-ROT$")},
100-
{RARCH_WILDCARD_VIDEO_FINAL_ROTATION, "$VID-FINAL-ROT$", STRLEN_CONST("$VID-FINAL-ROT$")},
101-
{RARCH_WILDCARD_SCREEN_ORIENTATION, "$SCREEN-ORIENT$", STRLEN_CONST("$SCREEN-ORIENT$")},
102-
{RARCH_WILDCARD_VIEWPORT_ASPECT_ORIENTATION, "$VIEW-ASPECT-ORIENT$", STRLEN_CONST("$VIEW-ASPECT-ORIENT$")},
103-
{RARCH_WILDCARD_CORE_ASPECT_ORIENTATION, "$CORE-ASPECT-ORIENT$", STRLEN_CONST("$CORE-ASPECT-ORIENT$")},
104-
{RARCH_WILDCARD_PRESET_DIR, "$PRESET-DIR$", STRLEN_CONST("$PRESET-DIR$")},
105-
{RARCH_WILDCARD_PRESET, "$PRESET$", STRLEN_CONST("$PRESET$")},
106-
};
107-
10890
/* TODO/FIXME - global state - perhaps move outside this file */
10991
static path_change_data_t *file_change_data = NULL;
11092

@@ -222,20 +204,39 @@ static void fill_pathname_expanded_and_absolute(
222204
**/
223205
static void video_shader_replace_wildcards(char *s, size_t len, char *in_preset_path)
224206
{
225-
int i = 0;
207+
static struct wildcard_token wildcard_tokens[SHADER_NUM_WILDCARDS] = {
208+
{RARCH_WC_CONTENT_DIR, "$CONTENT-DIR$", STRLEN_CONST("$CONTENT-DIR$")},
209+
{RARCH_WC_CORE, "$CORE$", STRLEN_CONST("$CORE$")},
210+
{RARCH_WC_GAME, "$GAME$", STRLEN_CONST("$GAME$")},
211+
{RARCH_WC_VIDEO_DRIVER, "$VID-DRV$", STRLEN_CONST("$VID-DRV$")},
212+
{RARCH_WC_VIDEO_DRIVER_PRESET_EXT, "$VID-DRV-PRESET-EXT$", STRLEN_CONST("$VID-DRV-PRESET-EXT$")},
213+
{RARCH_WC_VIDEO_DRIVER_SHADER_EXT, "$VID-DRV-SHADER-EXT$", STRLEN_CONST("$VID-DRV-SHADER-EXT$")},
214+
{RARCH_WC_CORE_REQUESTED_ROTATION, "$CORE-REQ-ROT$", STRLEN_CONST("$CORE-REQ-ROT$")},
215+
{RARCH_WC_VIDEO_ALLOW_CORE_ROTATION, "$VID-ALLOW-CORE-ROT$", STRLEN_CONST("$VID-ALLOW-CORE-ROT$")},
216+
{RARCH_WC_VIDEO_USER_ROTATION, "$VID-USER-ROT$", STRLEN_CONST("$VID-USER-ROT$")},
217+
{RARCH_WC_VIDEO_FINAL_ROTATION, "$VID-FINAL-ROT$", STRLEN_CONST("$VID-FINAL-ROT$")},
218+
{RARCH_WC_SCREEN_ORIENTATION, "$SCREEN-ORIENT$", STRLEN_CONST("$SCREEN-ORIENT$")},
219+
{RARCH_WC_VIEWPORT_ASPECT_ORIENTATION, "$VIEW-ASPECT-ORIENT$", STRLEN_CONST("$VIEW-ASPECT-ORIENT$")},
220+
{RARCH_WC_CORE_ASPECT_ORIENTATION, "$CORE-ASPECT-ORIENT$", STRLEN_CONST("$CORE-ASPECT-ORIENT$")},
221+
{RARCH_WC_PRESET_DIR, "$PRESET-DIR$", STRLEN_CONST("$PRESET-DIR$")},
222+
{RARCH_WC_PRESET, "$PRESET$", STRLEN_CONST("$PRESET$")},
223+
};
224+
225+
int i;
226+
size_t _len;
226227
settings_t *settings;
227228
char replaced_path[PATH_MAX_LENGTH];
228229

229-
if (!strstr(s, RARCH_WILDCARD_DELIMITER))
230+
if (!strstr(s, RARCH_WC_DELIMITER))
230231
return;
231232

232233
settings = config_get_ptr();
233-
strlcpy(replaced_path, s, sizeof(replaced_path));
234+
_len = strlcpy(replaced_path, s, sizeof(replaced_path));
234235

235236
/* Step through the wildcards while we can still find the
236237
* delimiter in the replaced path
237238
*/
238-
for (i = 0; (i < SHADER_NUM_WILDCARDS) && (strstr(replaced_path, RARCH_WILDCARD_DELIMITER)); i++)
239+
for (i = 0; (i < SHADER_NUM_WILDCARDS) && (strstr(replaced_path, RARCH_WC_DELIMITER)); i++)
239240
{
240241
/* If the wildcard text is in the path then process it */
241242
if (strstr(replaced_path, wildcard_tokens[i].token_name))
@@ -245,7 +246,7 @@ static void video_shader_replace_wildcards(char *s, size_t len, char *in_preset_
245246

246247
switch (wildcard_tokens[i].token_id)
247248
{
248-
case RARCH_WILDCARD_CONTENT_DIR:
249+
case RARCH_WC_CONTENT_DIR:
249250
{
250251
char content_dir_name[DIR_MAX_LENGTH] = "";
251252
const char *rarch_path_basename = path_get(RARCH_PATH_BASENAME);
@@ -261,10 +262,10 @@ static void video_shader_replace_wildcards(char *s, size_t len, char *in_preset_
261262
replace_text[0] = '\0';
262263
}
263264
break;
264-
case RARCH_WILDCARD_CORE:
265+
case RARCH_WC_CORE:
265266
replace_len = strlcpy(replace_text, runloop_state_get_ptr()->system.info.library_name, sizeof(replace_text));
266267
break;
267-
case RARCH_WILDCARD_GAME:
268+
case RARCH_WC_GAME:
268269
{
269270
const char *rarch_path_basename = path_get(RARCH_PATH_BASENAME);
270271
if (rarch_path_basename)
@@ -275,10 +276,10 @@ static void video_shader_replace_wildcards(char *s, size_t len, char *in_preset_
275276
replace_text[0] = '\0';
276277
}
277278
break;
278-
case RARCH_WILDCARD_VIDEO_DRIVER:
279+
case RARCH_WC_VIDEO_DRIVER:
279280
replace_len = strlcpy(replace_text, settings->arrays.video_driver, sizeof(replace_text));
280281
break;
281-
case RARCH_WILDCARD_CORE_REQUESTED_ROTATION:
282+
case RARCH_WC_CORE_REQUESTED_ROTATION:
282283
replace_len = strlcpy(replace_text, "CORE-REQ-ROT-",
283284
sizeof(replace_text));
284285
replace_len += snprintf(
@@ -287,7 +288,7 @@ static void video_shader_replace_wildcards(char *s, size_t len, char *in_preset_
287288
"%d",
288289
retroarch_get_core_requested_rotation() * 90);
289290
break;
290-
case RARCH_WILDCARD_VIDEO_ALLOW_CORE_ROTATION:
291+
case RARCH_WC_VIDEO_ALLOW_CORE_ROTATION:
291292
replace_len = strlcpy(replace_text, "VID-ALLOW-CORE-ROT-O",
292293
sizeof(replace_text));
293294
if (settings->bools.video_allow_rotate)
@@ -297,7 +298,7 @@ static void video_shader_replace_wildcards(char *s, size_t len, char *in_preset_
297298
replace_len += strlcpy(replace_text + replace_len, "FF",
298299
sizeof(replace_text) - replace_len);
299300
break;
300-
case RARCH_WILDCARD_VIDEO_USER_ROTATION:
301+
case RARCH_WC_VIDEO_USER_ROTATION:
301302
replace_len = strlcpy(replace_text, "VID-USER-ROT-",
302303
sizeof(replace_text));
303304
replace_len += snprintf(
@@ -306,7 +307,7 @@ static void video_shader_replace_wildcards(char *s, size_t len, char *in_preset_
306307
"%d",
307308
settings->uints.video_rotation * 90);
308309
break;
309-
case RARCH_WILDCARD_VIDEO_FINAL_ROTATION:
310+
case RARCH_WC_VIDEO_FINAL_ROTATION:
310311
replace_len = strlcpy(replace_text,
311312
"VID-FINAL-ROT-",
312313
sizeof(replace_text));
@@ -316,7 +317,7 @@ static void video_shader_replace_wildcards(char *s, size_t len, char *in_preset_
316317
"%d",
317318
settings->uints.video_rotation * 90);
318319
break;
319-
case RARCH_WILDCARD_SCREEN_ORIENTATION:
320+
case RARCH_WC_SCREEN_ORIENTATION:
320321
replace_len = strlcpy(replace_text,
321322
"SCREEN-ORIENT-",
322323
sizeof(replace_text));
@@ -326,7 +327,7 @@ static void video_shader_replace_wildcards(char *s, size_t len, char *in_preset_
326327
"%d",
327328
settings->uints.screen_orientation * 90);
328329
break;
329-
case RARCH_WILDCARD_CORE_ASPECT_ORIENTATION:
330+
case RARCH_WC_CORE_ASPECT_ORIENTATION:
330331
{
331332
int requested_rotation;
332333
replace_len = strlcpy(replace_text,
@@ -339,7 +340,7 @@ static void video_shader_replace_wildcards(char *s, size_t len, char *in_preset_
339340
sizeof(replace_text) - replace_len);
340341
}
341342
break;
342-
case RARCH_WILDCARD_VIEWPORT_ASPECT_ORIENTATION:
343+
case RARCH_WC_VIEWPORT_ASPECT_ORIENTATION:
343344
{
344345
unsigned viewport_width = 0;
345346
unsigned viewport_height = 0;
@@ -353,7 +354,7 @@ static void video_shader_replace_wildcards(char *s, size_t len, char *in_preset_
353354
sizeof(replace_text) - replace_len);
354355
}
355356
break;
356-
case RARCH_WILDCARD_PRESET_DIR:
357+
case RARCH_WC_PRESET_DIR:
357358
{
358359
char preset_dir_name[DIR_MAX_LENGTH];
359360
fill_pathname_parent_dir_name(preset_dir_name, in_preset_path, sizeof(preset_dir_name));
@@ -365,7 +366,7 @@ static void video_shader_replace_wildcards(char *s, size_t len, char *in_preset_
365366
replace_text[0] = '\0';
366367
}
367368
break;
368-
case RARCH_WILDCARD_PRESET:
369+
case RARCH_WC_PRESET:
369370
{
370371
char preset_name[NAME_MAX_LENGTH];
371372
fill_pathname(preset_name,
@@ -377,7 +378,7 @@ static void video_shader_replace_wildcards(char *s, size_t len, char *in_preset_
377378
replace_text[0] = '\0';
378379
}
379380
break;
380-
case RARCH_WILDCARD_VIDEO_DRIVER_SHADER_EXT:
381+
case RARCH_WC_VIDEO_DRIVER_SHADER_EXT:
381382
{
382383
gfx_ctx_flags_t flags;
383384
flags.flags = 0;
@@ -393,7 +394,7 @@ static void video_shader_replace_wildcards(char *s, size_t len, char *in_preset_
393394
replace_text[0] = '\0';
394395
}
395396
break;
396-
case RARCH_WILDCARD_VIDEO_DRIVER_PRESET_EXT:
397+
case RARCH_WC_VIDEO_DRIVER_PRESET_EXT:
397398
{
398399
gfx_ctx_flags_t flags;
399400
flags.flags = 0;
@@ -414,11 +415,10 @@ static void video_shader_replace_wildcards(char *s, size_t len, char *in_preset_
414415
break;
415416
}
416417
{
417-
char *replace_output = string_replace_substring(replaced_path,
418-
wildcard_tokens[i].token_name,
419-
wildcard_tokens[i].token_size,
420-
replace_text,
421-
replace_len);
418+
char *replace_output = string_replace_substring(
419+
replaced_path, _len,
420+
wildcard_tokens[i].token_name, wildcard_tokens[i].token_size,
421+
replace_text, replace_len);
422422

423423
strlcpy(replaced_path, replace_output, sizeof(replaced_path));
424424

gfx/video_shader_parse.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
#define GFX_MAX_FRAME_HISTORY 128
4343
#endif
4444

45-
#define RARCH_WILDCARD_DELIMITER "$"
45+
#define RARCH_WC_DELIMITER "$"
4646

4747
/**
4848
* video_shader_parse_type:

libretro-common/formats/logiqx_dat/logiqx_dat.c

+5-5
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,12 @@ struct logiqx_dat
3535

3636
/* List of HTML formatting codes that must
3737
* be replaced when parsing XML data */
38-
const char *logiqx_dat_html_code_list[][2] = {
38+
const char *logiqx_dat_html_code_list[][2] = {
3939
{"&amp;", "&"},
4040
{"&apos;", "'"},
41-
{"&gt;", ">"},
41+
{"&gt;", ">"},
4242
{"&lt;", "<"},
43-
{"&quot;", "\""}
43+
{"&quot;", "\""}
4444
};
4545

4646
#define LOGIQX_DAT_HTML_CODE_LIST_SIZE 5
@@ -53,7 +53,7 @@ const char *logiqx_dat_html_code_list[][2] = {
5353
* Also provides access to file size (DAT files can
5454
* be very large, so it is useful to have this information
5555
* on hand - i.e. so we can check that the system has
56-
* enough free memory to load the file). */
56+
* enough free memory to load the file). */
5757
bool logiqx_dat_path_is_valid(const char *path, uint64_t *file_size)
5858
{
5959
const char *file_ext = NULL;
@@ -254,7 +254,7 @@ static void logiqx_dat_sanitise_element_data(
254254
if (strstr(sanitised_data, find_string))
255255
{
256256
char *tmp = string_replace_substring(
257-
sanitised_data,
257+
sanitised_data, strlen(sanitised_data),
258258
find_string, strlen(find_string),
259259
replace_string, strlen(replace_string));
260260

libretro-common/include/string/stdstring.h

+3-2
Original file line numberDiff line numberDiff line change
@@ -159,8 +159,9 @@ char *string_to_lower(char *s);
159159

160160
char *string_ucwords(char *s);
161161

162-
char *string_replace_substring(const char *in,
163-
const char *pattern, size_t pattern_len,
162+
char *string_replace_substring(
163+
const char *in, size_t in_len,
164+
const char *pattern, size_t pattern_len,
164165
const char *replacement, size_t replacement_len);
165166

166167
/**

libretro-common/string/stdstring.c

+4-3
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,9 @@ char *string_ucwords(char *s)
7777
return s;
7878
}
7979

80-
char *string_replace_substring(const char *in,
81-
const char *pattern, size_t pattern_len,
80+
char *string_replace_substring(
81+
const char *in, size_t in_len,
82+
const char *pattern, size_t pattern_len,
8283
const char *replacement, size_t replacement_len)
8384
{
8485
size_t outlen;
@@ -101,7 +102,7 @@ char *string_replace_substring(const char *in,
101102
numhits++;
102103
}
103104

104-
outlen = strlen(in) - pattern_len*numhits + replacement_len*numhits;
105+
outlen = in_len - pattern_len * numhits + replacement_len*numhits;
105106

106107
if (!(out = (char *)malloc(outlen+1)))
107108
return NULL;

msg_hash.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ int msg_hash_get_help_enum(enum msg_hash_enums msg, char *s, size_t len)
4242
{
4343
int ret = msg_hash_get_help_us_enum(msg, s, len);
4444
/* Replace line-breaks with "empty line-breaks" for readability */
45-
const char *temp = string_replace_substring(s,
45+
const char *temp = string_replace_substring(s, strlen(s),
4646
"\n", STRLEN_CONST("\n"),
4747
"\n \n", STRLEN_CONST("\n \n"));
4848

@@ -972,6 +972,6 @@ const char *msg_hash_get_wideglyph_str(void)
972972
break;
973973
}
974974
#endif
975-
975+
976976
return NULL;
977977
}

0 commit comments

Comments
 (0)