From 3a13c749cd6738e23d99416e22bb5423d474999d Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Tue, 11 Aug 2020 18:56:41 +0200 Subject: LibC: Move stat(), lstat() and fstat() to Dr. POSIX says that's where they belong. --- Libraries/LibC/stat.cpp | 27 +++++++++++++++++++++++++++ Libraries/LibC/sys/stat.h | 3 +++ Libraries/LibC/unistd.cpp | 28 ---------------------------- Libraries/LibC/unistd.h | 3 --- 4 files changed, 30 insertions(+), 31 deletions(-) diff --git a/Libraries/LibC/stat.cpp b/Libraries/LibC/stat.cpp index e1abc7905c..5de2472dfa 100644 --- a/Libraries/LibC/stat.cpp +++ b/Libraries/LibC/stat.cpp @@ -69,4 +69,31 @@ int mkfifo(const char* pathname, mode_t mode) { return mknod(pathname, mode | S_IFIFO, 0); } + +static int do_stat(const char* path, struct stat* statbuf, bool follow_symlinks) +{ + if (!path) { + errno = EFAULT; + return -1; + } + Syscall::SC_stat_params params { { path, strlen(path) }, statbuf, follow_symlinks }; + int rc = syscall(SC_stat, ¶ms); + __RETURN_WITH_ERRNO(rc, rc, -1); +} + +int lstat(const char* path, struct stat* statbuf) +{ + return do_stat(path, statbuf, false); +} + +int stat(const char* path, struct stat* statbuf) +{ + return do_stat(path, statbuf, true); +} + +int fstat(int fd, struct stat* statbuf) +{ + int rc = syscall(SC_fstat, fd, statbuf); + __RETURN_WITH_ERRNO(rc, rc, -1); +} } diff --git a/Libraries/LibC/sys/stat.h b/Libraries/LibC/sys/stat.h index 61c60b8977..ed6d84458d 100644 --- a/Libraries/LibC/sys/stat.h +++ b/Libraries/LibC/sys/stat.h @@ -61,6 +61,9 @@ int chmod(const char* pathname, mode_t); int fchmod(int fd, mode_t); int mkdir(const char* pathname, mode_t); int mkfifo(const char* pathname, mode_t); +int fstat(int fd, struct stat* statbuf); +int lstat(const char* path, struct stat* statbuf); +int stat(const char* path, struct stat* statbuf); inline dev_t makedev(unsigned int major, unsigned int minor) { return (minor & 0xffu) | (major << 8u) | ((minor & ~0xffu) << 12u); } inline unsigned int major(dev_t dev) { return (dev & 0xfff00u) >> 8u; } diff --git a/Libraries/LibC/unistd.cpp b/Libraries/LibC/unistd.cpp index 2332ee1f8d..414f4bedd7 100644 --- a/Libraries/LibC/unistd.cpp +++ b/Libraries/LibC/unistd.cpp @@ -297,33 +297,6 @@ int close(int fd) __RETURN_WITH_ERRNO(rc, rc, -1); } -static int do_stat(const char* path, struct stat* statbuf, bool follow_symlinks) -{ - if (!path) { - errno = EFAULT; - return -1; - } - Syscall::SC_stat_params params { { path, strlen(path) }, statbuf, follow_symlinks }; - int rc = syscall(SC_stat, ¶ms); - __RETURN_WITH_ERRNO(rc, rc, -1); -} - -int lstat(const char* path, struct stat* statbuf) -{ - return do_stat(path, statbuf, false); -} - -int stat(const char* path, struct stat* statbuf) -{ - return do_stat(path, statbuf, true); -} - -int fstat(int fd, struct stat* statbuf) -{ - int rc = syscall(SC_fstat, fd, statbuf); - __RETURN_WITH_ERRNO(rc, rc, -1); -} - int chdir(const char* path) { if (!path) { @@ -750,5 +723,4 @@ int getpagesize() { return PAGE_SIZE; } - } diff --git a/Libraries/LibC/unistd.h b/Libraries/LibC/unistd.h index d35f8b3db2..a0bee9a3b8 100644 --- a/Libraries/LibC/unistd.h +++ b/Libraries/LibC/unistd.h @@ -105,9 +105,6 @@ int chdir(const char* path); int fchdir(int fd); char* getcwd(char* buffer, size_t size); char* getwd(char* buffer); -int fstat(int fd, struct stat* statbuf); -int lstat(const char* path, struct stat* statbuf); -int stat(const char* path, struct stat* statbuf); int sleep(unsigned seconds); int usleep(useconds_t); int gethostname(char*, size_t); -- cgit v1.2.3