On 8/24/16 1:12 PM, Eric van Gyzen wrote: > On 08/24/2016 15:01, Ed Schouten wrote: >> 2016-08-24 21:53 GMT+02:00 Bryan Drewery <bdrew...@freebsd.org>: >>> Is it possible to cause the use of these old prototypes to print a >>> warning and note that they are deprecated/unsafe? >> >> That's a good question. In theory, we could annotate these functions >> with __attribute__((__deprecated__)): >> >> https://gcc.gnu.org/onlinedocs/gcc-3.3.4/gcc/Type-Attributes.html >> >> But I'm actually too afraid to use it. In the worst case it may cause >> the compiler to generate a warning even when basename()/dirname() is >> used correctly, as __old_* will still be part of the compiled >> expression. > > Could __warn_references() be used, as libc currently does for gets() and > others? > > Eric >
/usr/include/stdio.h:extern char *gets (char *__s) __wur __attribute_deprecated__; /usr/include/x86_64-linux-gnu/sys/cdefs.h:# define __attribute_deprecated__ __attribute__ ((__deprecated__)) __wur being warning about unused result. As for actually using it here, I tried adding it onto the _old_dirname/basename prototypes. It produces an error, fine, in the bootstrap build for xinstall it would not error, great. However, for building xinstall on head where it will not use the __old_dirname and will use the new dirname@FBSD_1.5, it _still_ complains about using the __old_dirname() prototype via __generic and errors in the wrong case. -- Regards, Bryan Drewery
signature.asc
Description: OpenPGP digital signature