Handle EISDIR in shm_open like glibc does, and set EINVAL.
* librt/shm.c (shm_open): Handle EISDIR error.
Signed-off-by: Mickaël Guêné <mickael.guene(a)st.com>
Signed-off-by: Christophe Lyon <christophe.lyon(a)st.com>
diff --git a/librt/shm.c b/librt/shm.c
index 40e69fa..79c98a3 100644
--- a/librt/shm.c
+++ b/librt/shm.c
@@ -84,6 +84,9 @@ int shm_open(const char *name, int oflag, mode_t mode)
*/
}
#endif
+ if (fd < 0 && errno == EISDIR)
+ /* EISDIR is not valid for shm_open, replace it with EINVAL as glibc. */
+ __set_errno (EINVAL);
free(shm_name); /* doesn't affect errno */
return fd;
}
--
2.6.3