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 )
char *path = NULL;
long len = fpathconf (dirfd (dir), _PC_NAME_MAX);
#if !defined(__OS2__) || !defined(__INNOTEK_LIBC__)
#ifdef NAME_MAX
/* POSIX says there shall we room for NAME_MAX bytes at all times */
if (/*len == -1 ||*/ len < NAME_MAX)
......@@ -201,6 +202,13 @@ char *vlc_readdir( DIR *dir )
return NULL;
#endif
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);
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