aboutsummaryrefslogtreecommitdiff
path: root/contrib/binutils/libiberty/dyn-string.c
diff options
context:
space:
mode:
authorDavid E. O'Brien <obrien@FreeBSD.org>2001-05-28 05:21:37 +0000
committerDavid E. O'Brien <obrien@FreeBSD.org>2001-05-28 05:21:37 +0000
commitc9edceadd8a0c5acc1f58da35396d952bdaaf786 (patch)
treeae2a6f4f4987889b7bd2af7bdf0b86fa580df011 /contrib/binutils/libiberty/dyn-string.c
parentbf9a5db426c4b39201fc3149bbed3c8f14edbe86 (diff)
Notes
Diffstat (limited to 'contrib/binutils/libiberty/dyn-string.c')
-rw-r--r--contrib/binutils/libiberty/dyn-string.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/contrib/binutils/libiberty/dyn-string.c b/contrib/binutils/libiberty/dyn-string.c
index 69897f84c5e61..34f88ade96d31 100644
--- a/contrib/binutils/libiberty/dyn-string.c
+++ b/contrib/binutils/libiberty/dyn-string.c
@@ -305,6 +305,30 @@ dyn_string_insert_cstr (dest, pos, src)
return 1;
}
+/* Inserts character C into DEST starting at position POS. DEST is
+ expanded as necessary. Returns 1 on success. On failure,
+ RETURN_ON_ALLOCATION_FAILURE, deletes DEST and returns 0. */
+
+int
+dyn_string_insert_char (dest, pos, c)
+ dyn_string_t dest;
+ int pos;
+ int c;
+{
+ int i;
+
+ if (dyn_string_resize (dest, dest->length + 1) == NULL)
+ return 0;
+ /* Make room for the insertion. Be sure to copy the NUL. */
+ for (i = dest->length; i >= pos; --i)
+ dest->s[i + 1] = dest->s[i];
+ /* Add the new character. */
+ dest->s[pos] = c;
+ /* Compute the new length. */
+ ++dest->length;
+ return 1;
+}
+
/* Append S to DS, resizing DS if necessary. Returns 1 on success.
On failure, if RETURN_ON_ALLOCATION_FAILURE, deletes DEST and
returns 0. */