Skip to content

Commit 77f39ab

Browse files
committed
Resync
1 parent 5b5a830 commit 77f39ab

4 files changed

Lines changed: 51 additions & 72 deletions

File tree

file/file_path.c

Lines changed: 34 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -353,10 +353,25 @@ size_t fill_pathname(char *s, const char *in_path,
353353
**/
354354
char *find_last_slash(const char *str)
355355
{
356-
const char *slash = strrchr(str, '/');
357-
const char *backslash = strrchr(str, '\\');
358-
char *last_slash = (!slash || (backslash > slash)) ? (char*)backslash : (char*)slash;
359-
return last_slash;
356+
const char *p;
357+
const char *last_slash = NULL;
358+
const char *last_backslash = NULL;
359+
360+
/* Traverse the string once */
361+
for (p = str; *p != '\0'; ++p)
362+
{
363+
if (*p == '/')
364+
last_slash = p; /* Update last forward slash */
365+
else if (*p == '\\')
366+
last_backslash = p; /* Update last backslash */
367+
}
368+
369+
/* Determine which one is last */
370+
if (!last_slash) /* Backslash */
371+
return (char*)last_backslash;
372+
if (!last_backslash) /* Forward slash */
373+
return (char*)last_slash;
374+
return (last_backslash > last_slash) ? (char*)last_backslash : (char*)last_slash;
360375
}
361376

362377
/**
@@ -369,9 +384,7 @@ char *find_last_slash(const char *str)
369384
**/
370385
size_t fill_pathname_slash(char *s, size_t len)
371386
{
372-
const char *slash = strrchr(s, '/');
373-
const char *backslash = strrchr(s, '\\');
374-
char *last_slash = (!slash || (backslash > slash)) ? (char*)backslash : (char*)slash;
387+
char *last_slash = find_last_slash(s);
375388
if (!last_slash)
376389
return strlcat(s, PATH_DEFAULT_SLASH(), len);
377390
len = strlen(s);
@@ -460,33 +473,26 @@ size_t fill_pathname_basedir(char *s, const char *in_path, size_t len)
460473
**/
461474
size_t fill_pathname_parent_dir_name(char *s, const char *in_dir, size_t len)
462475
{
463-
size_t _len = 0;
464-
char *tmp = strdup(in_dir);
465-
const char *slash = strrchr(tmp, '/');
466-
const char *backslash = strrchr(tmp, '\\');
467-
char *last_slash = (!slash || (backslash > slash)) ? (char*)backslash : (char*)slash;
476+
size_t _len = 0;
477+
char *tmp = strdup(in_dir);
478+
char *last_slash = find_last_slash(tmp);
468479

469480
if (last_slash && last_slash[1] == 0)
470481
{
471-
*last_slash = '\0';
472-
slash = strrchr(tmp, '/');
473-
backslash = strrchr(tmp, '\\');
474-
last_slash = (!slash || (backslash > slash)) ? (char*)backslash : (char*)slash;
482+
*last_slash = '\0';
483+
last_slash = find_last_slash(tmp);
475484
}
476485

477486
/* Cut the last part of the string (the filename) after the slash,
478487
leaving the directory name (or nested directory names) only. */
479488
if (last_slash)
480-
*last_slash = '\0';
489+
*last_slash = '\0';
481490

482491
/* Point in_dir to the address of the last slash.
483492
* If in_dir is NULL, it means there was no slash in tmp,
484493
* so use tmp as-is. */
485-
slash = strrchr(tmp, '/');
486-
backslash = strrchr(tmp, '\\');
487-
in_dir = (!slash || (backslash > slash)) ? (char*)backslash : (char*)slash;
488-
if (!in_dir)
489-
in_dir = tmp;
494+
if (!(in_dir = find_last_slash(tmp)))
495+
in_dir = tmp;
490496

491497
if (in_dir && in_dir[1])
492498
{
@@ -592,14 +598,10 @@ size_t fill_str_dated_filename(char *s,
592598
**/
593599
size_t path_basedir(char *s)
594600
{
595-
const char *slash;
596-
const char *backslash;
597601
char *last_slash = NULL;
598602
if (!s || s[0] == '\0' || s[1] == '\0')
599603
return (s && s[0] != '\0') ? 1 : 0;
600-
slash = strrchr(s, '/');
601-
backslash = strrchr(s, '\\');
602-
last_slash = (!slash || (backslash > slash)) ? (char*)backslash : (char*)slash;
604+
last_slash = find_last_slash(s);
603605
if (last_slash)
604606
{
605607
last_slash[1] = '\0';
@@ -630,15 +632,10 @@ size_t path_parent_dir(char *s, size_t len)
630632
if (len && PATH_CHAR_IS_SLASH(s[len - 1]))
631633
{
632634
char *last_slash;
633-
const char *slash;
634-
const char *backslash;
635635
bool was_absolute = path_is_absolute(s);
636636

637637
s[len - 1] = '\0';
638-
639-
slash = strrchr(s, '/');
640-
backslash = strrchr(s, '\\');
641-
last_slash = (!slash || (backslash > slash)) ? (char*)backslash : (char*)slash;
638+
last_slash = find_last_slash(s);
642639

643640
if (was_absolute && !last_slash)
644641
{
@@ -667,9 +664,7 @@ const char *path_basename(const char *path)
667664
/* We cut either at the first compression-related hash,
668665
* or we cut at the last slash */
669666
const char *ptr = NULL;
670-
const char *slash = strrchr(path, '/');
671-
const char *backslash = strrchr(path, '\\');
672-
char *last_slash = (!slash || (backslash > slash)) ? (char*)backslash : (char*)slash;
667+
char *last_slash = find_last_slash(path);
673668
return ((ptr = path_get_archive_delim(path)) || (ptr = last_slash))
674669
? (ptr + 1) : path;
675670
}
@@ -687,9 +682,7 @@ const char *path_basename(const char *path)
687682
const char *path_basename_nocompression(const char *path)
688683
{
689684
/* We cut at the last slash */
690-
const char *slash = strrchr(path, '/');
691-
const char *backslash = strrchr(path, '\\');
692-
char *last_slash = (!slash || (backslash > slash)) ? (char*)backslash : (char*)slash;
685+
char *last_slash = find_last_slash(path);
693686
return (last_slash) ? (last_slash + 1) : path;
694687
}
695688

@@ -999,9 +992,7 @@ size_t fill_pathname_join_special(char *s,
999992

1000993
if (*s)
1001994
{
1002-
const char *slash = strrchr(s, '/');
1003-
const char *backslash = strrchr(s, '\\');
1004-
char *last_slash = (!slash || (backslash > slash)) ? (char*)backslash : (char*)slash;
995+
char *last_slash = find_last_slash(s);
1005996
if (last_slash)
1006997
{
1007998
/* Try to preserve slash type. */
@@ -1327,8 +1318,6 @@ size_t fill_pathname_abbreviated_or_relative(char *s,
13271318
**/
13281319
void path_basedir_wrapper(char *s)
13291320
{
1330-
const char *slash;
1331-
const char *backslash;
13321321
char *last_slash = NULL;
13331322
if (!s || s[0] == '\0' || s[1] == '\0')
13341323
return;
@@ -1337,9 +1326,7 @@ void path_basedir_wrapper(char *s)
13371326
if ((last_slash = (char*)path_get_archive_delim(s)))
13381327
*last_slash = '\0';
13391328
#endif
1340-
slash = strrchr(s, '/');
1341-
backslash = strrchr(s, '\\');
1342-
last_slash = (!slash || (backslash > slash)) ? (char*)backslash : (char*)slash;
1329+
last_slash = find_last_slash(s);
13431330
if (last_slash)
13441331
last_slash[1] = '\0';
13451332
else

formats/png/rpng_encode.c

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -402,25 +402,21 @@ bool rpng_save_image_bgr24(const char *path, const uint8_t *data,
402402
uint8_t* rpng_save_image_bgr24_string(const uint8_t *data,
403403
unsigned width, unsigned height, signed pitch, uint64_t* bytes)
404404
{
405-
bool ret = false;
406-
uint8_t* buf = NULL;
407-
uint8_t* output = NULL;
408-
int buf_length = 0;
409-
intfstream_t* intf_s = NULL;
410-
411-
buf_length = (int)(width*height*3*DEFLATE_PADDING)+PNG_ROUGH_HEADER;
412-
buf = (uint8_t*)malloc(buf_length*sizeof(uint8_t));
405+
bool ret = false;
406+
uint8_t *output = NULL;
407+
intfstream_t *intf_s = NULL;
408+
size_t _len = (width * height * 3 * DEFLATE_PADDING) + PNG_ROUGH_HEADER;
409+
uint8_t *buf = (uint8_t*)malloc(_len * sizeof(uint8_t));
413410
if (!buf)
414411
GOTO_END_ERROR();
415412

416413
intf_s = intfstream_open_writable_memory(buf,
417414
RETRO_VFS_FILE_ACCESS_WRITE,
418415
RETRO_VFS_FILE_ACCESS_HINT_NONE,
419-
buf_length);
416+
_len);
420417

421-
ret = rpng_save_image_stream((const uint8_t*)data,
418+
ret = rpng_save_image_stream((const uint8_t*)data,
422419
intf_s, width, height, pitch, 3);
423-
424420
*bytes = intfstream_get_ptr(intf_s);
425421
intfstream_rewind(intf_s);
426422
output = (uint8_t*)malloc((size_t)((*bytes)*sizeof(uint8_t)));

net/net_http.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -544,7 +544,7 @@ void net_http_connection_set_content(
544544
if (conn->postdata)
545545
free(conn->postdata);
546546

547-
conn->contenttype = content_type ? strdup(content_type) : NULL;
547+
conn->contenttype = content_type ? strdup(content_type) : NULL;
548548
conn->contentlength = content_length;
549549
if (content_length)
550550
{
@@ -1078,8 +1078,8 @@ static bool net_http_send_request(struct http_t *state)
10781078

10791079
if (request->method && (string_is_equal(request->method, "POST") || string_is_equal(request->method, "PUT")))
10801080
{
1081-
size_t post_len, len;
1082-
char *len_str = NULL;
1081+
size_t _len, len;
1082+
char *len_str = NULL;
10831083

10841084
if (!request->postdata && !string_is_equal(request->method, "PUT"))
10851085
{
@@ -1094,15 +1094,15 @@ static bool net_http_send_request(struct http_t *state)
10941094

10951095
net_http_send_str(state, "Content-Length: ", STRLEN_CONST("Content-Length: "));
10961096

1097-
post_len = request->contentlength;
1097+
_len = request->contentlength;
10981098
#ifdef _WIN32
1099-
len = snprintf(NULL, 0, "%" PRIuPTR, post_len);
1099+
len = snprintf(NULL, 0, "%" PRIuPTR, _len);
11001100
len_str = (char*)malloc(len + 1);
1101-
snprintf(len_str, len + 1, "%" PRIuPTR, post_len);
1101+
snprintf(len_str, len + 1, "%" PRIuPTR, _len);
11021102
#else
1103-
len = snprintf(NULL, 0, "%llu", (long long unsigned)post_len);
1103+
len = snprintf(NULL, 0, "%llu", (long long unsigned)_len);
11041104
len_str = (char*)malloc(len + 1);
1105-
snprintf(len_str, len + 1, "%llu", (long long unsigned)post_len);
1105+
snprintf(len_str, len + 1, "%llu", (long long unsigned)_len);
11061106
#endif
11071107

11081108
len_str[len] = '\0';

queues/generic_queue.c

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -281,13 +281,9 @@ generic_queue_iterator_t *generic_queue_iterator_remove(generic_queue_iterator_t
281281
iterator->item = iterator->forward ? item->next : item->previous;
282282
free(item);
283283
if (iterator->item)
284-
{
285284
return iterator;
286-
} else
287-
{
288-
free(iterator);
289-
return NULL;
290-
}
285+
free(iterator);
286+
return NULL;
291287
}
292288

293289
item = iterator->forward ? item->next : item->previous;

0 commit comments

Comments
 (0)