diff options
author | Klaus Schmidinger <vdr@tvdr.de> | 2017-06-25 11:54:32 +0200 |
---|---|---|
committer | Klaus Schmidinger <vdr@tvdr.de> | 2017-06-25 11:54:32 +0200 |
commit | 027ae738a87db113984d7c079db16b855e0cee3d (patch) | |
tree | 9ace36614729ac6bcb1c99fe04c3bffee9fb6673 | |
parent | ce5e23f2097f6491f87e0fb5e72c0781975667c9 (diff) | |
download | vdr-027ae738a87db113984d7c079db16b855e0cee3d.tar.gz vdr-027ae738a87db113984d7c079db16b855e0cee3d.tar.bz2 |
Now using readdir() instead of readdir_r(), if GLIBC version 2.24 or newer is used
-rw-r--r-- | CONTRIBUTORS | 2 | ||||
-rw-r--r-- | HISTORY | 2 | ||||
-rw-r--r-- | tools.c | 6 | ||||
-rw-r--r-- | tools.h | 4 |
4 files changed, 12 insertions, 2 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS index d6f2eff3..04487a63 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -3037,6 +3037,8 @@ Frank Neumann <fnu@yavdr.org> for reporting a problem with the default return value of cEpgHandler::BeginSegmentTransfer() in derived classes that don't implement this function for reporting uninitialized variable SdWatchdog in vdr.c + for suggesting to use readdir() instead of readdir_r(), if GLIBC version 2.24 or + newer is used Gerald Dachs <vdr@dachsweb.de> for reporting a problem with checking for minimum line length of 21 characters in @@ -9152,3 +9152,5 @@ Video Disk Recorder Revision History The old version of cSkinDisplayMenu::SetItemEvent() (without the TimerActive parameter) is still there for backwards compatibility. It may be removed in a future version, so plugin authors should switch to the new one. +- Now using readdir() instead of readdir_r(), if GLIBC version 2.24 or newer is used + (suggested by Frank Neumann). @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: tools.c 4.7 2017/06/23 09:39:45 kls Exp $ + * $Id: tools.c 4.8 2017/06/25 11:45:39 kls Exp $ */ #include "tools.h" @@ -1528,7 +1528,11 @@ cReadDir::~cReadDir() struct dirent *cReadDir::Next(void) { if (directory) { +#if !__GLIBC_PREREQ(2, 24) // readdir_r() is deprecated as of GLIBC 2.24 while (readdir_r(directory, &u.d, &result) == 0 && result) { +#else + while ((result = readdir(directory)) != NULL) { +#endif if (strcmp(result->d_name, ".") && strcmp(result->d_name, "..")) return result; } @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: tools.h 4.12 2017/06/11 10:00:49 kls Exp $ + * $Id: tools.h 4.13 2017/06/25 11:45:38 kls Exp $ */ #ifndef __TOOLS_H @@ -400,10 +400,12 @@ class cReadDir { private: DIR *directory; struct dirent *result; +#if !__GLIBC_PREREQ(2, 24) // readdir_r() is deprecated as of GLIBC 2.24 union { // according to "The GNU C Library Reference Manual" struct dirent d; char b[offsetof(struct dirent, d_name) + NAME_MAX + 1]; } u; +#endif public: cReadDir(const char *Directory); ~cReadDir(); |