Hi everyone,

This is my attempt to add libc wrappers for mkfifo() and
mkfifoat() using mknodat().

Do I need to do anything else?  Should the manpage for mkfifo(2)
and mkfifoat(2) be moved to section 3?

Cheers,
Dimitris

===================================================================
RCS file: /cvs/src/lib/libc/sys/Makefile.inc,v
retrieving revision 1.122
diff -u -p -r1.122 Makefile.inc
--- sys/Makefile.inc    31 Aug 2014 04:02:08 -0000      1.122
+++ sys/Makefile.inc    23 Oct 2014 14:14:13 -0000
@@ -11,7 +11,7 @@ SRCS+=        Ovfork.S brk.S cerror.S exect.S f
        sigsuspend.S syscall.S tfork_thread.S
 
 # glue to offer userland wrappers for some syscalls
-SRCS+= posix_madvise.c
+SRCS+= posix_madvise.c mkfifo.c mkfifoat.c
 
 # glue to provide compatibility between GCC 1.X and 2.X and for compat
 # with old syscall interfaces.
@@ -41,7 +41,7 @@ ASM=  __get_tcb.o __getcwd.o __semctl.o _
        getsockopt.o getthrid.o gettimeofday.o getuid.o ioctl.o \
        issetugid.o kevent.o kill.o kqueue.o ktrace.o lchown.o \
        link.o linkat.o listen.o lstat.o madvise.o mincore.o \
-       minherit.o mkdir.o mkdirat.o mkfifo.o mkfifoat.o \
+       minherit.o mkdir.o mkdirat.o \
        mknod.o mknodat.o mlock.o mlockall.o mount.o mprotect.o \
        msgctl.o msgget.o msgrcv.o msgsnd.o msync.o munlock.o \
        munlockall.o munmap.o nanosleep.o nfssvc.o \
Index: sys/mkfifo.c
===================================================================
RCS file: sys/mkfifo.c
diff -N sys/mkfifo.c
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ sys/mkfifo.c        23 Oct 2014 14:14:13 -0000
@@ -0,0 +1,24 @@
+/*
+ * Copyright (c) 2014 Dimitris Papastamos <s...@2f30.org>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include <sys/stat.h>
+#include <fcntl.h>
+
+int
+mkfifo(const char *path, mode_t mode)
+{
+       return mknodat(AT_FDCWD, path, mode | S_IFIFO, 0);
+}
Index: sys/mkfifoat.c
===================================================================
RCS file: sys/mkfifoat.c
diff -N sys/mkfifoat.c
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ sys/mkfifoat.c      23 Oct 2014 14:14:13 -0000
@@ -0,0 +1,24 @@
+/*
+ * Copyright (c) 2014 Dimitris Papastamos <s...@2f30.org>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include <sys/stat.h>
+#include <fcntl.h>
+
+int
+mkfifoat(int fd, const char *path, mode_t mode)
+{
+       return mknodat(fd, path, mode | S_IFIFO, 0);
+}

Reply via email to