Exemplo n.º 1
0
static int
needsReScan( int what, CfgDep *dep )
{
	int widx, idx;
	long mt;

	for (widx = 0; cfgMapT[widx] != what; widx++);
	idx = cfgMap[widx];
	if (checkDep( idx )) {
		if (!GetDeps())
			return -1;
		idx = cfgMap[widx];
	}
	mt = mTime( cfgFiles[idx].name->str );
	if (dep->name != cfgFiles[idx].name) {
		if (dep->name)
			delStr( dep->name );
		dep->name = cfgFiles[idx].name;
		dep->name->cnt++;
		dep->time = mt;
		return 1;
	} else if (dep->time != mt) {
		dep->time = mt;
		return 1;
	} else
		return 0;
}
Exemplo n.º 2
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;
        }
    }
}
Exemplo n.º 3
0
static int
GetDeps()
{
	int ncf, i, dep, ret;
	CfgFile *cf;

	OpenGetter();
	GSendInt( GC_Files );
	ncf = GRecvInt();
	if (!(cf = Malloc( ncf * sizeof(*cf) ))) {
		CloseGetter();
		return 0;
	}
	for (i = 0; i < ncf; i++) {
		cf[i].name = newStr( GRecvStr() );
		if ((dep = cf[i].depidx = GRecvInt()) != -1)
			cf[i].deptime = mTime( cf[dep].name->str );
	}
	if (cfgFiles) {
		for (i = 0; i < numCfgFiles; i++)
			delStr( cfgFiles[i].name );
		free( cfgFiles );
	}
	ret = 1;
	cfgFiles = cf;
	numCfgFiles = ncf;
	for (i = 0; i < as(cfgMapT); i++) {
		GSendInt( cfgMapT[i] );
		if ((cfgMap[i] = GRecvInt()) < 0) {
			LogError( "Config reader does not support config cathegory %#x\n",
			          cfgMapT[i] );
			ret = 0;
		}
	}
	GSendInt( -1 );
	return ret;
}