From b98d399f3c4f7fc19a80a7f12503f0b4226c59dc Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Tue, 13 Dec 2011 12:56:53 +0000 Subject: 2011-12-13 Sebastian Huber * 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. --- cpukit/posix/src/psxnametoid.c | 58 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 cpukit/posix/src/psxnametoid.c (limited to 'cpukit/posix/src/psxnametoid.c') 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 + +#include +#include +#include + +/* 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; +} -- cgit v1.2.3