OSDN Git Service

* fhandler.cc (fhandler_base::fcntl): Setting flags in F_SETFL
authorcorinna <corinna>
Mon, 23 Oct 2000 20:29:31 +0000 (20:29 +0000)
committercorinna <corinna>
Mon, 23 Oct 2000 20:29:31 +0000 (20:29 +0000)
        branch according to Linux documentation.

winsup/cygwin/ChangeLog
winsup/cygwin/fhandler.cc

index e43c4a5..fd45310 100644 (file)
@@ -1,3 +1,8 @@
+Mon Oct 23 22:27:00 2000  Corinna Vinschen <corinna@vinschen.de>
+
+       * fhandler.cc (fhandler_base::fcntl): Setting flags in F_SETFL
+       branch according to Linux documentation.
+
 Mon Oct 23 21:43:00 2000  Corinna Vinschen <corinna@vinschen.de>
 
        * fcntl.cc (_fcntl): Rearrange as wrapper function. Move all
index 8e6c331..c3970c8 100644 (file)
@@ -1001,8 +1001,6 @@ int fhandler_base::fcntl (int cmd, void *arg)
 {
   int res;
 
-  /*int temp = 0;*/
-
   switch (cmd)
     {
     case F_GETFD:
@@ -1016,16 +1014,19 @@ int fhandler_base::fcntl (int cmd, void *arg)
       res = get_flags ();
       break;
     case F_SETFL:
-      /* Only O_APPEND, O_NONBLOCK and O_ASYNC may be set. */
-      /*
-      if (arg & O_RDONLY)
-       temp |= GENERIC_READ;
-      if (arg & O_WRONLY)
-       temp |= GENERIC_WRITE;
-      syscall_printf ("fcntl (F_SETFL, %d)", (int) arg);
-      set_access (temp);
-      */
-      set_flags ((int) arg);
+      {
+       /*
+        * Only O_APPEND, O_ASYNC and O_NONBLOCK are allowed.
+        * Each other flag will be ignored.
+        * Since O_ASYNC isn't defined in fcntl.h it's currently
+        * ignored as well.
+        * There's no functionality at all, so...
+        */
+        int flags = get_flags ();
+        flags &= ~(O_APPEND | O_NONBLOCK);
+       flags |= ((int) arg & (O_APPEND | O_NONBLOCK));
+        set_flags (flags);
+      }
       res = 0;
       break;
     case F_GETLK: