summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorNalin Dahyabhai <nalin.dahyabhai@pobox.com>2008-06-02 18:55:07 -0400
committerNalin Dahyabhai <nalin.dahyabhai@pobox.com>2008-06-02 18:55:07 -0400
commit8ecbdb617d185a2473b04a8c500dbb6c93b4754b (patch)
tree4e241fdf87461417a8d25c28e2daf236ce2ff3a1 /src
parent9d59fc6ad7f6445ce1e498d3d88e2004e76b43a9 (diff)
- simplify variable expansion just a bit
Diffstat (limited to 'src')
-rw-r--r--src/format.c113
1 files changed, 43 insertions, 70 deletions
diff --git a/src/format.c b/src/format.c
index 5554788..3ff36cc 100644
--- a/src/format.c
+++ b/src/format.c
@@ -671,8 +671,6 @@ format_single(struct plugin_state *state, Slapi_PBlock *pb, Slapi_Entry *e,
if (slapi_vattr_values_get(e, (char *) attr, &value_set,
&disposition, &actual_attr,
0, &buffer_flags) != 0) {
- slapi_log_error(SLAPI_LOG_PLUGIN, state->plugin_desc->spd_id,
- "couldn't read values for \"%s\"\n", attr);
return NULL;
}
count = slapi_valueset_count(value_set);
@@ -987,36 +985,14 @@ format_expand(struct plugin_state *state, Slapi_PBlock *pb, Slapi_Entry *e,
return -ENOBUFS;
}
} else {
- /* It's an expression, so evaluate it. Check if it uses a
- * default/alternate value. */
+ /* It's a simple expression, so evaluate it. Check if it uses
+ * a default/alternate value. */
spn = strcspn(expr, ":");
if (spn == strlen(expr)) {
- /* Simple expression: expect it to be a single-valued
- * attribute. */
- tmp = format_single(state, pb, e, expr, visited_ndns);
- if (tmp != NULL) {
- /* Copy the string to the output buffer if
- * there's space for it. */
- i = strlen(tmp);
- if (i <= outbuf_len) {
- memcpy(outbuf, tmp, i);
- free(tmp);
- /* Return the length of the expanded
- * expression. */
- free(expr);
- return i;
- } else {
- free(tmp);
- /* Return the length of the expanded
- * expression. */
- free(expr);
- return -ENOBUFS;
- }
- } else {
- /* No value found? FAIL. */
- free(expr);
- return -ENOENT;
- }
+ /* Plain old variable, no alternate or default value. */
+ attribute = expr;
+ alternate_value = NULL;
+ default_value = NULL;
} else {
/* Make a copy of the attribute name. */
expr[spn] = '\0';
@@ -1036,49 +1012,46 @@ format_expand(struct plugin_state *state, Slapi_PBlock *pb, Slapi_Entry *e,
default_value = expr + spn + 1;
break;
}
- /* Retrieve the value. */
- tmp = format_single(state, pb, e,
- attribute, visited_ndns);
- if (tmp == NULL) {
- /* The attribute is undefined, or we're
- * treating it as if it is. */
- if (default_value != NULL) {
- /* Supply the default value. */
- i = strlen(default_value);
- if (i <= outbuf_len) {
- memcpy(outbuf, default_value,
- i);
- }
- free(expr);
- return i;
- } else {
- /* No value, and no default: FAIL. */
- free(expr);
- return -ENOENT;
+ }
+ /* Retrieve the value. */
+ tmp = format_single(state, pb, e, attribute, visited_ndns);
+ if (tmp == NULL) {
+ /* The attribute is undefined, or we're treating it as
+ * if it is. */
+ if (default_value != NULL) {
+ /* Supply the default value. */
+ i = strlen(default_value);
+ if (i <= outbuf_len) {
+ memcpy(outbuf, default_value, i);
}
+ free(expr);
+ return i;
} else {
- /* There's no value defined (or it's
- * multi-valued, which is usually trouble). */
- if (alternate_value != NULL) {
- /* Supply the alternate value. */
- i = strlen(alternate_value);
- if (i <= outbuf_len) {
- memcpy(outbuf, alternate_value,
- i);
- }
- free(tmp);
- free(expr);
- return i;
- } else {
- /* Supply the looked-up value. */
- i = strlen(tmp);
- if (i <= outbuf_len) {
- memcpy(outbuf, tmp, i);
- }
- free(tmp);
- free(expr);
- return i;
+ /* No value, and no default: FAIL. */
+ free(expr);
+ return -ENOENT;
+ }
+ } else {
+ /* There's no value defined (or it's
+ * multi-valued, which is usually trouble). */
+ if (alternate_value != NULL) {
+ /* Supply the alternate value. */
+ i = strlen(alternate_value);
+ if (i <= outbuf_len) {
+ memcpy(outbuf, alternate_value, i);
}
+ free(tmp);
+ free(expr);
+ return i;
+ } else {
+ /* Supply the looked-up value. */
+ i = strlen(tmp);
+ if (i <= outbuf_len) {
+ memcpy(outbuf, tmp, i);
+ }
+ free(tmp);
+ free(expr);
+ return i;
}
}
}