summaryrefslogtreecommitdiff
path: root/src/mcpp-diagnostic.c
blob: 76e0c2556d61bf2871bd60aa268aa637bcd8a421 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <defs.h>
#include <stdarg.h>

int
mcpp_diagnostic_warning( const mcpp_options *options,
                         const char *filename,
                         unsigned line_number,
                         const char *format, ... )
{
  va_list ap;
  int     as_error;

  if( options != NULL && options->inhibit_warnings )
    return( 0 );

  as_error = options != NULL && options->warnings_are_errors;

  fprintf( stderr, "%s:%u: %s: ",
           filename != NULL ? filename : "<input>", line_number,
           as_error ? "error" : "warning" );

  va_start( ap, format );
  vfprintf( stderr, format, ap );
  va_end( ap );
  fputc( '\n', stderr );

  return( as_error ? -1 : 0 );
}