From 5201de4ff2e4f236c5cf2be064aa506e376b80cb Mon Sep 17 00:00:00 2001 From: James Haley Date: Sun, 30 Jan 2011 04:10:32 +0000 Subject: 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 --- msvc/win_opendir.h | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 msvc/win_opendir.h (limited to 'msvc/win_opendir.h') 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 + +#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 + -- cgit v1.2.3