Lines Matching defs:vp

1276 VarGetPattern(VarParser *vp, int delim, int *flags, VarPattern *patt)
1287 while (*vp->ptr != '\0') {
1288 if (*vp->ptr == delim) {
1291 } else if ((vp->ptr[0] == '\\') &&
1292 ((vp->ptr[1] == delim) ||
1293 (vp->ptr[1] == '\\') ||
1294 (vp->ptr[1] == '$') ||
1295 (vp->ptr[1] == '&' && patt != NULL))) {
1296 vp->ptr++; /* consume backslash */
1297 Buf_AddByte(buf, (Byte)vp->ptr[0]);
1298 vp->ptr++;
1300 } else if (vp->ptr[0] == '$') {
1301 if (vp->ptr[1] == delim) {
1303 Buf_AddByte(buf, (Byte)vp->ptr[0]);
1304 vp->ptr++;
1311 vp->ptr++;
1315 vp->ptr,
1316 vp->ptr,
1317 vp->ctxt,
1318 vp->err,
1319 vp->execute
1334 vp->ptr = subvp.ptr;
1336 } else if (vp->ptr[0] == '&' && patt != NULL) {
1338 vp->ptr++;
1340 Buf_AddByte(buf, (Byte)vp->ptr[0]);
1341 vp->ptr++;
1353 VarExpand(Var *v, VarParser *vp)
1381 buf = Var_Subst(value, vp->ctxt, vp->err);
1394 modifier_M(VarParser *vp, const char value[], char endc)
1401 modifier = vp->ptr[0];
1402 vp->ptr++; /* consume 'M' or 'N' */
1409 patt = estrdup(vp->ptr);
1411 while (vp->ptr[0] != '\0') {
1412 if (vp->ptr[0] == endc || vp->ptr[0] == ':') {
1415 if (vp->ptr[0] == '\\' &&
1416 (vp->ptr[1] == endc || vp->ptr[1] == ':')) {
1417 vp->ptr++; /* consume backslash */
1419 *ptr = vp->ptr[0];
1421 vp->ptr++;
1441 modifier_S(VarParser *vp, const char value[], Var *v)
1449 vp->ptr++; /* consume 'S' */
1451 delim = *vp->ptr; /* used to find end of pattern */
1452 vp->ptr++; /* consume 1st delim */
1458 if (*vp->ptr == '^') {
1460 vp->ptr++;
1463 patt.lhs = VarGetPattern(vp, delim, &patt.flags, NULL);
1472 vp->ptr++; /* consume 2nd delim */
1474 patt.rhs = VarGetPattern(vp, delim, NULL, &patt);
1483 vp->ptr++; /* consume last delim */
1489 if (vp->ptr[0] == 'g') {
1491 vp->ptr++;
1516 modifier_C(VarParser *vp, char value[], Var *v)
1525 vp->ptr++; /* consume 'C' */
1527 delim = *vp->ptr; /* delimiter between sections */
1529 vp->ptr++; /* consume 1st delim */
1531 patt.lhs = VarGetPattern(vp, delim, NULL, NULL);
1537 vp->ptr++; /* consume 2st delim */
1539 patt.rhs = VarGetPattern(vp, delim, NULL, NULL);
1545 vp->ptr++; /* consume last delim */
1547 switch (*vp->ptr) {
1550 vp->ptr++; /* consume 'g' */
1554 vp->ptr++; /* consume '1' */
1586 sysVvarsub(VarParser *vp, char startc, Var *v, const char value[])
1609 cp = vp->ptr;
1627 patt.lhs = VarGetPattern(vp, '=', &patt.flags, NULL);
1632 vp->ptr++; /* consume '=' */
1634 patt.rhs = VarGetPattern(vp, endc, NULL, &patt);
1651 Error("Unknown modifier '%c'\n", *vp->ptr);
1652 vp->ptr++;
1653 while (*vp->ptr != '\0') {
1654 if (*vp->ptr == endc && *vp->ptr == ':') {
1657 vp->ptr++;
1719 ParseModifier(VarParser *vp, char startc, Var *v, Boolean *freeResult)
1724 value = VarExpand(v, vp);
1729 vp->ptr++; /* consume first colon */
1731 while (*vp->ptr != '\0') {
1734 if (*vp->ptr == endc) {
1738 DEBUGF(VAR, ("Applying :%c to \"%s\"\n", *vp->ptr, value));
1739 switch (*vp->ptr) {
1742 newStr = modifier_M(vp, value, endc);
1745 newStr = modifier_S(vp, value, v);
1748 newStr = modifier_C(vp, value, v);
1752 switch (vp->ptr[1]) {
1754 vp->ptr++;
1758 vp->ptr++;
1764 if (vp->ptr[1] != endc && vp->ptr[1] != ':') {
1766 if ((vp->ptr[0] == 's') &&
1767 (vp->ptr[1] == 'h') &&
1768 (vp->ptr[2] == endc || vp->ptr[2] == ':')) {
1771 if (vp->execute) {
1780 vp->ptr += 2;
1784 newStr = sysVvarsub(vp, startc, v, value);
1789 switch (vp->ptr[0]) {
1801 vp->ptr++;
1806 vp->ptr++;
1810 vp->ptr++;
1814 vp->ptr++;
1827 vp->ptr++;
1832 vp->ptr++;
1836 vp->ptr++;
1840 vp->ptr++;
1844 vp->ptr++;
1847 newStr = sysVvarsub(vp, startc, v, value);
1861 if (vp->ptr[0] == ':') {
1862 vp->ptr++; /* consume colon */
1870 ParseRestModifier(VarParser *vp, char startc, Buffer *buf, Boolean *freeResult)
1879 v = VarFindAny(vname, vp->ctxt);
1881 value = ParseModifier(vp, startc, v, freeResult);
1885 if ((vp->ctxt == VAR_CMD) || (vp->ctxt == VAR_GLOBAL)) {
1893 value = ParseModifier(vp, startc, v, freeResult);
1899 consumed = vp->ptr - vp->input + 1;
1913 strncpy(value, vp->input, consumed);
1928 strncpy(value, vp->input, consumed);
1937 return (vp->err ? var_Error : varNoError);
1951 v = VarFindOnly(name, vp->ctxt);
1953 value = ParseModifier(vp, startc, v, freeResult);
1964 value = ParseModifier(vp, startc, v, freeResult);
1971 return (vp->err ? var_Error : varNoError);
1976 ParseRestEnd(VarParser *vp, Buffer *buf, Boolean *freeResult)
1985 v = VarFindAny(vname, vp->ctxt);
1987 value = VarExpand(v, vp);
1992 if ((vp->ctxt == VAR_CMD) || (vp->ctxt == VAR_GLOBAL)) {
1993 size_t consumed = vp->ptr - vp->input + 1;
2008 strncpy(value, vp->input, consumed);
2023 strncpy(value, vp->input, consumed);
2043 v = VarFindOnly(name, vp->ctxt);
2067 return (vp->err ? var_Error : varNoError);
2074 VarParseLong(VarParser *vp, Boolean *freeResult)
2083 startc = vp->ptr[0];
2084 vp->ptr++; /* consume opening paren or brace */
2092 while (*vp->ptr != '\0') {
2093 if (*vp->ptr == endc) {
2094 value = ParseRestEnd(vp, buf, freeResult);
2095 vp->ptr++; /* consume closing paren or brace */
2099 } else if (*vp->ptr == ':') {
2100 value = ParseRestModifier(vp, startc, buf, freeResult);
2101 vp->ptr++; /* consume closing paren or brace */
2105 } else if (*vp->ptr == '$') {
2107 vp->ptr,
2108 vp->ptr,
2109 vp->ctxt,
2110 vp->err,
2111 vp->execute
2123 vp->ptr = subvp.ptr;
2125 Buf_AddByte(buf, (Byte)*vp->ptr);
2126 vp->ptr++;
2140 VarParseShort(VarParser *vp, Boolean *freeResult)
2146 vname[0] = vp->ptr[0];
2149 vp->ptr++; /* consume single letter */
2151 v = VarFindAny(vname, vp->ctxt);
2153 value = VarExpand(v, vp);
2166 if ((vp->ctxt == VAR_CMD) || (vp->ctxt == VAR_GLOBAL)) {
2184 return (vp->err ? var_Error : varNoError);
2190 return (vp->err ? var_Error : varNoError);
2194 VarParse(VarParser *vp, Boolean *freeResult)
2197 vp->ptr++; /* consume '$' or last letter of conditional */
2199 if (vp->ptr[0] == '\0') {
2202 return (vp->err ? var_Error : varNoError);
2204 } else if (vp->ptr[0] == OPEN_PAREN || vp->ptr[0] == OPEN_BRACE) {
2206 return (VarParseLong(vp, freeResult));
2210 return (VarParseShort(vp, freeResult));
2232 VarParser vp = {
2241 value = VarParse(&vp, freeResult);
2242 *consumed += vp.ptr - vp.input;
2259 VarParser vp = {
2269 value = VarParse(&vp, &freeResult);
2273 return (vp.ptr - vp.input);