3 * (C) Copyright Apr 15 1995, Edmond J. Breen.
5 * This code may be copied for personal, non-profit use only.
20 #include "stdliblocal.h"
25 void EiC_Mod_Error(char * fmt, ...)
30 sprintf(buff,fmt,args);
31 EiC_messageDisplay(buff);
38 ----------------------------------*/
40 val_t eic_malloc(void)
44 v.p.sp = v.p.p = xmalloc(arg(0,getargs(),size_t));
45 setEp( v.p, arg(0,getargs(),size_t) );
50 val_t eic_calloc(void)
53 arg_list ap = getargs();
56 s1 = arg(0,ap,size_t);
57 s2 = arg(1,ap,size_t);
59 v.p.sp = v.p.p = xcalloc(s1,s2);
61 setEp( v.p, s1 * s2 );
65 val_t eic_realloc(void)
68 arg_list ap = getargs();
70 v.p.sp = v.p.p = xrealloc(arg(0,ap,ptr_t).p,
72 setEp( v.p, arg(1,ap,size_t) );
84 p = arg(0,getargs(),ptr_t*);
87 p->p = p->sp = p->ep = NULL;
92 p = arg(0,getargs(),ptr_t);
102 val_t eic_strtod(void)
105 arg_list ap = getargs();
109 p1 = arg(0,ap,ptr_t);
111 if(arg(1,ap,ptr_t).p) {
112 p2 = arg(1,ap,ptr_t).p;
119 v.dval = (float)strtod(p1.p,
124 val_t eic_strtol(void)
127 arg_list ap = getargs();
131 p1 = arg(0,ap,ptr_t);
133 if(arg(1,ap,ptr_t).p) {
134 p2 = arg(1,ap,ptr_t).p;
142 v.lval = strtol(p1.p,
148 val_t eic_strtoul(void)
151 arg_list ap = getargs();
155 p1 = arg(0,ap,ptr_t);
157 if(arg(1,ap,ptr_t).p) {
158 p2 = arg(1,ap,ptr_t).p;
166 v.ulval = strtoul(p1.p,
173 val_t eic_system(void)
176 v.ival = system(nextarg(getargs(),ptr_t).p);
184 arg_list ap = getargs();
189 switch(arg(3,ap,int)) {
191 v.p.sp = v.p.p = itoa(arg(0,ap,int),
196 v.p.sp = v.p.p = utoa(arg(0,ap,unsigned),
200 setEp( v.p, strlen(v.p.p) + 1 );
207 arg_list ap = getargs();
212 switch(arg(3,ap,int)) {
214 v.p.sp = v.p.p = ltoa(arg(0,ap,long),
219 v.p.sp = v.p.p = ultoa(arg(0,ap,unsigned long),
225 setEp( v.p, strlen(v.p.p) + 1 );
232 static unsigned long _Rseed = 1;
235 _Rseed = _Rseed * 1103515245 + 12345;
236 return (unsigned)(_Rseed >> 16) & RAND_MAX;
238 void srand(unsigned int x)
254 val_t eic_srand(void)
257 srand(nextarg(getargs(),unsigned int));
264 v.ival = atoi(nextarg(getargs(),ptr_t).p);
271 v.lval = atol(nextarg(getargs(),ptr_t).p);
278 v.dval = atof(nextarg(getargs(),ptr_t).p);
284 val_t eic_getenv(void)
287 v.p.sp = v.p.p = getenv(nextarg(getargs(),ptr_t).p);
289 setEp( v.p, strlen(v.p.p) + 1 );
295 val_t eic_putenv(void)
298 v.ival = putenv(nextarg(getargs(),ptr_t).p);
305 extern int EiC_interActive; /* defined in starteic.c */
308 if(!EiC_interActive) {
309 v.ival = arg(0,getargs(),int);
320 val_t eic_abort(void)
322 extern int EiC_interActive; /* defined in starteic.c */
341 /****************************************************************/
343 void module_stdlib(void)
351 EiC_add_builtinfunc("system", eic_system);
352 EiC_add_builtinfunc("_itoa", eic_itoa);
353 EiC_add_builtinfunc("_ltoa", eic_ltoa);
354 EiC_add_builtinfunc("malloc", eic_malloc);
355 EiC_add_builtinfunc("calloc", eic_calloc);
356 EiC_add_builtinfunc("realloc", eic_realloc);
357 EiC_add_builtinfunc("free", eic_free);
358 EiC_add_builtinfunc("strtod", eic_strtod);
359 EiC_add_builtinfunc("strtol", eic_strtol);
360 EiC_add_builtinfunc("strtoul", eic_strtoul);
361 EiC_add_builtinfunc("rand", eic_rand);
362 EiC_add_builtinfunc("srand", eic_srand);
363 EiC_add_builtinfunc("atoi", eic_atoi);
364 EiC_add_builtinfunc("atof", eic_atof);
365 EiC_add_builtinfunc("atol", eic_atol);
369 EiC_add_builtinfunc("getenv", eic_getenv);
370 EiC_add_builtinfunc("putenv", eic_putenv);
374 EiC_add_builtinfunc("abort",eic_abort);
375 EiC_add_builtinfunc("eic_exit",eic_exit);