Esempio n. 1
0
void RemoveDisplay(struct display *old)
{
    struct display *d, **dp;
    int i;

    for(dp = &displays; (d = *dp); dp = &(*dp)->next)
    {
        if(d == old)
        {
            Debug("Removing display %s\n", d->name);
            *dp = d->next;
            IfFree(d->class2);
            IfFree(d->cfg.data);
            delStr(d->cfg.dep.name);
#ifdef XDMCP
            IfFree(d->remoteHost);
#endif
            if(d->authorizations)
            {
                for(i = 0; i < d->authNum; i++)
                    XauDisposeAuth(d->authorizations[i]);
                free((char *)d->authorizations);
            }
            if(d->authFile)
            {
                (void)unlink(d->authFile);
                free(d->authFile);
            }
            IfFree(d->authNameLens);
#ifdef XDMCP
            XdmcpDisposeARRAY8(&d->peer);
            XdmcpDisposeARRAY8(&d->from);
            XdmcpDisposeARRAY8(&d->clientAddr);
#endif
            free((char *)d);
            break;
        }
    }
}
Esempio n. 2
0
static void freeDisplay(struct display *d)
{
	char **x;
	int i;

	IfFree(d->name);
	IfFree(d->class);
	for (x = d->argv; x && *x; x++)
		IfFree(*x);
	IfFree(d->argv);
	IfFree(d->resources);
	IfFree(d->xrdb);
	IfFree(d->setup);
	IfFree(d->startup);
	IfFree(d->reset);
	IfFree(d->session);
	IfFree(d->userPath);
	IfFree(d->systemPath);
	IfFree(d->systemShell);
	IfFree(d->failsafeClient);
	IfFree(d->chooser);
	if (d->authorizations) {
		for (i = 0; i < d->authNum; i++)
			XauDisposeAuth(d->authorizations[i]);
		free(d->authorizations);
	}
	IfFree(d->clientAuthFile);
	if (d->authFile)
		(void)unlink(d->authFile);
	IfFree(d->authFile);
	IfFree(d->userAuthDir);
	for (x = d->authNames; x && *x; x++)
		IfFree(*x);
	IfFree(d->authNames);
	IfFree(d->authNameLens);
#ifdef XDMCP
	IfFree(d->peer);
	IfFree(d->from);
	XdmcpDisposeARRAY8(&d->clientAddr);
#endif
	free(d);
}