- nlist("/vmunix", nlst);
- (*curcmd->c_open)();
- signal(SIGINT, die);
- signal(SIGQUIT, die);
- signal(SIGTERM, die);
-
- /* Initialize curses. */
- initscr();
- wnd = newwin(20, 70, 3, 5);
-
-#ifdef notdef
- gethostname(hostname, sizeof (hostname));
-#endif
- lseek(kmem, nlst[X_CCPU].n_value, 0);
- read(kmem, &ccpu, sizeof (ccpu));
- lccpu = log(ccpu);
- (*curcmd->c_fetch)();
- labels();
-
- known[0].k_uid = -1;
- strcpy(known[0].k_name, "<idle>");
- numknown = 1;
- dellave = 0.0;
-
- signal(SIGALRM, display);
- signal(SIGTSTP, suspend);
- display();
- noecho();
- crmode();
- for (;;) {
- col = 0;
- move(22, 0);
- do {
- refresh();
- ch = getch() & 0177;
- if (ch == 0177 && ferror(stdin)) {
- clearerr(stdin);
- continue;
- }
- if (ch >= 'A' && ch <= 'Z')
- ch += 'a' - 'A';
- if (col == 0) {
- if (ch == CTRL(l)) {
- wrefresh(curscr);
- continue;
- }
- if (ch != ':')
- continue;
- move(22, 0);
- clrtoeol();
- }
- if (ch == _tty.sg_erase && col > 0) {
- if (col == 1 && line[0] == ':')
- continue;
- col--;
- goto doerase;
- }
- if (ch == CTRL(w) && col > 0) {
- while (--col >= 0 && isspace(line[col]))
- ;
- col++;
- while (--col >= 0 && !isspace(line[col]))
- if (col == 0 && line[0] == ':')
- break;
- col++;
- goto doerase;
- }
- if (ch == _tty.sg_kill && col > 0) {
- col = 0;
- if (line[0] == ':')
- col++;
- doerase:
- move(22, col);
- clrtoeol();
- continue;
- }
- if (isprint(ch)) {
- line[col] = ch;
- mvaddch(22, col, ch);
- col++;
- }
- } while (col == 0 || (ch != '\r' && ch != '\n'));
- line[col] = '\0';
- command(line + 1);
- }
-}
-
-command(cmd)
- char *cmd;
-{
- register char *cp;
- register struct cmdtab *p;
- char *arg;
-
- for (cp = cmd; *cp && !isspace(*cp); cp++)
- ;
- if (*cp)
- *cp++ = '\0';
- if (strcmp(cmd, "quit") == 0)
- die();
- if (strcmp(cmd, "status") == 0 || strcmp(cmd, "help") == 0) {
- status();
- return;
- }
- if (strcmp(cmd, "load") == 0) {
- lseek(kmem, nlst[X_AVENRUN].n_value, L_SET);
- read(kmem, &lave, sizeof (lave));
- mvprintw(22, 0, "%4.1f", lave);
- clrtoeol();
- return;