From fd769d621e95cdcf6f4600448c8431d27233c090 Mon Sep 17 00:00:00 2001 From: Paul LeoNerd Evans Date: Fri, 10 Oct 2008 00:50:56 +0100 Subject: [PATCH] 'int' might not be wide enough to hold any Unicode codepoint; use 'long' --- driver-csi.c | 6 +++--- termkey-internal.h | 2 +- termkey.c | 10 +++++----- termkey.h | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/driver-csi.c b/driver-csi.c index 33e7342..8633157 100644 --- a/driver-csi.c +++ b/driver-csi.c @@ -164,7 +164,7 @@ static termkey_result getkey_csi(termkey_t *tk, size_t introlen, termkey_key *ke } unsigned char cmd = CHARAT(csi_end); - int arg[16]; + long arg[16]; char present = 0; int args = 0; @@ -226,7 +226,7 @@ static termkey_result getkey_csi(termkey_t *tk, size_t introlen, termkey_key *ke key->code.sym = TERMKEY_SYM_UNKNOWN; if(key->code.sym == TERMKEY_SYM_UNKNOWN) - fprintf(stderr, "CSI function key %d\n", arg[0]); + fprintf(stderr, "CSI function key %ld\n", arg[0]); } else { // We know from the logic above that cmd must be >= 0x40 and < 0x80 @@ -236,7 +236,7 @@ static termkey_result getkey_csi(termkey_t *tk, size_t introlen, termkey_key *ke key->modifiers |= csi->csi_ss3s[cmd - 0x40].modifier_set; if(key->code.sym == TERMKEY_SYM_UNKNOWN) - fprintf(stderr, "CSI arg1=%d arg2=%d cmd=%c\n", arg[0], arg[1], cmd); + fprintf(stderr, "CSI arg1=%ld arg2=%ld cmd=%c\n", arg[0], arg[1], cmd); } return TERMKEY_RES_KEY; diff --git a/termkey-internal.h b/termkey-internal.h index fd865cd..774cb53 100644 --- a/termkey-internal.h +++ b/termkey-internal.h @@ -48,7 +48,7 @@ struct termkey { // want exported as real symbols in the library struct { void (*eat_bytes)(termkey_t *tk, size_t count); - void (*emit_codepoint)(termkey_t *tk, int codepoint, termkey_key *key); + void (*emit_codepoint)(termkey_t *tk, long codepoint, termkey_key *key); termkey_result (*getkey_simple)(termkey_t *tk, termkey_key *key); } method; }; diff --git a/termkey.c b/termkey.c index 455b1b4..b90bcf0 100644 --- a/termkey.c +++ b/termkey.c @@ -16,7 +16,7 @@ static struct termkey_driver *drivers[] = { // Forwards for the "protected" methods static void eat_bytes(termkey_t *tk, size_t count); -static void emit_codepoint(termkey_t *tk, int codepoint, termkey_key *key); +static void emit_codepoint(termkey_t *tk, long codepoint, termkey_key *key); static termkey_result getkey_simple(termkey_t *tk, termkey_key *key); static termkey_keysym register_c0(termkey_t *tk, termkey_keysym sym, unsigned char ctrl, const char *name); @@ -230,7 +230,7 @@ static void eat_bytes(termkey_t *tk, size_t count) } } -static inline int utf8_seqlen(int codepoint) +static inline int utf8_seqlen(long codepoint) { if(codepoint < 0x0000080) return 1; if(codepoint < 0x0000800) return 2; @@ -242,7 +242,7 @@ static inline int utf8_seqlen(int codepoint) static void fill_utf8(termkey_key *key) { - int codepoint = key->code.codepoint; + long codepoint = key->code.codepoint; int nbytes = utf8_seqlen(codepoint); key->utf8[nbytes] = 0; @@ -265,7 +265,7 @@ static void fill_utf8(termkey_key *key) } } -static void emit_codepoint(termkey_t *tk, int codepoint, termkey_key *key) +static void emit_codepoint(termkey_t *tk, long codepoint, termkey_key *key) { if(codepoint < 0x20) { // C0 range @@ -338,7 +338,7 @@ static termkey_result getkey_simple(termkey_t *tk, termkey_key *key) else if(tk->flags & TERMKEY_FLAG_UTF8) { // Some UTF-8 int nbytes; - int codepoint; + long codepoint; key->type = TERMKEY_TYPE_UNICODE; key->modifiers = 0; diff --git a/termkey.h b/termkey.h index 6be5bfa..52ebc88 100644 --- a/termkey.h +++ b/termkey.h @@ -82,7 +82,7 @@ typedef int termkey_keysym; typedef struct { termkey_type type; union { - int codepoint; // TERMKEY_TYPE_UNICODE + long codepoint; // TERMKEY_TYPE_UNICODE int number; // TERMKEY_TYPE_FUNCTION termkey_keysym sym; // TERMKEY_TYPE_KEYSYM } code;