diff options
author | Russell Belfer <arrbee@arrbee.com> | 2011-11-30 11:27:15 -0800 |
---|---|---|
committer | Russell Belfer <arrbee@arrbee.com> | 2011-12-07 23:08:15 -0800 |
commit | 97769280ba9938ae27f6e06cbd0d5e8a768a86b9 (patch) | |
tree | 4fe43e99acb55f904f6b586bd7c5158610f9512f /src/refspec.h | |
parent | a22b14d32dd8d5f06f121aa154d45bac3b10a305 (diff) | |
download | libgit2-97769280ba9938ae27f6e06cbd0d5e8a768a86b9.tar.gz |
Use git_buf for path storage instead of stack-based buffers
This converts virtually all of the places that allocate GIT_PATH_MAX
buffers on the stack for manipulating paths to use git_buf objects
instead. The patch is pretty careful not to touch the public API
for libgit2, so there are a few places that still use GIT_PATH_MAX.
This extends and changes some details of the git_buf implementation
to add a couple of extra functions and to make error handling easier.
This includes serious alterations to all the path.c functions, and
several of the fileops.c ones, too. Also, there are a number of new
functions that parallel existing ones except that use a git_buf
instead of a stack-based buffer (such as git_config_find_global_r
that exists alongsize git_config_find_global).
This also modifies the win32 version of p_realpath to allocate whatever
buffer size is needed to accommodate the realpath instead of hardcoding
a GIT_PATH_MAX limit, but that change needs to be tested still.
Diffstat (limited to 'src/refspec.h')
-rw-r--r-- | src/refspec.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/refspec.h b/src/refspec.h index 7c389719b..cd9f894bf 100644 --- a/src/refspec.h +++ b/src/refspec.h @@ -8,6 +8,7 @@ #define INCLUDE_refspec_h__ #include "git2/refspec.h" +#include "buffer.h" struct git_refspec { struct git_refspec *next; @@ -20,4 +21,15 @@ struct git_refspec { int git_refspec_parse(struct git_refspec *refspec, const char *str); +/** + * Transform a reference to its target following the refspec's rules, + * and writes the results into a git_buf. + * + * @param out where to store the target name + * @param spec the refspec + * @param name the name of the reference to transform + * @return GIT_SUCCESS or error if buffer allocation fails + */ +int git_refspec_transform_r(git_buf *out, const git_refspec *spec, const char *name); + #endif |