1
/* see copyright notice in squirrel.h */
6
#include <sqstdsystem.h>
10
#define scgetenv _wgetenv
11
#define scsystem _wsystem
12
#define scasctime _wasctime
13
#define scremove _wremove
14
#define screname _wrename
16
#define scgetenv getenv
17
#define scsystem system
18
#define scasctime asctime
19
#define scremove remove
20
#define screname rename
23
static SQInteger _system_getenv(HSQUIRRELVM v)
26
if(SQ_SUCCEEDED(sq_getstring(v,2,&s))){
27
sq_pushstring(v,scgetenv(s),-1);
34
static SQInteger _system_system(HSQUIRRELVM v)
37
if(SQ_SUCCEEDED(sq_getstring(v,2,&s))){
38
sq_pushinteger(v,scsystem(s));
41
return sq_throwerror(v,_SC("wrong param"));
45
static SQInteger _system_clock(HSQUIRRELVM v)
47
sq_pushfloat(v,((SQFloat)clock())/(SQFloat)CLOCKS_PER_SEC);
51
static SQInteger _system_time(HSQUIRRELVM v)
55
sq_pushinteger(v,*((SQInteger *)&t));
59
static SQInteger _system_remove(HSQUIRRELVM v)
64
return sq_throwerror(v,_SC("remove() failed"));
68
static SQInteger _system_rename(HSQUIRRELVM v)
70
const SQChar *oldn,*newn;
71
sq_getstring(v,2,&oldn);
72
sq_getstring(v,3,&newn);
73
if(screname(oldn,newn)==-1)
74
return sq_throwerror(v,_SC("rename() failed"));
78
static void _set_integer_slot(HSQUIRRELVM v,const SQChar *name,SQInteger val)
80
sq_pushstring(v,name,-1);
81
sq_pushinteger(v,val);
85
static SQInteger _system_date(HSQUIRRELVM v)
89
SQInteger format = 'l';
90
if(sq_gettop(v) > 1) {
91
sq_getinteger(v,2,&it);
93
if(sq_gettop(v) > 2) {
94
sq_getinteger(v,3,(SQInteger*)&format);
104
date = localtime(&t);
106
return sq_throwerror(v,_SC("crt api failure"));
108
_set_integer_slot(v, _SC("sec"), date->tm_sec);
109
_set_integer_slot(v, _SC("min"), date->tm_min);
110
_set_integer_slot(v, _SC("hour"), date->tm_hour);
111
_set_integer_slot(v, _SC("day"), date->tm_mday);
112
_set_integer_slot(v, _SC("month"), date->tm_mon);
113
_set_integer_slot(v, _SC("year"), date->tm_year+1900);
114
_set_integer_slot(v, _SC("wday"), date->tm_wday);
115
_set_integer_slot(v, _SC("yday"), date->tm_yday);
121
#define _DECL_FUNC(name,nparams,pmask) {_SC(#name),_system_##name,nparams,pmask}
122
static SQRegFunction systemlib_funcs[]={
123
_DECL_FUNC(getenv,2,_SC(".s")),
124
_DECL_FUNC(system,2,_SC(".s")),
125
_DECL_FUNC(clock,1,NULL),
126
_DECL_FUNC(time,1,NULL),
127
_DECL_FUNC(date,-1,_SC(".nn")),
128
_DECL_FUNC(remove,2,_SC(".s")),
129
_DECL_FUNC(rename,3,_SC(".ss")),
134
SQInteger sqstd_register_systemlib(HSQUIRRELVM v)
137
while(systemlib_funcs[i].name!=0)
139
sq_pushstring(v,systemlib_funcs[i].name,-1);
140
sq_newclosure(v,systemlib_funcs[i].f,0);
141
sq_setparamscheck(v,systemlib_funcs[i].nparamscheck,systemlib_funcs[i].typemask);
142
sq_setnativeclosurename(v,-1,systemlib_funcs[i].name);