Ethereal-cvs: [Ethereal-cvs] cvs commit: ethereal snprintf.c snprintf.h

Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.

From: Guy Harris <guy@xxxxxxxxxxxxxxxxxxx>
Date: Tue, 21 Nov 2000 15:24:53 -0600 (CST)
guy         2000/11/21 15:24:52 CST

  Modified files:
    .                    snprintf.c snprintf.h 
  Log:
  Some compilers, e.g. Microsoft Visual C++, don't define __STDC__ unless
  extensions to ANSI C are disabled if they may cause strictly conforming
  programs not to compile, or to work differently if those extensions are
  enabled.  (Other compilers #define it as 0, e.g.  Sun's and, I think,
  other AT&T-derived compilers; still others cheerfully define it as 1
  even when those extensions are enabled, e.g. GCC.)
  
  As such, checking whether __STDC__ is defined, or is defined as a
  non-zero value, isn't the right way to check whether function prototypes
  are supported; MSVC++ 6.0 supports them, but, by default, leaves
  extensions of the sort described above enabled, and thus doesn't define
  __STDC__.  This means that the compiler warns about arguments to
  "snprintf()" when compiling it, as the declaration is an old-style
  declaration.
  
  As Ethereal uses function prototypes, there's not much point in making
  it possible for its private "snprintf()" to be compiled or used when
  function prototypes aren't supported; just get rid of the tests for
  __STDC__, so that it's compiled with function prototypes regardless of
  whether __STDC__ is defined or not.
  
  While we're at it, have "snprintf()" give it a "__attribute__((format
  (printf, 3, 4))))" when compiled by GCC 2.x or later, so that
  format/argument checks can be done even on platforms lacking
  "snprintf()".
  
  Revision  Changes    Path
  1.12      +2 -84     ethereal/snprintf.c
  1.5       +6 -6      ethereal/snprintf.h