void i_timeofday(time_t * tod) { static char buf[30]; if (buf[0] == '\0') gethostname(buf, sizeof(buf)); if (screen_length > 1 || !smart_terminal) { if (smart_terminal) { move(0, screen_width - 8 - strlen(buf) - 1); } else { if (fputs(" ", stdout) == EOF) exit(1); } #ifdef DEBUG { char *foo; foo = ctime(tod); addstrp(foo); } #endif printwp("%s %-8.8s", buf, &(ctime(tod)[11])); putn(); } }
void new_message(int type, const char *msgfmt,...) { va_list ap; va_start(ap, msgfmt); /* first, format the message */ vsnprintf(next_msg, sizeof(next_msg), msgfmt, ap); va_end(ap); if (next_msg[0] != '\0') { /* message there already -- can we clear it? */ /* yes -- write it and clear to end */ if ((type & MT_delayed) == 0) { move(y_message, 0); if (type & MT_standout) standoutp(); addstrp(next_msg); if (type & MT_standout) standendp(); clrtoeol(); msgon = TRUE; next_msg[0] = '\0'; if (smart_terminal) refresh(); } } }
/* * *_procstates(total, brkdn, names) - print the process summary line * * Assumptions: cursor is at the beginning of the line on entry */ void i_procstates(int total, int *brkdn) { if (screen_length > 2 || !smart_terminal) { int i; char procstates_buffer[MAX_COLS]; move(1, 0); clrtoeol(); /* write current number of processes and remember the value */ printwp("%d processes:", total); if (smart_terminal) move(1, 15); else { /* put out enough spaces to get to column 15 */ i = digits(total); while (i++ < 4) { if (putchar(' ') == EOF) exit(1); } } /* format and print the process state summary */ summary_format(procstates_buffer, sizeof(procstates_buffer), brkdn, procstate_names); addstrp(procstates_buffer); putn(); } }
/* * *_memory(stats) - print "Memory: " followed by the memory summary string */ void i_memory(int *stats) { if (screen_length > y_mem || !smart_terminal) { char memory_buffer[MAX_COLS]; move(y_mem, 0); clrtoeol(); addstrp("Memory: "); /* format and print the memory summary */ summary_format(memory_buffer, sizeof(memory_buffer), stats, memory_names); addstrp(memory_buffer); putn(); } }
void i_message(void) { move(y_message, 0); if (next_msg[0] != '\0') { standoutp(); addstrp(next_msg); standendp(); clrtoeol(); msgon = TRUE; next_msg[0] = '\0'; } else if (msgon) { clrtoeol(); msgon = FALSE; } }
void i_header(char *text) { if (header_status == Yes && (screen_length > y_header || !smart_terminal)) { if (!smart_terminal) { putn(); if (fputs(text, stdout) == EOF) exit(1); putn(); } else { move(y_header, 0); clrtoeol(); addstrp(text); } } }
void i_process(int line, char *thisline, int hl) { /* make sure we are on the correct line */ move(y_procs + line, 0); /* truncate the line to conform to our current screen width */ thisline[display_width] = '\0'; /* write the line out */ if (hl && smart_terminal) standoutp(); addstrp(thisline); if (hl && smart_terminal) standendp(); putn(); clrtoeol(); }
void i_loadave(pid_t mpid, double *avenrun) { if (screen_length > 1 || !smart_terminal) { int i; move(0, 0); clrtoeol(); addstrp("load averages"); /* mpid == -1 implies this system doesn't have an _mpid */ if (mpid != -1) printwp("last pid: %5ld; ", (long) mpid); for (i = 0; i < 3; i++) printwp("%c %5.2f", i == 0 ? ':' : ',', avenrun[i]); } }
void anykey(void) { int ch; ssize_t len; standoutp(); addstrp("Hit any key to continue: "); standendp(); if (smart_terminal) refresh(); else fflush(stdout); while (1) { len = read(STDIN_FILENO, &ch, 1); if (len == -1 && errno == EINTR) continue; if (len == 0) exit(1); break; } }
void i_cpustates(int64_t *ostates) { int i, first, cpu; double value; int64_t *states; char **names, *thisname; if (combine_cpus) { static double *values; if (!values) { values = calloc(num_cpustates, sizeof(*values)); if (!values) err(1, NULL); } memset(values, 0, num_cpustates * sizeof(*values)); for (cpu = 0; cpu < ncpu; cpu++) { names = cpustate_names; states = ostates + (CPUSTATES * cpu); i = 0; while ((thisname = *names++) != NULL) { if (*thisname != '\0') { /* retrieve the value and remember it */ values[i++] += *states++; } } } if (screen_length > 2 || !smart_terminal) { names = cpustate_names; i = 0; first = 0; move(2, 0); clrtoeol(); addstrp("All CPUs: "); while ((thisname = *names++) != NULL) { if (*thisname != '\0') { value = values[i++] / ncpu; /* if percentage is >= 1000, print it as 100% */ printwp((value >= 1000 ? "%s%4.0f%% %s" : "%s%4.1f%% %s"), first++ == 0 ? "" : ", ", value / 10., thisname); } } putn(); } return; } for (cpu = 0; cpu < ncpu; cpu++) { /* now walk thru the names and print the line */ names = cpustate_names; first = 0; states = ostates + (CPUSTATES * cpu); if (screen_length > 2 + cpu || !smart_terminal) { move(2 + cpu, 0); clrtoeol(); addstrp(cpustates_tag(cpu)); while ((thisname = *names++) != NULL) { if (*thisname != '\0') { /* retrieve the value and remember it */ value = *states++; /* if percentage is >= 1000, print it as 100% */ printwp((value >= 1000 ? "%s%4.0f%% %s" : "%s%4.1f%% %s"), first++ == 0 ? "" : ", ", value / 10., thisname); } } putn(); } } }