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; } } }
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); }