--- /dev/null
+--- a/cligen_getline.c
++++ b/cligen_getline.c
+@@ -41,12 +41,12 @@
+
+ /********************* exported variables ********************************/
+
+-int (*gl_in_hook)() = NULL;
+-int (*gl_out_hook)() = NULL;
+-int (*gl_tab_hook)() = NULL;
+-int (*gl_qmark_hook)() = NULL;
+-int (*gl_susp_hook)() = NULL;
+-int (*gl_interrupt_hook)() = NULL;
++int (*gl_in_hook)(void *, char *) = NULL;
++int (*gl_out_hook)(void *, char *) = NULL;
++int (*gl_tab_hook)(cligen_handle, int *) = NULL;
++int (*gl_qmark_hook)(cligen_handle, char *) = NULL;
++int (*gl_susp_hook)(void *, char *, int, int *) = NULL;
++int (*gl_interrupt_hook)(cligen_handle) = NULL;
+
+ /******************** internal interface *********************************/
+
+@@ -55,7 +55,7 @@ static void gl_init1(void);
+ static void gl_cleanup(void); /* to undo gl_init1 */
+ void gl_char_init(void); /* get ready for no echo input */
+ void gl_char_cleanup(void); /* undo gl_char_init */
+-static size_t (*gl_strlen)(const char *) = (size_t(*)())strlen;
++static size_t (*gl_strlen)(const char *) = strlen;
+ /* returns printable prompt width */
+
+ static int gl_addchar(cligen_handle h, int c); /* install specified char */
+@@ -1409,7 +1409,7 @@ gl_fixup(cligen_handle h,
+ /******************* strlen stuff **************************************/
+
+ void
+-gl_strwidth(size_t (*func)())
++gl_strwidth(size_t (*func)(const char *))
+ {
+ if (func != 0) {
+ gl_strlen = func;
+--- a/cligen_getline.h
++++ b/cligen_getline.h
+@@ -23,7 +23,7 @@
+ /*
+ * Types
+ */
+-typedef size_t (*gl_strwidth_proc)(char *);
++typedef size_t (*gl_strwidth_proc)(const char *);
+
+ /*
+ * Prototypes