This is putx.c in view mode; [Download] [Up]
#include <curses.h>
#include <signal.h>
#include <stdio.h>
#define NCOLS 80
#define NLINES 24
#define MAXPATTERNS 4
struct locs {
char y,x;
};
typedef struct locs LOCS;
LOCS Layout[NCOLS * NLINES];
int
Pattern,
Numstars;
die()
{
signal(SIGINT, SIG_IGN); /* ignore rubouts */
mvcur(0, COLS-1, LINES-1, 0); /* go to bottom of screen */
endwin(); /* reset terminal state */
exit(0);
}
endcm()
{
die();
}
int inited;
int hrdcpy;
initcm()
{
reg char *sp;
char *getenv();
int pc(), die();
if (isatty(1))
{
gettmode();
if (sp=getenv("TERM"))
setterm(sp);
if (sp[0] == 'A') hrdcpy++;
signal(SIGINT, die);
}
else
{
printf("Need a terminal on %d\n", _tty_ch);
exit(1);
}
tputs(TI, 0, pc);
tputs(VS, 0, pc);
noecho();
nonl();
tputs(CL, NLINES, pc);
inited++;
}
/*
* main()
* {
* int x, y, cnt;
* putxstr(0, "this is only a test, had this been a real emergency...");
* }
*/
/*
* main()
* {
* int x, y, cnt;
* for (cnt = y = 0;;cnt++) {
* x = rand() % NCOLS-1;
* if (cnt > 40)
* {
* putx(x, '\n');
* cnt = 0;
* }
* putx(x, '*');
* }
* }
*/
putxstr(x, str)
int x; char *str;
{
register char *c;
for (c = str; *c != NULL; c++)
putx(x++, *c);
}
putx(x, ch)
int x; char ch;
{
static int y;
if (!inited) initcm();
if (ch == '\n')
{
putchar(ch);
if (y+1 < NLINES) y++;
return;
}
if (hrdcpy) putopt(0, x, ch);
else putopt(y, x, ch);
}
/*
* pc defined for tputs() (and _puts())
*/
pc(c)
reg char c; {
putchar(c);
}
putopt(y, x, ch)
int y, x; char ch;
{
static int lasty, lastx;
mvcur(lasty, lastx, y, x);
putchar(ch);
lasty = y;
if ((lastx = x + 1) >= NCOLS)
if (AM)
{
lastx = 0;
lasty++;
}
else
lastx = NCOLS - 1;
}
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.