summaryrefslogtreecommitdiffstats
path: root/cpukit/posix/src/psxnametoid.c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2011-12-13 12:56:53 +0000
committerSebastian Huber <sebastian.huber@embedded-brains.de>2011-12-13 12:56:53 +0000
commitb98d399f3c4f7fc19a80a7f12503f0b4226c59dc (patch)
tree82a06feb8b1ac21527aee2be7c7c3cd37a7e70b9 /cpukit/posix/src/psxnametoid.c
parent2011-12-13 Ralf Corsépius <ralf.corsepius@rtems.org> (diff)
downloadrtems-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.c58
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;
+}