int LoadDisplayResources( struct display *d ) { int i, ret; char **ent; if (Setjmp( cnftalk.errjmp )) return -1; /* may memleak */ if ((ret = startConfig( GC_gDisplay, &d->cfg.dep, FALSE )) <= 0) return ret; GSendStr( d->name ); GSendStr( d->class2 ); LoadResources( &d->cfg ); /* Debug( "display(%s, %s) resources: %[*x\n", d->name, d->class2, d->cfg.numCfgEnt, ((char **)d->cfg.data) + d->cfg.numCfgEnt );*/ ret = 1; for (i = 0; i < as(dpyVal); i++) { if (!(ent = FindCfgEnt( d, dpyVal[i].id ))) ret = -1; else ApplyResource( dpyVal[i].id, ent, (char **)(((char *)d) + dpyVal[i].off) ); } if (ret < 0) LogError( "Internal error: config reader supplied incomplete data\n" ); return ret; }
int LoadDMResources( int force ) { int i, ret; char **ent; if (Setjmp( cnftalk.errjmp )) return -1; /* may memleak, but we probably have to abort anyway */ if ((ret = startConfig( GC_gGlobal, &cfg.dep, force )) <= 0) return ret; LoadResources( &cfg ); /* Debug( "manager resources: %[*x\n", cfg.numCfgEnt, ((char **)cfg.data) + cfg.numCfgEnt );*/ ret = 1; for (i = 0; i < as(globVal); i++) { if (!(ent = FindCfgEnt( 0, globVal[i].id ))) ret = -1; else ApplyResource( globVal[i].id, ent, globVal[i].off ); } if (ret < 0) LogError( "Internal error: config reader supplied incomplete data\n" ); return ret; }
void Menu_Process() { // Handle Menu Display depending on user input switch (menuState) { case HOMEMENU: lcd_4line(); display_1 = home[HOMEITEMBEGIN]; display_2 = home[HOMEITEMFIRST]; display_3 = home[HOMEITEMSECOND]; display_4 = home[HOMEITEMTHIRD]; // get next menuIDX if (NEWHOMEIDX != menuIDX) { unselALL(); menuIDX = NEWHOMEIDX; sel(); } break; // IP Address case IPADDR: lcd_4line(); showIPAddress(); display_1 = "IP:"; display_2 = (char*)ip_address; display_3 = NEXTLINE((char*)ip_address); display_4 = ""; break; // HOME Config case HOMECONFIG: if (!HAVE_SET_UP_HOME) { startConfig(); configHome(); DONE(ONCE_HOME); endConfig(); } else deviceConfigured(); break; // NCSU Config case NCSUCONFIG: if (!HAVE_SET_UP_NCSU) { startConfig(); configNCSU(); DONE(ONCE_NCSU); endConfig(); } else deviceConfigured(); break; default: return; } }
ARRAY8Ptr getLocalAddress(void) { static int haveLocalAddress; if (!haveLocalAddress) { #if defined(IPv6) && defined(AF_INET6) struct addrinfo *ai; if (getaddrinfo(localHostname(), 0, 0, &ai)) { XdmcpAllocARRAY8(&localAddress, 4); localAddress.data[0] = 127; localAddress.data[1] = 0; localAddress.data[2] = 0; localAddress.data[3] = 1; } else { if (ai->ai_family == AF_INET) { XdmcpAllocARRAY8(&localAddress, sizeof(struct in_addr)); memcpy(localAddress.data, &((struct sockaddr_in *)ai->ai_addr)->sin_addr, sizeof(struct in_addr)); } else /* if (ai->ai_family == AF_INET6) */ { XdmcpAllocARRAY8(&localAddress, sizeof(struct in6_addr)); memcpy(localAddress.data, &((struct sockaddr_in6 *)ai->ai_addr)->sin6_addr, sizeof(struct in6_addr)); } freeaddrinfo(ai); #else struct hostent *hostent; if ((hostent = gethostbyname(localHostname()))) { XdmcpAllocARRAY8(&localAddress, hostent->h_length); memmove(localAddress.data, hostent->h_addr, hostent->h_length); #endif haveLocalAddress = True; } } return &localAddress; } void scanAccessDatabase(int force) { struct _displayAddress *da; char *cptr; int nChars, i; debug("scanAccessDatabase\n"); if (Setjmp(cnftalk.errjmp)) return; /* may memleak */ if (startConfig(GC_gXaccess, &accData->dep, force) <= 0) return; free(accData->hostList); accData->nHosts = gRecvInt(); accData->nListens = gRecvInt(); accData->nAliases = gRecvInt(); accData->nAcls = gRecvInt(); nChars = gRecvInt(); if (!(accData->hostList = (HostEntry *) Malloc(accData->nHosts * sizeof(HostEntry) + accData->nListens * sizeof(ListenEntry) + accData->nAliases * sizeof(AliasEntry) + accData->nAcls * sizeof(AclEntry) + nChars))) { closeGetter(); return; } accData->listenList = (ListenEntry *)(accData->hostList + accData->nHosts); accData->aliasList = (AliasEntry *)(accData->listenList + accData->nListens); accData->acList = (AclEntry *)(accData->aliasList + accData->nAliases); cptr = (char *)(accData->acList + accData->nAcls); for (i = 0; i < accData->nHosts; i++) { switch ((accData->hostList[i].type = gRecvInt())) { case HOST_ALIAS: accData->hostList[i].entry.aliasPattern = cptr; cptr += gRecvStrBuf(cptr); break; case HOST_PATTERN: accData->hostList[i].entry.hostPattern = cptr; cptr += gRecvStrBuf(cptr); break; case HOST_ADDRESS: da = &accData->hostList[i].entry.displayAddress; da->hostAddress.data = (unsigned char *)cptr; cptr += (da->hostAddress.length = gRecvArrBuf(cptr)); switch (gRecvInt()) { #ifdef AF_INET case AF_INET: da->connectionType = FamilyInternet; break; #endif #if defined(IPv6) && defined(AF_INET6) case AF_INET6: da->connectionType = FamilyInternet6; break; #endif #ifdef AF_DECnet case AF_DECnet: da->connectionType = FamilyDECnet; break; #endif /*#ifdef AF_UNIX case AF_UNIX: #endif*/ default: da->connectionType = FamilyLocal; break; } break; case HOST_BROADCAST: break; default: logError("Received unknown host type %d from config reader\n", accData->hostList[i].type); return; } } for (i = 0; i < accData->nListens; i++) { accData->listenList[i].iface = gRecvInt(); accData->listenList[i].mcasts = gRecvInt(); accData->listenList[i].nmcasts = gRecvInt(); } for (i = 0; i < accData->nAliases; i++) { accData->aliasList[i].name = cptr; cptr += gRecvStrBuf(cptr); accData->aliasList[i].hosts = gRecvInt(); accData->aliasList[i].nhosts = gRecvInt(); } for (i = 0; i < accData->nAcls; i++) { accData->acList[i].entries = gRecvInt(); accData->acList[i].nentries = gRecvInt(); accData->acList[i].hosts = gRecvInt(); accData->acList[i].nhosts = gRecvInt(); accData->acList[i].flags = gRecvInt(); } } /* Returns True if string is matched by pattern. Does case folding. */ static int patternMatch(const char *string, const char *pattern) { int p, s; if (!string) string = ""; for (;;) { s = *string++; switch (p = *pattern++) { case '*': if (!*pattern) return True; for (string--; *string; string++) if (patternMatch(string, pattern)) return True; return False; case '?': if (s == '\0') return False; break; case '\0': return s == '\0'; case '\\': p = *pattern++; /* fall through */ default: if (tolower(p) != tolower(s)) return False; } } }