builtin/config: work around an unsized array forward declaration
commit6aaded550915eab144bbe42af9b91de703ba39e0
authorBeat Bolli <dev+git@drbeat.li>
Thu, 5 Jul 2018 18:34:45 +0000 (5 20:34 +0200)
committerJunio C Hamano <gitster@pobox.com>
Fri, 6 Jul 2018 19:31:53 +0000 (6 12:31 -0700)
tree0e6a4933afd45296e88355381d6bf18c17a8e897
parent63e2a0f8e9cc3d66137a72e424a8b59f1c4dbd79
builtin/config: work around an unsized array forward declaration

As reported here[0], Microsoft Visual Studio 2017.2 and "gcc -pedantic"
don't understand the forward declaration of an unsized static array.
They insist on an array size:

    d:\git\src\builtin\config.c(70,46): error C2133: 'builtin_config_options': unknown size

The thread [1] explains that this is due to the single-pass nature of
old compilers.

To work around this error, introduce the forward-declared function
usage_builtin_config() instead that uses the array
builtin_config_options only after it has been defined.

Also use this function in all other places where usage_with_options() is
called with the same arguments.

[0]: https://github.com/git-for-windows/git/issues/1735
[1]: https://groups.google.com/forum/#!topic/comp.lang.c.moderated/bmiF2xMz51U

Fixes https://github.com/git-for-windows/git/issues/1735

Reported-By: Karen Huang (via GitHub)
Signed-off-by: Beat Bolli <dev+git@drbeat.li>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/config.c