Lines Matching refs:exp
1078 lws_strexp_init(lws_strexp_t *exp, void *priv, lws_strexp_expand_cb cb,
1081 memset(exp, 0, sizeof(*exp));
1082 exp->cb = cb;
1083 exp->out = out;
1084 exp->olen = olen;
1085 exp->state = LWS_EXPS_LITERAL;
1086 exp->priv = priv;
1090 lws_strexp_reset_out(lws_strexp_t *exp, char *out, size_t olen)
1092 exp->out = out;
1093 exp->olen = olen;
1094 exp->pos = 0;
1098 lws_strexp_expand(lws_strexp_t *exp, const char *in, size_t len,
1106 switch (exp->state) {
1109 exp->state = LWS_EXPS_OPEN_OR_LIT;
1113 if (exp->out)
1114 exp->out[exp->pos] = *in;
1115 exp->pos++;
1116 if (exp->olen - exp->pos < 1) {
1118 *pused_out = exp->pos;
1125 exp->state = LWS_EXPS_NAME_OR_CLOSE;
1126 exp->name_pos = 0;
1127 exp->exp_ofs = 0;
1131 if (exp->olen - exp->pos < 3)
1134 if (exp->out) {
1135 exp->out[exp->pos++] = '$';
1136 exp->out[exp->pos++] = *in;
1138 exp->pos += 2;
1140 exp->state = LWS_EXPS_LITERAL;
1145 exp->name[exp->name_pos] = '\0';
1146 exp->state = LWS_EXPS_DRAIN;
1149 if (exp->name_pos >= sizeof(exp->name) - 1)
1152 exp->name[exp->name_pos++] = *in;
1158 n = exp->cb(exp->priv, exp->name, exp->out, &exp->pos,
1159 exp->olen, &exp->exp_ofs);
1160 *pused_out = exp->pos;
1165 exp->state = LWS_EXPS_LITERAL;
1173 if (exp->out)
1174 exp->out[exp->pos] = '\0';
1176 *pused_out = exp->pos;