Re: [PATCH 07/13] revert: Introduce struct to keep command-line options
- From
Jonathan Nieder <jrnieder@gmail.com>
- Date
- Jun 21, 2011, 16:58 UTC
- Message-ID
- <20110621165854.GL15461@elie>
- In-Reply-To
- <1308661489-20080-8-git-send-email-artagnon@gmail.com>
Ramkumar Ramachandra wrote:
Show 7 quoted lines
> The current code uses a set of file-scope static variables to tell the > cherry-pick/ revert machinery how to replay the changes, and > initializes them by parsing the command-line arguments. In later > steps in this series, we would like to introduce an API function that > calls into this machinery directly and have a way to tell it what to > do. Hence, introduce a structure to group these variables, so that > the API can take them as a single replay_options parameter.
The struct leaves out the variable "me". A person might wonder why the above rationale applies to the other variables but not that one. :)
> Unfortunately, parsing strategy-option violates a C89 rule: > Initializers cannot refer to variables whose address is not known at > compile time.
Reading this, one is led to wonder:
- is this a regression? - is it a necessary consequence of the positive change? - will it matter --- i.e., does the rest of git follow that rule to be able to build on old-fashioned compilers, and is there any intention to? - how can I get my compiler to tell me about it? - is it fundamental or not? i.e., is this a "we introduced this minor regression and expect it will be fixed later" or "this points to a flaw in the design and we hope someone comes up with a better design that doesn't have that problem"?
By the way, as a side note, here are a couple of patches about the same subject that I use to test with "-std=c89 -pedantic" privately.
http://repo.or.cz/w/git/jrn.git/commit/faa4b89731e5411fbdf6812f11748a20e664361d http://repo.or.cz/w/git/jrn.git/commit/92a0c179cb7690bdf6f8fbbfa2253b883d02bd17