Annotation of 43BSD/ingres/source/libq/IIgettup.c, revision 1.1.1.1

1.1       root        1: # include      <ingres.h>
                      2: # include      <symbol.h>
                      3: # include      "IIglobals.h"
                      4: # include      <sccs.h>
                      5: # include      <errors.h>
                      6: 
                      7: SCCSID(@(#)IIgettup.c  8.2     2/8/85)
                      8: 
                      9: 
                     10: /*
                     11: **     IIgettup is called to retrieve one instance
                     12: **     of the target list into the c-variables.
                     13: **
                     14: **     Integers and Floating point numbers can be converted
                     15: **     to other numbers.
                     16: **
                     17: **     Characters fields must match other character fields.
                     18: */
                     19: 
                     20: IIgettup(file_name, line_no)
                     21: char   *file_name;
                     22: int    line_no;
                     23: {
                     24:        register int            length, domain;
                     25:        register struct retsym  *ret;
                     26:        struct retsym           sym;
                     27:        char                    temp[256], *IIitos(), *s;
                     28: 
                     29: 
                     30: 
                     31:        if (IIproc_name = file_name)
                     32:                IIline_no = line_no;
                     33: 
                     34:        if (IIerrflag)
                     35:                return (0);     /* error. no data will be coming */
                     36: 
                     37:        ret = IIretsym;
                     38:        domain = 0;
                     39: 
                     40:        for (;;)
                     41:        {
                     42:                if (IIpb_get(&IIpb, &sym, 2) != 2)
                     43:                        IIsyserr("IIgettup bad rdpipe 1");
                     44:                if (length = sym.len & 0377)
                     45:                        if (IIpb_get(&IIpb, temp, length) != length)
                     46:                                IIsyserr("IIgettup bad rdpipe-2 %d", length);
                     47: #              ifdef xETR1
                     48:                if (IIdebug)
                     49:                {
                     50:                        printf("%s ent ", IIproc_name ? IIproc_name : "");
                     51:                        printf("gettup type %d len %d\n", sym.type, length);
                     52:                }
                     53: #              endif
                     54:                domain++;
                     55:                switch (sym.type)
                     56:                {
                     57: 
                     58:                  case INT:
                     59:                  case FLOAT:
                     60:                        if (ret->type == CHAR)
                     61:                        {
                     62:                                s = IIitos(domain);
                     63:                                IIerror(NUMINTOCHAR, 1, &s);
                     64:                                return (0);
                     65:                        }
                     66:                        if (IIconvert(temp, ret->addr, sym.type, length, ret->type, ret->len & 0377) < 0)
                     67:                        {
                     68:                                        s = IIitos(domain);
                     69:                                        IIerror(NUMOVFLO, 1, &s);
                     70:                        }
                     71:                        break;
                     72: 
                     73:                  case CHAR:
                     74:                        if (ret->type != CHAR)
                     75:                        {
                     76:                                s = IIitos(domain);
                     77:                                IIerror(CHARINTONUM, 1, &s);
                     78:                                return (0);
                     79:                        }
                     80:                        IIbmove(temp, ret->addr, length);
                     81:                        ret->addr[length] = '\0';       /* null terminate string */
                     82:                        break;
                     83: 
                     84:                  case EOTUP:
                     85:                        return (1);
                     86: 
                     87:                  case EXIT:
                     88:                        return (0);
                     89:                }
                     90:                ret++;
                     91:        }
                     92: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.