Sfoglia il codice sorgente

Add os.setenv function

mingodad 6 anni fa
parent
commit
081e8faabc
1 ha cambiato i file con 19 aggiunte e 0 eliminazioni
  1. 19 0
      SquiLu/sqstdlib/sqstdsystem.cpp

+ 19 - 0
SquiLu/sqstdlib/sqstdsystem.cpp

@@ -59,6 +59,24 @@ static SQRESULT _system_getenv(HSQUIRRELVM v)
 	return 0;
 }
 
+#ifdef _WIN32
+#define setenv(k, v, o) !SetEnvironmentVariable(k, v)
+#define unsetenv(k) !SetEnvironmentVariable(k, NULL)
+#endif
+static SQRESULT _system_setenv(HSQUIRRELVM v)
+{
+	const SQChar *key, *value;
+	SQBool rc = SQFalse;
+	if(SQ_SUCCEEDED(sq_getstring(v,2,&key)) ) {
+		if((sq_gettop(v) > 2) && SQ_SUCCEEDED(sq_getstring(v,3,&value))){
+			rc = !setenv(key, value, 1);
+		}
+		else rc = !unsetenv(key);
+	}
+	sq_pushbool(v, rc);
+	return 1;
+}
+
 static SQRESULT _system_system(HSQUIRRELVM v)
 {
 	const SQChar *s;
@@ -617,6 +635,7 @@ static SQRESULT _system_raise(HSQUIRRELVM v)
 #define _DECL_FUNC(name,nparams,pmask) {_SC(#name),_system_##name,nparams,pmask,false}
 static SQRegFunction systemlib_funcs[]={
 	_DECL_FUNC(getenv,2,_SC(".s")),
+	_DECL_FUNC(setenv,-2,_SC(".ss")),
 	_DECL_FUNC(system,2,_SC(".s")),
 	_DECL_FUNC(clock,0,NULL),
 	_DECL_FUNC(remove,2,_SC(".s")),