On Sat, Dec 08, 2007 at 12:05:49AM -0800, Junio C Hamano wrote: > >> index 225fb4d..63d50f2 100644 > >> --- a/wt-status.h > >> +++ b/wt-status.h > >> @@ -28,6 +28,7 @@ struct wt_status { > >> > >> int git_status_config(const char *var, const char *value); > >> int wt_status_use_color; > >> +int wt_status_relative_paths; > >> void wt_status_prepare(struct wt_status *s); > >> void wt_status_print(struct wt_status *s); > > > > Shouldn't both of these ints be marked "extern"? I'm surprised it worked > > at all (or perhaps the part of my brain that stores C linkage issues is > > rotting?). > > Yes, rotting very much. Nope, there's still a little grey matter left. It is not technically guaranteed by the standard to work, since the declaration in every source file which includes wt-status.h is a "tentative definition." Fortunately, the linker is nice enough to figure out what's going on as long as only one is actually initialized. This is listed in C99 Section J.5.11 as a "Common extension". The Summit C FAQ mentions it as well: http://c-faq.com/decl/decldef.html So "extern" is better, but apparently not required for any linkers we care about. Note that omitting "extern" _is_ illegal in C++, but fortunately we _really_ don't care about those linkers. :) But at least I'm not totally crazy. -Peff - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html