| | 5205 | | | | char * | | | 5206 | | | | varsub(s) | | | 5207 | | | | char *s; | | | 5208 | | | | { | | | 5209 | | | | int rm = 8; | | | 5210 | | | | char *r; | | | 5211 | | | | int rl = 0; | | | 5212 | | | | char *p; | | | 5213 | | | | char *vn, *vv; | | | 5214 | | | | char c; | | | 5215 | | | | int l; | | | 5216 | | | | | | | 5217 | | | | r = TALLOC(rm, char, "var");
| | | 5218 | | | | while (*s) { | | | 5219 | | | | for (p = s; *p && *p != '$'; p++) ; | | | 5220 | | | | if (l = p - s) { | | | 5221 | | | | if (rl + l >= rm) { | | | 5222 | | | | rm = rl + l + 1; | | true | 5223 | | | | r = TREALLOC(r, rm, char);
| | | 5224 | | | | } | | $unknown_4390403 <= 4095 | 5225 | | | | strncpy(r + rl, s, l); | | $unknown_4390419 <= 4095 | 5226 | | | | rl += l; | | | 5227 | | | | } | | $unknown_4390421 <= 4095 | 5228 | | | | s = p++; | | $unknown_4390427 <= 4095 | 5229 | | | | if (*s == '$') { | | | 5230 | | | | if (*p == '{') | | | 5231 | | | | p++; | | | 5232 | | | | vn = p; | | | 5233 | | | | while (isalnum(*p) || *p == '_') | | | 5234 | | | | p++; | | | 5235 | | | | c = *p; | | | 5236 | | | | *p = 0; | | | 5237 | | | | | | | 5238 | | | | vv = getenv(vn); | | | 5239 | | | | | | | 5240 | | | | #ifdef WIN32 | | | 5241 | | | | if (!vv) | | | 5242 | | | | vv = (char *) read_pvmregistry(vn); | | | 5243 | | | | #endif | | | 5244 | | | | | | | 5245 | | | | *p = c; | | | 5246 | | | | if (*p == '}') | | | 5247 | | | | p++; | | | 5248 | | | | if (vv) | | | 5249 | | | | l = strlen(vv); | | | 5250 | | | | else { | | | 5251 | | | | vv = s; | | | 5252 | | | | l = p - s; | | | 5253 | | | | } | | | 5254 | | | | if (l) { | | | 5255 | | | | if (rl + l >= rm) { | | | 5256 | | | | rm = rl + l + 1; | | | 5257 | | | | r = TREALLOC(r, rm, char);
| | | 5258 | | | | } | | | 5259 | | | | strncpy(r + rl, vv, l); | | | 5260 | | | | rl += l; | | | 5261 | | | | } | | | 5262 | | | | s = p; | | | 5263 | | | | } | | | 5264 | | | | } | | $unknown_4390431 <= 4095 | 5265 | | | | r[rl] = 0; | | $unknown_4390433 <= 4095 | 5266 | | | | return r; | | varsub$return <= 4095 | 5267 | | | | } |
| s2 <= 4095 | 2000 | | if (chdir(s2) == -1) | | | 2001 | | pvmlogperror(s2); | | | 2002 | | PVM_FREE(s);
| | | 2003 | | PVM_FREE(s2);
| | | 2004 | | break; | | | 2005 | | | | | 2006 | | case DM_SLCONF_SCHED:
| | | 2007 | | if (pvmdebmask & (PDMSCHED|PDMSTARTUP)) {
| | | 2008 | | pvmlogprintf("dm_slconf() sched<t%x>\n", pvmschedtid); | | | 2009 | | } | | | 2010 | | pvmschedtid = pvmxtoi(s); | | | 2011 | | break; | | | 2012 | | | | | 2013 | | case DM_SLCONF_TRACE: {
| | | 2014 | | Pvmtmask tmask; | | | 2015 | | int ttid, tctx, ttag, otid, octx, otag, tbuf, topt; | | | 2016 | | if (pvmdebmask & (PDMTRACE|PDMSTARTUP)) {
| | | 2017 | | pvmlogprintf("dm_slconf() tracer<t%x>\n", | | | 2018 | | pvmtracer.trctid); | | | 2019 | | } | | | 2020 | | if (sscanf(s, "%x %d %d %x %d %d %d %d %s", | | | 2021 | | &ttid, &tctx, &ttag, &otid, &octx, &otag, | | | 2022 | | &tbuf, &topt, tmask) != 9) { | | | 2023 | | pvmlogprintf("dm_slconf() bogus string<%s>\n", s); | | | 2024 | | } | | | 2025 | | else { | | | 2026 | | pvmtracer.trctid = ttid; | | | 2027 | | pvmtracer.trcctx = tctx; | | | 2028 | | pvmtracer.trctag = ttag; | | | 2029 | | pvmtracer.outtid = otid; | | | 2030 | | pvmtracer.outctx = octx; | | | 2031 | | pvmtracer.outtag = otag; | | | 2032 | | pvmtracer.trcbuf = tbuf; | | | 2033 | | pvmtracer.trcopt = topt; | | | 2034 | | BCOPY(tmask,pvmtracer.tmask,TEV_MASK_LENGTH);
| | | 2035 | | } | | | 2036 | | break; | | | 2037 | | } | | | 2038 | | | | | 2039 | | default: | | | 2040 | | pvmlogprintf("dm_slconf() ? type %d val <%s>\n", t, s); | | | 2041 | | PVM_FREE(s);
| | | 2042 | | break; |
|