Merge branch 'jk/strbuf-detach-always-non-null'
authorJeff King <peff@peff.net>
Thu, 25 Oct 2012 10:43:03 +0000 (06:43 -0400)
committerJeff King <peff@peff.net>
Thu, 25 Oct 2012 10:43:03 +0000 (06:43 -0400)
* jk/strbuf-detach-always-non-null:
  strbuf: always return a non-NULL value from strbuf_detach

1  2 
strbuf.c

diff --combined strbuf.c
+++ b/strbuf.c
@@@ -44,7 -44,9 +44,9 @@@ void strbuf_release(struct strbuf *sb
  
  char *strbuf_detach(struct strbuf *sb, size_t *sz)
  {
-       char *res = sb->alloc ? sb->buf : NULL;
+       char *res;
+       strbuf_grow(sb, 0);
+       res = sb->buf;
        if (sz)
                *sz = sb->len;
        strbuf_init(sb, 0);
@@@ -445,8 -447,8 +447,8 @@@ static int is_rfc3986_unreserved(char c
                ch == '-' || ch == '_' || ch == '.' || ch == '~';
  }
  
 -void strbuf_add_urlencode(struct strbuf *sb, const char *s, size_t len,
 -                        int reserved)
 +static void strbuf_add_urlencode(struct strbuf *sb, const char *s, size_t len,
 +                               int reserved)
  {
        strbuf_grow(sb, len);
        while (len--) {
@@@ -464,27 -466,3 +466,27 @@@ void strbuf_addstr_urlencode(struct str
  {
        strbuf_add_urlencode(sb, s, strlen(s), reserved);
  }
 +
 +int printf_ln(const char *fmt, ...)
 +{
 +      int ret;
 +      va_list ap;
 +      va_start(ap, fmt);
 +      ret = vprintf(fmt, ap);
 +      va_end(ap);
 +      if (ret < 0 || putchar('\n') == EOF)
 +              return -1;
 +      return ret + 1;
 +}
 +
 +int fprintf_ln(FILE *fp, const char *fmt, ...)
 +{
 +      int ret;
 +      va_list ap;
 +      va_start(ap, fmt);
 +      ret = vfprintf(fp, fmt, ap);
 +      va_end(ap);
 +      if (ret < 0 || putc('\n', fp) == EOF)
 +              return -1;
 +      return ret + 1;
 +}