3 * (C) Copyright Dec 20 1998, Edmond J. Breen.
5 * This code may be copied for personal, non-profit use only.
8 /* This file is broken into 2 parts
9 * the first part defines the interface routines
10 * and the 2nd part adds the interface routine
11 * to EiC's look up tables.
22 #include "stdliblocal.h"
29 ------------------------------*/
32 val_t eic_memcpy(void)
41 s = arg(2,getargs(),size_t);
50 val_t eic_memmove(void)
59 s = arg(2,getargs(),size_t);
69 memmove(v.p.p,p2.p,s);
73 val_t eic_strcpy(void) /* unsafe */
78 checkEp(v.p,strlen(arg(1,getargs(), ptr_t).p) + 1);
81 arg(1,getargs(), ptr_t).p);
85 val_t eic_strdup(void) /* unsafe */
89 char *p = arg(0,getargs(),ptr_t).p;
91 v.p.sp = v.p.p = xmalloc(len +1);
94 v.p.ep = setEp(v.p, len);
102 val_t eic_strncpy(void)
111 s = arg(2,getargs(),size_t);
116 strncpy(v.p.p,p2.p,s);
121 val_t eic_strcat(void) /* unsafe */
129 checkEp( v.p, strlen(v.p.p) + strlen(p2.p) + 1 );
135 val_t eic_strncat(void) /* unsafe */
144 s = arg(2,getargs(),size_t);
147 checkEp(v.p,strlen(v.p.p) + (s < s1 ? s : s1) + 1 );
149 strncat(v.p.p,p2.p,s);
153 val_t eic_memcmp(void)
156 v.ival = memcmp(arg(0,getargs(),ptr_t).p,
157 arg(1,getargs(),ptr_t).p,
158 arg(2,getargs(),size_t));
161 val_t eic_strcmp(void)
164 v.ival = strcmp(arg(0,getargs(),ptr_t).p,
165 arg(1,getargs(),ptr_t).p);
168 val_t eic_strcoll(void)
171 v.ival = strcoll(arg(0,getargs(),ptr_t).p,
172 arg(1,getargs(),ptr_t).p);
175 val_t eic_strncmp(void)
178 v.ival = strncmp(arg(0,getargs(),ptr_t).p,
179 arg(1,getargs(),ptr_t).p,
180 arg(2,getargs(),size_t));
183 val_t eic_strxfrm(void)
186 v.szval = strxfrm(arg(0,getargs(),ptr_t).p,
187 arg(1,getargs(),ptr_t).p,
188 arg(2,getargs(),size_t));
191 val_t eic_memchr(void)
195 v.p = arg(0,getargs(),ptr_t);
197 v.p.p = memchr(v.p.p,
198 arg(1,getargs(),int),
199 arg(2,getargs(),size_t));
202 val_t eic_strchr(void)
205 v.p = arg(0,getargs(),ptr_t);
206 v.p.p = strchr(v.p.p,
207 arg(1,getargs(),int));
210 val_t eic_strcspn(void)
213 v.szval = strcspn(arg(0,getargs(),ptr_t).p,
214 arg(1,getargs(),ptr_t).p);
217 val_t eic_strpbrk(void)
222 v.p.p = strpbrk(v.p.p,
223 arg(1,getargs(),ptr_t).p);
226 val_t eic_strrchr(void)
230 v.p.p = strrchr(v.p.p,
231 arg(1,getargs(),int));
234 val_t eic_strspn(void)
237 v.szval = strspn(arg(0,getargs(),ptr_t).p,
238 arg(1,getargs(),ptr_t).p);
241 val_t eic_strstr(void)
246 v.p.p = strstr(v.p.p,
247 arg(1,getargs(),ptr_t).p);
250 val_t eic_strtok(void)
263 v.p.p = strtok(v.p.p,
264 arg(1,getargs(),ptr_t).p);
267 val_t eic_memset(void)
274 s = arg(2,getargs(),size_t);
278 arg(1,getargs(),int),
282 val_t eic_strerror(void)
286 v.p.p = strerror(arg(0,getargs(),int));
290 setEp( v.p, strlen(v.p.p) + 1 );
294 val_t eic_strlen(void)
297 v.szval = strlen(arg(0,getargs(),ptr_t).p);
302 val_t eic_strrev(void)
306 v.p.p = strrev(v.p.p);
310 val_t eic_fftoa(void)
313 arg_list ap = getargs();
317 fftoa(arg(0,ap,float), /* value */
319 arg(2,ap,int), /* precision */
320 arg(3,ap,char), /* 'f','e' or 'E' */
321 arg(4,ap,int)); /* truncation, i.e. 0 or 1 */
327 /********************************************************************/
329 void module_string(void)
333 EiC_add_builtinfunc("memcpy",eic_memcpy);
334 EiC_add_builtinfunc("memmove",eic_memmove);
335 EiC_add_builtinfunc("strcpy",eic_strcpy);
336 EiC_add_builtinfunc("strdup",eic_strdup);
337 EiC_add_builtinfunc("strncpy",eic_strncpy);
338 EiC_add_builtinfunc("strcat",eic_strcat);
339 EiC_add_builtinfunc("strncat",eic_strncat);
340 EiC_add_builtinfunc("memcmp",eic_memcmp);
341 EiC_add_builtinfunc("strcmp",eic_strcmp);
342 EiC_add_builtinfunc("strcoll",eic_strcoll);
343 EiC_add_builtinfunc("strncmp",eic_strncmp);
344 EiC_add_builtinfunc("strxfrm",eic_strxfrm);
345 EiC_add_builtinfunc("memchr",eic_memchr);
346 EiC_add_builtinfunc("strchr",eic_strchr);
347 EiC_add_builtinfunc("strcspn",eic_strcspn);
348 EiC_add_builtinfunc("strpbrk",eic_strpbrk);
349 EiC_add_builtinfunc("strrchr",eic_strrchr);
350 EiC_add_builtinfunc("strspn",eic_strspn);
351 EiC_add_builtinfunc("strstr",eic_strstr);
352 EiC_add_builtinfunc("strtok",eic_strtok);
353 EiC_add_builtinfunc("memset",eic_memset);
354 EiC_add_builtinfunc("strerror",eic_strerror);
355 EiC_add_builtinfunc("strlen",eic_strlen);
357 EiC_add_builtinfunc("strrev", eic_strrev);
358 EiC_add_builtinfunc("fftoa", eic_fftoa);