void freeValue(Value *v) { #ifdef DEBUG_GC printf("freeing %s @ %p\n", valueToString(v), v); #endif switch (v->type) { case CLOSURE_VALUE_TYPE: freeClosure((Closure *)v->data); freeClosureValueC++; break; case ENV_VALUE_TYPE: freeEnv((Env *)v->data); freeEnvValueC++; break; case LIST_VALUE_TYPE: freeList((List *)v->data); freeListValueC++; break; case STRING_VALUE_TYPE: tlFree((char *)v->data); freeStringValueC++; break; case INT_VALUE_TYPE: { freeIntValueC++; break; } case BUILTIN_FUN_VALUE_TYPE: freeBuiltinFunC++; break; case NONE_VALUE_TYPE: return; // none is never freed default: error("unkonwn value type passed to freeValue: %d\n", v->type); } v->type = NONE_VALUE_TYPE; }
void SetupDisplay (struct display *d) { char **env = NULL; if (d->setup && d->setup[0]) { env = systemEnv (d, (char *) 0, (char *) 0); (void) source (env, d->setup); freeEnv (env); } }
void LoadXloginResources (struct display *d) { char **args; char **env = 0; if (d->resources[0] && access (d->resources, 4) == 0) { env = systemEnv (d, (char *) 0, (char *) 0); args = parseArgs ((char **) 0, d->xrdb); args = parseArgs (args, d->resources); Debug ("Loading resource file: %s\n", d->resources); (void) runAndWait (args, env); freeArgs (args); freeEnv (env); } }