1 // Copyright (c) <2012> <Leif Asbrink>
2 //
3 // Permission is hereby granted, free of charge, to any person
4 // obtaining a copy of this software and associated documentation
5 // files (the "Software"), to deal in the Software without restriction,
6 // including without limitation the rights to use, copy, modify,
7 // merge, publish, distribute, sublicense, and/or sell copies of
8 // the Software, and to permit persons to whom the Software is
9 // furnished to do so, subject to the following conditions:
10 //
11 // The above copyright notice and this permission notice shall be
12 // included in all copies or substantial portions of the Software.
13 //
14 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
16 // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
18 // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
19 // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20 // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
21 // OR OTHER DEALINGS IN THE SOFTWARE.
22
23
24 #include <stdio.h>
25 #include <string.h>
26 #include <stdlib.h>
27
28
main(int argc,char * argv[])29 int main(int argc, char *argv[])
30 {
31 FILE *file;
32 int i,j,k,m;
33 int flags;
34 if(argc < 3)
35 {
36 nothing:;
37 printf("0");
38 return 0;
39 }
40 i=0;
41 flags=0;
42 next:;
43 if(argv[2][i] == 0)
44 {
45 if(argv[1][0] == '0')
46 {
47 printf("%d",flags);
48 }
49 return 1;
50 }
51 if(argv[2][i ] == '.' &&
52 argv[2][i+1] == 's' &&
53 argv[2][i+2] == 'o')
54 {
55 m=i+3;
56 j=i+2;
57 k=j;
58 while(argv[2][j+1] != '/' && argv[2][j+1] !=0)j++;
59 while(argv[2][k-1] != ' ' && argv[2][k-1] != 10 && k>0)k--;
60 findlinux:;
61 if(argv[2][i ] == ' ' &&
62 argv[2][i+1] == 'E' &&
63 argv[2][i+2] == 'L' &&
64 argv[2][i+3] == 'F' &&
65 argv[2][i+4] == ' ' &&
66 argv[2][i+5] == '6' &&
67 argv[2][i+6] == '4')
68 {
69 while(argv[2][k-1] != ' ' && argv[2][k-1] != 10 && k>0)k--;
70 if(argv[1][0] == '0')
71 {
72 flags |= 2;
73 }
74 if(argv[1][0] == '2')
75 {
76 j=m-3;
77 while(argv[2][j-1] != '/' && j>4)j--;
78 j--;
79 while(argv[2][j-1] != '/' && j>0)j--;
80 if(argv[2][j-1] == '/')
81 {
82 if(argv[2][i-3] == 'X' &&
83 argv[2][i-2] == '1' &&
84 argv[2][i-1] == '1')
85 {
86 sprintf(&argv[2][j],"include");
87 }
88 else
89 {
90 if(argv[2][j-5] == '/' &&
91 argv[2][j-4] == 'l' &&
92 argv[2][j-3] == 'i' &&
93 argv[2][j-2] == 'b')
94 {
95 j-=4;
96 }
97 sprintf(&argv[2][j],"include");
98 }
99 printf("-I%s ",&argv[2][k]);
100 }
101 i+=6;
102 goto next;
103 }
104 if(argv[1][0] == '4')
105 {
106 argv[2][m]=0;
107 printf("%s",&argv[2][k]);
108 return 0;
109 }
110 }
111 if((argv[2][i ] == ' ' &&
112 argv[2][i+1] == 'E' &&
113 argv[2][i+2] == 'L' &&
114 argv[2][i+3] == 'F' &&
115 argv[2][i+4] == ' ' &&
116 argv[2][i+5] == '3' &&
117 argv[2][i+6] == '2') ||
118 (argv[2][i ] == ' ' &&
119 argv[2][i+1] == 'A' &&
120 argv[2][i+2] == 'S' &&
121 argv[2][i+3] == 'C' &&
122 argv[2][i+4] == 'I' &&
123 argv[2][i+5] == 'I' &&
124 argv[2][i+6] == ' ')
125 )
126 {
127 if(argv[1][0] == '0')
128 {
129 flags |= 1;
130 }
131 if(argv[1][0] == '1')
132 {
133 j=m-3;
134 while(argv[2][j-1] != '/' && j>4)j--;
135 j--;
136 while(argv[2][j-1] != '/' && j>0)j--;
137 if(argv[2][j-1] == '/')
138 {
139 if(argv[2][i-7] == 'X' &&
140 argv[2][i-6] == '1' &&
141 argv[2][i-5] == '1')
142 {
143 sprintf(&argv[2][j],"include");
144 }
145 else
146 {
147 if(argv[2][j-5] == '/' &&
148 argv[2][j-4] == 'l' &&
149 argv[2][j-3] == 'i' &&
150 argv[2][j-2] == 'b')
151 {
152 j-=4;
153 }
154 sprintf(&argv[2][j],"include");
155 }
156 printf("-I%s ",&argv[2][k]);
157 }
158 i+=6;
159 goto next;
160 }
161 if(argv[1][0] == '3')
162 {
163 argv[2][m]=0;
164 printf("%s",&argv[2][k]);
165 return 0;
166 }
167 }
168 if(i < j-6)
169 {
170 i++;
171 goto findlinux;
172 }
173 else
174 {
175 i=j;
176 }
177 }
178 if(argv[2][i ] == '.' &&
179 argv[2][i+1] == 'd' &&
180 argv[2][i+2] == 'y' &&
181 argv[2][i+3] == 'l' &&
182 argv[2][i+4] == 'i' &&
183 argv[2][i+5] == 'b')
184 {
185 m=i+6;
186 j=i+5;
187 k=j;
188 while(argv[2][j+1] != '/' && argv[2][j+1] !=0)j++;
189 while(argv[2][k-1] != ' ' && argv[2][k-1] != 10 && k>0)k--;
190 findmac:;
191 if(argv[2][i ] == 'x' &&
192 argv[2][i+1] == '8' &&
193 argv[2][i+2] == '6' &&
194 argv[2][i+3] == '_' &&
195 argv[2][i+4] == '6' &&
196 argv[2][i+5] == '4')
197 {
198 if(argv[1][0] == '0')
199 {
200 flags |= 2;
201 }
202 if(argv[1][0] == '2')
203 {
204 j=m-6;
205 while(argv[2][j-1] != '/' && j>4)j--;
206 j--;
207 while(argv[2][j-1] != '/' && j>0)j--;
208 if(argv[2][j-1] == '/')
209 {
210 if(argv[2][i-3] == 'X' &&
211 argv[2][i-2] == '1' &&
212 argv[2][i-1] == '1')
213 {
214 sprintf(&argv[2][j],"include");
215 }
216 else
217 {
218 if(argv[2][j-5] == '/' &&
219 argv[2][j-4] == 'l' &&
220 argv[2][j-3] == 'i' &&
221 argv[2][j-2] == 'b')
222 {
223 j-=4;
224 }
225 sprintf(&argv[2][j],"include");
226 }
227 printf("-I%s ",&argv[2][k]);
228 }
229 i+=6;
230 goto next;
231 }
232 if(argv[1][0] == '4')
233 {
234 argv[2][m]=0;
235 printf("%s",&argv[2][k]);
236 return 0;
237 }
238 }
239 if(argv[2][i ] == 'i' &&
240 argv[2][i+1] == '3' &&
241 argv[2][i+2] == '8' &&
242 argv[2][i+3] == '6')
243 {
244 if(argv[1][0] == '0')
245 {
246 flags |= 1;
247 }
248 if(argv[1][0] == '1')
249 {
250 j=m-6;
251 while(argv[2][j-1] != '/' && j>4)j--;
252 j--;
253 while(argv[2][j-1] != '/' && j>0)j--;
254 if(argv[2][j-1] == '/')
255 {
256 if(argv[2][i-3] == 'X' &&
257 argv[2][i-2] == '1' &&
258 argv[2][i-1] == '1')
259 {
260 sprintf(&argv[2][j],"include");
261 }
262 else
263 {
264 if(argv[2][j-5] == '/' &&
265 argv[2][j-4] == 'l' &&
266 argv[2][j-3] == 'i' &&
267 argv[2][j-2] == 'b')
268 {
269 j-=4;
270 }
271 sprintf(&argv[2][j],"include");
272 }
273 printf("-I%s ",&argv[2][k]);
274 }
275 return 0;
276 }
277 if(argv[1][0] == '3')
278 {
279 argv[2][m]=0;
280 printf("%s",&argv[2][k]);
281 return 0;
282 }
283 }
284 if(i < j-4)
285 {
286 i++;
287 goto findmac;
288 }
289 else
290 {
291 i=j;
292 }
293 }
294 i++;
295 goto next;
296 }
297