From 92f450652c88fb3f00a3da7883d2a3fa22a1bf3d Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Mon, 11 Jun 2001 22:12:48 +0000 Subject: [PATCH] The attached patch enables PostgreSQL CVS to build cleanly under Cygwin when built against readline 4.2. Specifically, it handles the deprecation of filename_completion_function() with preference for rl_filename_completion_function() Although, I was motivated by Cygwin support, IMO this patch is appropriate for all platforms. To quote from the readline source: #if 0 /* Backwards compatibility (compat.c). These will go away sometime. */ ... extern READLINE_EXPORT(char, *filename_completion_function) ... #endif Note that this patch is modeled after the one by Peter Eisentraut for completion_matches(): http://www.ca.postgresql.org/~petere/readline42.html I tested this patch under the following environments: Cygwin with readline 4.1 Cygwin with readline 4.2 Linux with readline 2.2.1 Linux with readline 4.2 and it behaved as expected. Jason Tishler --- configure.in | 2 +- src/bin/psql/tab-complete.c | 6 ++++-- src/include/config.h.in | 5 ++++- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/configure.in b/configure.in index d18e57e3cb..045b890f35 100644 --- a/configure.in +++ b/configure.in @@ -928,7 +928,7 @@ AC_TRY_LINK([#include AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER)], [AC_MSG_RESULT(no)]) -AC_CHECK_FUNCS([rl_completion_matches]) +AC_CHECK_FUNCS([rl_completion_matches rl_filename_completion_function]) dnl Cannot use AC_CHECK_FUNC because finite may be a macro diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.c index dd323162dd..e8ed3c668a 100644 --- a/src/bin/psql/tab-complete.c +++ b/src/bin/psql/tab-complete.c @@ -3,7 +3,7 @@ * * Copyright 2000 by PostgreSQL Global Development Group * - * $Header: /cvsroot/pgsql/src/bin/psql/tab-complete.c,v 1.32 2001/05/08 21:06:43 petere Exp $ + * $Header: /cvsroot/pgsql/src/bin/psql/tab-complete.c,v 1.33 2001/06/11 22:12:48 momjian Exp $ */ /*---------------------------------------------------------------------- @@ -60,7 +60,9 @@ #include "common.h" #include "settings.h" -extern char *filename_completion_function(); +#ifdef HAVE_RL_FILENAME_COMPLETION_FUNCTION +#define filename_completion_function rl_filename_completion_function +#endif #ifdef HAVE_RL_COMPLETION_MATCHES #define completion_matches(x, y) rl_completion_matches((x), ((rl_compentry_func_t *)(y))) diff --git a/src/include/config.h.in b/src/include/config.h.in index b574774b83..fde5a1385b 100644 --- a/src/include/config.h.in +++ b/src/include/config.h.in @@ -8,7 +8,7 @@ * or in config.h afterwards. Of course, if you edit config.h, then your * changes will be overwritten the next time you run configure. * - * $Id: config.h.in,v 1.165 2001/06/02 18:25:18 petere Exp $ + * $Id: config.h.in,v 1.166 2001/06/11 22:12:48 momjian Exp $ */ #ifndef CONFIG_H @@ -589,6 +589,9 @@ extern int fdatasync(int fildes); /* Set to 1 if you have rl_completion_matches */ #undef HAVE_RL_COMPLETION_MATCHES +/* Set to 1 if you have rl_filename_completion_function */ +#undef HAVE_RL_FILENAME_COMPLETION_FUNCTION + /* Set to 1 if you have getopt_long() (GNU long options) */ #undef HAVE_GETOPT_LONG