various cleanups to chars.c and related code

git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2631 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
master
David Lawrence Ramsey 2005-06-12 17:48:46 +00:00
parent 6315e2ff39
commit d8640480c3
5 changed files with 75 additions and 84 deletions

View File

@ -54,6 +54,13 @@ CVS code -
and NANO_APPEND_KEY are. Changes to shortcut_init(), usage(),
main(), search_init(), nanorc.sample, nano.1, nanorc.5,
nano.texi, etc. (DLR)
- Various cleanups in chars.c. Remove some unnecessary ctype
wrappers, change other ctype wrappers to take wint_t instead
of wchar_t, and rename some functions for consistency. Changes
to is_alnum_mbchar(), is_blank_char() (renamed nisblank()),
is_blank_mbchar(), is_blank_wchar() (renamed niswblank()), and
is_cntrl_wchar(), etc.; removal of is_alnum_char() and
is_alnum_wchar(). (DLR)
- chars.c:
make_mbstring()
- Change erroneous ENABLE_EXTRA #ifdef to NANO_EXTRA to fix a
@ -145,6 +152,8 @@ CVS code -
processing, and rename to disable_extended_io(). (DLR)
- nano.h:
- Add macro charset(), a wrapper that calls memset(). (DLR)
- Readd #defines for the isblank() and iswblank() equivalents.
(DLR)
- rcfile.c:
color_to_int()
- Since colorname's being NULL is handled elsewhere now, assert

View File

@ -46,12 +46,6 @@ bool is_byte(int c)
return ((unsigned int)c == (unsigned char)c);
}
/* This function is equivalent to isalnum(). */
bool is_alnum_char(int c)
{
return isalnum(c);
}
/* This function is equivalent to isalnum() for multibyte characters. */
bool is_alnum_mbchar(const char *c)
{
@ -67,31 +61,27 @@ bool is_alnum_mbchar(const char *c)
wc = (unsigned char)*c;
}
return is_alnum_wchar(wc);
return iswalnum(wc);
} else
#endif
return is_alnum_char((unsigned char)*c);
return isalnum((unsigned char)*c);
}
#ifdef NANO_WIDE
/* This function is equivalent to isalnum() for wide characters. */
bool is_alnum_wchar(wchar_t wc)
{
return iswalnum(wc);
}
#endif
#ifndef HAVE_ISBLANK
/* This function is equivalent to isblank(). */
bool is_blank_char(int c)
bool nisblank(int c)
{
return
#ifdef HAVE_ISBLANK
isblank(c)
#else
isspace(c) && (c == '\t' || !is_cntrl_char(c))
#endif
;
return isspace(c) && (c == '\t' || !is_cntrl_char(c));
}
#endif
#if defined(NANO_WIDE) && !defined(HAVE_ISWBLANK)
/* This function is equivalent to iswblank(). */
bool niswblank(wint_t wc)
{
return iswspace(wc) && (wc == '\t' || !is_cntrl_wchar(wc));
}
#endif
/* This function is equivalent to isblank() for multibyte characters. */
bool is_blank_mbchar(const char *c)
@ -108,26 +98,12 @@ bool is_blank_mbchar(const char *c)
wc = (unsigned char)*c;
}
return is_blank_wchar(wc);
return iswblank(wc);
} else
#endif
return is_blank_char((unsigned char)*c);
return isblank((unsigned char)*c);
}
#ifdef NANO_WIDE
/* This function is equivalent to isblank() for wide characters. */
bool is_blank_wchar(wchar_t wc)
{
return
#ifdef HAVE_ISWBLANK
iswblank(wc)
#else
iswspace(wc) && (wc == '\t' || !is_cntrl_wchar(wc))
#endif
;
}
#endif
/* This function is equivalent to iscntrl(), except in that it also
* handles control characters with their high bits set. */
bool is_cntrl_char(int c)
@ -136,6 +112,17 @@ bool is_cntrl_char(int c)
(127 <= c && c < 160);
}
#ifdef NANO_WIDE
/* This function is equivalent to iscntrl() for wide characters, except
* in that it also handles wide control characters with their high bits
* set. */
bool is_cntrl_wchar(wint_t wc)
{
return (-128 <= wc && wc < -96) || (0 <= wc && wc < 32) ||
(127 <= wc && wc < 160);
}
#endif
/* This function is equivalent to iscntrl() for multibyte characters,
* except in that it also handles multibyte control characters with
* their high bits set. */
@ -159,16 +146,6 @@ bool is_cntrl_mbchar(const char *c)
return is_cntrl_char((unsigned char)*c);
}
#ifdef NANO_WIDE
/* This function is equivalent to iscntrl() for wide characters, except
* in that it also handles wide control characters with their high bits
* set. */
bool is_cntrl_wchar(wchar_t wc)
{
return (0 <= wc && wc < 32) || (127 <= wc && wc < 160);
}
#endif
/* c is a control character. It displays as ^@, ^?, or ^[ch], where ch
* is c + 64. We return that character. */
unsigned char control_rep(unsigned char c)
@ -182,7 +159,22 @@ unsigned char control_rep(unsigned char c)
return c + 64;
}
/* c is a multibyte control character. It displays as ^@, ^?, or ^[ch]
#ifdef NANO_WIDE
/* c is a wide control character. It displays as ^@, ^?, or ^[ch],
* where ch is c + 64. We return that wide character. */
wchar_t control_wrep(wchar_t wc)
{
/* Treat newlines embedded in a line as encoded nulls. */
if (wc == '\n')
return '@';
else if (wc == NANO_CONTROL_8)
return '?';
else
return wc + 64;
}
#endif
/* c is a multibyte control character. It displays as ^@, ^?, or ^[ch],
* where ch is c + 64. We return that multibyte character. */
char *control_mbrep(const char *c, char *crep, int *crep_len)
{
@ -221,21 +213,6 @@ char *control_mbrep(const char *c, char *crep, int *crep_len)
#endif
}
#ifdef NANO_WIDE
/* c is a wide control character. It displays as ^@, ^?, or ^[ch] where
* ch is c + 64. We return that wide character. */
wchar_t control_wrep(wchar_t wc)
{
/* Treat newlines embedded in a line as encoded nulls. */
if (wc == '\n')
return '@';
else if (wc == NANO_CONTROL_8)
return '?';
else
return wc + 64;
}
#endif
/* This function is equivalent to wcwidth() for multibyte characters. */
int mbwidth(const char *c)
{

View File

@ -105,8 +105,15 @@
#endif
#endif
/* If no strcasecmp(), strncasecmp(), strcasestr(), strnlen(),
* getdelim(), or getline(), use the versions we have. */
/* If no isblank(), iswblank(), strcasecmp(), strncasecmp(),
* strcasestr(), strnlen(), getdelim(), or getline(), use the versions
* we have. */
#ifndef HAVE_ISBLANK
#define isblank nisblank
#endif
#ifndef HAVE_ISWBLANK
#define iswblank niswblank
#endif
#ifndef HAVE_STRCASECMP
#define strcasecmp nstrcasecmp
#endif

View File

@ -160,26 +160,24 @@ extern char *homedir;
/* Public functions in chars.c. */
bool is_byte(int c);
bool is_alnum_char(int c);
bool is_alnum_mbchar(const char *c);
#ifdef NANO_WIDE
bool is_alnum_wchar(wchar_t wc);
#ifndef HAVE_ISBLANK
bool nisblank(int c);
#endif
#if defined(NANO_WIDE) && !defined(HAVE_ISWBLANK)
bool niswblank(wint_t wc);
#endif
bool is_blank_char(int c);
bool is_blank_mbchar(const char *c);
#ifdef NANO_WIDE
bool is_blank_wchar(wchar_t wc);
#endif
bool is_cntrl_char(int c);
bool is_cntrl_mbchar(const char *c);
#ifdef NANO_WIDE
bool is_cntrl_wchar(wchar_t wc);
bool is_cntrl_wchar(wint_t wc);
#endif
bool is_cntrl_mbchar(const char *c);
unsigned char control_rep(unsigned char c);
char *control_mbrep(const char *c, char *crep, int *crep_len);
#ifdef NANO_WIDE
wchar_t control_wrep(wchar_t c);
#endif
char *control_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);

View File

@ -129,7 +129,7 @@ void rcfile_error(const char *msg, ...)
* the end of the line. */
char *parse_next_word(char *ptr)
{
while (!is_blank_char(*ptr) && *ptr != '\0')
while (!isblank(*ptr) && *ptr != '\0')
ptr++;
if (*ptr == '\0')
@ -138,7 +138,7 @@ char *parse_next_word(char *ptr)
/* Null-terminate and advance ptr. */
*ptr++ = '\0';
while (is_blank_char(*ptr))
while (isblank(*ptr))
ptr++;
return ptr;
@ -178,7 +178,7 @@ char *parse_argument(char *ptr)
ptr = last_quote + 1;
}
if (ptr != NULL)
while (is_blank_char(*ptr))
while (isblank(*ptr))
ptr++;
return ptr;
}
@ -227,7 +227,7 @@ char *parse_next_regex(char *ptr)
/* Continue until the end of the line, or a " followed by a space, a
* blank character, or \0. */
while ((*ptr != '"' || (!is_blank_char(*(ptr + 1)) &&
while ((*ptr != '"' || (!isblank(*(ptr + 1)) &&
*(ptr + 1) != '\0')) && *ptr != '\0')
ptr++;
@ -242,7 +242,7 @@ char *parse_next_regex(char *ptr)
/* Null terminate and advance ptr. */
*ptr++ = '\0';
while (is_blank_char(*ptr))
while (isblank(*ptr))
ptr++;
return ptr;
@ -507,7 +507,7 @@ void parse_rcfile(FILE *rcstream)
lineno++;
ptr = buf;
while (is_blank_char(*ptr))
while (isblank(*ptr))
ptr++;
/* If we have a blank line or a comment, skip to the next