From 116e994fbed435fee7dfd14806f5fe2de3ecad86 Mon Sep 17 00:00:00 2001 From: Shaun Inman Date: Wed, 15 Feb 2023 23:06:45 -0500 Subject: [PATCH] added trimSortingMeta for minui.elf --- src/common/utils.c | 24 +++++++++++++++++++++--- src/common/utils.h | 1 + 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/common/utils.c b/src/common/utils.c index f048d70..6dfe137 100644 --- a/src/common/utils.c +++ b/src/common/utils.c @@ -43,9 +43,12 @@ void getDisplayName(const char* in_name, char* out_name) { tmp = strrchr(work_name, '/'); if (tmp) strcpy(out_name, tmp+1); - // remove extension - tmp = strrchr(out_name, '.'); - if (tmp && strlen(tmp)<=4) tmp[0] = '\0'; // 3 letter extension plus dot + // remove extension(s), eg. .p8.png + while ((tmp = strrchr(out_name, '.'))!=NULL) { + int len = strlen(tmp); + if (len>2 && len<=4) tmp[0] = '\0'; // 3 letter extension plus dot + else break; + } // remove trailing parens (round and square) strcpy(work_name, out_name); @@ -99,6 +102,21 @@ void trimTrailingNewlines(char* line) { len -= 1; } } +void trimSortingMeta(char** str) { // eg. `001) ` + // TODO: this code is suss + char* safe = *str; + while(isdigit(**str)) *str += 1; // ignore leading numbers + + if (*str[0]==')') { // then match a closing parenthesis + *str += 1; + } + else { // or bail, restoring the string to its original value + *str = safe; + return; + } + + while(isblank(**str)) *str += 1; // ignore leading space +} /////////////////////////////////////// diff --git a/src/common/utils.h b/src/common/utils.h index 6d87833..3bcfab6 100644 --- a/src/common/utils.h +++ b/src/common/utils.h @@ -13,6 +13,7 @@ void getEmuName(const char* in_name, char* out_name); void normalizeNewline(char* line); void trimTrailingNewlines(char* line); +void trimSortingMeta(char** str); int exists(char* path); void touch(char* path);