Commit 9ab620e7 authored by KO Myung-Hun's avatar KO Myung-Hun Committed by Rémi Denis-Courmont

Fix vlc_readdir() for OS/2

Signed-off-by: default avatarRémi Denis-Courmont <remi@remlab.net>
parent e2557f56
...@@ -191,6 +191,7 @@ char *vlc_readdir( DIR *dir ) ...@@ -191,6 +191,7 @@ char *vlc_readdir( DIR *dir )
char *path = NULL; char *path = NULL;
long len = fpathconf (dirfd (dir), _PC_NAME_MAX); long len = fpathconf (dirfd (dir), _PC_NAME_MAX);
#if !defined(__OS2__) || !defined(__INNOTEK_LIBC__)
#ifdef NAME_MAX #ifdef NAME_MAX
/* POSIX says there shall we room for NAME_MAX bytes at all times */ /* POSIX says there shall we room for NAME_MAX bytes at all times */
if (/*len == -1 ||*/ len < NAME_MAX) if (/*len == -1 ||*/ len < NAME_MAX)
...@@ -201,6 +202,13 @@ char *vlc_readdir( DIR *dir ) ...@@ -201,6 +202,13 @@ char *vlc_readdir( DIR *dir )
return NULL; return NULL;
#endif #endif
len += offsetof (struct dirent, d_name) + 1; len += offsetof (struct dirent, d_name) + 1;
#else /* __OS2__ && __INNOTEK_LIBC__ */
/* In the implementation of Innotek LIBC, aka kLIBC on OS/2,
* fpathconf (_PC_NAME_MAX) is broken, and d_name is not the last member
* of struct dirent.
* So just allocate as many as the size of struct dirent. */
len = sizeof (struct dirent);
#endif
struct dirent *buf = malloc (len); struct dirent *buf = malloc (len);
if (unlikely(buf == NULL)) if (unlikely(buf == NULL))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment