|
|
researchv10 Norman
#include <curses.h>
#include <signal.h>
#ifdef DEBUGfoo
#undef LINES
#define LINES 5
#endif
main(argc, argv)
char **argv;
{
FILE *fd;
char linebuf[512];
int line;
int done();
if (argc < 2) {
(void) fprintf(stderr, "Usage: show file\n");
exit(1);
}
fd = fopen(argv[1], "r");
if (fd == NULL) {
perror(argv[1]);
exit(2);
}
(void) signal(SIGINT, done); /* die gracefully */
initscr(); /* initialize curses */
noecho(); /* turn off tty echo */
cbreak(); /* enter cbreak mode */
nonl(); /* allow more optimizations */
idlok(stdscr, TRUE); /* allow insert/delete line */
for (;;) { /* for each screen full */
(void) move(0, 0);
/* werase(stdscr); */
for (line=0; line<LINES; line++) {
if (fgets(linebuf, sizeof linebuf, fd) == NULL) {
clrtobot();
done();
}
(void) mvprintw(line, 0, "%s", linebuf);
}
(void) refresh(); /* sync screen */
if(getch() == 'q') /* wait for user to read it */
done();
}
}
/*
* Clean up and exit.
*/
done()
{
(void) move(LINES-1,0); /* to lower left corner */
clrtoeol(); /* clear bottom line */
(void) refresh(); /* flush out everything */
endwin(); /* curses cleanup */
exit(0);
}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.