diff options
Diffstat (limited to 'librt/mq_unlink.c')
-rw-r--r-- | librt/mq_unlink.c | 37 |
1 files changed, 19 insertions, 18 deletions
diff --git a/librt/mq_unlink.c b/librt/mq_unlink.c index aee3478e7..8e89610a3 100644 --- a/librt/mq_unlink.c +++ b/librt/mq_unlink.c @@ -15,24 +15,25 @@ static inline _syscall1(int, __syscall_mq_unlink, const char *, name); /* Remove message queue */ int mq_unlink(const char *name) { - int ret; - if (name[0] != '/') { - __set_errno(EINVAL); - return -1; - } - - ret = __syscall_mq_unlink(name + 1); - - /* While unlink can return either EPERM or EACCES, mq_unlink should return just EACCES. */ - if (ret < 0) { - ret = errno; - if (ret == EPERM) - ret = EACCES; - __set_errno(ret); - ret = -1; - } - - return ret; + int ret; + + if (name[0] != '/') { + __set_errno(EINVAL); + return -1; + } + + ret = __syscall_mq_unlink(name + 1); + + /* While unlink can return either EPERM or EACCES, mq_unlink should return just EACCES. */ + if (ret < 0) { + ret = errno; + if (ret == EPERM) + ret = EACCES; + __set_errno(ret); + ret = -1; + } + + return ret; } #endif |