Browse Source

Merge pull request #43 from MggMuggins/master

Imp va_arg for fcntl; fcntl test
Jeremy Soller 7 years ago
parent
commit
4da873ae79
6 changed files with 27 additions and 4 deletions
  1. 12 3
      include/bits/fcntl.h
  2. 1 1
      src/fcntl/src/lib.rs
  3. 1 0
      tests/Makefile
  4. BIN
      tests/fcntl
  5. 13 0
      tests/fcntl.c
  6. 0 0
      tests/fcntl.out

+ 12 - 3
include/bits/fcntl.h

@@ -3,11 +3,20 @@
 
 int open(const char* filename, int flags, ...) {
     mode_t mode = 0;
-	va_list ap;
-	va_start(ap, flags);
+    va_list ap;
+    va_start(ap, flags);
     mode = va_arg(ap, mode_t);
-	va_end(ap);
+    va_end(ap);
     return sys_open(filename, flags, mode);
 }
 
+int fcntl(int fildes, int cmd, ...) {
+    int args = 0;
+    va_list ap;
+    va_start(ap, cmd);
+    args = va_arg(ap, int);
+    va_end(ap);
+    return sys_fcntl(fildes, cmd, args);
+}
+
 #endif

+ 1 - 1
src/fcntl/src/lib.rs

@@ -37,7 +37,7 @@ pub extern "C" fn creat(path: *const c_char, mode: mode_t) -> c_int {
 }
 
 #[no_mangle]
-pub extern "C" fn fcntl(fildes: c_int, cmd: c_int, arg: c_int) -> c_int {
+pub extern "C" fn sys_fcntl(fildes: c_int, cmd: c_int, arg: c_int) -> c_int {
     platform::fcntl(fildes, cmd, arg)
 }
 

+ 1 - 0
tests/Makefile

@@ -10,6 +10,7 @@ BINS=\
 	dup \
 	error \
 	fchdir \
+	fcntl \
 	fsync \
 	ftruncate \
 	getid \

BIN
tests/fcntl


+ 13 - 0
tests/fcntl.c

@@ -0,0 +1,13 @@
+#include <fcntl.h>
+#include <stdio.h>
+#include <unistd.h>
+
+int main() {
+    //Lose our fd and pull it again
+    creat("fcntl.out", 0777);
+    int newfd = open("fcntl.out", 0);
+    int newfd2 = fcntl(newfd, F_DUPFD, 0);
+    printf("fd %d duped into fd %d\n", newfd, newfd2);
+    close(newfd);
+    close(newfd2);
+}

+ 0 - 0
tests/fcntl.out