archive: use parseopt for local-only options
authorRené Scharfe <rene.scharfe@lsrfire.ath.cx>
Sun, 8 Mar 2009 18:21:53 +0000 (19:21 +0100)
committerJunio C Hamano <gitster@pobox.com>
Sun, 8 Mar 2009 20:37:21 +0000 (13:37 -0700)
commit52e7787609d18af76a8c1befb0a06123fb7ce89e
tree676f1744408510fe58212ae8b6b4ac2b7d3312b4
parent49b6180252000e37ec47ccb4156240ed625949ed
archive: use parseopt for local-only options

Replace the hand-rolled parsers that find and remove --remote and --exec
by a parseopt parser that also handles --output.

All three options only have a meaning if no remote server is used or on
the local side.  They must be rejected by upload-archive and should not
be sent to the server by archive.

We can't use a single parser for both remote and local side because the
remote end possibly understands a different set of options than the
local side.  A local parser would then wrongly accuse options valid on
the other side as being incorrect.

This patch implements a very forgiving parser that understands only the
three options mentioned above.  All others are passed to the normal,
complete parser in archive.c (running either locally in archive, or
remotely in upload-archive).  This normal parser definition contains
dummy entries for the three options, in order for them to appear in the
help screen.

The parseopt parser allows multiple occurrences of --remote and --exec
unlike the previous one; the one specified last wins.  This looseness
is acceptable, I think.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
archive.c
builtin-archive.c