[tin-dev] [tin 2.4.0] snapshots - please test

Thomas Dickey dickey at his.com
Wed Aug 10 03:06:17 CEST 2016


On Tue, Aug 09, 2016 at 04:10:07PM +0200, Corinna Vinschen wrote:
> Hi Urs,
> 
> On Aug  9 13:35, Urs Janßen wrote:
> > I've made snapshots of the upcomming 2.4.0 release (planned for
> > August 23rd), please give them a try and report (or even fix) any
> > issues:
> > 
> > <ftp://ftp.tin.org/pub/news/clients/tin/v2.3/snapshots/tin-2.4.0.tar.xz>
> > <ftp://ftp.tin.org/pub/news/clients/tin/v2.3/snapshots/tin-2.4.0.tar.bz2>
> > <ftp://ftp.tin.org/pub/news/clients/tin/v2.3/snapshots/tin-2.4.0.tar.gz>
> 
> I encountered two build problems in the tin configury.
> 
> I was trying to build the snapshot on Cygwin and noticed lots of
> warnings in terms of the strcasecmp function being undeclared.

okay...
 
> To explain why I only noticed now, lately newlib and Cygwin had a major
> revamp of the header files to align the feature macro handling closer to
> the standards and ultimately to glibc as far as GNU extensions are
> concerned.

as a rule, I don't use changes that only work on "new" systems.
 
> When building on Cygwin, the tin configury sets -D_XOPEN_SOURCE=600.
> However, tin.h contains this:
> 
>     #ifndef __QNX__
>     #       ifdef HAVE_STRING_H
>     #               include <string.h>
>     #       else
>     #               ifdef HAVE_STRINGS_H
>     #                       include <strings.h>
>     #               endif /* HAVE_STRINGS_H */
>     #       endif /* HAVE_STRING_H */
>     #else
>     #       ifdef HAVE_STRING_H
>     #               include <string.h>
>     #       endif /* HAVE_STRING_H */
>     #       ifdef HAVE_STRINGS_H
>     #               include <strings.h>
>     #       endif /* HAVE_STRINGS_H */
>     #endif /* !__QNX__ */
> 
> So on non-__QNX__ systems, prefer to include string.h and only if
> that's not available, include strings.h.
> 
> AFAICS this is incorrect.  POSIX-1.2008 requires to include strings.h
> to get strcasecmp/strncasecmp.

It might be now, but when I added it, there were (possibly still are...)
systems which would have conflicting definitions.
 
> Per the glibc man page the declarations are in string.h only on BSD
> systems or in BSD compatiblity mode.  You won't notice this on Linux,

My Debian 7 manual page only shows strings.h

The header files have the prototypes in both (but not ifdef'd to match
your description).

> because on Linux the aclocal.m4 function CF_XOPEN_SOURCE will set the
> compatibility mode to -D_GNU_SOURCE, rather than -D_XOPEN_SOURCE=600.

that's what works for Linux.
 
> I think the right thing to do is to change tin.h to always include
> string.h and strings.h when they are available, i. e.:

It's worth a try, to see what breaks :-)

> The second problem I encountered is a missing declaration of vasprintf.
> The reason here is that configure checks for the existence of vasprintf,
> but then the tin headers don't define _GNU_SOURCE before using
> vasprintf, even though vasprintf is a GNU extension.

_GNU_SOURCE should be defined in the makefile (not in the headers).
Defining that sort of thing in the header files has never worked reliably.
 
> I think the right thing to do here is to define _GNU_SOURCE as soon
> as HAVE_VASPRINTF is defined.  E. g:

nope.  If it's not defined by CF_XOPEN_SOURCE and/or CF_GNU_SOURCE,
it's probably incorrect.

> A Cygwin-specific workaround for both problems would be to change
> CF_XOPEN_SOURCE to use the same mechanism to set _GNU_SOURCE as on
> Linux etc, and to regenerate configure:
> 
> ====================================================================
> --- aclocal.m4.ORIG	2016-08-09 15:35:17.983772427 +0200
> +++ aclocal.m4	2016-08-09 16:06:06.794538386 +0200
> @@ -5599,7 +5599,7 @@ case $host_os in
>  (aix[[4-7]]*)
>  	cf_xopen_source="-D_ALL_SOURCE"
>  	;;
> -(cygwin|msys)
> +(msys)
>  	cf_XOPEN_SOURCE=600
>  	;;
>  (darwin[[0-8]].*)
> @@ -5627,7 +5627,7 @@ case $host_os in
>  	cf_xopen_source="-D_SGI_SOURCE"
>  	cf_XOPEN_SOURCE=
>  	;;
> -(linux*|gnu*|mint*|k*bsd*-gnu)
> +(linux*|gnu*|mint*|k*bsd*-gnu|cygwin)
>  	CF_GNU_SOURCE

again - something to try :-)

-- 
Thomas E. Dickey <dickey at invisible-island.net>
http://invisible-island.net
ftp://invisible-island.net
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://lists.tin.org/pipermail/tin-dev/attachments/20160809/64abbf60/attachment.sig>


More information about the tin-dev mailing list