refactor argv_array into generic code
authorJeff King <peff@peff.net>
Tue, 13 Sep 2011 21:57:57 +0000 (17:57 -0400)
committerJunio C Hamano <gitster@pobox.com>
Wed, 14 Sep 2011 18:56:36 +0000 (11:56 -0700)
commitc1189caeaf726e6c16c8bca7da8bf0b243da478d
tree8d8feeeef2e8584c11875da8dde2d04f334cb56b
parent7878b07c0d86d05fa505f2464557c69addcc2c05
refactor argv_array into generic code

The submodule code recently grew generic code to build a
dynamic argv array. Many other parts of the code can reuse
this, too, so let's make it generically available.

There are two enhancements not found in the original code:

  1. We now handle the NULL-termination invariant properly,
     even when no strings have been pushed (before, you
     could have an empty, NULL argv). This was not a problem
     for the submodule code, which always pushed at least
     one argument, but was not sufficiently safe for
     generic code.

  2. There is a formatted variant of the "push" function.
     This is a convenience function which was not needed by
     the submodule code, but will make it easier to port
     other users to the new code.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/technical/api-argv-array.txt [new file with mode: 0644]
Makefile
argv-array.c [new file with mode: 0644]
argv-array.h [new file with mode: 0644]
submodule.c