Summary:ASTERISK-04251: [patch] various patches for a cleaner compile with -Werror
Reporter:Luigi Rizzo (rizzo)Labels:
Date Opened:2005-05-21 04:38:14Date Closed:2011-06-07 14:10:46
Versions:Frequency of
Environment:Attachments:( 0) 4353.stable.patch.txt
( 1) werror.patch
Description:Trying to compile with -Werror identifies a number of minor problems in the
code that this patch tries to fix.

  use of  *ptr++ instead of ptr++

  wrong argument type (possibly os-dependent) in snprintf

  multiple uses of  *var++  instead of  var++

  missing prototype for mkdir;

  wrong include order causing ELAST redefinition in system's header

  PRI debugging variables declared outside the PRI conditional block

  some versions of gcc e.g. 2.95.x on FreeBSD do not recognise %F as a
  valid strftime format. Maybe a bug in the compiler. However it costs
  nothing to replace it with the recognised and equivalent form.

  ifdef out some unused variables

  ifdef out the inet_ntoa redefinition, causes clashes with system headers
  (maybe a better solution is to change the include order).

  remove -Werror when compiling res_crypto.c, too many warnings otherwise.
  (probably due to some missing headers, but no time to investigate it now)


disclaimer on file.
Comments:By: Kevin P. Fleming (kpfleming) 2005-05-21 13:56:58

I'm OK with most of this, except for these issues:

1) This is not a failing of _all_ GCC, only those that do not implement C99, I believe. A more specific comment may be in order.

- strftime(output, maxlen, "%F  %T", &tm);
+ /* XXX gcc does not like %F so use %Y-%m-%d */
+ strftime(output, maxlen, "%Y-%m-%d  %T", &tm);

2) Why are you suppressing this?

+#if 0
#ifdef inet_ntoa
#undef inet_ntoa
#define inet_ntoa __dont__use__inet_ntoa__use__ast_inet_ntoa__instead__

3) What is the need for this?

+res_crypto.o: res_crypto.c
+ echo "--- compiling crypto.c "
+ $(CC) -c ${CFLAGS:-Werror=} $<

By: Luigi Rizzo (rizzo) 2005-05-21 15:58:00

The changes are not dependent on each other so you can just
take those you like. There are actually a few more that I omitted,
related to format strings which are not correctly recognised, and
I am not sure if they are due to my compiler or a real problem in the code.

Response to your comments:

1) maybe you can use the comment in the description above,
/*  some versions of gcc e.g. 2.95.x on FreeBSD do not recognise %F as a
*  valid strftime format. Maybe a bug in the compiler. However it costs
*  nothing to replace it with the recognised and equivalent form. %Y-%m-%d

2) the inet_ntoa redefinition occurs too early, probably because
  include/asterisk/util.h is included before system headers,
  and this causes the compiler to complain about the symbol being
  redefined by the system's headers (on FreeBSD 4.11 at least).
  Not sure on how many files this happens, but it is on many of them.
  If it were only one or a few files i would simply make the compiler
  less pedantic on those files, but it is on way too many of them.
  If you leave this, you cannot run with -Werror.

3) there is a huge number of warnings in compiling res_crypto.c - have
  not checked in detail the reason, but without fixing those you cannot
  use -Werror on that file. See the note above.

By: Michael Jerris (mikej) 2005-05-22 11:21:06

in what system headers are the inet_ntoa definitions for you?  Why not include the propper headers directly in util.h so we can get rid of the order dependecy.  There are several of these order dependency issues in asterisk that need to be fixed.

By: Mark Spencer (markster) 2005-05-22 17:34:20

The gsm ones are not unused, it just depends on your compile options.

By: Russell Bryant (russell) 2005-05-23 18:51:22

Do you see a place where utils.h is included before system headers?  There was recently a patch to clean up the header include order so that this was never the case.  Maybe a spot was missed.

By: Luigi Rizzo (rizzo) 2005-05-24 17:27:19

i would suggest to simply apply the non-controversial pieces,
drop the rest and close the bug report.
If the need arises again, I or others will resubmit the dropped parts
in a better way.

It's pointless to keep discussing the various bits for so long, anyways - it just makes the entire report to be forgotten and lost.

By: Russell Bryant (russell) 2005-05-25 06:55:15

Added to CVS HEAD

I excluded the following things ...

1) The codec_gsm changes

2) The if 0 on inet_ntoa

3) The res_crypto Makefile change


By: Michael Jerris (mikej) 2005-06-01 23:55:23

chan_zap.c, iax2-parser.c, app_dictate.c, config.c: changes not necessary in stable due to the problematic lines or vars not being in stable

Changes to app_controlplayback.c, app.c attached as 4353.stable.patch.txt

By: Russell Bryant (russell) 2005-06-14 17:07:27

fixed in 1.0

By: Digium Subversion (svnbot) 2008-01-15 15:36:01.000-0600

Repository: asterisk
Revision: 5764

U   trunk/app.c
U   trunk/apps/app_controlplayback.c
U   trunk/apps/app_dictate.c
U   trunk/apps/app_flash.c
U   trunk/channels/chan_zap.c
U   trunk/channels/iax2-parser.c
U   trunk/config.c

r5764 | russell | 2008-01-15 15:36:01 -0600 (Tue, 15 Jan 2008) | 2 lines

various code cleanups (bug ASTERISK-4251)



By: Digium Subversion (svnbot) 2008-01-15 15:38:15.000-0600

Repository: asterisk
Revision: 5914

U   branches/v1-0/app.c
U   branches/v1-0/apps/app_controlplayback.c

r5914 | russell | 2008-01-15 15:38:14 -0600 (Tue, 15 Jan 2008) | 2 lines

remove pointless dereference (bug ASTERISK-4251)