X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=strbuf.h;h=223ee2094af87868b510fb015baa52720d3cf923;hb=b5b71cbd5dd2a811bd2ddd0b88da1c337c02bb3c;hp=bfa66569a4bffd063578477e68010a5ccc14f5a3;hpb=5f2b643e76d9a1330c1a02489c0787ca7d818633;p=thirdparty%2Fgit.git diff --git a/strbuf.h b/strbuf.h index bfa66569a4..223ee2094a 100644 --- a/strbuf.h +++ b/strbuf.h @@ -244,6 +244,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). @@ -484,6 +507,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