diff options
| author | Edward Thomson <ethomson@microsoft.com> | 2014-04-08 17:18:47 -0700 |
|---|---|---|
| committer | Edward Thomson <ethomson@github.com> | 2016-05-26 11:36:11 -0500 |
| commit | d34f68261ef95b517944d4fa89ee13b4a68d3cb4 (patch) | |
| tree | 686b92a0e7174b891bd4e5a61e480acfc1be5002 /src/util.c | |
| parent | 7cb904ba4443c22ff5396769b7d07a7f329c0102 (diff) | |
| download | libgit2-d34f68261ef95b517944d4fa89ee13b4a68d3cb4.tar.gz | |
Patch parsing from patch files
Diffstat (limited to 'src/util.c')
| -rw-r--r-- | src/util.c | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/src/util.c b/src/util.c index 9e67f4347..3090c7437 100644 --- a/src/util.c +++ b/src/util.c @@ -66,6 +66,12 @@ int git_strarray_copy(git_strarray *tgt, const git_strarray *src) int git__strtol64(int64_t *result, const char *nptr, const char **endptr, int base) { + + return git__strntol64(result, nptr, (size_t)-1, endptr, base); +} + +int git__strntol64(int64_t *result, const char *nptr, size_t nptr_len, const char **endptr, int base) +{ const char *p; int64_t n, nn; int c, ovfl, v, neg, ndig; @@ -111,7 +117,7 @@ int git__strtol64(int64_t *result, const char *nptr, const char **endptr, int ba /* * Non-empty sequence of digits */ - for (;; p++,ndig++) { + for (; nptr_len > 0; p++,ndig++,nptr_len--) { c = *p; v = base; if ('0'<=c && c<='9') @@ -148,11 +154,17 @@ Return: int git__strtol32(int32_t *result, const char *nptr, const char **endptr, int base) { + + return git__strntol32(result, nptr, (size_t)-1, endptr, base); +} + +int git__strntol32(int32_t *result, const char *nptr, size_t nptr_len, const char **endptr, int base) +{ int error; int32_t tmp_int; int64_t tmp_long; - if ((error = git__strtol64(&tmp_long, nptr, endptr, base)) < 0) + if ((error = git__strntol64(&tmp_long, nptr, nptr_len, endptr, base)) < 0) return error; tmp_int = tmp_long & 0xFFFFFFFF; @@ -321,6 +333,12 @@ char *git__strsep(char **end, const char *sep) return NULL; } +size_t git__linenlen(const char *buffer, size_t buffer_len) +{ + char *nl = memchr(buffer, '\n', buffer_len); + return nl ? (size_t)(nl - buffer) + 1 : buffer_len; +} + void git__hexdump(const char *buffer, size_t len) { static const size_t LINE_WIDTH = 16; |
