home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume26 / mytinfo / part01 / fillterm.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-12-26  |  1.5 KB  |  82 lines

  1. /*
  2.  * fillterm.c
  3.  *
  4.  * By Ross Ridge
  5.  * Public Domain
  6.  * 92/02/01 07:29:54
  7.  *
  8.  */
  9.  
  10. #include "defs.h"
  11. #include "term.h"
  12.  
  13. #ifdef USE_SCCS_IDS
  14. static const char SCCSid[] = "@(#) mytinfo fillterm.c 3.2 92/02/01 public domain, By Ross Ridge";
  15. #endif
  16.  
  17. TERMINAL _term_buf;
  18. TERMINAL *cur_term;
  19.  
  20. int
  21. _fillterm(name, path, buf)
  22. char *name, *buf;
  23. struct term_path *path; {
  24.     register int i, r;
  25.  
  26.     r = -1;
  27.  
  28.     for(i = NUM_OF_BOOLS; i;)
  29.         _term_buf.bools[--i] = -1;
  30.     for(i = NUM_OF_NUMS; i;)
  31.         _term_buf.nums[--i] = -2;
  32.     for(i = NUM_OF_STRS; i;)
  33.         _term_buf.strs[--i] = (char *) -1;
  34.  
  35.     _term_buf.name_all = NULL;
  36.     
  37.     r = _findterm(name, path, buf);
  38.     switch(r) {
  39.     case 1:
  40.         if (_gettcap(buf, &_term_buf, path) != 0)
  41.             return -3;
  42.         _tcapconv(); 
  43.         _tcapdefault();
  44.         break;
  45.     case 2:
  46.         if (_gettinfo(buf, &_term_buf, path) != 0)
  47.             return -3;
  48.         break;
  49.     case 3:
  50.         if (_gettbin(buf, &_term_buf) != 0)
  51.             return -3;
  52.         break;
  53.     default:
  54.         return r;
  55.     }
  56.  
  57.     if ((_term_buf.name = _addstr(name)) == NULL)
  58.         return -3;
  59.  
  60.     for(i = NUM_OF_BOOLS; i;)
  61.         if (_term_buf.bools[--i] == -1)
  62.             _term_buf.bools[i] = 0;
  63.     for(i = NUM_OF_NUMS; i;)
  64.         if (_term_buf.nums[--i] == -2)
  65.             _term_buf.nums[i] = -1;
  66.     for(i = NUM_OF_STRS; i;)
  67.         if (_term_buf.strs[--i] == (char *) -1)
  68.             _term_buf.strs[i] = NULL;
  69.  
  70.     _term_buf.fd = 1;
  71.     _term_buf.pad = 1;
  72.     _term_buf.baudrate = 0;
  73.     _term_buf.strbuf = _endstr();
  74.  
  75.     cur_term = (TERMINAL *) malloc(sizeof(_term_buf));
  76.     if (cur_term == NULL)
  77.         return -3;
  78.     memcpy((anyptr)cur_term, (anyptr)&_term_buf, sizeof(_term_buf));
  79.  
  80.     return r;
  81. }
  82.