aboutsummaryrefslogtreecommitdiff
path: root/lib/libarchive/archive_string.c
diff options
context:
space:
mode:
authorTim Kientzle <kientzle@FreeBSD.org>2004-12-22 06:12:40 +0000
committerTim Kientzle <kientzle@FreeBSD.org>2004-12-22 06:12:40 +0000
commit74199b07099e4deb80d1bf4295c002c43168f9fc (patch)
tree3352f7af4c1f4823ef2f4f281aeced2eb8e49585 /lib/libarchive/archive_string.c
parent225ac9a3ddaae477b6528cdbb25bbe4936e91a5b (diff)
Add __archive_strappend_int to format a decimal
number into a variable-length archive_string.
Notes
Notes: svn path=/head/; revision=139162
Diffstat (limited to 'lib/libarchive/archive_string.c')
-rw-r--r--lib/libarchive/archive_string.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/lib/libarchive/archive_string.c b/lib/libarchive/archive_string.c
index 0e92836233c6..b18f31dbb66c 100644
--- a/lib/libarchive/archive_string.c
+++ b/lib/libarchive/archive_string.c
@@ -96,3 +96,18 @@ __archive_strappend_char(struct archive_string *as, char c)
{
return (__archive_string_append(as, &c, 1));
}
+
+struct archive_string *
+__archive_strappend_int(struct archive_string *as, int d, int base)
+{
+ static const char *digits = "0123457890abcdef";
+
+ if (d < 0) {
+ __archive_strappend_char(as, '-');
+ d = -d;
+ }
+ if (d >= base)
+ __archive_strappend_int(as, d/base, base);
+ __archive_strappend_char(as, digits[d % base]);
+ return (as);
+}