diff options
| author | Nalin Dahyabhai <nalin.dahyabhai@pobox.com> | 2008-06-02 18:55:07 -0400 |
|---|---|---|
| committer | Nalin Dahyabhai <nalin.dahyabhai@pobox.com> | 2008-06-02 18:55:07 -0400 |
| commit | 8ecbdb617d185a2473b04a8c500dbb6c93b4754b (patch) | |
| tree | 4e241fdf87461417a8d25c28e2daf236ce2ff3a1 /src | |
| parent | 9d59fc6ad7f6445ce1e498d3d88e2004e76b43a9 (diff) | |
- simplify variable expansion just a bit
Diffstat (limited to 'src')
| -rw-r--r-- | src/format.c | 113 |
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; } } } |
