diff --git a/driver-csi.c b/driver-csi.c index 1203a00..fe885b2 100644 --- a/driver-csi.c +++ b/driver-csi.c @@ -130,9 +130,9 @@ abort_free_csi: return NULL; } -static void free_driver(void *private) +static void free_driver(void *info) { - termkey_csi *csi = private; + termkey_csi *csi = info; free(csi->csifuncs); csi->csifuncs = NULL; @@ -286,12 +286,12 @@ static termkey_result getkey_ss3(termkey_t *tk, termkey_csi *csi, size_t introle return TERMKEY_RES_KEY; } -static termkey_result getkey(termkey_t *tk, termkey_key *key, int force) +static termkey_result getkey(termkey_t *tk, void *info, termkey_key *key, int force) { if(tk->buffcount == 0) return tk->is_closed ? TERMKEY_RES_EOF : TERMKEY_RES_NONE; - termkey_csi *csi = tk->driver_info; + termkey_csi *csi = info; // Now we're sure at least 1 byte is valid unsigned char b0 = CHARAT(0); diff --git a/driver-ti.c b/driver-ti.c index 1540a7a..0c25f48 100644 --- a/driver-ti.c +++ b/driver-ti.c @@ -77,7 +77,7 @@ abort_free_ti: return NULL; } -static void start_driver(termkey_t *tk) +static void start_driver(termkey_t *tk, void *info) { /* The terminfo database will contain keys in application cursor key mode. * We may need to enable that mode @@ -88,7 +88,7 @@ static void start_driver(termkey_t *tk) } } -static void stop_driver(termkey_t *tk) +static void stop_driver(termkey_t *tk, void *info) { if(keypad_local) { // Can't call putp or tputs because they suck and don't give us fd control @@ -96,15 +96,15 @@ static void stop_driver(termkey_t *tk) } } -static void free_driver(void *private) +static void free_driver(void *info) { } #define CHARAT(i) (tk->buffer[tk->buffstart + (i)]) -static termkey_result getkey(termkey_t *tk, termkey_key *key, int force) +static termkey_result getkey(termkey_t *tk, void *info, termkey_key *key, int force) { - termkey_ti *ti = tk->driver_info; + termkey_ti *ti = info; if(tk->buffcount == 0) return tk->is_closed ? TERMKEY_RES_EOF : TERMKEY_RES_NONE; diff --git a/termkey-internal.h b/termkey-internal.h index 9f0904a..6e68525 100644 --- a/termkey-internal.h +++ b/termkey-internal.h @@ -9,10 +9,10 @@ struct termkey_driver { void *(*new_driver)(termkey_t *tk, const char *term); - void (*free_driver)(void *); - void (*start_driver)(termkey_t *tk); - void (*stop_driver)(termkey_t *tk); - termkey_result (*getkey)(termkey_t *tk, termkey_key *key, int force); + void (*free_driver)(void *info); + void (*start_driver)(termkey_t *tk, void *info); + void (*stop_driver)(termkey_t *tk, void *info); + termkey_result (*getkey)(termkey_t *tk, void *info, termkey_key *key, int force); }; struct keyinfo { diff --git a/termkey.c b/termkey.c index 2e35ae3..4d21876 100644 --- a/termkey.c +++ b/termkey.c @@ -186,7 +186,7 @@ termkey_t *termkey_new_full(int fd, int flags, size_t buffsize, int waittime) } if(tk->driver.start_driver) - (*tk->driver.start_driver)(tk); + (*tk->driver.start_driver)(tk, tk->driver_info); return tk; @@ -221,7 +221,7 @@ void termkey_free(termkey_t *tk) void termkey_destroy(termkey_t *tk) { if(tk->driver.stop_driver) - (*tk->driver.stop_driver)(tk); + (*tk->driver.stop_driver)(tk, tk->driver_info); if(tk->restore_termios_valid) tcsetattr(tk->fd, TCSANOW, &tk->restore_termios); @@ -375,7 +375,7 @@ static termkey_result getkey_simple(termkey_t *tk, termkey_key *key, int force) tk->buffcount--; // Run the full driver - termkey_result metakey_result = (*tk->driver.getkey)(tk, key, force); + termkey_result metakey_result = (*tk->driver.getkey)(tk, tk->driver_info, key, force); tk->buffstart--; tk->buffcount++; @@ -497,12 +497,12 @@ static termkey_result getkey_simple(termkey_t *tk, termkey_key *key, int force) termkey_result termkey_getkey(termkey_t *tk, termkey_key *key) { - return (*tk->driver.getkey)(tk, key, 0); + return (*tk->driver.getkey)(tk, tk->driver_info, key, 0); } termkey_result termkey_getkey_force(termkey_t *tk, termkey_key *key) { - return (*tk->driver.getkey)(tk, key, 1); + return (*tk->driver.getkey)(tk, tk->driver_info, key, 1); } termkey_result termkey_waitkey(termkey_t *tk, termkey_key *key)