]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
New file. As yet unused.
authorJim Meyering <jim@meyering.net>
Thu, 30 Jun 2005 20:10:39 +0000 (20:10 +0000)
committerJim Meyering <jim@meyering.net>
Thu, 30 Jun 2005 20:10:39 +0000 (20:10 +0000)
lib/stdopen.c [new file with mode: 0644]

diff --git a/lib/stdopen.c b/lib/stdopen.c
new file mode 100644 (file)
index 0000000..6cf5218
--- /dev/null
@@ -0,0 +1,31 @@
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+
+/* Try to ensure that each of the standard file numbers (0, 1, 2)
+   is in use.  Without this, each application would have to guard
+   every call to open, dup, and fopen with tests to ensure they don't
+   use one of the special file numbers when opening a user's file.  */
+void
+stdopen (void)
+{
+  int fd;
+  for (fd = 0; fd <= 2; fd++)
+    {
+      struct stat sb;
+      if (fstat (fd, &sb) < 0)
+       {
+         static const int flag[] = { O_WRONLY, O_RDONLY, O_RDONLY };
+         /* FIXME: worry about errno != EBADF?  */
+         char const *file = "/dev/null";
+         int fd2 = open (file, flag[fd]);
+         if (fd2 < 0)
+           break;
+         if (fd2 != fd)
+           {
+             close (fd2);
+             break;
+           }
+       }
+    }
+}