Guido van Rossum  committed 55ee15c

Clean up the unsightly mess around the readline header files. We now

- #undef HAVE_CONFIG_H (because otherwise chardefs.h tries to include

- #include readline.h and history.h

and we never declare any readline function prototypes ourselves.

This makes it compile with readline 4.2, albeit with a few warnings.
Some of the remaining warnings are about completion_matches(), which
is renamed to rl_completion_matches().

I've tested it with various other versions, from 2.0 up, and they all
seem to work (some with warnings) -- but only on Red Hat Linux 6.2.

Fixing the warnings for readline 4.2 would break compatibility with
3.0 (and maybe even earlier versions), and readline doesn't seem to
have a way to test for its version at compile time, so I'd rather
leave the warnings in than break compilation with older versions.

  • Participants
  • Parent commits 11153c1
  • Branches legacy-trunk

Comments (0)

Files changed (1)

File Modules/readline.c

 /* GNU readline definitions */
-/* If you have string.h, you might need to add yourself to this #if... [cjh] */
-#if defined(__BEOS__)
-/* At max warnings, we need protos for everything. [cjh] */
+#undef HAVE_CONFIG_H /* Else readline/chardefs.h includes strings.h */
 #include <readline/readline.h>
 #include <readline/history.h>
-#include <unistd.h>
-#include <readline/readline.h> /* You may need to add an -I option to Setup */
-#ifdef __CYGWIN__
-#include <readline/history.h>
-#else /* !__CYGWIN__ */
-extern int rl_parse_and_bind(char *);
-extern int rl_read_init_file(char *);
-extern int rl_insert_text(char *);
-extern int rl_bind_key(int, Function *);
-extern int rl_bind_key_in_map(int, Function *, Keymap);
-extern int rl_initialize(void);
-extern int add_history(char *);
-extern int read_history(char *);
-extern int write_history(char *);
-extern int history_truncate_file(char *, int);
-extern Function *rl_event_hook;
-#endif /* !__CYGWIN__ */
 /* Pointers needed from outside (but not declared in a header file). */
 extern DL_IMPORT(int) (*PyOS_InputHook)(void);