Changeset View
Changeset View
Standalone View
Standalone View
sbin/devd/devd.cc
Show First 20 Lines • Show All 660 Lines • ▼ Show 20 Lines | for (; cs < ce; cs++) { | ||||
buffer += c; | buffer += c; | ||||
} | } | ||||
buffer += '\''; | buffer += '\''; | ||||
return buffer; | return buffer; | ||||
} | } | ||||
void | void | ||||
config::expand_one(const char *&src, string &dst) | config::expand_one(const char *&src, string &dst, bool is_shell) | ||||
{ | { | ||||
int count; | int count; | ||||
string buffer; | string buffer; | ||||
src++; | src++; | ||||
// $$ -> $ | // $$ -> $ | ||||
if (*src == '$') { | if (*src == '$') { | ||||
dst += *src++; | dst += *src++; | ||||
Show All 22 Lines | if (!isalpha(*src) && *src != '_' && *src != '-' && *src != '*') { | ||||
dst += *src++; | dst += *src++; | ||||
return; | return; | ||||
} | } | ||||
// $var -> replace with value | // $var -> replace with value | ||||
do { | do { | ||||
buffer += *src++; | buffer += *src++; | ||||
} while (is_id_char(*src)); | } while (is_id_char(*src)); | ||||
dst.append(shell_quote(get_variable(buffer))); | dst.append(is_shell ? shell_quote(get_variable(buffer)) : get_variable(buffer)); | ||||
} | } | ||||
const string | const string | ||||
config::expand_string(const char *src, const char *prepend, const char *append) | config::expand_string(const char *src, const char *prepend, const char *append) | ||||
{ | { | ||||
const char *var_at; | const char *var_at; | ||||
string dst; | string dst; | ||||
Show All 9 Lines | config::expand_string(const char *src, const char *prepend, const char *append) | ||||
for (;;) { | for (;;) { | ||||
var_at = strchr(src, '$'); | var_at = strchr(src, '$'); | ||||
if (var_at == NULL) { | if (var_at == NULL) { | ||||
dst.append(src); | dst.append(src); | ||||
break; | break; | ||||
} | } | ||||
dst.append(src, var_at - src); | dst.append(src, var_at - src); | ||||
src = var_at; | src = var_at; | ||||
expand_one(src, dst); | expand_one(src, dst, prepend == NULL); | ||||
} | } | ||||
if (append != NULL) | if (append != NULL) | ||||
dst.append(append); | dst.append(append); | ||||
return (dst); | return (dst); | ||||
} | } | ||||
▲ Show 20 Lines • Show All 590 Lines • Show Last 20 Lines |