sdk-world v2026.11.05
PS2 SDK - world tier (copyleft-allowed, non-essential packages)
Loading...
Searching...
No Matches
aaparse.c
1#include <string.h>
2#include <stdlib.h>
3#include "config.h"
4#include "aalib.h"
5static int inparse;
6static void parseenv(struct aa_hardware_params *p, aa_renderparams * r);
7static void aa_remove(int i, int *argc, char **argv)
8{
9 int y;
10 if (i < 0 || i >= *argc) {
11 printf("AA Internal error #1-please report\n");
12 return;
13 }
14 for (y = i; y < *argc - 1; y++) {
15 argv[y] = argv[y + 1];
16 }
17 argv[*argc - 1] = NULL;
18 (*argc)--;
19}
20int aa_parseoptions(struct aa_hardware_params *p, aa_renderparams * r, int *argc, char **argv)
21{
22 int i, y;
23 int supported;
24 if (!inparse)
25 parseenv(p, r);
26 if (argc == NULL || argv == NULL)
27 return 1;
28 supported = p != NULL ? p->supported : aa_defparams.supported;
29 if (p == NULL)
30 p = &aa_defparams;
31 if (r == NULL)
32 r = &aa_defrenderparams;
33 for (i = 1; i < *argc; i++) {
34 if (strcmp(argv[i], "-font") == 0) {
35 aa_remove(i, argc, argv);
36 if (*argc == i) {
37 fprintf(stderr, "font name expected\n");
38 return (0);
39 }
40 for (y = 0; aa_fonts[y] != NULL; y++) {
41 if (!strcmp(argv[i], aa_fonts[y]->name) ||
42 !strcmp(argv[i], aa_fonts[y]->shortname)) {
43 p->font = aa_fonts[y];
44 aa_remove(i, argc, argv);
45 i--;
46 break;
47 }
48 }
49 if (aa_fonts[i] == NULL) {
50 fprintf(stderr, "font name expected\n");
51 return (0);
52 }
53 i--;
54 } else if (strcmp(argv[i], "-normal") == 0) {
55 aa_remove(i, argc, argv);
56 i--;
57 supported |= AA_NORMAL_MASK;
58 p->supported = supported;
59 } else if (strcmp(argv[i], "-nonormal") == 0) {
60 aa_remove(i, argc, argv);
61 i--;
62 supported &= ~AA_NORMAL_MASK;
63 p->supported = supported;
64 } else if (strcmp(argv[i], "-bold") == 0) {
65 aa_remove(i, argc, argv);
66 i--;
67 supported |= AA_BOLD_MASK;
68 p->supported = supported;
69 } else if (strcmp(argv[i], "-nobold") == 0) {
70 aa_remove(i, argc, argv);
71 i--;
72 supported &= ~AA_BOLD_MASK;
73 p->supported = supported;
74 } else if (strcmp(argv[i], "-boldfont") == 0) {
75 aa_remove(i, argc, argv);
76 i--;
77 supported |= AA_BOLDFONT_MASK;
78 p->supported = supported;
79 } else if (strcmp(argv[i], "-noboldfont") == 0) {
80 aa_remove(i, argc, argv);
81 i--;
82 supported &= ~AA_BOLDFONT_MASK;
83 p->supported = supported;
84 } else if (strcmp(argv[i], "-dim") == 0) {
85 aa_remove(i, argc, argv);
86 i--;
87 supported |= AA_DIM_MASK;
88 p->supported = supported;
89 } else if (strcmp(argv[i], "-nodim") == 0) {
90 aa_remove(i, argc, argv);
91 i--;
92 supported &= ~AA_DIM_MASK;
93 p->supported = supported;
94 } else if (strcmp(argv[i], "-reverse") == 0) {
95 aa_remove(i, argc, argv);
96 i--;
97 supported |= AA_REVERSE_MASK;
98 p->supported = supported;
99 } else if (strcmp(argv[i], "-extended") == 0) {
100 aa_remove(i, argc, argv);
101 i--;
102 supported |= AA_EXTENDED;
103 p->supported = supported;
104 } else if (strcmp(argv[i], "-eight") == 0) {
105 aa_remove(i, argc, argv);
106 i--;
107 supported |= AA_EIGHT;
108 p->supported = supported;
109 } else if (strcmp(argv[i], "-noreverse") == 0) {
110 aa_remove(i, argc, argv);
111 i--;
112 supported &= ~AA_REVERSE_MASK;
113 p->supported = supported;
114 } else if (strcmp(argv[i], "-inverse") == 0) {
115 aa_remove(i, argc, argv);
116 i--;
117 r->inversion = 1;
118 } else if (strcmp(argv[i], "-noinverse") == 0) {
119 aa_remove(i, argc, argv);
120 i--;
121 r->inversion = 0;
122 } else if (strcmp(argv[i], "-nodither") == 0) {
123 aa_remove(i, argc, argv);
124 i--;
125 r->dither = 0;
126 } else if (strcmp(argv[i], "-floyd_steinberg") == 0) {
127 aa_remove(i, argc, argv);
128 i--;
129 r->dither = AA_FLOYD_S;
130 } else if (strcmp(argv[i], "-error_distribution") == 0) {
131 aa_remove(i, argc, argv);
132 i--;
133 r->dither = AA_ERRORDISTRIB;
134 } else if (strcmp(argv[i], "-random") == 0) {
135 aa_remove(i, argc, argv);
136 if (*argc == i) {
137 fprintf(stderr, "Random dithering value expected\n");
138 return (0);
139 }
140 r->randomval = atol(argv[i]);
141 aa_remove(i, argc, argv);
142 i--;
143 } else if (strcmp(argv[i], "-bright") == 0) {
144 aa_remove(i, argc, argv);
145 if (*argc == i) {
146 fprintf(stderr, "Bright value expected(0-255)\n");
147 return (0);
148 }
149 r->bright = atol(argv[i]);
150 aa_remove(i, argc, argv);
151 i--;
152 } else if (strcmp(argv[i], "-contrast") == 0) {
153 aa_remove(i, argc, argv);
154 if (*argc == i) {
155 fprintf(stderr, "Contrast value expected(0-255)\n");
156 return (0);
157 }
158 r->contrast = atol(argv[i]);
159 aa_remove(i, argc, argv);
160 i--;
161 } else if (strcmp(argv[i], "-width") == 0) {
162 aa_remove(i, argc, argv);
163 if (*argc == i) {
164 fprintf(stderr, "width expected\n");
165 return (0);
166 }
167 p->width = atol(argv[i]);
168 aa_remove(i, argc, argv);
169 i--;
170 } else if (strcmp(argv[i], "-recwidth") == 0) {
171 aa_remove(i, argc, argv);
172 if (*argc == i) {
173 fprintf(stderr, "width expected\n");
174 return (0);
175 }
176 p->recwidth = atol(argv[i]);
177 aa_remove(i, argc, argv);
178 i--;
179 } else if (strcmp(argv[i], "-minwidth") == 0) {
180 aa_remove(i, argc, argv);
181 if (*argc == i) {
182 fprintf(stderr, "width expected\n");
183 return (0);
184 }
185 p->minwidth = atol(argv[i]);
186 aa_remove(i, argc, argv);
187 i--;
188 } else if (strcmp(argv[i], "-maxwidth") == 0) {
189 aa_remove(i, argc, argv);
190 if (*argc == i) {
191 fprintf(stderr, "width expected\n");
192 return (0);
193 }
194 p->maxwidth = atol(argv[i]);
195 aa_remove(i, argc, argv);
196 i--;
197 } else if (strcmp(argv[i], "-height") == 0) {
198 aa_remove(i, argc, argv);
199 if (*argc == i) {
200 fprintf(stderr, "height expected\n");
201 return (0);
202 }
203 p->height = atol(argv[i]);
204 aa_remove(i, argc, argv);
205 i--;
206 } else if (strcmp(argv[i], "-recheight") == 0) {
207 aa_remove(i, argc, argv);
208 if (*argc == i) {
209 fprintf(stderr, "height expected\n");
210 return (0);
211 }
212 p->recheight = atol(argv[i]);
213 aa_remove(i, argc, argv);
214 i--;
215 } else if (strcmp(argv[i], "-minheight") == 0) {
216 aa_remove(i, argc, argv);
217 if (*argc == i) {
218 fprintf(stderr, "height expected\n");
219 return (0);
220 }
221 p->minheight = atol(argv[i]);
222 aa_remove(i, argc, argv);
223 i--;
224 } else if (strcmp(argv[i], "-maxheight") == 0) {
225 aa_remove(i, argc, argv);
226 if (*argc == i) {
227 fprintf(stderr, "height expected\n");
228 return (0);
229 }
230 p->maxheight = atol(argv[i]);
231 aa_remove(i, argc, argv);
232 i--;
233 } else if (strcmp(argv[i], "-gamma") == 0) {
234 aa_remove(i, argc, argv);
235 if (*argc == i) {
236 fprintf(stderr, "Gamma value expected\n");
237 return (0);
238 }
239 r->gamma = atof(argv[i]);
240 aa_remove(i, argc, argv);
241 i--;
242 } else if (strcmp(argv[i], "-dimmul") == 0) {
243 aa_remove(i, argc, argv);
244 if (*argc == i) {
245 fprintf(stderr, "Dimmul value expected\n");
246 return (0);
247 }
248 p->dimmul = atof(argv[i]);
249 aa_remove(i, argc, argv);
250 i--;
251 } else if (strcmp(argv[i], "-boldmul") == 0) {
252 aa_remove(i, argc, argv);
253 if (*argc == i) {
254 fprintf(stderr, "Dimmul value expected\n");
255 return (0);
256 }
257 p->boldmul = atof(argv[i]);
258 aa_remove(i, argc, argv);
259 i--;
260 } else if (strcmp(argv[i], "-driver") == 0) {
261 aa_remove(i, argc, argv);
262 if (*argc == i) {
263 fprintf(stderr, "Driver name expected\n");
264 return (0);
265 }
266 aa_recommendhidisplay(argv[i]);
267 aa_remove(i, argc, argv);
268 i--;
269 } else if (strcmp(argv[i], "-kbddriver") == 0) {
270 aa_remove(i, argc, argv);
271 if (*argc == i) {
272 fprintf(stderr, "Driver name expected\n");
273 return (0);
274 }
275 aa_recommendhikbd(argv[i]);
276 aa_remove(i, argc, argv);
277 i--;
278 } else if (strcmp(argv[i], "-mousedriver") == 0) {
279 aa_remove(i, argc, argv);
280 if (*argc == i) {
281 fprintf(stderr, "Driver name expected\n");
282 return (0);
283 }
284 aa_recommendhimouse(argv[i]);
285 aa_remove(i, argc, argv);
286 i--;
287 }
288 }
289 return (1);
290}
291static void parseenv(struct aa_hardware_params *p, aa_renderparams * r)
292{
293 char *env;
294 int argc = 1;
295 int i;
296 char *argv[256], *argv1[256];
297 inparse = 1;
298 env = getenv("AAOPTS");
299 if (env == NULL)
300 return;
301 if (env[0]) {
302 for (i = 0; i < strlen(env) - 1; i++) {
303 int s;
304 char stop = ' ';
305 while (env[i] == ' ')
306 i++;
307 if (env[i] == '"')
308 i++, stop = '"';
309 s = i;
310 while (i < strlen(env) && env[i] != stop)
311 i++;
312 if (i - s) {
313 argv1[argc] = argv[argc] = malloc(i - s);
314 strncpy(argv[argc], env + s, i - s);
315 argc++;
316 if (argc == 255)
317 break;
318 }
319 }
320 }
321 i = argc;
322 if (i != 1) {
323 aa_parseoptions(p, r, &i, argv);
324 for (i = 1; i < argc; i++)
325 free(argv1[i]);
326 }
327 inparse = 0;
328}