Skip to content
  • Karsten Blees's avatar
    trace: add 'file:line' to all trace output · e05bed96
    Karsten Blees authored and Junio C Hamano's avatar Junio C Hamano committed
    
    
    This is useful to see where trace output came from.
    
    Add 'const char *file, int line' parameters to the printing functions and
    rename them to *_fl.
    
    Add trace_printf* and trace_strbuf macros resolving to the *_fl functions
    and let the preprocessor fill in __FILE__ and __LINE__.
    
    As the trace_printf* functions take a variable number of arguments, this
    requires variadic macros (i.e. '#define foo(...) foo_impl(__VA_ARGS__)'.
    Though part of C99, it is unclear whether older compilers support this.
    Thus keep the old functions and only enable variadic macros for GNUC and
    MSVC 2005+ (_MSC_VER 1400). This has the nice side effect that the old
    C-style declarations serve as documentation how the macros are to be used.
    
    Print 'file:line ' as prefix to each trace line. Align the remaining trace
    output at column 40 to accommodate 18 char file names + 4 digit line
    number (currently there are 30 *.c files of length 18 and just 11 of 19).
    Trace output from longer source files (e.g. builtin/receive-pack.c) will
    not be aligned.
    
    Signed-off-by: default avatarKarsten Blees <blees@dcon.de>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    e05bed96