diff options
author | Dmitri Pal <dpal@redhat.com> | 2010-07-28 16:24:36 -0400 |
---|---|---|
committer | Stephen Gallagher <sgallagh@redhat.com> | 2010-09-22 14:57:53 -0400 |
commit | 22e8ad54ccaa756931c88eb205301722d597c99d (patch) | |
tree | 668529dfe917d43cfb7fd2553bcba5fe860b0416 | |
parent | 25e29187c688aa76d2db036a4d4c103a1d500f2d (diff) | |
download | ding-libs2-22e8ad54ccaa756931c88eb205301722d597c99d.tar.gz ding-libs2-22e8ad54ccaa756931c88eb205301722d597c99d.tar.xz ding-libs2-22e8ad54ccaa756931c88eb205301722d597c99d.zip |
Extend the comment interface
Take advantage of the already known string length instead
of counting bytes once more.
-rw-r--r-- | ini/ini_comment.c | 40 | ||||
-rw-r--r-- | ini/ini_comment.h | 8 |
2 files changed, 38 insertions, 10 deletions
diff --git a/ini/ini_comment.c b/ini/ini_comment.c index 7cbb0ce..e700e98 100644 --- a/ini/ini_comment.c +++ b/ini/ini_comment.c @@ -187,7 +187,8 @@ static int ini_comment_is_valid(const char *line) static int ini_comment_modify(struct ini_comment *ic, int mode, uint32_t idx, - const char *line) + const char *line, + uint32_t length) { int error = EOK; char *elem = NULL; @@ -232,7 +233,8 @@ static int ini_comment_modify(struct ini_comment *ic, /* Dup it */ if (input) { - input_len = strlen(input); + if (length == 0) input_len = strlen(input); + else input_len = length; elem = strndup(input, (size_t)(input_len + 1)); } else { @@ -260,7 +262,7 @@ static int ini_comment_modify(struct ini_comment *ic, error = ref_array_append(ic->ra_len, (void *)&input_len); if (error) { - TRACE_ERROR_NUMBER("Failed to appen length", error); + TRACE_ERROR_NUMBER("Failed to append length", error); return error; } break; @@ -277,7 +279,7 @@ static int ini_comment_modify(struct ini_comment *ic, error = ref_array_append(ic->ra_len, (void *)&input_len); if (error) { - TRACE_ERROR_NUMBER("Failed to appen length", error); + TRACE_ERROR_NUMBER("Failed to append length", error); return error; } break; @@ -416,7 +418,25 @@ int ini_comment_build(struct ini_comment *ic, const char *line) TRACE_FLOW_STRING("ini_comment_build", "Entry"); - error = ini_comment_modify(ic, INI_COMMENT_MODE_BUILD, 0, line); + error = ini_comment_modify(ic, INI_COMMENT_MODE_BUILD, 0, line, 0); + + TRACE_FLOW_NUMBER("ini_comment_build - Returning", error); + return error; +} + +/* + * Build up a comment object - use this when reading + * comments from a file. + */ +int ini_comment_build_wl(struct ini_comment *ic, + const char *line, + uint32_t length) +{ + int error = EOK; + + TRACE_FLOW_STRING("ini_comment_build", "Entry"); + + error = ini_comment_modify(ic, INI_COMMENT_MODE_BUILD, 0, line, length); TRACE_FLOW_NUMBER("ini_comment_build - Returning", error); return error; @@ -433,7 +453,7 @@ int ini_comment_insert(struct ini_comment *ic, TRACE_FLOW_STRING("ini_comment_insert", "Entry"); - error = ini_comment_modify(ic, INI_COMMENT_MODE_INSERT, idx, line); + error = ini_comment_modify(ic, INI_COMMENT_MODE_INSERT, idx, line, 0); TRACE_FLOW_NUMBER("ini_comment_insert - Returning", error); return error; @@ -446,7 +466,7 @@ int ini_comment_append(struct ini_comment *ic, const char *line) TRACE_FLOW_STRING("ini_comment_append", "Entry"); - error = ini_comment_modify(ic, INI_COMMENT_MODE_APPEND, 0, line); + error = ini_comment_modify(ic, INI_COMMENT_MODE_APPEND, 0, line, 0); TRACE_FLOW_NUMBER("ini_comment_append - Returning", error); return error; @@ -459,7 +479,7 @@ int ini_comment_remove(struct ini_comment *ic, uint32_t idx) TRACE_FLOW_STRING("ini_comment_remove", "Entry"); - error = ini_comment_modify(ic, INI_COMMENT_MODE_REMOVE, idx, NULL); + error = ini_comment_modify(ic, INI_COMMENT_MODE_REMOVE, idx, NULL, 0); TRACE_FLOW_NUMBER("ini_comment_remove - Returning", error); return error; @@ -472,7 +492,7 @@ int ini_comment_clear(struct ini_comment *ic, uint32_t idx) TRACE_FLOW_STRING("ini_comment_clear", "Entry"); - error = ini_comment_modify(ic, INI_COMMENT_MODE_CLEAR, idx, NULL); + error = ini_comment_modify(ic, INI_COMMENT_MODE_CLEAR, idx, NULL, 0); TRACE_FLOW_NUMBER("ini_comment_clear - Returning", error); return error; @@ -488,7 +508,7 @@ int ini_comment_replace(struct ini_comment *ic, TRACE_FLOW_STRING("ini_comment_replace", "Entry"); - error = ini_comment_modify(ic, INI_COMMENT_MODE_REPLACE, idx, line); + error = ini_comment_modify(ic, INI_COMMENT_MODE_REPLACE, idx, line, 0); TRACE_FLOW_NUMBER("ini_comment_replace - Returning", error); return error; diff --git a/ini/ini_comment.h b/ini/ini_comment.h index db665f8..5365409 100644 --- a/ini/ini_comment.h +++ b/ini/ini_comment.h @@ -49,6 +49,14 @@ int ini_comment_build(struct ini_comment *ic, const char *line); /** + * Build up a comment object - use this when reading + * comments from a file when length is known. + */ +int ini_comment_build_wl(struct ini_comment *ic, + const char *line, + uint32_t length); + +/** * Modify comment by instering a line. * * idx can be: |