/** * [Program] env: [Key] val: [Value] * * Sets the value of an environment variable. */ ctr_object* ctr_command_set_env(ctr_object* myself, ctr_argument* argumentList) { ctr_object* envVarNameObj; ctr_object* envValObj; char* envVarNameStr; char* envValStr; envVarNameObj = ctr_internal_cast2string(argumentList->object); envValObj = ctr_internal_cast2string(argumentList->next->object); envVarNameStr = malloc((envVarNameObj->value.svalue->vlen+1)*sizeof(char)); CTR_2CSTR(envVarNameStr, envVarNameObj); CTR_2CSTR(envValStr, envValObj); setenv(envVarNameStr, envValStr, 1); return myself; }
/** * CTRFind * * Tries to locate a variable in the current context or one * of the contexts beneath. */ ctr_object* ctr_find(ctr_object* key) { int i = ctr_context_id; ctr_object* foundObject = NULL; if (CtrStdError) return CtrStdNil; while((i>-1 && foundObject == NULL)) { ctr_object* context = ctr_contexts[i]; foundObject = ctr_internal_object_find_property(context, key, 0); i--; } if (foundObject == NULL) { ctr_internal_plugin_find(key); foundObject = ctr_internal_object_find_property(CtrStdWorld, key, 0); } if (foundObject == NULL) { char* cstr; CTR_2CSTR(cstr, key); printf("Error, key not found: [%s].\n", cstr); exit(1); } return foundObject; }