diff options
author | Tim Kientzle <kientzle@FreeBSD.org> | 2004-12-22 06:12:40 +0000 |
---|---|---|
committer | Tim Kientzle <kientzle@FreeBSD.org> | 2004-12-22 06:12:40 +0000 |
commit | 74199b07099e4deb80d1bf4295c002c43168f9fc (patch) | |
tree | 3352f7af4c1f4823ef2f4f281aeced2eb8e49585 /lib/libarchive/archive_string.c | |
parent | 225ac9a3ddaae477b6528cdbb25bbe4936e91a5b (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.c | 15 |
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); +} |