Mercurial > repos > rhope
annotate string.c @ 75:0083b2f7b3c7
Partially working implementation of List. Modified build scripts to allow use of other compilers. Fixed some bugs involving method implementations on different types returning different numbers of outputs. Added Fold to the 'builtins' in the comipler.
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Tue, 06 Jul 2010 07:52:59 -0400 |
parents | 3cc5e4a42344 |
children |
rev | line source |
---|---|
0 | 1 #include "datum.h" |
2 #include "structs.h" | |
3 #include "interp.h" | |
4 #include <string.h> | |
5 #include <stdlib.h> | |
6 | |
7 | |
8 int vis_inttostring(datum ** inputlist, queue_entry * worker_entry) | |
9 { | |
10 int i,j,val; | |
11 char temp_buf[12]; | |
12 datum * output; | |
13 char * out_buf; | |
14 //sprintf(temp_buf, "%d", inputlist[0]->c.integers.num_a); | |
15 val = (inputlist[0]->c.integers.num_a >= 0 ? inputlist[0]->c.integers.num_a : 0-inputlist[0]->c.integers.num_a); | |
16 i = 0; | |
17 if(!val) | |
18 temp_buf[i++] = '0'; | |
19 | |
20 while(val > 0) | |
21 { | |
22 temp_buf[i] = (val % 10) + '0'; | |
23 val /= 10; | |
24 ++i; | |
25 } | |
26 if(inputlist[0]->c.integers.num_a < 0) | |
27 { | |
28 temp_buf[i] = '-'; | |
29 ++i; | |
30 } | |
31 release_ref(inputlist[0]); | |
32 inputlist[0] = new_datum(BUILTIN_TYPE_STRING, 1, i+1, worker_entry->instance->def->program); | |
33 out_buf = inputlist[0]->c.generic.data; | |
34 out_buf[i] = '\0'; | |
35 j = 0; | |
36 --i; | |
37 while(i >= 0) | |
38 { | |
39 out_buf[j] = temp_buf[i]; | |
40 ++j; | |
41 --i; | |
42 } | |
43 //strcpy(inputlist[0]->c.generic.data, temp_buf); | |
44 return 0; | |
45 | |
46 } | |
47 | |
48 #ifndef SEGA | |
49 int vis_realtostring(datum ** inputlist, queue_entry * worker_entry) | |
50 { | |
29
3cc5e4a42344
Missed registration for *@Real Number in previous commit
Mike Pavone <pavone@retrodev.com>
parents:
3
diff
changeset
|
51 char temp_buf[512];//Is this enough? |
0 | 52 datum * output; |
53 sprintf(temp_buf, "%f", inputlist[0]->c.real); | |
54 release_ref(inputlist[0]); | |
55 inputlist[0] = new_datum(BUILTIN_TYPE_STRING, 1, strlen(temp_buf)+1, worker_entry->instance->def->program); | |
56 strcpy(inputlist[0]->c.generic.data, temp_buf); | |
57 return 0; | |
58 | |
59 } | |
60 #endif | |
61 | |
62 int vis_stringequal(datum ** inputlist, queue_entry * worker_entry) | |
63 { | |
64 int result = strcmp(inputlist[0]->c.generic.data, inputlist[1]->c.generic.data); | |
65 release_ref(inputlist[0]); | |
66 release_ref(inputlist[1]); | |
67 inputlist[0] = new_datum(BUILTIN_TYPE_YESNO, 2, 0, worker_entry->instance->def->program); | |
68 datum_set_yesno(inputlist[0], (result == 0 ? 1 : 0)); | |
69 return 0; | |
70 } | |
71 | |
72 int vis_append(datum ** inputlist, queue_entry * worker_entry) | |
73 { | |
74 datum * output; | |
75 int temp_size = inputlist[0]->c.generic.len; | |
76 DEBUGPUTS("Begin vis_append\n"); | |
77 | |
78 DEBUGPRINTF("Left: %s(%d)\n", inputlist[0]->c.generic.data, inputlist[0]->c.generic.len); | |
79 DEBUGPRINTF("Right: %s(%d)\n", inputlist[1]->c.generic.data, inputlist[1]->c.generic.len); | |
80 output = new_datum(BUILTIN_TYPE_STRING, 1, temp_size+inputlist[1]->c.generic.len-1, worker_entry->instance->def->program); | |
81 memcpy(output->c.generic.data, inputlist[0]->c.generic.data, temp_size-1); | |
82 memcpy(((char *)output->c.generic.data)+temp_size-1, inputlist[1]->c.generic.data, inputlist[1]->c.generic.len-1); | |
83 ((char *)output->c.generic.data)[temp_size + inputlist[1]->c.generic.len-2]='\0'; | |
84 DEBUGPRINTF("Appended string: %s(%d)\n", output->c.generic.data, output->c.generic.len); | |
85 release_ref(inputlist[0]); | |
86 release_ref(inputlist[1]); | |
87 inputlist[0] = output; | |
88 DEBUGPUTS("End vis_append\n"); | |
89 | |
90 return 0; | |
91 } | |
92 | |
93 int vis_yesnotostring(datum ** inputlist, queue_entry * worker_entry) | |
94 { | |
95 int result = inputlist[0]->c.integers.num_a; | |
96 release_ref(inputlist[0]); | |
97 if(result) | |
98 { | |
99 inputlist[0] = new_datum(BUILTIN_TYPE_STRING, 1, 4, worker_entry->instance->def->program); | |
100 strcpy(inputlist[0]->c.generic.data, "Yes"); | |
101 } | |
102 else | |
103 { | |
104 inputlist[0] = new_datum(BUILTIN_TYPE_STRING, 1, 3, worker_entry->instance->def->program); | |
105 strcpy(inputlist[0]->c.generic.data, "No"); | |
106 } | |
107 return 0; | |
108 } | |
109 | |
110 int vis_greaterstring(datum ** inputlist, queue_entry * worker_entry) | |
111 { | |
112 int result; | |
113 if(strcmp(inputlist[0]->c.generic.data, inputlist[1]->c.generic.data) > 0) | |
114 result = 1; | |
115 else | |
116 result = 0; | |
117 release_ref(inputlist[0]); | |
118 release_ref(inputlist[1]); | |
119 inputlist[0] = new_datum(BUILTIN_TYPE_YESNO, 2, 0, worker_entry->instance->def->program); | |
120 datum_set_yesno(inputlist[0], result); | |
121 return 0; | |
122 } | |
123 | |
124 int vis_lesserstring(datum ** inputlist, queue_entry * worker_entry) | |
125 { | |
126 int result; | |
127 if(strcmp(inputlist[0]->c.generic.data, inputlist[1]->c.generic.data) < 0) | |
128 result = 1; | |
129 else | |
130 result = 0; | |
131 release_ref(inputlist[0]); | |
132 release_ref(inputlist[1]); | |
133 inputlist[0] = new_datum(BUILTIN_TYPE_YESNO, 2, 0, worker_entry->instance->def->program); | |
134 datum_set_yesno(inputlist[0], result); | |
135 return 0; | |
136 } | |
137 | |
138 datum * make_string(const char * string, int len, program * prog) | |
139 { | |
140 datum * output; | |
141 if(len < 0) | |
142 len = strlen(string); | |
143 output = new_datum(BUILTIN_TYPE_STRING, 1, len+1, prog); | |
3
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
144 if(string) |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
145 memcpy(output->c.generic.data, string, len); |
0 | 146 ((char *)output->c.generic.data)[len] = '\0'; |
147 return output; | |
148 } | |
149 | |
150 int vis_string_split(datum ** inputlist, queue_entry * worker_entry) | |
151 { | |
152 int i, start=0, len = inputlist[0]->c.generic.len-1; | |
153 char * string = inputlist[0]->c.generic.data; | |
154 char * delim = inputlist[1]->c.generic.data; | |
155 int delimlen = inputlist[1]->c.generic.len-1; | |
156 int search_offset = 0; | |
157 datum * params[2]; | |
158 params[0] = create_list(worker_entry->instance->def->program); | |
159 DEBUGPRINTF("Split@String: delim(%s) string(%s)\n", delim, string); | |
160 for(i = 0; i < len; ++i) | |
161 { | |
162 if(string[i] == delim[search_offset]) | |
163 { | |
164 if(search_offset == (delimlen-1)) | |
165 { | |
166 params[1] = make_string(string + start, i-start-(delimlen-1), worker_entry->instance->def->program); | |
167 DEBUGPRINTF("Appending %s(%d) to list\n", params[1]->c.generic.data, params[1]->c.generic.len); | |
168 vis_list_append(params, worker_entry); | |
169 start = i+1; | |
170 search_offset = 0; | |
171 } | |
172 else | |
173 ++search_offset; | |
174 } | |
175 else if(search_offset > 0) | |
176 { | |
177 i = (i-search_offset+1); | |
178 search_offset = 0; | |
179 } | |
180 } | |
181 if(len) | |
182 { | |
183 params[1] = make_string(string + start, i-start, worker_entry->instance->def->program); | |
184 vis_list_append(params, worker_entry); | |
185 } | |
186 DEBUGPUTS("End Split@String\n"); | |
187 | |
188 release_ref(inputlist[0]); | |
189 release_ref(inputlist[1]); | |
190 inputlist[0] = params[0]; | |
191 return 0; | |
192 } | |
193 | |
194 int vis_string_put_raw(datum ** inputlist, queue_entry * worker_entry) | |
195 { | |
196 int old_len = inputlist[0]->c.generic.len; | |
197 char * data; | |
198 inputlist[0] = copy_datum(inputlist[0], old_len + inputlist[1]->c.generic.len); | |
199 data = inputlist[0]->c.generic.data; | |
200 memcpy(data + old_len - 1, inputlist[1]->c.generic.data, inputlist[1]->c.generic.len); | |
201 release_ref(inputlist[1]); | |
202 data[inputlist[0]->c.generic.len-1] = '\0'; | |
203 return 0; | |
204 } | |
205 | |
206 int vis_string_get_raw(datum ** inputlist, queue_entry * worker_entry) | |
207 { | |
208 char * data = inputlist[0]->c.generic.data; | |
209 datum * output; | |
210 inputlist[1] = copy_datum(inputlist[1], 0); | |
211 memcpy(inputlist[1]->c.generic.data, data, inputlist[1]->c.generic.len); | |
212 output = make_string(data + inputlist[1]->c.generic.len, inputlist[0]->c.generic.len - inputlist[1]->c.generic.len - 1, worker_entry->instance->def->program); | |
213 release_ref(inputlist[0]); | |
214 inputlist[0] = output; | |
215 return 0; | |
216 } | |
217 | |
218 int vis_string_slice(datum ** inputlist, queue_entry * worker_entry) | |
219 { | |
220 char * string; | |
221 int index = inputlist[1]->c.integers.num_a; | |
222 release_ref(inputlist[1]); | |
223 if(index < (inputlist[0]->c.generic.len-1)) | |
224 { | |
225 inputlist[1] = new_datum_comp(inputlist[0]->company, 1, inputlist[0]->c.generic.len-index); | |
226 memcpy(inputlist[1]->c.generic.data, (char *)(inputlist[0]->c.generic.data) + index, inputlist[0]->c.generic.len-index); | |
227 inputlist[0] = copy_datum(inputlist[0], index+1); | |
228 string = inputlist[0]->c.generic.data; | |
229 string[index] = '\0'; | |
230 } | |
231 else | |
232 { | |
233 inputlist[1] = new_datum_comp(inputlist[0]->company, 1, 1); | |
234 string = inputlist[1]->c.generic.data; | |
235 string[0] = '\0'; | |
236 } | |
237 return 0; | |
238 } | |
239 | |
240 int vis_string_reverse(datum ** inputlist, queue_entry * worker_entry) | |
241 { | |
242 int ref_count, i,j; | |
243 datum * output; | |
244 char *source, *dest, tmp; | |
245 VIS_EnterCriticalSection(inputlist[0]->lock); | |
246 ref_count = inputlist[0]->ref_count; | |
247 VIS_LeaveCriticalSection(inputlist[0]->lock); | |
248 | |
249 if(ref_count > 1) | |
250 output = new_datum_comp(inputlist[0]->company, 1, inputlist[0]->c.generic.len); | |
251 else | |
252 output = inputlist[0]; | |
253 source = inputlist[0]->c.generic.data; | |
254 | |
255 if(ref_count > 1) | |
256 { | |
257 dest = output->c.generic.data; | |
258 i = 0; | |
259 for(j = output->c.generic.len-2; j >= 0; --j) | |
260 dest[j] = source[i++]; | |
261 release_ref(inputlist[0]); | |
262 inputlist[0] = output; | |
263 } | |
264 else | |
265 { | |
266 i = 0; | |
267 for(j = output->c.generic.len-2; j > i; --j) | |
268 { | |
269 tmp = source[i]; | |
270 source[i++] = source[j]; | |
271 source[j] = tmp; | |
272 } | |
273 } | |
274 return 0; | |
275 } | |
276 | |
277 int vis_string_length(datum ** inputlist, queue_entry * worker_entry) | |
278 { | |
279 int len = inputlist[0]->c.generic.len-1; | |
280 release_ref(inputlist[0]); | |
281 inputlist[0] = new_datum(BUILTIN_TYPE_WHOLE, 2, 0, worker_entry->instance->def->program); | |
282 inputlist[0]->c.integers.num_a = len; | |
283 return 0; | |
284 } | |
285 | |
286 int vis_string_put_byte(datum ** inputlist, queue_entry * worker_entry) | |
287 { | |
288 inputlist[0] = copy_datum(inputlist[0], inputlist[0]->c.generic.len + 1); | |
289 ((unsigned char *)(inputlist[0]->c.generic.data))[inputlist[0]->c.generic.len - 2] = (unsigned char)inputlist[1]->c.integers.num_a; | |
290 ((unsigned char *)(inputlist[0]->c.generic.data))[inputlist[0]->c.generic.len - 1] = '\0'; | |
291 release_ref(inputlist[1]); | |
292 return 0; | |
293 } | |
294 | |
295 int vis_string_get_dstring(datum ** inputlist, queue_entry * worker_entry) | |
296 { | |
297 datum ** delimlist; | |
298 int num_delims; | |
299 int i,len,delimlen; | |
300 char *current; | |
301 BOOL match=FALSE; | |
302 datum * temp; | |
303 if(inputlist[1]->company->type_id == BUILTIN_TYPE_LIST) | |
304 { | |
305 delimlist = ((list_data *)inputlist[1]->c.generic.data)->entries; | |
306 num_delims = ((list_data *)inputlist[1]->c.generic.data)->num_entries; | |
307 //TODO: check to make sure that all of the list entries are strings | |
308 } | |
309 else if(inputlist[1]->company->type_id == BUILTIN_TYPE_STRING) | |
310 { | |
311 delimlist = inputlist+1; | |
312 num_delims = 1; | |
313 } | |
314 else | |
315 { | |
316 ERRORPUTS("Second argument to Get DString@String must be either a String or a List"); | |
3
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
317 print_stack_trace(worker_entry->instance); |
0 | 318 release_ref(inputlist[0]); |
319 release_ref(inputlist[1]); | |
320 return -1; | |
321 } | |
322 current = inputlist[0]->c.generic.data; | |
323 len = inputlist[0]->c.generic.len - 1; | |
324 while(len && !match) | |
325 { | |
326 for(i = 0; i < num_delims; ++i) | |
327 { | |
328 delimlen = delimlist[i]->c.generic.len-1; | |
329 if(len >= delimlen && !memcmp(current, delimlist[i]->c.generic.data, delimlen)) | |
330 { | |
331 match = TRUE; | |
332 //deal with the fact that we're going to adjust current and len even though we're done | |
333 --current; | |
334 ++len; | |
335 break; | |
336 } | |
337 } | |
338 ++current; | |
339 --len; | |
340 } | |
341 if(match) | |
342 { | |
343 inputlist[2] = add_ref(delimlist[i]); | |
344 release_ref(inputlist[1]); | |
345 inputlist[1] = make_string(inputlist[0]->c.generic.data, current - ((char *)inputlist[0]->c.generic.data), worker_entry->instance->def->program); | |
346 delimlen = inputlist[2]->c.generic.len-1; | |
347 temp = make_string(current+delimlen, len-delimlen, worker_entry->instance->def->program); | |
348 release_ref(inputlist[0]); | |
349 inputlist[0] = temp; | |
350 inputlist[3] = NULL; | |
351 } | |
352 else | |
353 { | |
354 release_ref(inputlist[1]); | |
355 inputlist[1] = inputlist[0]; | |
356 inputlist[0] = NULL; | |
357 inputlist[2] = NULL; | |
358 inputlist[3] = new_datum(BUILTIN_TYPE_YESNO, 2, 0, worker_entry->instance->def->program); | |
359 inputlist[3]->c.integers.num_a = 0; | |
360 } | |
361 return 0; | |
362 } | |
3
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
363 |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
364 int vis_string_lefttrim(datum ** params, queue_entry * entry) |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
365 { |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
366 BOOL isatrimchar; |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
367 int i,j; |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
368 char *string,*trim_chars; |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
369 string = params[0]->c.generic.data; |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
370 trim_chars = params[1]->c.generic.data; |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
371 isatrimchar = TRUE; |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
372 for(i = 0; i < params[0]->c.generic.len-1; ++i) |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
373 { |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
374 isatrimchar = FALSE; |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
375 for(j = 0; j < params[1]->c.generic.len-1; ++j) |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
376 if(string[i] == trim_chars[j]) |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
377 { |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
378 isatrimchar = TRUE; |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
379 break; |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
380 } |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
381 if(!isatrimchar) |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
382 break; |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
383 } |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
384 release_ref(params[1]); |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
385 params[1] = params[0]; |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
386 params[0] = make_string(string+i, params[1]->c.generic.len-1-i, entry->instance->def->program); |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
387 release_ref(params[1]); |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
388 return 0; |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
389 } |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
390 |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
391 int vis_string_righttrim(datum ** params, queue_entry * entry) |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
392 { |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
393 BOOL isatrimchar; |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
394 int i,j; |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
395 char *string,*trim_chars; |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
396 string = params[0]->c.generic.data; |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
397 trim_chars = params[1]->c.generic.data; |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
398 isatrimchar = TRUE; |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
399 for(i = params[0]->c.generic.len-2; i >= 0 ; --i) |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
400 { |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
401 isatrimchar = FALSE; |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
402 for(j = 0; j < params[1]->c.generic.len-1; ++j) |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
403 if(string[i] == trim_chars[j]) |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
404 { |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
405 isatrimchar = TRUE; |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
406 break; |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
407 } |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
408 if(!isatrimchar) |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
409 break; |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
410 } |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
411 release_ref(params[1]); |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
412 params[1] = params[0]; |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
413 params[0] = make_string(string, i+1, entry->instance->def->program); |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
414 release_ref(params[1]); |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
415 return 0; |
94c885692eb5
Partial set of fixes and enhancements from Linux box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
416 } |