On Sun, Jul 20, 2014 at 6:21 PM, René Scharfe <l....@web.de> wrote:
> +int strbuf_add_cwd(struct strbuf *sb)
> +{
> +       size_t oldalloc = sb->alloc;
> +       size_t guessed_len = 32;

For Linux, I think this is enough to succesfully get cwd in the first
pass. Windows' $HOME is usually deep in C:\Users\Blahblah. Maybe
increase this to 128? And we probably want to keep the guessed value,
so if the first strbuf_add_cwd needs a few rounds to get cwd, the next
strbuf_add_cwd() call does not.

> +
> +       for (;; guessed_len *= 2) {
> +               char *cwd;
> +
> +               strbuf_grow(sb, guessed_len);
> +               cwd = getcwd(sb->buf + sb->len, sb->alloc - sb->len);
> +               if (cwd) {
> +                       strbuf_setlen(sb, sb->len + strlen(cwd));
> +                       return 0;
> +               }
> +               if (errno != ERANGE)
> +                       break;
> +       }
> +       if (oldalloc == 0)
> +               strbuf_release(sb);
> +       return -1;
> +}

The loop and the following strbuf_release() are correct. But I wonder
if it's easier to read if you save getcwd in a separate/local strbuf
variable and only concat it to "sb" when you successfully get cwd..
-- 
Duy
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to