Files
Digital-Research-Source-Code/CPM OPERATING SYSTEMS/CPM 68K/cpm68k_pgms/sdbas/TBL.C
Sepp J Morris 31738079c4 Upload
Digital Research
2020-11-06 18:50:37 +01:00

1 line
2.6 KiB
C
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/* SDB - table output routines */
#include <stdio.h>
#include "sdbio.h"
static char buffer[TABLEMAX+1];
int bndx;
/* db_thead - print a table header */
db_thead(fp,slptr)
FILE *fp; struct sel *slptr;
{
struct sattr *saptr;
int twidth,fwidth,i;
char *aname;
/* compute the table width */
twidth = 1;
for (saptr = slptr->sl_attrs; saptr != NULL; saptr = saptr->sa_next)
twidth += saptr->sa_attr->at_size + 3;
/* print the top line of the table */
bstart();
for (i = 0; i < twidth; i++)
binsert('-');
bprint(fp);
/* print the label line of the table */
bstart();
for (saptr = slptr->sl_attrs; saptr != NULL; saptr = saptr->sa_next) {
fwidth = saptr->sa_attr->at_size;
binsert('|'); binsert(' ');
if ((aname = saptr->sa_name) == NULL)
aname = saptr->sa_aname;
for (i = 0; i < fwidth; i++)
if (*aname != 0)
binsert(*aname++);
else
binsert(' ');
binsert(' ');
}
binsert('|');
bprint(fp);
/* print the line under the labels */
bstart();
for (i = 0; i < twidth; i++)
binsert('-');
bprint(fp);
}
/* db_tfoot - print a table foot */
db_tfoot(fp,slptr)
FILE *fp; struct sel *slptr;
{
struct sattr *saptr;
int twidth,i;
/* compute the table width */
twidth = 1;
for (saptr = slptr->sl_attrs; saptr != NULL; saptr = saptr->sa_next)
twidth += saptr->sa_attr->at_size + 3;
/* print the line at the foot of the table */
bstart();
for (i = 0; i < twidth; i++)
binsert('-');
bprint(fp);
}
/* db_tentry - print a table entry */
db_tentry(fp,slptr)
FILE *fp; struct sel *slptr;
{
struct sattr *saptr;
int fwidth,i;
/* print a table entry */
bstart();
for (saptr = slptr->sl_attrs; saptr != NULL; saptr = saptr->sa_next) {
fwidth = saptr->sa_attr->at_size;
binsert('|'); binsert(' ');
for (i = 0; i < fwidth; i++)
if (saptr->sa_aptr[i] != 0)
binsert(saptr->sa_aptr[i]);
else
binsert(' ');
binsert(' ');
}
binsert('|');
bprint(fp);
}
/* bstart - start building a line */
static bstart()
{
bndx = 0;
}
/* binsert - insert a character into the buffer */
static binsert(ch)
int ch;
{
if (bndx < TABLEMAX)
buffer[bndx++] = ch;
}
/* bprint - print the current line */
static bprint(fp)
FILE *fp;
{
buffer[bndx] = EOS;
fprintf(fp,"%s\n",buffer);
}