summaryrefslogtreecommitdiff
path: root/msvc/win_opendir.h
diff options
context:
space:
mode:
authorJames Haley2011-01-30 04:10:32 +0000
committerJames Haley2011-01-30 04:10:32 +0000
commit5201de4ff2e4f236c5cf2be064aa506e376b80cb (patch)
tree3ffe5e4c38b1ebd424ac185f7998650a3f71fc4c /msvc/win_opendir.h
parent9e803d93fa38e86999e1780068b3ee39b430c570 (diff)
downloadchocolate-doom-5201de4ff2e4f236c5cf2be064aa506e376b80cb.tar.gz
chocolate-doom-5201de4ff2e4f236c5cf2be064aa506e376b80cb.tar.bz2
chocolate-doom-5201de4ff2e4f236c5cf2be064aa506e376b80cb.zip
Add win_opendir.c module for MSVC++ builds which contains public domain
implementation of POSIX opendir/readdir/closedir API derived from the MinGW libc extensions source. Will be needed for hub save maintenance. Subversion-branch: /branches/strife-branch Subversion-revision: 2241
Diffstat (limited to 'msvc/win_opendir.h')
-rw-r--r--msvc/win_opendir.h77
1 files changed, 77 insertions, 0 deletions
diff --git a/msvc/win_opendir.h b/msvc/win_opendir.h
new file mode 100644
index 00000000..afa6aa12
--- /dev/null
+++ b/msvc/win_opendir.h
@@ -0,0 +1,77 @@
+// Emacs style mode select -*- C++ -*-
+//-----------------------------------------------------------------------------
+//
+// 03/10/2006 James Haley
+//
+// For this module only:
+// This code is public domain. No change sufficient enough to constitute a
+// significant or original work has been made, and thus it remains as such.
+//
+//----------------------------------------------------------------------------
+//
+// DESCRIPTION:
+//
+// Implementation of POSIX opendir for Visual C++.
+// Derived from the MinGW C Library Extensions Source (released to the
+// public domain).
+//
+//-----------------------------------------------------------------------------
+
+#ifndef I_OPNDIR_H__
+#define I_OPNDIR_H__
+
+#include <io.h>
+
+#ifndef FILENAME_MAX
+#define FILENAME_MAX 260
+#endif
+
+struct dirent
+{
+ long d_ino; /* Always zero. */
+ unsigned short d_reclen; /* Always zero. */
+ unsigned short d_namlen; /* Length of name in d_name. */
+ char d_name[FILENAME_MAX]; /* File name. */
+};
+
+/*
+ * This is an internal data structure. Good programmers will not use it
+ * except as an argument to one of the functions below.
+ * dd_stat field is now int (was short in older versions).
+ */
+typedef struct
+{
+ /* disk transfer area for this dir */
+ struct _finddata_t dd_dta;
+
+ /* dirent struct to return from dir (NOTE: this makes this thread
+ * safe as long as only one thread uses a particular DIR struct at
+ * a time) */
+ struct dirent dd_dir;
+
+ /* _findnext handle */
+ long dd_handle;
+
+ /*
+ * Status of search:
+ * 0 = not started yet (next entry to read is first entry)
+ * -1 = off the end
+ * positive = 0 based index of next entry
+ */
+ int dd_stat;
+
+ /* given path for dir with search pattern (struct is extended) */
+ char dd_name[1];
+} DIR;
+
+DIR *opendir(const char *);
+struct dirent *readdir(DIR *);
+int closedir(DIR *);
+void rewinddir(DIR *);
+long telldir(DIR *);
+void seekdir(DIR *, long);
+
+#endif
+
+// EOF
+