version 1.31, 2007/11/01 19:10:32 |
version 1.32, 2007/11/22 11:01:04 |
|
|
static char *cpustates_tag(int); |
static char *cpustates_tag(int); |
static int string_count(char **); |
static int string_count(char **); |
static void summary_format(char *, size_t, int *, char **); |
static void summary_format(char *, size_t, int *, char **); |
static int readlinedumb(char *, int, int); |
static int readlinedumb(char *, int); |
|
|
#define lineindex(l) ((l)*display_width) |
#define lineindex(l) ((l)*display_width) |
|
|
|
|
|
|
|
|
static int |
static int |
readlinedumb(char *buffer, int size, int numeric) |
readlinedumb(char *buffer, int size) |
{ |
{ |
char *ptr = buffer, ch, cnt = 0, maxcnt = 0; |
char *ptr = buffer, ch, cnt = 0, maxcnt = 0; |
extern volatile sig_atomic_t leaveflag; |
extern volatile sig_atomic_t leaveflag; |
|
|
} |
} |
} |
} |
/* check for character validity and buffer overflow */ |
/* check for character validity and buffer overflow */ |
else if (cnt == size || (numeric && !isdigit(ch)) || |
else if (cnt == size || !isprint(ch)) { |
!isprint(ch)) { |
|
/* not legal */ |
/* not legal */ |
if (putchar('\7') == EOF) |
if (putchar('\7') == EOF) |
exit(1); |
exit(1); |
|
|
|
|
/* return either inputted number or string length */ |
/* return either inputted number or string length */ |
putr(); |
putr(); |
return (cnt == 0 ? -1 : numeric ? atoi(buffer) : cnt); |
return (cnt == 0 ? -1 : cnt); |
} |
} |
|
|
int |
int |
readline(char *buffer, int size, int numeric) |
readline(char *buffer, int size) |
{ |
{ |
size_t cnt; |
size_t cnt; |
|
|
|
|
if (smart_terminal) |
if (smart_terminal) |
getnstr(buffer, size); |
getnstr(buffer, size); |
else |
else |
return readlinedumb(buffer, size, numeric); |
return readlinedumb(buffer, size); |
|
|
cnt = strlen(buffer); |
cnt = strlen(buffer); |
if (cnt > 0 && buffer[cnt - 1] == '\n') |
if (cnt > 0 && buffer[cnt - 1] == '\n') |
buffer[cnt - 1] = '\0'; |
buffer[cnt - 1] = '\0'; |
return (cnt == 0 ? -1 : numeric ? atoi(buffer) : cnt); |
return (cnt == 0 ? -1 : cnt); |
} |
} |
|
|
/* internal support routines */ |
/* internal support routines */ |