82 lines
1.5 KiB
C
82 lines
1.5 KiB
C
/*
|
|
* fillterm.c
|
|
*
|
|
* By Ross Ridge
|
|
* Public Domain
|
|
* 92/02/01 07:29:54
|
|
*
|
|
*/
|
|
|
|
#include "defs.h"
|
|
#include <term.h>
|
|
|
|
#ifdef USE_SCCS_IDS
|
|
static const char SCCSid[] = "@(#) mytinfo fillterm.c 3.2 92/02/01 public domain, By Ross Ridge";
|
|
#endif
|
|
|
|
TERMINAL _term_buf;
|
|
TERMINAL *cur_term;
|
|
|
|
int
|
|
_fillterm(name, path, buf)
|
|
char *name, *buf;
|
|
struct term_path *path; {
|
|
register int i, r;
|
|
|
|
r = -1;
|
|
|
|
for(i = NUM_OF_BOOLS; i;)
|
|
_term_buf.bools[--i] = -1;
|
|
for(i = NUM_OF_NUMS; i;)
|
|
_term_buf.nums[--i] = -2;
|
|
for(i = NUM_OF_STRS; i;)
|
|
_term_buf.strs[--i] = (char *) -1;
|
|
|
|
_term_buf.name_all = NULL;
|
|
|
|
r = _findterm(name, path, buf);
|
|
switch(r) {
|
|
case 1:
|
|
if (_gettcap(buf, &_term_buf, path) != 0)
|
|
return -3;
|
|
_tcapconv();
|
|
_tcapdefault();
|
|
break;
|
|
case 2:
|
|
if (_gettinfo(buf, &_term_buf, path) != 0)
|
|
return -3;
|
|
break;
|
|
case 3:
|
|
if (_gettbin(buf, &_term_buf) != 0)
|
|
return -3;
|
|
break;
|
|
default:
|
|
return r;
|
|
}
|
|
|
|
if ((_term_buf.name = _addstr(name)) == NULL)
|
|
return -3;
|
|
|
|
for(i = NUM_OF_BOOLS; i;)
|
|
if (_term_buf.bools[--i] == -1)
|
|
_term_buf.bools[i] = 0;
|
|
for(i = NUM_OF_NUMS; i;)
|
|
if (_term_buf.nums[--i] == -2)
|
|
_term_buf.nums[i] = -1;
|
|
for(i = NUM_OF_STRS; i;)
|
|
if (_term_buf.strs[--i] == (char *) -1)
|
|
_term_buf.strs[i] = NULL;
|
|
|
|
_term_buf.fd = 1;
|
|
_term_buf.pad = 1;
|
|
_term_buf.baudrate = 0;
|
|
_term_buf.strbuf = _endstr();
|
|
|
|
cur_term = (TERMINAL *) malloc(sizeof(_term_buf));
|
|
if (cur_term == NULL)
|
|
return -3;
|
|
memcpy((anyptr)cur_term, (anyptr)&_term_buf, sizeof(_term_buf));
|
|
|
|
return r;
|
|
}
|