From 3760420fbbc18fabf484096e6984f410edf455e1 Mon Sep 17 00:00:00 2001 From: Jonas 'Sortie' Termansen Date: Fri, 27 Jun 2014 23:00:55 +0200 Subject: [PATCH] Add fpathconf(2). --- libc/Makefile | 1 + libc/include/unistd.h | 2 +- libc/unistd/fpathconf.cpp | 39 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 libc/unistd/fpathconf.cpp diff --git a/libc/Makefile b/libc/Makefile index b891d061..7aafaae3 100644 --- a/libc/Makefile +++ b/libc/Makefile @@ -582,6 +582,7 @@ unistd/fchown.o \ unistd/fchrootat.o \ unistd/fchroot.o \ unistd/fork.o \ +unistd/fpathconf.o \ unistd/fsync.o \ unistd/ftruncate.o \ unistd/getcwd.o \ diff --git a/libc/include/unistd.h b/libc/include/unistd.h index 825e287e..1f654ca3 100644 --- a/libc/include/unistd.h +++ b/libc/include/unistd.h @@ -421,7 +421,7 @@ int execv(const char*, char* const []); int execve(const char*, char* const [], char* const []); int execvp(const char*, char* const []); pid_t fork(void); -/* TODO: long fpathconf(int, int); */ +long fpathconf(int, int); int fsync(int); char* getcwd(char*, size_t); gid_t getegid(void); diff --git a/libc/unistd/fpathconf.cpp b/libc/unistd/fpathconf.cpp new file mode 100644 index 00000000..e5490f49 --- /dev/null +++ b/libc/unistd/fpathconf.cpp @@ -0,0 +1,39 @@ +/******************************************************************************* + + Copyright(C) Jonas 'Sortie' Termansen 2014. + + This file is part of the Sortix C Library. + + The Sortix C Library is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 3 of the License, or (at your + option) any later version. + + The Sortix C Library is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public + License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with the Sortix C Library. If not, see . + + unistd/fpathconf.cpp + Get configurable pathname variables. + +*******************************************************************************/ + +#include +#include +#include + +extern "C" long fpathconf(int fd, int name) +{ + switch ( name ) + { + case _PC_PATH_MAX: return -1; // Unbounded + default: + fprintf(stderr, "%s:%u warning: %s(%i, %i) is unsupported\n", + __FILE__, __LINE__, __func__, fd, name); + return errno = EINVAL, -1; + } +}