Properly trim the header line too, to fix wrap-around problems that
have been noticed by running top(1) in terminals that are too narrow (or on systems with usernames that were too long, pushing everything too far to the right). Note that this does *not* solve the wrap-around problem of the system statistics, which is an entirely different matter :-/ Tested on: i386, sparc64 (panther), amd64 (sledge) Approved by: davidxu (in principle)
This commit is contained in:
parent
58ea49c98e
commit
cd660671ce
@ -625,6 +625,33 @@ u_message()
|
||||
|
||||
static int header_length;
|
||||
|
||||
/*
|
||||
* Trim a header string to the current display width and return a newly
|
||||
* allocated area with the trimmed header.
|
||||
*/
|
||||
|
||||
char *
|
||||
trim_header(text)
|
||||
|
||||
char *text;
|
||||
|
||||
{
|
||||
char *s;
|
||||
int width;
|
||||
|
||||
s = NULL;
|
||||
width = display_width;
|
||||
header_length = strlen(text);
|
||||
if (header_length >= width) {
|
||||
s = malloc((width + 1) * sizeof(char));
|
||||
if (s == NULL)
|
||||
return (NULL);
|
||||
strncpy(s, text, width);
|
||||
s[width] = '\0';
|
||||
}
|
||||
return (s);
|
||||
}
|
||||
|
||||
/*
|
||||
* *_header(text) - print the header for the process area
|
||||
*
|
||||
@ -636,7 +663,12 @@ i_header(text)
|
||||
char *text;
|
||||
|
||||
{
|
||||
header_length = strlen(text);
|
||||
char *s;
|
||||
|
||||
s = trim_header(text);
|
||||
if (s != NULL)
|
||||
text = s;
|
||||
|
||||
if (header_status == ON)
|
||||
{
|
||||
putchar('\n');
|
||||
@ -647,6 +679,7 @@ char *text;
|
||||
{
|
||||
header_status = OFF;
|
||||
}
|
||||
free(s);
|
||||
}
|
||||
|
||||
/*ARGSUSED*/
|
||||
@ -655,6 +688,12 @@ u_header(text)
|
||||
char *text; /* ignored */
|
||||
|
||||
{
|
||||
char *s;
|
||||
|
||||
s = trim_header(text);
|
||||
if (s != NULL)
|
||||
text = s;
|
||||
|
||||
if (header_status == ERASE)
|
||||
{
|
||||
putchar('\n');
|
||||
@ -662,6 +701,7 @@ char *text; /* ignored */
|
||||
clear_eol(header_length);
|
||||
header_status = OFF;
|
||||
}
|
||||
free(s);
|
||||
}
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user