|
|
c7935c3 |
From 11b85805955557ae87494fff57ead04be6ab90b6 Mon Sep 17 00:00:00 2001
|
|
|
c7935c3 |
From: David Lutterkort <lutter@redhat.com>
|
|
|
c7935c3 |
Date: Tue, 29 Jun 2010 15:43:07 -0700
|
|
|
c7935c3 |
Subject: [PATCH 6/9] Add xstrtoint64 to internal.[ch]
|
|
|
c7935c3 |
|
|
|
c7935c3 |
The implementation is directly from libvirt
|
|
|
c7935c3 |
|
|
|
c7935c3 |
* src/internal.h (xstrtoint64): add prototype
|
|
|
c7935c3 |
* src/internal.c (xstrtoint64): add impl
|
|
|
c7935c3 |
---
|
|
|
c7935c3 |
src/internal.c | 13 +++++++++++++
|
|
|
c7935c3 |
src/internal.h | 3 +++
|
|
|
c7935c3 |
2 files changed, 16 insertions(+), 0 deletions(-)
|
|
|
c7935c3 |
|
|
|
c7935c3 |
diff --git a/src/internal.c b/src/internal.c
|
|
|
c7935c3 |
index befd3af..8419ca2 100644
|
|
|
c7935c3 |
--- a/src/internal.c
|
|
|
c7935c3 |
+++ b/src/internal.c
|
|
|
c7935c3 |
@@ -392,6 +392,19 @@ int xasprintf(char **strp, const char *format, ...) {
|
|
|
c7935c3 |
return result;
|
|
|
c7935c3 |
}
|
|
|
c7935c3 |
|
|
|
c7935c3 |
+/* From libvirt's src/xen/block_stats.c */
|
|
|
c7935c3 |
+int xstrtoint64(char const *s, int base, int64_t *result) {
|
|
|
c7935c3 |
+ long long int lli;
|
|
|
c7935c3 |
+ char *p;
|
|
|
c7935c3 |
+
|
|
|
c7935c3 |
+ errno = 0;
|
|
|
c7935c3 |
+ lli = strtoll(s, &p, base);
|
|
|
c7935c3 |
+ if (errno || !(*p == 0 || *p == '\n') || p == s || (int64_t) lli != lli)
|
|
|
c7935c3 |
+ return -1;
|
|
|
c7935c3 |
+ *result = lli;
|
|
|
c7935c3 |
+ return 0;
|
|
|
c7935c3 |
+}
|
|
|
c7935c3 |
+
|
|
|
c7935c3 |
void calc_line_ofs(const char *text, size_t pos, size_t *line, size_t *ofs) {
|
|
|
c7935c3 |
*line = 1;
|
|
|
c7935c3 |
*ofs = 0;
|
|
|
c7935c3 |
diff --git a/src/internal.h b/src/internal.h
|
|
|
c7935c3 |
index b2a402f..51aa025 100644
|
|
|
c7935c3 |
--- a/src/internal.h
|
|
|
c7935c3 |
+++ b/src/internal.h
|
|
|
c7935c3 |
@@ -272,6 +272,9 @@ const char *xstrerror(int errnum, char *buf, size_t len);
|
|
|
c7935c3 |
/* Like asprintf, but set *STRP to NULL on error */
|
|
|
c7935c3 |
int xasprintf(char **strp, const char *format, ...);
|
|
|
c7935c3 |
|
|
|
c7935c3 |
+/* Convert S to RESULT with error checking */
|
|
|
c7935c3 |
+int xstrtoint64(char const *s, int base, int64_t *result);
|
|
|
c7935c3 |
+
|
|
|
c7935c3 |
/* Calculate line and column number of character POS in TEXT */
|
|
|
c7935c3 |
void calc_line_ofs(const char *text, size_t pos, size_t *line, size_t *ofs);
|
|
|
c7935c3 |
|
|
|
c7935c3 |
--
|
|
|
c7935c3 |
1.6.6.1
|
|
|
c7935c3 |
|