diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2011-12-13 12:56:53 +0000 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2011-12-13 12:56:53 +0000 |
commit | b98d399f3c4f7fc19a80a7f12503f0b4226c59dc (patch) | |
tree | 82a06feb8b1ac21527aee2be7c7c3cd37a7e70b9 /cpukit/posix/src/psxnametoid.c | |
parent | 2011-12-13 Ralf Corsépius <ralf.corsepius@rtems.org> (diff) | |
download | rtems-b98d399f3c4f7fc19a80a7f12503f0b4226c59dc.tar.bz2 |
2011-12-13 Sebastian Huber <sebastian.huber@embedded-brains.de>
* posix/src/mqueuenametoid.c,
posix/src/semaphorenametoid.c: Removed files.
* posix/src/psxnametoid.c: New file.
* posix/Makefile.am: Reflect changes above.
* posix/include/rtems/posix/config.h: Fixed integer types.
* posix/include/rtems/posix/posixapi.h: Declare _POSIX_Name_to_id().
* posix/include/rtems/posix/mqueue.h,
posix/inline/rtems/posix/mqueue.inl: Changed parameter of
_POSIX_Message_queue_Create_support().
_POSIX_Message_queue_Name_to_id() is now inline.
* posix/include/rtems/posix/semaphore.h,
posix/inline/rtems/posix/semaphore.inl: Changed parameter of
_POSIX_Semaphore_Create_support(). _POSIX_Semaphore_Name_to_id() is
now inline.
* posix/src/mqueuecreatesupp.c, posix/src/semaphorecreatesupp.c: Use
_Workspace_String_duplicate().
* posix/src/mqueuesendsupp.c, posix/src/mqueueopen.c,
posix/src/mqueueunlink.c, posix/src/seminit.c, posix/src/semopen.c,
posix/src/semunlink.c: Update due to API changes.
Diffstat (limited to 'cpukit/posix/src/psxnametoid.c')
-rw-r--r-- | cpukit/posix/src/psxnametoid.c | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/cpukit/posix/src/psxnametoid.c b/cpukit/posix/src/psxnametoid.c new file mode 100644 index 0000000000..b91f58e644 --- /dev/null +++ b/cpukit/posix/src/psxnametoid.c @@ -0,0 +1,58 @@ +/* + * COPYRIGHT (c) 1989-2009. + * On-Line Applications Research Corporation (OAR). + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + * + * $Id$ + */ + +#if HAVE_CONFIG_H + #include "config.h" +#endif + +#include <rtems/posix/posixapi.h> + +#include <string.h> +#include <limits.h> +#include <errno.h> + +/* pure ANSI mode does not have this prototype */ +size_t strnlen(const char *, size_t); + +int _POSIX_Name_to_id( + Objects_Information *information, + const char *name, + Objects_Id *id, + size_t *len +) +{ + int eno = EINVAL; + size_t n = 0; + + if ( name != NULL && name [0] != '\0' ) { + n = strnlen( name, NAME_MAX ); + + if ( n < NAME_MAX ) { + Objects_Name_or_id_lookup_errors status = _Objects_Name_to_id_string( + information, + name, + id + ); + + if ( status == OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL ) { + eno = 0; + } else { + eno = ENOENT; + } + } else { + eno = ENAMETOOLONG; + } + } + + *len = n; + + return eno; +} |