mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-23 08:24:18 +00:00
1 line
2.6 KiB
C
1 line
2.6 KiB
C
/* 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);
|
||
|
||
}
|
||
|
||
|