#Refs 1188

Signed-off-by: Waldemar Kozaczuk <[email protected]>
---
 linux.cc             | 15 +++++++++++++++
 tests/tst-syscall.cc |  7 +++++++
 2 files changed, 22 insertions(+)

diff --git a/linux.cc b/linux.cc
index dd0dabd1..85c08981 100644
--- a/linux.cc
+++ b/linux.cc
@@ -366,6 +366,20 @@ static int sys_exit_group(int ret)
     return 0;
 }
 
+#define __NR_sys_getcwd __NR_getcwd
+static long sys_getcwd(char *buf, unsigned long size)
+{
+    if (!buf) {
+        errno = EINVAL;
+        return -1;
+    }
+    auto ret = getcwd(buf, size);
+    if (!ret) {
+        return -1;
+    }
+    return strlen(ret) + 1;
+}
+
 #define __NR_sys_ioctl __NR_ioctl
 //
 // We need to define explicit sys_ioctl that takes these 3 parameters to 
conform
@@ -482,6 +496,7 @@ OSV_LIBC_API long syscall(long number, ...)
     SYSCALL2(nanosleep, const struct timespec*, struct timespec *);
     SYSCALL4(fstatat, int, const char *, struct stat *, int);
     SYSCALL1(sys_exit_group, int);
+    SYSCALL2(sys_getcwd, char *, unsigned long);
     SYSCALL4(readlinkat, int, const char *, char *, size_t);
     SYSCALL0(getpid);
     SYSCALL3(set_mempolicy, int, unsigned long *, unsigned long);
diff --git a/tests/tst-syscall.cc b/tests/tst-syscall.cc
index 12722f1b..0fbd9c35 100644
--- a/tests/tst-syscall.cc
+++ b/tests/tst-syscall.cc
@@ -13,6 +13,7 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <fcntl.h>
+#include <string.h>
 
 #include <iostream>
 
@@ -117,6 +118,12 @@ int main(int argc, char **argv)
 
     assert(close(fd) == 0);
 
+    assert(chdir("/proc") == 0);
+    unsigned long size = 4096;
+    char path[size];
+    assert(syscall(__NR_getcwd, path, size) == 6);
+    assert(strcmp("/proc", path) == 0);
+
     // test that unknown system call results in a ENOSYS (see issue #757)
     expect_errno_l(syscall(999), ENOSYS);
 
-- 
2.34.1

-- 
You received this message because you are subscribed to the Google Groups "OSv 
Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/osv-dev/20220520191546.141775-1-jwkozaczuk%40gmail.com.

Reply via email to