diff options
-rw-r--r-- | HISTORY | 3 | ||||
-rw-r--r-- | menu.c | 14 | ||||
-rw-r--r-- | recording.c | 9 | ||||
-rw-r--r-- | tools.h | 3 |
4 files changed, 10 insertions, 19 deletions
@@ -9569,8 +9569,9 @@ Video Disk Recorder Revision History - Events in the past are no longer marked as having a timer in the Schedules menu. -2020-12-31: +2021-01-01: - Fixed strreplace() to handle NULL strings (reported by Jürgen Schneider). - Somewhere down the road the 'x' bit of Doxyfile.filter got lost, so the Makefile now makes sure it is set before calling doxygen. +- Using strgetlast() in more places. @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: menu.c 5.1 2020/12/26 15:49:01 kls Exp $ + * $Id: menu.c 5.2 2021/01/01 15:26:27 kls Exp $ */ #include "menu.h" @@ -1094,11 +1094,7 @@ void cMenuEditTimer::SetPatternItem(bool Initial) return; } if (!*data.pattern) { - char *p = strrchr(data.file, FOLDERDELIMCHAR); - if (p) - p++; - else - p = data.file; + char *p = strgetlast(data.file, FOLDERDELIMCHAR); strn0cpy(data.pattern, p, sizeof(data.pattern)); } Ins(pattern = new cMenuEditStrItem( tr("Pattern"), data.pattern, sizeof(data.pattern)), true, file); @@ -1120,11 +1116,7 @@ eOSState cMenuEditTimer::SetFolder(void) { if (cMenuFolder *mf = dynamic_cast<cMenuFolder *>(SubMenu())) { cString Folder = mf->GetFolder(); - char *p = strrchr(data.file, FOLDERDELIMCHAR); - if (p) - p++; - else - p = data.file; + char *p = strgetlast(data.file, FOLDERDELIMCHAR); if (!isempty(*Folder)) strn0cpy(data.file, cString::sprintf("%s%c%s", *Folder, FOLDERDELIMCHAR, p), sizeof(data.file)); else if (p != data.file) diff --git a/recording.c b/recording.c index 17467e36..2e2ceefa 100644 --- a/recording.c +++ b/recording.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: recording.c 5.1 2020/12/26 15:49:01 kls Exp $ + * $Id: recording.c 5.2 2021/01/01 15:26:27 kls Exp $ */ #include "recording.h" @@ -1050,9 +1050,7 @@ cString cRecording::Folder(void) const cString cRecording::BaseName(void) const { - if (char *s = strrchr(name, FOLDERDELIMCHAR)) - return cString(s + 1); - return name; + return strgetlast(name, FOLDERDELIMCHAR); } const char *cRecording::FileName(void) const @@ -1158,8 +1156,7 @@ int cRecording::HierarchyLevels(void) const bool cRecording::IsEdited(void) const { - const char *s = strrchr(name, FOLDERDELIMCHAR); - s = !s ? name : s + 1; + const char *s = strgetlast(name, FOLDERDELIMCHAR); return *s == '%'; } @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: tools.h 5.1 2020/12/26 15:49:01 kls Exp $ + * $Id: tools.h 5.2 2021/01/01 15:26:27 kls Exp $ */ #ifndef __TOOLS_H @@ -234,6 +234,7 @@ char *strreplace(char *s, const char *s1, const char *s2); ///< re-allocates 's' const char *strchrn(const char *s, char c, size_t n); ///< returns a pointer to the n'th occurrence (counting from 1) of c in s, or NULL if no such character was found. If n is 0, s is returned. int strcountchr(const char *s, char c); ///< returns the number of occurrences of 'c' in 's'. const char *strgetlast(const char *s, char c); // returns the part of 's' after the last occurrence of 'c', or 's' if there is no 'c'. +inline char *strgetlast(char *s, char c) { return const_cast<char *>(strgetlast(static_cast<const char *>(s), c)); } // returns the part of 's' after the last occurrence of 'c', or 's' if there is no 'c'. inline char *skipspace(const char *s) { if ((uchar)*s > ' ') // most strings don't have any leading space, so handle this case as fast as possible |