ddlp.c

来自「db.* (pronounced dee-be star) is an adva」· C语言 代码 · 共 2,072 行 · 第 1/5 页

C
2,072
字号
        if (ddlp_g.abort_flag)            return(-1);    }    break;  case 38:#line 373 "ddlp.y"    {        in_db = 1;        yyerrok;        dderror(DB_TEXT("missing '{'"), yyvsp[-1].tstr.strline);        vtstrcpy(ddlp_g.db_name, yyvsp[-1].tstr.str);        if (ddlp_g.abort_flag)            return(-1);    }    break;  case 39:#line 386 "ddlp.y"    {        if ((id_list = (ID_INFO *) psp_cGetMemory(sizeof(ID_INFO), 0)) == NULL)            ddlp_abort(DB_TEXT("out of memory"));        vtstrcpy(id_list->id_name, fld_comp);        vtstrcpy(id_list->id_rec, rec_comp);        if (ddlp_g.s_flag)        {            vtstrlwr(id_list->id_name);            vtstrlwr(id_list->id_rec);        }        id_list->id_line = ddlp_g.line;        id_list->next_id = NULL;        currid = id_list;        if (ddlp_g.abort_flag)            return(-1);    }    break;  case 40:#line 404 "ddlp.y"    {        for ( ids = id_list; ids; ids = ids->next_id )        {            if ( vtstrcmp(ids->id_name, fld_comp) == 0 )            {                if ( vtstrcmp(ids->id_rec, rec_comp) == 0 )                {                    if ( vtstrlen(rec_comp) )                        vstprintf(ddlp_g.msg,                            DB_TEXT("identifier %s.%s is already specified in this list"),                            ids->id_rec, ids->id_name);                    else                        vstprintf(ddlp_g.msg,                            DB_TEXT("identifier %s is already specified in this list"),                            ids->id_name);                    dderror(ddlp_g.msg, ddlp_g.line);                    break;                }            }        }        if ( !ids )        {            currid->next_id = (ID_INFO *) psp_cGetMemory(sizeof(ID_INFO), 0);            if ((currid = currid->next_id) == NULL)                ddlp_abort(DB_TEXT("out of memory"));            vtstrcpy(currid->id_name, fld_comp);            vtstrcpy(currid->id_rec, rec_comp);            if (ddlp_g.s_flag)            {                vtstrlwr(currid->id_name);                vtstrlwr(currid->id_rec);            }               currid->id_line = ddlp_g.line;            currid->next_id = NULL;        }        if (ddlp_g.abort_flag)            return(-1);    }    break;  case 41:#line 444 "ddlp.y"    {        dderror(DB_TEXT("non-identifier specified in list"), yyvsp[0].tnum.numline);        ddlp_unput(DB_TEXT(';'));        if (ddlp_g.abort_flag)            return(-1);    }    break;  case 42:#line 455 "ddlp.y"    {        if (vtstricmp(yyvsp[0].tstr.str, DB_TEXT("SYSTEM")) == 0)            vtstrcpy(fld_comp, DB_TEXT("system"));        else            vtstrcpy(fld_comp, yyvsp[0].tstr.str);        rec_comp[0] = 0;        if (ddlp_g.abort_flag)            return(-1);    }    break;  case 43:#line 465 "ddlp.y"    {        vtstrcpy(fld_comp, yyvsp[0].tstr.str);        if ( !ddlp_g.d_flag )            ddwarning(DB_TEXT("must use '-d' switch to qualify field names"), ddlp_g.line);        else            vtstrcpy(rec_comp, yyvsp[-2].tstr.str);        if (ddlp_g.abort_flag)            return(-1);    }    break;  case 49:#line 488 "ddlp.y"    {        while (memList)        {            mem = memList->next_mem;            psp_freeMemory(memList, 0);            memList = mem;        }    }    break;  case 50:#line 497 "ddlp.y"    {        yyerror("invalid ddl statement");    }    break;  case 51:#line 505 "ddlp.y"    {        ts_recs(id_list);        if (ddlp_g.abort_flag)            return(-1);    }    break;  case 52:#line 511 "ddlp.y"    {        ts_recs(NULL);        if (ddlp_g.abort_flag)            return(-1);    }    break;  case 53:#line 517 "ddlp.y"    {        ts_sets(id_list);        if (ddlp_g.abort_flag)            return(-1);    }    break;  case 54:#line 523 "ddlp.y"    {        ts_sets(NULL);        if (ddlp_g.abort_flag)            return(-1);    }    break;  case 55:#line 529 "ddlp.y"    {        dderror(DB_TEXT("invalid timestamp statement"), yyvsp[-2].tnum.numline);        if (ddlp_g.abort_flag)            return(-1);    }    break;  case 56:#line 539 "ddlp.y"    {        add_file(NULL, id_list, yyvsp[-2].tnum.numline);        if (ddlp_g.abort_flag)            return(-1);    }    break;  case 57:#line 545 "ddlp.y"    {        add_file(yyvsp[-6].tstr.str, id_list, yyvsp[-6].tstr.strline);        if (ddlp_g.abort_flag)            return(-1);    }    break;  case 58:#line 551 "ddlp.y"    {        dderror(DB_TEXT("invalid file specification"), yyvsp[-2].tnum.numline);        if (ddlp_g.abort_flag)            return(-1);    }    break;  case 59:#line 561 "ddlp.y"    { }    break;  case 60:#line 563 "ddlp.y"    { }    break;  case 63:#line 575 "ddlp.y"    { ddlp_g.ft_entry.ft_initial = yyvsp[0].tnum.num; }    break;  case 64:#line 577 "ddlp.y"    { ddlp_g.ft_entry.ft_next = yyvsp[0].tnum.num; }    break;  case 65:#line 579 "ddlp.y"    { ddlp_g.ft_entry.ft_pctincrease = yyvsp[0].tnum.num; }    break;  case 66:#line 581 "ddlp.y"    {        if (yyvsp[0].tnum.num < 128)        {            ddwarning(DB_TEXT("file page size must be at least 128"), yyvsp[0].tnum.numline);            ddlp_g.ft_entry.ft_pgsize = pagesize;        }        else if (yyvsp[0].tnum.num > 32766)        {            ddwarning(DB_TEXT("maximum file page size is 32766"), yyvsp[0].tnum.numline);            ddlp_g.ft_entry.ft_pgsize = pagesize;        }        else        {            ddlp_g.ft_entry.ft_pgsize = (short) yyvsp[0].tnum.num;        }        if (ddlp_g.abort_flag)            return(-1);    }    break;  case 67:#line 604 "ddlp.y"    { ddlp_g.ft_entry.ft_initial = ddlp_g.ft_entry.ft_next = ddlp_g.ft_entry.ft_pctincrease = 0; }    break;  case 68:#line 610 "ddlp.y"    { ddlp_g.ft_entry.ft_type = 'd'; }    break;  case 69:#line 612 "ddlp.y"    { ddlp_g.ft_entry.ft_type = 'k'; }    break;  case 70:#line 618 "ddlp.y"    {        if (pagesize == 0 && ddlp_g.ft_entry.ft_type == 'k')            ddlp_g.ft_entry.ft_pgsize = 1024;     /* THIS SHOULD CHANGE IF MAXKEYSIZE CHANGES */        else            ddlp_g.ft_entry.ft_pgsize = pagesize;    }    break;  case 71:#line 625 "ddlp.y"    {        if ( yyvsp[-1].tnum.num < 128 )        {            ddwarning(DB_TEXT("file page size must be at least 128"), yyvsp[-1].tnum.numline);            ddlp_g.ft_entry.ft_pgsize = pagesize;        }        else if ( yyvsp[-1].tnum.num > 32766 )        {            ddwarning(DB_TEXT("maximum file page size is 32766"), yyvsp[-1].tnum.numline);            ddlp_g.ft_entry.ft_pgsize = pagesize;        }        else        {            ddlp_g.ft_entry.ft_pgsize = (short) yyvsp[-1].tnum.num;        }        if (ddlp_g.abort_flag)            return(-1);    }    break;  case 72:#line 644 "ddlp.y"    {        if (find_const(yyvsp[-1].tstr.str, &tempnum))        {            if (tempnum < 128)            {                ddwarning(DB_TEXT("file page size must be at least 128"), yyvsp[-1].tstr.strline);                ddlp_g.ft_entry.ft_pgsize = pagesize;            }            else if (tempnum > 32766)            {                ddwarning(DB_TEXT("maximum file page size is 32766"), yyvsp[-1].tstr.strline);                ddlp_g.ft_entry.ft_pgsize = pagesize;            }            else                ddlp_g.ft_entry.ft_pgsize = (short) tempnum;        }        else            dderror(DB_TEXT("constant not defined"), yyvsp[-1].tstr.strline);        if (ddlp_g.abort_flag)            return(-1);    }    break;  case 73:#line 671 "ddlp.y"    {        cpfile(ddlp_g.ft_entry.ft_name, yyvsp[0].tstr.str, yyvsp[0].tstr.strline);        if (ddlp_g.abort_flag)            return(-1);    }    break;  case 74:#line 677 "ddlp.y"    {        cpfile(ddlp_g.ft_entry.ft_name, yyvsp[0].tstr.str, yyvsp[0].tstr.strline);        if (ddlp_g.abort_flag)            return(-1);    }    break;  case 78:#line 690 "ddlp.y"    {        dderror(DB_TEXT("invalid record spec"), yyvsp[-2].tnum.numline);        if (ddlp_g.abort_flag)            return(-1);    }    break;  case 79:#line 700 "ddlp.y"    {        if (vtstrcmp(yyvsp[-1].tstr.str, DB_TEXT("system")) == 0)            ddlp_abort(DB_TEXT("'system' is a reserved record name"));        vtstrcpy(rec_comp, yyvsp[-1].tstr.str);        add_record(yyvsp[-1].tstr.str, yyvsp[-1].tstr.strline);        n_optkeys = 0;        if (ddlp_g.abort_flag)            return(-1);    }    break;  case 80:#line 714 "ddlp.y"    { ddlp_g.rt_entry.rt_flags = 0; }    break;  case 81:#line 716 "ddlp.y"    { ddlp_g.rt_entry.rt_flags = STATIC; }    break;  case 84:#line 728 "ddlp.y"    {         if (ti)        {            /* If the name has not been entered */            if (ti->elem == NULL)            {                int tot_dims;                short tmp_dims[MAXDIMS];                ddlp_g.fd_entry.fd_type = ti->type_char;                ddlp_g.fd_entry.fd_len  = ti->type_size;                ddlp_g.fd_entry.fd_flags |= (unsigned short)(ti->type_sign ? UNSIGNEDFLD : 0);                /* calculate length of field */                memset(tmp_dims, 0, sizeof(tmp_dims));                for (elts = 1, tot_dims = 0; dim < MAXDIMS && ti->dims[tot_dims]; ++tot_dims)                {                      tmp_dims[tot_dims] = ti->dims[tot_dims];                    elts = elts * ti->dims[tot_dims];                }                for (dim = 0; dim < MAXDIMS && ddlp_g.fd_entry.fd_dim[dim]; ++dim, ++tot_dims)                {                    if (tot_dims >= MAXDIMS)                    {                        vstprintf(ddlp_g.msg,                            DB_TEXT("too many array dimensions, maximum is %d"),                            MAXDIMS);                        dderror(ddlp_g.msg, yyvsp[-3].tstr.strline);                        break;                    }                    tmp_dims[tot_dims] = ddlp_g.fd_entry.fd_dim[dim];                    elts = elts 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?