annotate osdep/glob-win.c @ 32676:db882cd69776

Do not #define _WIN32 on the command line for Cygwin. Newer Cygwin versions no longer do this and hopefully we should be able to survive without this hack as well. This change necessitates adapting two #ifdefs in the MPlayer codebase. It is committed untested as I do not have access to a Cygwin system.
author diego
date Thu, 06 Jan 2011 12:42:59 +0000
parents c70109fc98b2
children c7ff1a52e160
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
28744
5cfef41a1771 Add standard license headers to files.
diego
parents: 25100
diff changeset
1 /*
5cfef41a1771 Add standard license headers to files.
diego
parents: 25100
diff changeset
2 * This file is part of MPlayer.
5cfef41a1771 Add standard license headers to files.
diego
parents: 25100
diff changeset
3 *
5cfef41a1771 Add standard license headers to files.
diego
parents: 25100
diff changeset
4 * MPlayer is free software; you can redistribute it and/or modify
5cfef41a1771 Add standard license headers to files.
diego
parents: 25100
diff changeset
5 * it under the terms of the GNU General Public License as published by
5cfef41a1771 Add standard license headers to files.
diego
parents: 25100
diff changeset
6 * the Free Software Foundation; either version 2 of the License, or
5cfef41a1771 Add standard license headers to files.
diego
parents: 25100
diff changeset
7 * (at your option) any later version.
5cfef41a1771 Add standard license headers to files.
diego
parents: 25100
diff changeset
8 *
5cfef41a1771 Add standard license headers to files.
diego
parents: 25100
diff changeset
9 * MPlayer is distributed in the hope that it will be useful,
5cfef41a1771 Add standard license headers to files.
diego
parents: 25100
diff changeset
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
5cfef41a1771 Add standard license headers to files.
diego
parents: 25100
diff changeset
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
5cfef41a1771 Add standard license headers to files.
diego
parents: 25100
diff changeset
12 * GNU General Public License for more details.
5cfef41a1771 Add standard license headers to files.
diego
parents: 25100
diff changeset
13 *
5cfef41a1771 Add standard license headers to files.
diego
parents: 25100
diff changeset
14 * You should have received a copy of the GNU General Public License along
5cfef41a1771 Add standard license headers to files.
diego
parents: 25100
diff changeset
15 * with MPlayer; if not, write to the Free Software Foundation, Inc.,
5cfef41a1771 Add standard license headers to files.
diego
parents: 25100
diff changeset
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
5cfef41a1771 Add standard license headers to files.
diego
parents: 25100
diff changeset
17 */
5cfef41a1771 Add standard license headers to files.
diego
parents: 25100
diff changeset
18
9983
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
19 #include <sys/types.h>
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
20 #include <stdio.h>
32675
c70109fc98b2 Add/remove a few standard header #includes in our libc function replacements.
diego
parents: 29263
diff changeset
21 #include <stdlib.h>
c70109fc98b2 Add/remove a few standard header #includes in our libc function replacements.
diego
parents: 29263
diff changeset
22 #include <string.h>
9983
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
23
16985
08cac43f1e38 Unify include paths, -I.. is in CFLAGS.
diego
parents: 10272
diff changeset
24 #include "config.h"
9983
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
25
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
26 #include <windows.h>
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
27 #include "glob.h"
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
28
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
29 int glob(const char *pattern, int flags,
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
30 int (*errfunc)(const char *epath, int eerrno), glob_t *pglob)
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
31 {
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
32 HANDLE searchhndl;
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
33 WIN32_FIND_DATA found_file;
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
34 if(errfunc)printf("glob():ERROR:Sorry errfunc not supported by this implementation\n");
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
35 if(flags)printf("glob():ERROR:Sorry no flags supported by this globimplementation\n");
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
36 //printf("PATTERN \"%s\"\n",pattern);
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
37 pglob->gl_pathc = 0;
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
38 searchhndl = FindFirstFile( pattern,&found_file);
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
39 if(searchhndl == INVALID_HANDLE_VALUE)
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
40 {
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
41 if(GetLastError() == ERROR_FILE_NOT_FOUND)
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
42 {
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
43 pglob->gl_pathc = 0;
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
44 //printf("could not find a file matching your search criteria\n");
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
45 return 1;
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
46 }
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28744
diff changeset
47 else
9983
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
48 {
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
49 //printf("glob():ERROR:FindFirstFile: %i\n",GetLastError());
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
50 return 1;
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
51 }
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
52 }
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
53 pglob->gl_pathv = malloc(sizeof(char*));
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
54 pglob->gl_pathv[0] = strdup(found_file.cFileName);
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
55 pglob->gl_pathc++;
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
56 while(1)
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
57 {
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
58 if(!FindNextFile(searchhndl,&found_file))
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
59 {
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
60 if(GetLastError()==ERROR_NO_MORE_FILES)
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
61 {
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
62 //printf("glob(): no more files found\n");
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
63 break;
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
64 }
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
65 else
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
66 {
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
67 //printf("glob():ERROR:FindNextFile:%i\n",GetLastError());
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
68 return 1;
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
69 }
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
70 }
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
71 else
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
72 {
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
73 //printf("glob: found file %s\n",found_file.cFileName);
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28744
diff changeset
74 pglob->gl_pathc++;
9983
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
75 pglob->gl_pathv = realloc(pglob->gl_pathv,pglob->gl_pathc * sizeof(char*));
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28744
diff changeset
76 pglob->gl_pathv[pglob->gl_pathc-1] = strdup(found_file.cFileName);
9983
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
77 }
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
78 }
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
79 FindClose(searchhndl);
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
80 return 0;
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
81 }
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
82
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
83 void globfree(glob_t *pglob)
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
84 {
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
85 int i;
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
86 for(i=0; i <pglob->gl_pathc ;i++)
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
87 {
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
88 free(pglob->gl_pathv[i]);
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
89 }
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
90 free(pglob->gl_pathv);
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
91 }
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
92
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
93 #if 0
25100
531116b7693d main() --> main(void)
diego
parents: 21865
diff changeset
94 int main(void){
9983
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
95 glob_t gg;
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
96 printf("globtest\n");
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
97 glob( "*.jpeg",0,NULL,&gg );
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
98 {
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
99 int i;
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
100 for(i=0;i<gg.gl_pathc;i++)printf("GLOBED:%i %s\n",i,gg.gl_pathv[i]);
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
101 }
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
102 globfree(&gg);
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28744
diff changeset
103
9983
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
104 return 0;
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
105 }
21865
ccf368143acd 100l misplaced #endif
diego
parents: 21855
diff changeset
106 #endif