diff options
Diffstat (limited to 'third_party/git/strbuf.h')
-rw-r--r-- | third_party/git/strbuf.h | 47 |
1 files changed, 46 insertions, 1 deletions
diff --git a/third_party/git/strbuf.h b/third_party/git/strbuf.h index f62278a0be59..223ee2094af8 100644 --- a/third_party/git/strbuf.h +++ b/third_party/git/strbuf.h @@ -245,6 +245,18 @@ void strbuf_addchars(struct strbuf *sb, int c, size_t n); void strbuf_insert(struct strbuf *sb, size_t pos, const void *, size_t); /** + * Insert a NUL-terminated string to the given position of the buffer. + * The remaining contents will be shifted, not overwritten. It's an + * inline function to allow the compiler to resolve strlen() calls on + * constants at compile time. + */ +static inline void strbuf_insertstr(struct strbuf *sb, size_t pos, + const char *s) +{ + strbuf_insert(sb, pos, s, strlen(s)); +} + +/** * Insert data to the given position of the buffer giving a printf format * string. The contents will be shifted, not overwritten. */ @@ -366,6 +378,17 @@ size_t strbuf_expand_dict_cb(struct strbuf *sb, */ void strbuf_addbuf_percentquote(struct strbuf *dst, const struct strbuf *src); +#define STRBUF_ENCODE_SLASH 1 + +/** + * Append the contents of a string to a strbuf, percent-encoding any characters + * that are needed to be encoded for a URL. + * + * If STRBUF_ENCODE_SLASH is set in flags, percent-encode slashes. Otherwise, + * slashes are not percent-encoded. + */ +void strbuf_add_percentencode(struct strbuf *dst, const char *src, int flags); + /** * Append the given byte size as a human-readable string (i.e. 12.23 KiB, * 3.50 MiB). @@ -485,6 +508,12 @@ int strbuf_getline(struct strbuf *sb, FILE *file); int strbuf_getwholeline(struct strbuf *sb, FILE *file, int term); /** + * Like `strbuf_getwholeline`, but appends the line instead of + * resetting the buffer first. + */ +int strbuf_appendwholeline(struct strbuf *sb, FILE *file, int term); + +/** * Like `strbuf_getwholeline`, but operates on a file descriptor. * It reads one character at a time, so it is very slow. Do not * use it unless you need the correct position in the file @@ -621,6 +650,17 @@ int launch_editor(const char *path, struct strbuf *buffer, int launch_sequence_editor(const char *path, struct strbuf *buffer, const char *const *env); +/* + * In contrast to `launch_editor()`, this function writes out the contents + * of the specified file first, then clears the `buffer`, then launches + * the editor and reads back in the file contents into the `buffer`. + * Finally, it deletes the temporary file. + * + * If `path` is relative, it refers to a file in the `.git` directory. + */ +int strbuf_edit_interactively(struct strbuf *buffer, const char *path, + const char *const *env); + void strbuf_add_lines(struct strbuf *sb, const char *prefix, const char *buf, @@ -672,8 +712,13 @@ void strbuf_branchname(struct strbuf *sb, const char *name, */ int strbuf_check_branch_ref(struct strbuf *sb, const char *name); +typedef int (*char_predicate)(char ch); + +int is_rfc3986_unreserved(char ch); +int is_rfc3986_reserved_or_unreserved(char ch); + void strbuf_addstr_urlencode(struct strbuf *sb, const char *name, - int reserved); + char_predicate allow_unencoded_fn); __attribute__((format (printf,1,2))) int printf_ln(const char *fmt, ...); |