aboutsummaryrefslogtreecommitdiff
path: root/src/meta.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/meta.c')
-rw-r--r--src/meta.c48
1 files changed, 26 insertions, 22 deletions
diff --git a/src/meta.c b/src/meta.c
index e60651a..eb332f5 100644
--- a/src/meta.c
+++ b/src/meta.c
@@ -50,11 +50,12 @@ find_expansion_word (const char *kw, size_t len,
}
char *
-meta_expand_string (const char *string, struct metadef *def, void *data)
+meta_expand_string (const char *string, struct metadef *def, void *data,
+ struct access_method *method, void *handle)
{
const char *p, *s;
char *res;
- struct obstack stk;
+ struct obstack stk;
if (!string)
return NULL;
@@ -81,7 +82,17 @@ meta_expand_string (const char *string, struct metadef *def, void *data)
e = strchr (p + 1, '}');
if (e && (s = find_expansion_word (p + 1, e - p - 1, def, data)))
{
- obstack_grow (&stk, s, strlen (s));
+ if (method)
+ {
+ char *newval;
+ size_t len;
+ /* FIXME: Return value? */
+ method_quote_string (method, handle, s, &newval, &len);
+ obstack_grow (&stk, newval, len);
+ free (newval);
+ }
+ else
+ obstack_grow (&stk, s, strlen (s));
p = e + 1;
}
else
@@ -99,7 +110,18 @@ meta_expand_string (const char *string, struct metadef *def, void *data)
s = p - 1;
len = 1;
}
- obstack_grow (&stk, s, len);
+
+ if (method)
+ {
+ char *newval;
+ size_t len;
+ /* FIXME: Return value? */
+ method_quote_string (method, handle, s, &newval, &len);
+ obstack_grow (&stk, newval, len);
+ free (newval);
+ }
+ else
+ obstack_grow (&stk, s, len);
p++;
}
}
@@ -113,24 +135,6 @@ meta_expand_string (const char *string, struct metadef *def, void *data)
}
void
-meta_escape (struct access_method *method, void *handle, struct metadef *def)
-{
- for (; def->kw; def++)
- {
- if (def->value)
- {
- char *newval;
-
- /* FIXME: Return value? */
- method_quote_string (method, handle, def->value, &newval, NULL);
- if (def->storage)
- free (def->storage);
- def->value = def->storage = newval;
- }
- }
-}
-
-void
meta_free (struct metadef *def)
{
for (; def->kw; def++)

Return to:

Send suggestions and report system problems to the System administrator.