| | 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_4391791 <= 4095 | 5225 | | | | strncpy(r + rl, s, l); | | $unknown_4391811 <= 4095 | 5226 | | | | rl += l; | | | 5227 | | | | } | | $unknown_4391813 <= 4095 | 5228 | | | | s = p++; | | $unknown_4391819 <= 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_4391823 <= 4095 | 5265 | | | | r[rl] = 0; | | $unknown_4391825 <= 4095 | 5266 | | | | return r; | | varsub$return <= 4095 | 5267 | | | | } |
|