This is screen.c in view mode; [Download] [Up]
/*
* Routines to read and copy the virtual screen image file.
*/
#include <stdio.h>
#include <curses.h>
#include "config.h"
#include "param.h"
#include "status.h"
/*
* Do a screen dump. Actually, the screen is already dumped, all we
* do is copy the file.
*/
void
screen_dump()
{
FILE *fp_in, *fp_out, *my_fopen();
char buf[MAX_COL];
void error_win();
int i;
/* open for append */
if (!(fp_out = my_fopen(param->dumpfile, "a"))) {
sprintf(buf, "\"%s\" for write", param->dumpfile);
error_win(0, "Can't open screen dump file", buf);
return;
}
#ifdef SHAREDMEM
for (i=0; i<LINES; i++)
fprintf(fp_out, "%s\n", status->vs[i]);
#else /* SHAREDMEM */
/* not guaranteed to exist yet */
if (!(fp_in = my_fopen(status->vs_path, "r"))) {
fclose(fp_in);
return;
}
/* skip the x, y coordinates */
fgets(buf, 10, fp_in);
while (fgets(buf, MAX_COL, fp_in) != NULL)
fputs(buf, fp_out);
fclose(fp_in);
#endif /* SHAREDMEM */
fclose(fp_out);
return;
}
/*
* Read the virtual screen and paint its contents to the stdscr using
* curses(3). Move the cursor where it belongs.
*/
void
load_vs()
{
register int i;
FILE *fp, *my_fopen();
int row, col, max_col;
char buf[MAX_COL];
clearok(curscr, TRUE);
erase();
#ifdef SHAREDMEM
for (i=0; i<LINES; i++)
mvaddstr(i, 0, status->vs[i]);
move(status->row, status->col);
#else /* SHAREDMEM */
/* not guaranteed to exist yet */
if (!(fp = my_fopen(status->vs_path, "r")))
return;
/* get the x, y coordinates */
fgets(buf, 10, fp);
sscanf(buf, "%d,%d\n", &row, &col);
i = 0;
max_col = (COLS > MAX_COL-1) ? MAX_COL-1 : COLS;
while (fgets(buf, MAX_COL, fp) != NULL) {
/* zap the line feed */
buf[max_col] = '\0';
mvaddstr(i++, 0, buf);
}
fclose(fp);
move(row, col);
#endif /* SHAREDMEM */
refresh();
return;
}
/*
* Zap the virtual screen file (or clear it).
*/
void
zap_vs()
{
#ifdef SHAREDMEM
status->clr = 1;
#else /* SHAREDMEM */
unlink(status->vs_path);
#endif /* SHAREDMEM */
return;
}
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.