Explorar o código

Removed str*() functions, added missing free(), reformating.

Ingwie Phoenix %!s(int64=6) %!d(string=hai) anos
pai
achega
04a88a78aa
Modificáronse 1 ficheiros con 14 adicións e 28 borrados
  1. 14 28
      src/optionals/gravity_env.c

+ 14 - 28
src/optionals/gravity_env.c

@@ -26,13 +26,9 @@
  * 
  * @param 
  */
-bool gravity_env_get(
-    gravity_vm *vm, 
-    gravity_value_t *args, uint16_t nargs, uint32_t rindex
-) {
+bool gravity_env_get(gravity_vm *vm, gravity_value_t *args, uint16_t nargs, uint32_t rindex) {
     if(!VALUE_ISA_STRING(args[1])) {
-        gravity_vm_seterror_string(vm, "Environment variable key must be a string.");
-        return false;
+        RETURN_ERROR("Environment variable key must be a string.");
     }
 
     char* key = VALUE_AS_CSTRING(args[1]);
@@ -41,15 +37,13 @@ bool gravity_env_get(
 
     GRAVITY_DEBUG_PRINT("[ENV::GET args : %i] %s => %s\n", nargs, key, value);
 
-    if (value == NULL)
-    {
+    if (value == NULL) {
         rt = VALUE_FROM_UNDEFINED;
     } else {
         rt = VALUE_FROM_STRING(vm, value, strlen(value));
     }
 
-    gravity_vm_setslot(vm, rt, rindex);
-    return true;
+    RETURN_VALUE(rt, rindex);
 }
 
 /**
@@ -60,39 +54,32 @@ bool gravity_env_get(
  * @param  rindex: Slot-index for the return value to be stored in.
  * @retval  Weather this function was successful or not.
  */
-bool gravity_env_set(
-    gravity_vm *vm,
-    gravity_value_t *args, uint16_t nargs, uint32_t rindex
-) {
+bool gravity_env_set(gravity_vm *vm, gravity_value_t *args, uint16_t nargs, uint32_t rindex) {
     if(!VALUE_ISA_STRING(args[1]) || !VALUE_ISA_STRING(args[2])) {
-        gravity_vm_seterror_string(vm, "Environment variable key and value must both be strings.");
-        return false;
+        RETURN_ERROR("Environment variable key and value must both be strings.");
     }
+
     gravity_string_t *key_var, *value_var;
     key_var = VALUE_AS_STRING(args[1]);
     value_var = VALUE_AS_STRING(args[2]);
 
     uint32_t len = key_var->alloc + value_var->alloc + 1;
     char *buf = (char*)malloc(len);
-    strlcpy(buf, key_var->s, key_var->alloc);
-    strcat(buf, "=");
-    strlcat(buf, value_var->s, value_var->alloc);
+    snprintf(buf, len, "%s=%s", key_var->s, value_var->s);
+    free(buf);
 
     GRAVITY_DEBUG_PRINT(
         "[ENV::SET args : %i] (%.*s) \"%.*s\" => \"%.*s\"\n",
         nargs, (int)len, buf,
         key_var->len, key_var->s,
-        value_var->len, value_var->s);
+        value_var->len, value_var->s
+    );
 
     int rt = putenv(buf);
-    gravity_vm_setslot(vm, VALUE_FROM_INT(rt), rindex);
-    return true;
+    RETURN_VALUE(VALUE_FROM_INT(rt), rindex);
 }
 
-bool gravity_env_keys(
-    gravity_vm *vm,
-    gravity_value_t *args, uint16_t nparams, uint32_t rindex
-) {
+bool gravity_env_keys(gravity_vm *vm, gravity_value_t *args, uint16_t nparams, uint32_t rindex) {
     extern char **environ;
     char *evar = *environ;
     gravity_list_t *keys = gravity_list_new(vm, 1);
@@ -110,8 +97,7 @@ bool gravity_env_keys(
         evar = *(environ + i);
     }
 
-    gravity_vm_setslot(vm, VALUE_FROM_OBJECT(keys), rindex);
-    return true;
+    RETURN_VALUE(VALUE_FROM_OBJECT(keys), rindex);
 }
 
 void gravity_env_register(gravity_vm *vm) {