fix fallout from isprint() changes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
ad7d94bdc7
commit
c270454f8f
@ -129,7 +129,7 @@ int wc_main(int argc UNUSED_PARAM, char **argv)
|
||||
--counts[WC_CHARS];
|
||||
goto DO_EOF; /* Treat an EOF as '\r'. */
|
||||
}
|
||||
if (isprint(c)) {
|
||||
if (isprint_asciionly(c)) {
|
||||
++linepos;
|
||||
if (!isspace(c)) {
|
||||
in_word = 1;
|
||||
|
47
editors/vi.c
47
editors/vi.c
@ -30,9 +30,10 @@
|
||||
#if ENABLE_LOCALE_SUPPORT
|
||||
|
||||
#if ENABLE_FEATURE_VI_8BIT
|
||||
# define Isprint(c) isprint(c)
|
||||
//FIXME: this does not work properly for Unicode anyway
|
||||
# define Isprint(c) (isprint)(c)
|
||||
#else
|
||||
# define Isprint(c) (isprint(c) && (unsigned char)(c) < 0x7f)
|
||||
# define Isprint(c) isprint_asciionly(c)
|
||||
#endif
|
||||
|
||||
#else
|
||||
@ -891,7 +892,7 @@ static void colon(char *buf)
|
||||
li, ch);
|
||||
} else if (strncmp(cmd, "file", i) == 0) { // what File is this
|
||||
if (b != -1 || e != -1) {
|
||||
not_implemented("No address allowed on this command");
|
||||
status_line_bold("No address allowed on this command");
|
||||
goto vc1;
|
||||
}
|
||||
if (args[0]) {
|
||||
@ -2588,36 +2589,41 @@ static void status_line(const char *format, ...)
|
||||
// copy s to buf, convert unprintable
|
||||
static void print_literal(char *buf, const char *s)
|
||||
{
|
||||
char *d;
|
||||
unsigned char c;
|
||||
char b[2];
|
||||
|
||||
b[1] = '\0';
|
||||
buf[0] = '\0';
|
||||
if (!s[0])
|
||||
s = "(NULL)";
|
||||
|
||||
d = buf;
|
||||
for (; *s; s++) {
|
||||
int c_is_no_print;
|
||||
|
||||
c = *s;
|
||||
c_is_no_print = (c & 0x80) && !Isprint(c);
|
||||
if (c_is_no_print) {
|
||||
strcat(buf, SOn);
|
||||
strcpy(d, SOn);
|
||||
d += sizeof(SOn)-1;
|
||||
c = '.';
|
||||
}
|
||||
if (c < ' ' || c == 127) {
|
||||
strcat(buf, "^");
|
||||
if (c == 127)
|
||||
if (c < ' ' || c == 0x7f) {
|
||||
*d++ = '^';
|
||||
c |= '@'; /* 0x40 */
|
||||
if (c == 0x7f)
|
||||
c = '?';
|
||||
else
|
||||
c += '@';
|
||||
}
|
||||
b[0] = c;
|
||||
strcat(buf, b);
|
||||
if (c_is_no_print)
|
||||
strcat(buf, SOs);
|
||||
if (*s == '\n')
|
||||
strcat(buf, "$");
|
||||
if (strlen(buf) > MAX_INPUT_LEN - 10) // paranoia
|
||||
*d++ = c;
|
||||
*d = '\0';
|
||||
if (c_is_no_print) {
|
||||
strcpy(d, SOs);
|
||||
d += sizeof(SOs)-1;
|
||||
}
|
||||
if (*s == '\n') {
|
||||
*d++ = '$';
|
||||
*d = '\0';
|
||||
}
|
||||
if (d - buf > MAX_INPUT_LEN - 10) // paranoia
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -2982,11 +2988,6 @@ static void do_cmd(int c)
|
||||
default: // unrecognized command
|
||||
buf[0] = c;
|
||||
buf[1] = '\0';
|
||||
if (c < ' ') {
|
||||
buf[0] = '^';
|
||||
buf[1] = c + '@';
|
||||
buf[2] = '\0';
|
||||
}
|
||||
not_implemented(buf);
|
||||
end_cmd_q(); // stop adding to q
|
||||
case 0x00: // nul- ignore
|
||||
|
@ -5572,6 +5572,10 @@ static int process_command_subs(o_string *dest, const char *s)
|
||||
}
|
||||
#endif /* ENABLE_HUSH_TICK */
|
||||
|
||||
#if !ENABLE_HUSH_FUNCTIONS
|
||||
#define parse_group(dest, ctx, input, ch) \
|
||||
parse_group(ctx, input, ch)
|
||||
#endif
|
||||
static int parse_group(o_string *dest, struct parse_context *ctx,
|
||||
struct in_str *input, int ch)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user