Lines Matching refs:state

313 aform(State_t* state, Format_t* fp, Sfio_t* op, unsigned char* u)
334 bform(State_t* state, Format_t* fp, Sfio_t* op, unsigned char* u)
340 cform(State_t* state, Format_t* fp, Sfio_t* op, unsigned char* u)
349 if (state->mb)
351 state->mb--;
371 if ((w = mbnchar(u, state->eob - u)) > 0 && (i = u - v) > 1 && !iswprint(w))
373 state->mb = i - 1;
424 Cform(State_t* state, Format_t* fp, Sfio_t* op, unsigned char* u)
433 if (state->mb)
435 state->mb--;
455 if ((w = mbnchar(u, state->eob - u)) > 0 && (i = u - v) > 1 && !iswprint(w))
457 state->mb = i - 1;
486 mform(State_t* state, Format_t* fp, Sfio_t* op, unsigned char* u)
491 switch (buf[0] = ccmapchr(state->map, *u))
520 Oform(State_t* state, Format_t* fp, Sfio_t* op, unsigned char* u)
529 if (state->mb)
531 state->mb--;
551 if ((w = mbnchar(u, state->eob - u)) > 0 && (i = u - v) > 1 && !iswprint(w))
553 state->mb = i - 1;
658 form_int8(State_t* state, Format_t* fp, Sfio_t* op, unsigned char* u)
664 form_int16(State_t* state, Format_t* fp, Sfio_t* op, unsigned char* u)
666 sfprintf(op, fp->form, (int16_t)swapget(state->swap, u, fp->size.external));
670 form_int32(State_t* state, Format_t* fp, Sfio_t* op, unsigned char* u)
672 sfprintf(op, fp->form, (int32_t)swapget(state->swap, u, fp->size.external));
676 form_intmax(State_t* state, Format_t* fp, Sfio_t* op, unsigned char* u)
678 sfprintf(op, fp->form, (intmax_t)swapget(state->swap, u, fp->size.external));
682 form_uint8(State_t* state, Format_t* fp, Sfio_t* op, unsigned char* u)
688 form_uint16(State_t* state, Format_t* fp, Sfio_t* op, unsigned char* u)
690 sfprintf(op, fp->form, (uint16_t)swapget(state->swap, u, fp->size.external));
694 form_uint32(State_t* state, Format_t* fp, Sfio_t* op, unsigned char* u)
696 sfprintf(op, fp->form, (uint32_t)swapget(state->swap, u, fp->size.external));
700 form_uintmax(State_t* state, Format_t* fp, Sfio_t* op, unsigned char* u)
702 sfprintf(op, fp->form, (uintmax_t)swapget(state->swap, u, fp->size.external));
706 form_float(State_t* state, Format_t* fp, Sfio_t* op, unsigned char* u)
710 swapmem(state->swap ^ int_swap, u, mem.m_char, fp->size.internal);
715 form_double(State_t* state, Format_t* fp, Sfio_t* op, unsigned char* u)
719 swapmem(state->swap ^ int_swap, u, mem.m_char, fp->size.internal);
726 form_long_double(State_t* state, Format_t* fp, Sfio_t* op, unsigned char* u)
730 swapmem(state->swap ^ int_swap, u, mem.m_char, fp->size.internal);
741 format(State_t* state, register char* t)
773 state->printable = 1;
829 state->mbmax = i;
831 if (!(fp = vmnewof(state->vm, 0, Format_t, 1, 0)))
836 if (state->last)
837 state->last = state->last->next = fp;
839 state->form = state->last = fp;
844 if (state->size < fp->size.external)
845 state->size = fp->size.external;
935 init(State_t* state, char*** p)
943 state->file = *((*p)++);
944 else if (state->file)
946 if (!state->file || streq(state->file, "-"))
948 state->file = "/dev/stdin";
951 else if (!(ip = sfopen(NiL, state->file, "r")))
953 error(ERROR_system(0), "%s: cannot open", state->file);
957 if (state->buffer.noshare)
959 if (state->buffer.size)
960 sfsetbuf(ip, state->buffer.base, state->buffer.size);
961 if (state->skip)
965 if (offset <= state->skip)
967 state->skip -= offset;
968 state->offset += offset;
971 if (sfseek(ip, state->skip, SEEK_SET) != state->skip)
973 error(ERROR_system(2), "%s: seek error", state->file);
976 state->offset += state->skip;
977 state->skip = 0;
983 if (!(state->peek.data = sfreserve(ip, SF_UNBOUND, 0)))
986 error(ERROR_system(2), "%s: read error", state->file);
989 state->peek.size = sfvalue(ip);
990 if (state->peek.size < state->skip)
991 state->skip -= state->peek.size;
994 state->peek.data += state->skip;
995 state->peek.size -= state->skip;
996 state->skip = 0;
1011 block(State_t* state, Sfio_t* op, char* bp, char* ep, intmax_t base)
1018 if (!state->verbose)
1020 if (state->dup.size == (n = ep - bp) && !memcmp(state->dup.data, bp, n))
1022 if (!state->dup.mark)
1024 state->dup.mark = 1;
1029 state->dup.mark = 0;
1031 for (fp = state->form; fp; fp = fp->next)
1033 if (*state->base)
1035 if (fp == state->form)
1036 sfprintf(op, state->base, base);
1046 (*fp->fun)(state, fp, op, u);
1051 if (state->printable && fp == state->form)
1057 if (c = (state->block - (ep - bp)) / state->size * (state->width + 1))
1060 if (state->mbmax)
1063 if (state->mbp)
1065 state->mbp--;
1068 else if ((v = u) && (w = mbnchar(v, state->eob - u)) > 0 && (c = v - u) > 1 && !iswprint(w))
1071 state->mbp = c - 1;
1075 if ((c = ccmapchr(state->map, *u)) < 040 || c >= 0177)
1083 if ((c = ccmapchr(state->map, *u++)) < 040 || c >= 0177)
1099 od(State_t* state, char** files)
1111 if (!(ip = init(state, &files)))
1115 if (s = state->peek.data)
1117 state->peek.data = 0;
1118 n = state->peek.size;
1128 error(ERROR_system(2), "%s: read error", state->file);
1131 if (!(ip = init(state, &files)))
1138 state->eob = (unsigned char*)s + n;
1139 if (state->count)
1141 if (state->total >= state->count)
1146 else if ((state->total += n) > state->count)
1147 n -= state->total - state->count;
1154 m = state->spansize - (span - state->span);
1166 if (m = (span - state->span) % state->size)
1168 m = state->size - m;
1172 state->eob = (unsigned char*)span;
1173 if ((m = span - state->span) > state->block)
1174 m = state->block;
1175 if (block(state, sfstdout, state->span, state->span + m, state->offset))
1177 state->offset += m;
1178 if (!state->verbose)
1179 memcpy(state->dup.data = state->dup.buf, state->span, state->dup.size = m);
1180 if ((r = (span - state->span) - m) > 0)
1182 span = state->span;
1183 x = state->span + m;
1195 if (state->strings)
1197 state->offset += n;
1203 if (n >= state->strings)
1205 if (*state->base && sfprintf(sfstdout, state->base, state->offset - (x - s) - n - 1) < 0)
1220 e = s + (n / state->block) * state->block;
1221 if (state->mbmax)
1222 e -= state->block + state->mbmax;
1227 if (block(state, sfstdout, s, s + state->block, state->offset))
1229 state->offset += state->block;
1230 state->dup.data = s;
1231 state->dup.size = state->block;
1232 } while ((s += state->block) < e);
1233 if (!state->verbose)
1235 memcpy(state->dup.buf, state->dup.data, state->dup.size = state->block);
1236 state->dup.data = state->dup.buf;
1241 memcpy(state->span, s, n);
1242 span = state->span + n;
1310 State_t state;
1313 memset(&state, 0, sizeof(state));
1314 if (!(state.vm = vmopen(Vmdcheap, Vmlast, 0)))
1321 state.map = ccmap(CC_ASCII, CC_ASCII);
1322 state.swap = int_swap;
1328 *state.base = *opt_info.arg;
1329 state.style |= NEW;
1333 state.swap = -opt_info.num;
1335 state.swap ^= opt_info.num;
1343 state.skip = opt_info.num;
1344 state.style |= NEW;
1350 state.map = ccmap(n, CC_NATIVE);
1353 state.count = opt_info.num;
1354 state.style |= NEW;
1357 state.printable = 1;
1360 format(&state, opt_info.arg);
1361 state.style |= NEW;
1370 state.buffer.size = strton(s, &e, NiL, 1);
1371 if (n == 'b' && !(state.buffer.base = vmnewof(state.vm, 0, char, state.buffer.size, 0)))
1380 state.buffer.noshare = 1;
1388 state.verbose = 1;
1389 state.style |= NEW;
1395 state.strings = opt_info.num;
1474 format(&state, buf);
1475 state.style |= OLD;
1489 switch (n = *state.base)
1492 *state.base = 0;
1498 state.addr = 8;
1501 state.addr = 10;
1504 state.addr = 16;
1507 sfsprintf(state.base, sizeof(state.base), "%%0%d%s%c ", BASE_WIDTH, QUAL, n);
1513 if (!state.form)
1514 format(&state, "oS");
1515 else if (state.strings)
1519 for (fp = state.form; fp; fp = fp->next)
1520 if ((n = (state.size / fp->size.external) * (fp->width + 1) - 1) > state.width)
1521 state.width = n;
1522 for (fp = state.form; fp; fp = fp->next)
1523 fp->per = state.width * fp->size.external / state.size;
1524 n = LINE_LENGTH - state.printable;
1525 if (*state.base)
1527 if (!(n /= (state.width + state.printable * state.size + 1)))
1529 if (state.addr)
1531 while (n > state.addr)
1532 state.addr *= 2;
1533 while (n < state.addr)
1534 state.addr /= 2;
1535 if (state.addr)
1536 n = state.addr;
1540 state.block = n * state.size;
1541 state.spansize = state.block + state.mbmax;
1542 if (!(state.span = vmnewof(state.vm, 0, char, state.spansize, 0)))
1547 if (!(state.style & NEW) && (s = *argv))
1559 if (strmatch(s, e) && (state.style == OLD || *s == '+'))
1566 state.skip = strtol(s, &e, strchr(s, '.') ? 10 : 8);
1572 state.skip *= 512;
1575 state.skip *= 1024;
1578 state.skip *= 1024 * 1024;
1586 od(&state, argv);
1590 if (state.skip)
1595 if (*state.base && !state.strings)
1597 *(state.base + strlen(state.base) - 1) = '\n';
1598 sfprintf(sfstdout, state.base, (intmax_t)state.offset);
1603 vmclose(state.vm);