diff options
author | William Wilgus <wilgus.william@gmail.com> | 2024-09-25 03:58:30 -0400 |
---|---|---|
committer | William Wilgus <me.theuser@yahoo.com> | 2024-09-26 00:38:54 -0400 |
commit | e6313e4b8ebd6314fe45c52c35ee8a12e409219b (patch) | |
tree | adf071a36e27359020610e279d355d14fecf5453 | |
parent | 9ebfb3fa5c2e5cfb3ea09843fe2f95ac54e81bfe (diff) | |
download | rockbox-e6313e4b8ebd6314fe45c52c35ee8a12e409219b.tar.gz rockbox-e6313e4b8ebd6314fe45c52c35ee8a12e409219b.zip |
tree.c remove strlcat in favor of strmemccpy
moved a conditional for reload_dir vs strcmp
Change-Id: I1635014fbbc6b9b0905abc3f9c60bbd2a1d08762
-rw-r--r-- | apps/tree.c | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/apps/tree.c b/apps/tree.c index 721fb8c1ef..ac82b6c2df 100644 --- a/apps/tree.c +++ b/apps/tree.c | |||
@@ -421,7 +421,7 @@ static int update_dir(void) | |||
421 | { | 421 | { |
422 | tc.sort_dir = global_settings.sort_dir; | 422 | tc.sort_dir = global_settings.sort_dir; |
423 | /* if the tc.currdir has been changed, reload it ...*/ | 423 | /* if the tc.currdir has been changed, reload it ...*/ |
424 | if (strncmp(tc.currdir, lastdir, sizeof(lastdir)) || reload_dir) | 424 | if (reload_dir || strncmp(tc.currdir, lastdir, sizeof(lastdir))) |
425 | { | 425 | { |
426 | if (ft_load(&tc, NULL) < 0) | 426 | if (ft_load(&tc, NULL) < 0) |
427 | return -1; | 427 | return -1; |
@@ -584,14 +584,23 @@ char* get_current_file(char* buffer, size_t buffer_len) | |||
584 | struct entry *entry = tree_get_entry_at(&tc, tc.selected_item); | 584 | struct entry *entry = tree_get_entry_at(&tc, tc.selected_item); |
585 | if (entry && getcwd(buffer, buffer_len)) | 585 | if (entry && getcwd(buffer, buffer_len)) |
586 | { | 586 | { |
587 | if (tc.dirlength) | 587 | if (!tc.dirlength) |
588 | return buffer; | ||
589 | |||
590 | size_t usedlen = strlen(buffer); | ||
591 | |||
592 | if (usedlen + 2 < buffer_len) /* ensure enough room for '/' + '\0' */ | ||
588 | { | 593 | { |
589 | if (buffer[strlen(buffer)-1] != '/') | 594 | if (buffer[usedlen-1] != '/') |
590 | strlcat(buffer, "/", buffer_len); | 595 | { |
591 | if (strlcat(buffer, entry->name, buffer_len) >= buffer_len) | 596 | buffer[usedlen] = '/'; |
592 | return NULL; | 597 | /* strmemccpy will zero terminate if we run out of space after */ |
598 | usedlen++; | ||
599 | } | ||
600 | buffer_len -= usedlen; | ||
601 | if (strmemccpy(buffer + usedlen, entry->name, buffer_len) != NULL) | ||
602 | return buffer; | ||
593 | } | 603 | } |
594 | return buffer; | ||
595 | } | 604 | } |
596 | return NULL; | 605 | return NULL; |
597 | } | 606 | } |