open: Check flags, and use _open2 if applicable.
authorDanny Milosavljevic <dannym@scratchpost.org>
Tue, 2 Jul 2019 01:36:18 +0000 (03:36 +0200)
committerJan Nieuwenhuizen <janneke@gnu.org>
Mon, 9 Sep 2019 14:04:13 +0000 (16:04 +0200)
* lib/linux/open.c (open): Check flags; use _open2.

lib/posix/open.c

index 256f2f135899508a139ed8143e7584f0da6fd29b..ad76297d51a728259d3ea9c4b02624efc2995cfa 100644 (file)
@@ -32,10 +32,15 @@ _open2 (char const *file_name, int flags)
 int
 open (char const *file_name, int flags, ...)
 {
-  va_list ap;
-  va_start (ap, flags);
-  int mask = va_arg (ap, int);
-  int r = _open3 (file_name, flags, mask);
-  va_end (ap);
-  return r;
+  if (flags & O_CREAT)
+    {
+      va_list ap;
+      va_start (ap, flags);
+      int mask = va_arg (ap, int);
+      int r = _open3 (file_name, flags, mask);
+      va_end (ap);
+      return r;
+    }
+  else
+    return _open2(file_name, flags);
 }