summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitri Pal <dpal@redhat.com>2010-07-28 16:24:36 -0400
committerDmitri Pal <dpal@redhat.com>2010-08-10 12:51:32 -0400
commite1005dcb23f724fe4af14b2c4ebe288eb33d06ed (patch)
treed0a0e8def1f3762cd4425995b98da158feaf63f2
parentc3d525af687e5d6023c65443736d9c05ee2f042f (diff)
downloadsssd-e1005dcb23f724fe4af14b2c4ebe288eb33d06ed.tar.gz
sssd-e1005dcb23f724fe4af14b2c4ebe288eb33d06ed.tar.xz
sssd-e1005dcb23f724fe4af14b2c4ebe288eb33d06ed.zip
[INI] Extend the comment interface
Take advantage of the already known string length instead of counting bytes once more.
-rw-r--r--common/ini/ini_comment.c40
-rw-r--r--common/ini/ini_comment.h8
2 files changed, 38 insertions, 10 deletions
diff --git a/common/ini/ini_comment.c b/common/ini/ini_comment.c
index 7cbb0ce..e700e98 100644
--- a/common/ini/ini_comment.c
+++ b/common/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/common/ini/ini_comment.h b/common/ini/ini_comment.h
index db665f8..5365409 100644
--- a/common/ini/ini_comment.h
+++ b/common/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: