From 8b006c291270bca851266e1ac3bb54d1c6181b56 Mon Sep 17 00:00:00 2001 From: David Lawrence Ramsey Date: Mon, 8 Aug 2005 23:03:25 +0000 Subject: [PATCH] store Unicode values in longs instead of ints git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2977 35c25a1d-7b9e-4130-9fde-d3aeb78583b8 --- ChangeLog | 3 +++ src/chars.c | 6 +++--- src/proto.h | 4 ++-- src/winio.c | 17 ++++++++++------- 4 files changed, 18 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index 70764eff..9ed41b14 100644 --- a/ChangeLog +++ b/ChangeLog @@ -138,6 +138,9 @@ CVS code - invalid, since the C library's multibyte functions don't seem to. New function is_valid_unicode(); changes to mbrep() and make_mbchar(). (DLR) + - Store Unicode values in longs instead of ints. Changes to + make_mbchar(), parse_kbinput(), get_unicode_kbinput(), and + parse_verbatim_kbinput(). (DLR) - color.c: - Remove unneeded fcntl.h include. (DLR) - chars.c: diff --git a/src/chars.c b/src/chars.c index 8703d9cc..c7f61038 100644 --- a/src/chars.c +++ b/src/chars.c @@ -315,12 +315,12 @@ int mb_cur_max(void) 1; } -/* Convert the value in chr to a multibyte character with the same - * wide character value as chr, if possible. If the conversion +/* Convert the Unicode value in chr to a multibyte character with the + * same wide character value as chr, if possible. If the conversion * succeeds, return the (dynamically allocated) multibyte character and * its length. Otherwise, return an undefined (dynamically allocated) * multibyte character and a length of zero. */ -char *make_mbchar(int chr, int *chr_mb_len) +char *make_mbchar(long chr, int *chr_mb_len) { char *chr_mb; diff --git a/src/proto.h b/src/proto.h index 86ef80ee..a759f559 100644 --- a/src/proto.h +++ b/src/proto.h @@ -159,7 +159,7 @@ char *control_mbrep(const char *c, char *crep, int *crep_len); char *mbrep(const char *c, char *crep, int *crep_len); int mbwidth(const char *c); int mb_cur_max(void); -char *make_mbchar(int chr, int *chr_mb_len); +char *make_mbchar(long chr, int *chr_mb_len); int parse_mbchar(const char *buf, char *chr, size_t *col); size_t move_mbleft(const char *buf, size_t pos); size_t move_mbright(const char *buf, size_t pos); @@ -592,7 +592,7 @@ int get_byte_kbinput(int kbinput , bool reset #endif ); -int get_unicode_kbinput(int kbinput +long get_unicode_kbinput(int kbinput #ifndef NANO_SMALL , bool reset #endif diff --git a/src/winio.c b/src/winio.c index a48ca48a..3ecde585 100644 --- a/src/winio.c +++ b/src/winio.c @@ -568,7 +568,8 @@ int parse_kbinput(WINDOW *win, bool *meta_key, bool *func_key /* Put back the multibyte equivalent of the * byte value. */ - byte_mb = make_mbchar(byte, &byte_mb_len); + byte_mb = make_mbchar((long)byte, + &byte_mb_len); seq = (int *)nmalloc(byte_mb_len * sizeof(int)); @@ -1232,16 +1233,17 @@ int get_byte_kbinput(int kbinput } /* Translate a Unicode sequence: turn a four-digit hexadecimal number - * from 0000 to FFFF(case-insensitive) into its corresponding multibyte + * from 0000 to FFFF (case-insensitive) into its corresponding multibyte * value. */ -int get_unicode_kbinput(int kbinput +long get_unicode_kbinput(int kbinput #ifndef NANO_SMALL , bool reset #endif ) { - static int uni_digits = 0, uni = 0; - int retval = ERR; + static int uni_digits = 0; + static long uni = 0; + long retval = ERR; #ifndef NANO_SMALL if (reset) { @@ -1328,7 +1330,7 @@ int get_unicode_kbinput(int kbinput } #ifdef DEBUG - fprintf(stderr, "get_unicode_kbinput(): kbinput = %d, uni_digits = %d, uni = %d, retval = %d\n", kbinput, uni_digits, uni, retval); + fprintf(stderr, "get_unicode_kbinput(): kbinput = %d, uni_digits = %d, uni = %ld, retval = %ld\n", kbinput, uni_digits, uni, retval); #endif return retval; @@ -1415,7 +1417,8 @@ int *get_verbatim_kbinput(WINDOW *win, size_t *kbinput_len) * that, leave the input as-is. */ int *parse_verbatim_kbinput(WINDOW *win, size_t *kbinput_len) { - int *kbinput, uni, *retval; + int *kbinput, *retval; + long uni; /* Read in the first keystroke. */ while ((kbinput = get_input(win, 1)) == NULL); -- 2.39.5