Lines Matching refs:fp

621 	Rskeyfield_t*	fp;
668 for (fp = kp->head; fp; fp = fp->next)
670 n = fp->begin.field;
674 if (fp->bflag && kp->field.global.next)
677 cp += fp->begin.index;
683 n = fp->end.field;
686 if (fp->end.index < 0)
700 if (fp->eflag)
703 ep += fp->end.index;
712 op += (*fp->coder)(kp, fp, cp, ep - cp, op, zp);
739 checkfield(Rskey_t* kp, Rskeyfield_t* fp, const char* key, int c)
741 checkfield(kp, fp, key, c)
743 Rskeyfield_t* fp;
748 if (c || fp->begin.field < 0 || fp->end.field < 0 || fp->begin.index < 0 || fp->end.index < -1)
755 (*kp->keydisc->errorf)(kp, kp->keydisc, 2, "field[%d]: invalid key field specification", fp->index);
760 if (kp->keydisc->errorf && fp->coder == key_n_code && fp->keep)
771 addcoder(Rskey_t* kp, Rskeyfield_t* fp, Rskeycode_f np, int c, int b)
773 addcoder(kp, fp, np, c, b)
775 Rskeyfield_t* fp;
782 if (kp->keydisc->errorf && fp->coder && fp->coder != np)
784 fp->coder = np;
785 fp->flag = c;
786 fp->binary = b;
816 addopt(Rskey_t* kp, register Rskeyfield_t* fp, register char* s, int end)
818 addopt(kp, fp, s, end)
820 register Rskeyfield_t* fp;
835 if (!fp->aflag)
837 fp->aflag = 1;
841 (*kp->keydisc->errorf)(kp, kp->keydisc, 2, "field[%d]: global accumulate invalid", fp->index);
848 kp->accumulate.tail->next = fp;
850 kp->accumulate.head = kp->accumulate.tail = fp;
855 fp->eflag = 1;
857 fp->bflag = 1;
860 addtable(kp, c, &fp->keep, kp->state->dict);
882 (*kp->keydisc->errorf)(kp, kp->keydisc, 2, "field[%d]: %s: invalid code set", fp->index, s - 1);
911 fp->code = x;
912 if (fp == kp->head)
913 kp->code = fp->code;
917 addtable(kp, c, &fp->trans, kp->state->fold);
921 addcoder(kp, fp, key_n_code, c, 0);
924 addcoder(kp, fp, key_n_code, c, 0);
927 addtable(kp, c, &fp->keep, kp->state->print);
934 addcoder(kp, fp, key_j_code, c, 0);
938 fp->data = tm_info.format + TM_MONTH_ABBREV;
939 addcoder(kp, fp, key_m_code, c, 0);
942 addcoder(kp, fp, key_p_code, c, 1);
945 fp->rflag = 1;
948 addcoder(kp, fp, key_z_code, c, 1);
954 if (kp->keydisc->errorf && fp != kp->tail)
975 register Rskeyfield_t* fp;
979 fp = all ? kp->head : kp->tail;
981 while (i = addopt(kp, fp, s, 0))
983 if (fp->standard && (*s == ',' || *s == ' '))
986 if ((fp->end.field = (int)strtol(s, (char**)&s, 10) - 1) > kp->field.maxfield)
987 kp->field.maxfield = fp->end.field;
988 if (*s == '.' && !(fp->end.index = (int)strtol(s + 1, &s, 10)))
989 fp->end.index = -1;
990 while (i = addopt(kp, fp, s, 1))
993 return checkfield(kp, fp, key, *s);
1010 register Rskeyfield_t* fp;
1085 else if (!(fp = vmnewof(Vmheap, 0, Rskeyfield_t, 1, 0)))
1094 fp->index = ++kp->field.index;
1096 kp->tail = kp->tail->next = fp;
1097 fp->bflag = fp->eflag = 0;
1098 fp->standard = standard;
1099 if ((fp->begin.field = n - fp->standard) > kp->field.maxfield)
1100 kp->field.maxfield = fp->begin.field;
1101 fp->end.field = MAXFIELD;
1102 fp->code = kp->head->code;
1105 fp->begin.index = (int)strtol(s + 1, &s, 10) - fp->standard;
1108 fp->end.field = fp->begin.field;
1109 fp->end.index = fp->begin.index + (int)strtol(s + 1, &s, 10);
1122 transform(Rskey_t* kp, register Rskeyfield_t* fp)
1124 transform(kp, fp)
1126 register Rskeyfield_t* fp;
1134 if (fp->code)
1136 if (fp->binary)
1138 if (CCCONVERT(fp->code))
1139 fp->trans = ccmap(fp->code, 0);
1141 else if (m = ccmap(fp->code, CC_NATIVE))
1143 if (!fp->trans)
1144 fp->trans = m;
1154 t = fp->trans;
1157 fp->trans = x;
1158 fp->freetrans = 1;
1162 if (!fp->trans)
1163 fp->trans = kp->state->ident;
1180 register Rskeyfield_t* fp;
1192 fp = kp->head;
1193 if (!fp->coder)
1195 fp->coder = key_t_code;
1196 fp->flag = 't';
1198 if (transform(kp, fp))
1200 if (!fp->keep)
1201 fp->keep = kp->state->all;
1202 if (fp->rflag)
1204 fp->rflag = 0;
1207 kp->code = fp->code;
1208 while (fp = fp->next)
1211 if (!fp->coder)
1213 fp->coder = key_t_code;
1214 fp->flag = 't';
1218 if(!fp->keep)
1219 fp->keep = kp->state->all;
1222 if (!n && !fp->trans && !fp->bflag && !fp->eflag && !fp->rflag)
1224 fp->coder = kp->field.global.coder;
1225 fp->code = kp->field.global.code;
1226 fp->flag = kp->field.global.flag;
1227 fp->trans = kp->field.global.trans;
1228 fp->keep = kp->field.global.keep;
1229 fp->rflag = kp->field.global.rflag;
1230 fp->bflag = kp->field.global.bflag;
1231 if (fp->standard)
1232 fp->eflag = kp->field.global.bflag;
1236 if (transform(kp, fp))
1239 fp->rflag = !fp->rflag;
1241 if (fp->standard)
1243 if (!fp->end.index)
1244 fp->end.index--;
1246 else if (!fp->end.index && fp->end.field)
1248 if (kp->tab[0] && fp->eflag)
1255 fp->end.index--;
1259 if (fp->begin.index > kp->fixed)
1262 (*kp->keydisc->errorf)(kp, kp->keydisc, 2, "field[%d]: begin index %d is greater than fixed record size", fp->index, fp->begin.index);
1266 if (fp->end.index > kp->fixed)
1269 (*kp->keydisc->errorf)(kp, kp->keydisc, 2, "field[%d]: end index %d is greater than fixed record size", fp->index, fp->end.index);
1275 fp = kp->head;
1276 if (fp = fp->next)
1278 kp->head = fp;
1279 if (!fp->next && !kp->tab[0] && !fp->begin.field && !fp->end.field && fp->end.index > 0 && fp->flag == 't' && fp->trans == kp->state->ident && fp->keep == kp->state->all && !fp->bflag && !fp->eflag && !fp->rflag)
1282 kp->disc->key = fp->begin.index;
1283 kp->disc->keylen = fp->end.index - fp->begin.index;