summaryrefslogtreecommitdiffstats
path: root/osdep/glob-win.c
diff options
context:
space:
mode:
authorfaust3 <faust3@b3059339-0415-0410-9bf9-f77b7e298cf2>2003-04-25 10:00:18 +0000
committerfaust3 <faust3@b3059339-0415-0410-9bf9-f77b7e298cf2>2003-04-25 10:00:18 +0000
commit0015a97826319e469e1614932749ab315f28f0fb (patch)
treefa380ac0d15245da7e539c2b41aee5fcc76f4d16 /osdep/glob-win.c
parent472539ae252638f18f38628adb059cfd53958e2a (diff)
downloadmpv-0015a97826319e469e1614932749ab315f28f0fb.tar.bz2
mpv-0015a97826319e469e1614932749ab315f28f0fb.tar.xz
alternative timer and glob emulation code for mingw32 port
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@9984 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'osdep/glob-win.c')
-rw-r--r--osdep/glob-win.c91
1 files changed, 91 insertions, 0 deletions
diff --git a/osdep/glob-win.c b/osdep/glob-win.c
new file mode 100644
index 0000000000..08ec3c2a6c
--- /dev/null
+++ b/osdep/glob-win.c
@@ -0,0 +1,91 @@
+#include <sys/types.h>
+#include <stdio.h>
+
+#include "../config.h"
+
+#ifndef HAVE_GLOB
+#ifdef __MINGW32__
+#undef DATADIR
+#include <windows.h>
+#include "glob.h"
+
+int glob(const char *pattern, int flags,
+ int (*errfunc)(const char *epath, int eerrno), glob_t *pglob)
+{
+ HANDLE searchhndl;
+ WIN32_FIND_DATA found_file;
+ if(errfunc)printf("glob():ERROR:Sorry errfunc not supported by this implementation\n");
+ if(flags)printf("glob():ERROR:Sorry no flags supported by this globimplementation\n");
+ //printf("PATTERN \"%s\"\n",pattern);
+ pglob->gl_pathc = 0;
+ searchhndl = FindFirstFile( pattern,&found_file);
+ if(searchhndl == INVALID_HANDLE_VALUE)
+ {
+ if(GetLastError() == ERROR_FILE_NOT_FOUND)
+ {
+ pglob->gl_pathc = 0;
+ //printf("could not find a file matching your search criteria\n");
+ return 1;
+ }
+ else
+ {
+ //printf("glob():ERROR:FindFirstFile: %i\n",GetLastError());
+ return 1;
+ }
+ }
+ pglob->gl_pathv = malloc(sizeof(char*));
+ pglob->gl_pathv[0] = strdup(found_file.cFileName);
+ pglob->gl_pathc++;
+ while(1)
+ {
+ if(!FindNextFile(searchhndl,&found_file))
+ {
+ if(GetLastError()==ERROR_NO_MORE_FILES)
+ {
+ //printf("glob(): no more files found\n");
+ break;
+ }
+ else
+ {
+ //printf("glob():ERROR:FindNextFile:%i\n",GetLastError());
+ return 1;
+ }
+ }
+ else
+ {
+ //printf("glob: found file %s\n",found_file.cFileName);
+ pglob->gl_pathc++;
+ pglob->gl_pathv = realloc(pglob->gl_pathv,pglob->gl_pathc * sizeof(char*));
+ pglob->gl_pathv[pglob->gl_pathc-1] = strdup(found_file.cFileName);
+ }
+ }
+ FindClose(searchhndl);
+ return 0;
+}
+
+void globfree(glob_t *pglob)
+{
+ int i;
+ for(i=0; i <pglob->gl_pathc ;i++)
+ {
+ free(pglob->gl_pathv[i]);
+ }
+ free(pglob->gl_pathv);
+}
+#endif /*__MINGW32__*/
+#endif /*HAVE_GLOB*/
+
+#if 0
+int main(){
+ glob_t gg;
+ printf("globtest\n");
+ glob( "*.jpeg",0,NULL,&gg );
+ {
+ int i;
+ for(i=0;i<gg.gl_pathc;i++)printf("GLOBED:%i %s\n",i,gg.gl_pathv[i]);
+ }
+ globfree(&gg);
+
+ return 0;
+}
+#endif