annotate osdep/glob-win.c @ 32282:606e4157cd4c

Split alloc and init of context so that parameters can be set in the context instead of requireing being passed through function parameters. This also makes sws work with AVOptions.
author michael
date Sun, 26 Sep 2010 19:33:57 +0000
parents 0f1b5b68af32
children c70109fc98b2
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>
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
21
16985
08cac43f1e38 Unify include paths, -I.. is in CFLAGS.
diego
parents: 10272
diff changeset
22 #include "config.h"
9983
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
23
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
24 #include <windows.h>
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
25 #include "glob.h"
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
26
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
27 int glob(const char *pattern, int flags,
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
28 int (*errfunc)(const char *epath, int eerrno), glob_t *pglob)
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
29 {
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
30 HANDLE searchhndl;
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
31 WIN32_FIND_DATA found_file;
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
32 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
33 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
34 //printf("PATTERN \"%s\"\n",pattern);
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
35 pglob->gl_pathc = 0;
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
36 searchhndl = FindFirstFile( pattern,&found_file);
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
37 if(searchhndl == INVALID_HANDLE_VALUE)
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
38 {
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
39 if(GetLastError() == ERROR_FILE_NOT_FOUND)
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 pglob->gl_pathc = 0;
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
42 //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
43 return 1;
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
44 }
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28744
diff changeset
45 else
9983
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
46 {
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
47 //printf("glob():ERROR:FindFirstFile: %i\n",GetLastError());
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
48 return 1;
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
49 }
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
50 }
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
51 pglob->gl_pathv = malloc(sizeof(char*));
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
52 pglob->gl_pathv[0] = strdup(found_file.cFileName);
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
53 pglob->gl_pathc++;
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
54 while(1)
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
55 {
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
56 if(!FindNextFile(searchhndl,&found_file))
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(GetLastError()==ERROR_NO_MORE_FILES)
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 //printf("glob(): no more files found\n");
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
61 break;
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
62 }
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
63 else
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 //printf("glob():ERROR:FindNextFile:%i\n",GetLastError());
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
66 return 1;
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
67 }
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
68 }
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
69 else
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 //printf("glob: found file %s\n",found_file.cFileName);
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28744
diff changeset
72 pglob->gl_pathc++;
9983
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
73 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
74 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
75 }
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
76 }
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
77 FindClose(searchhndl);
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
78 return 0;
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
79 }
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
80
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
81 void globfree(glob_t *pglob)
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 int i;
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
84 for(i=0; i <pglob->gl_pathc ;i++)
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
85 {
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
86 free(pglob->gl_pathv[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);
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
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
91 #if 0
25100
531116b7693d main() --> main(void)
diego
parents: 21865
diff changeset
92 int main(void){
9983
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
93 glob_t gg;
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
94 printf("globtest\n");
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
95 glob( "*.jpeg",0,NULL,&gg );
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
96 {
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
97 int i;
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
98 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
99 }
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
100 globfree(&gg);
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28744
diff changeset
101
9983
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
102 return 0;
14c92818ab75 alternative timer and glob emulation code for mingw32 port
faust3
parents:
diff changeset
103 }
21865
ccf368143acd 100l misplaced #endif
diego
parents: 21855
diff changeset
104 #endif