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); +}