mescc: Mes C Library: Use mes_open to avoid open trickery.
[mes.git] / lib / libmes.c
index d002fa16c0fb42a13c9e58cfafdd5d9f6d09bce1..d7bdac91f7545079fa2cdfc75e6203a7775dd21a 100644 (file)
@@ -42,7 +42,6 @@
 #include <mes/fdungetc.c>
 
 #if WITH_GLIBC
-#undef open
 #include <fcntl.h>
 #include <stdarg.h>
 // The Mes C Library defines and initializes these in crt1
@@ -51,22 +50,27 @@ int __stdout = STDOUT;
 int __stderr = STDERR;
 
 int
-mes_open (char const *file_name, int flags, ...)
+mes_open (char const *file_name, int flags, int mask)
 {
-  va_list ap;
-  va_start (ap, flags);
-  int mask = va_arg (ap, int);
   __ungetc_init ();
   int r = open (file_name, flags, mask);
   if (r > 2)
     __ungetc_buf[r] = -1;
-  va_end (ap);
   return r;
  }
 
 #include <mes/eputs.c>
 #include <mes/oputs.c>
-#endif // WITH_GLIBC
+
+#else // !WITH_GLIBC
+
+int
+mes_open (char const *file_name, int flags, int mask)
+{
+  return _open3 (file_name, flags, mask);
+}
+
+#endif // !WITH_GLIBC
 
 #include <mes/eputc.c>
 #include <mes/oputc.c>