* cfg.mk (sc_prohibit_stat_macro_address): New rule.
* src/ln.c (do_link): Adjust comment to avoid false positive.
* src/stat.c (do_stat): Likewise.
* src/touch.c (main): Likewise.
msg='do not use readlink(at); use via xreadlink or areadlink*' \
$(_prohibit_regexp)
+# Don't use address of "stat" or "lstat" functions
+sc_prohibit_stat_macro_address:
+ @re='\<l?stat '':|&l?stat\>' \
+ msg='stat() and lstat() may be function-like macros' \
+ $(_prohibit_regexp)
+
# Ensure that date's --help output stays in sync with the info
# documentation for GNU strftime. The only exception is %N,
# which date accepts but GNU strftime does not.
{
/* Which stat to use depends on whether linkat will follow the
symlink. We can't use the shorter
- (logical ? stat : lstat) (source, &source_stats)
+ (logical?stat:lstat) (source, &source_stats)
since stat might be a function-like macro. */
if ((logical ? stat (source, &source_stats)
: lstat (source, &source_stats))
}
}
/* We can't use the shorter
- (follow_links ? stat : lstat) (filename, &statbug)
+ (follow_links?stat:lstat) (filename, &statbug)
since stat might be a function-like macro. */
else if ((follow_links
? stat (filename, &statbuf)
if (use_ref)
{
struct stat ref_stats;
- /* Don't use (no_dereference ? lstat : stat) (args), since stat
+ /* Don't use (no_dereference?lstat:stat) (args), since stat
might be an object-like macro. */
if (no_dereference ? lstat (ref_file, &ref_stats)
: stat (ref_file, &ref_stats))