HomeFreeBSD

net/samba416: fix rl_completion_func_t detection and usage

Description

net/samba416: fix rl_completion_func_t detection and usage

After a recent devel/readline update, net/samba416 fails to compile with
clang 19, resulting in errors similar to:

../../libcli/smbreadline/smbreadline.c:139:38: warning: 'CPPFunction' is deprecated [-Wdeprecated-declarations]
  139 |                 rl_attempted_completion_function = RL_COMPLETION_CAST completion_fn;
      |                                                    ^
../../lib/replace/system/readline.h:50:31: note: expanded from macro 'RL_COMPLETION_CAST'
   50 | #  define RL_COMPLETION_CAST (CPPFunction *)
      |                               ^
/usr/local/include/readline/rltypedefs.h:38:50: note: 'CPPFunction' has been explicitly marked deprecated here
   38 | typedef char **CPPFunction (void) __attribute__((deprecated));
      |                                                  ^
../../libcli/smbreadline/smbreadline.c:139:36: error: incompatible function pointer types assigning to 'rl_completion_func_t *' (aka 'char **(*)(const char *, int, int)') from 'CPPFunction *' (aka 'char **(*)(void)') [-Wincompatible-function-pointer-types]
  139 |                 rl_attempted_completion_function = RL_COMPLETION_CAST completion_fn;
      |                                                  ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

There are two reasons: samba checks for rl_completion_t, while the
actual readline type is rl_completion_func_t, and samba's wrapper
readline.h header prefers the CPPFunction type which is deprecated,
while it should use rl_completion_func_t instead.

Fix the wscript_configure check to detect rl_completion_func_t, and
reverse the HAVE_RL_COMPLETION_T and HAVE_CPPFUNCTION checks in the
wrapper header.

PR: 281817
Approved by: samba (0mp)
Reviewed by: 0mp
MFH: 2024Q3

(cherry picked from commit 48cea5704f4376df85a42c5b145c62f8830c6822)

Details

Provenance
dimAuthored on Oct 2 2024, 11:31 AM
Parents
R11:53d5fc24e4df: net/samba419: fix rl_completion_func_t detection and usage
Branches
Unknown
Tags
Unknown