Lines Matching refs:m

239 		struct magic *m = &magic[magindex];  in match()  local
241 if (m->type != FILE_NAME) in match()
242 if ((IS_LIBMAGIC_STRING(m->type) && in match()
244 ((text && (m->str_flags & FLT) == STRING_BINTEST) || in match()
245 (!text && (m->str_flags & FLT) == STRING_TEXTTEST))) || in match()
246 (m->flag & mode) != mode) { in match()
256 if (msetoffset(ms, m, &bb, b, offset, cont_level) == -1) in match()
258 ms->line = m->lineno; in match()
261 switch (mget(ms, m, b, CAST(const unsigned char *, bb.fbuf), in match()
270 flush = m->reln != '!'; in match()
273 if (m->type == FILE_INDIRECT) { in match()
278 switch (magiccheck(ms, m)) { in match()
298 if ((e = handle_annotation(ms, m, *firstline)) != 0) in match()
312 if (*m->desc) { in match()
320 if (mprint(ms, m) == -1) in match()
325 switch (moffset(ms, m, &bb, &ms->c.li[cont_level].off)) { in match()
339 m = &magic[++magindex]; in match()
340 ms->line = m->lineno; /* for messages */ in match()
342 if (cont_level < m->cont_level) in match()
344 if (cont_level > m->cont_level) { in match()
349 cont_level = m->cont_level; in match()
351 if (msetoffset(ms, m, &bb, b, offset, cont_level) == -1) in match()
353 if (m->flag & OFFADD) { in match()
366 if (m->cond == COND_ELSE || in match()
367 m->cond == COND_ELIF) { in match()
372 switch (mget(ms, m, b, CAST(const unsigned char *, in match()
380 if (m->reln != '!') in match()
385 if (m->type == FILE_INDIRECT) { in match()
393 switch (flush ? 1 : magiccheck(ms, m)) { in match()
405 if (m->type == FILE_CLEAR) in match()
408 if (m->type == FILE_DEFAULT) in match()
413 if ((e = handle_annotation(ms, m, *firstline)) in match()
421 if (*m->desc) { in match()
424 if (print && *m->desc) { in match()
445 && (m->flag & NOSPACE) == 0) { in match()
449 if (mprint(ms, m) == -1) in match()
454 switch (moffset(ms, m, &bb, in match()
592 mprint(struct magic_set *ms, struct magic *m) in mprint() argument
601 if (varexpand(ms, ebuf, sizeof(ebuf), m->desc) == -1) in mprint()
602 desc = m->desc; in mprint()
607 v = file_signextend(ms, m, CAST(uint64_t, value)); \ in mprint()
612 if (m->flag & UNSIGNED) { \ in mprint()
623 if (m->flag & UNSIGNED) { \ in mprint()
636 switch (m->type) { in mprint()
661 if (m->reln == '=' || m->reln == '!') { in mprint()
663 file_printable(ms, sbuf, sizeof(sbuf), m->value.s, in mprint()
664 sizeof(m->value.s))) == -1) in mprint()
672 if (*m->value.s == '\0') in mprint()
675 if (m->str_flags & STRING_TRIM) in mprint()
683 if (m->type == FILE_PSTRING) { in mprint()
684 size_t l = file_pstring_length_size(ms, m); in mprint()
784 scp = (m->str_flags & STRING_TRIM) ? file_strtrim(cp) : cp; in mprint()
797 if (file_printf(ms, "%s", m->desc) == -1) in mprint()
831 file_fmtnum(buf, sizeof(buf), m->value.s, 8); in mprint()
836 file_magerror(ms, "invalid m->type (%d) in mprint()", m->type); in mprint()
843 moffset(struct magic_set *ms, struct magic *m, const struct buffer *b, in moffset() argument
849 switch (m->type) { in moffset()
884 if (m->reln == '=' || m->reln == '!') { in moffset()
885 o = ms->offset + m->vallen; in moffset()
889 if (*m->value.s == '\0') in moffset()
892 if (m->type == FILE_PSTRING) { in moffset()
893 size_t l = file_pstring_length_size(ms, m); in moffset()
940 if ((m->str_flags & REGEX_OFFSET_START) != 0) in moffset()
948 if ((m->str_flags & REGEX_OFFSET_START) != 0) in moffset()
951 o = CAST(int32_t, (ms->search.offset + m->vallen)); in moffset()
963 o = der_offs(ms, m, nbytes); in moffset()
1058 if (m->num_mask) \
1059 switch (m->mask_op & FILE_OPS_MASK) { \
1061 p->fld &= CAST(type, m->num_mask); \
1064 p->fld |= CAST(type, m->num_mask); \
1067 p->fld ^= CAST(type, m->num_mask); \
1070 p->fld += CAST(type, m->num_mask); \
1073 p->fld -= CAST(type, m->num_mask); \
1076 p->fld *= CAST(type, m->num_mask); \
1079 if (CAST(type, m->num_mask) == 0) \
1081 p->fld /= CAST(type, m->num_mask); \
1084 if (CAST(type, m->num_mask) == 0) \
1086 p->fld %= CAST(type, m->num_mask); \
1089 if (m->mask_op & FILE_OPINVERSE) \
1093 cvt_8(union VALUETYPE *p, const struct magic *m) in cvt_8() argument
1100 cvt_16(union VALUETYPE *p, const struct magic *m) in cvt_16() argument
1107 cvt_32(union VALUETYPE *p, const struct magic *m) in cvt_32() argument
1114 cvt_64(union VALUETYPE *p, const struct magic *m) in cvt_64() argument
1121 if (m->num_mask) \
1122 switch (m->mask_op & FILE_OPS_MASK) { \
1124 p->fld += CAST(type, m->num_mask); \
1127 p->fld -= CAST(type, m->num_mask); \
1130 p->fld *= CAST(type, m->num_mask); \
1133 if (CAST(type, m->num_mask) == 0) \
1135 p->fld /= CAST(type, m->num_mask); \
1140 cvt_float(union VALUETYPE *p, const struct magic *m) in cvt_float() argument
1147 cvt_double(union VALUETYPE *p, const struct magic *m) in cvt_double() argument
1159 mconvert(struct magic_set *ms, struct magic *m, int flip) in mconvert() argument
1163 switch (cvt_flip(m->type, flip)) { in mconvert()
1165 if (cvt_8(p, m) == -1) in mconvert()
1175 if (cvt_16(p, m) == -1) in mconvert()
1181 if (cvt_32(p, m) == -1) in mconvert()
1189 if (cvt_64(p, m) == -1) in mconvert()
1202 size_t len, sz = file_pstring_length_size(ms, m); in mconvert()
1207 len = file_pstring_get_length(ms, m, ptr1); in mconvert()
1229 if (cvt_16(p, m) == -1) in mconvert()
1236 if (cvt_32(p, m) == -1) in mconvert()
1244 if (cvt_64(p, m) == -1) in mconvert()
1249 if (cvt_16(p, m) == -1) in mconvert()
1256 if (cvt_32(p, m) == -1) in mconvert()
1264 if (cvt_64(p, m) == -1) in mconvert()
1271 if (cvt_32(p, m) == -1) in mconvert()
1275 if (cvt_float(p, m) == -1) in mconvert()
1280 if (cvt_float(p, m) == -1) in mconvert()
1285 if (cvt_float(p, m) == -1) in mconvert()
1289 if (cvt_double(p, m) == -1) in mconvert()
1294 if (cvt_double(p, m) == -1) in mconvert()
1299 if (cvt_double(p, m) == -1) in mconvert()
1312 file_magerror(ms, "invalid type %d in mconvert()", m->type); in mconvert()
1332 const unsigned char *s, uint32_t offset, size_t nbytes, struct magic *m) in mcopy() argument
1364 if (m->str_flags & REGEX_LINE_COUNT) { in mcopy()
1365 linecnt = m->str_range; in mcopy()
1369 bytecnt = m->str_range; in mcopy()
1432 if (m->str_range != 0 && m->str_range < sizeof(*p)) in mcopy()
1433 size = m->str_range; in mcopy()
1468 do_ops(struct magic_set *ms, struct magic *m, uint32_t *rv, intmax_t lhs, in do_ops() argument
1481 switch (m->in_op & FILE_OPS_MASK) { in do_ops()
1509 if (m->in_op & FILE_OPINVERSE) in do_ops()
1521 msetoffset(struct magic_set *ms, struct magic *m, struct buffer *bb, in msetoffset() argument
1525 if (m->flag & OFFNEGATIVE) { in msetoffset()
1526 offset = -m->offset; in msetoffset()
1528 if (m->flag & (OFFADD|INDIROFFADD)) in msetoffset()
1532 "level %u", m->offset, cont_level); in msetoffset()
1544 if (CAST(size_t, m->offset) > b->elen) in msetoffset()
1547 ms->eoffset = ms->offset = CAST(int32_t, b->elen - m->offset); in msetoffset()
1549 offset = m->offset; in msetoffset()
1593 mget(struct magic_set *ms, struct magic *m, const struct buffer *b, in mget() argument
1623 if (mcopy(ms, p, m->type, m->flag & INDIR, s, in mget()
1624 CAST(uint32_t, offset + o), CAST(uint32_t, nbytes), m) == -1) in mget()
1631 m->type, m->flag, offset, o, nbytes, in mget()
1636 file_mdump(m); in mget()
1640 if (m->flag & INDIR) { in mget()
1641 intmax_t off = m->in_offset; in mget()
1642 const int sgn = m->in_op & FILE_OPSIGNED; in mget()
1643 if (m->in_op & FILE_OPINDIRECT) { in mget()
1647 switch (op = cvt_flip(m->in_type, flip)) { in mget()
1701 if (OFFSET_OOB(nbytes, offset, m->vallen)) in mget()
1713 switch (in_type = cvt_flip(m->in_type, flip)) { in mget()
1717 if (do_ops(ms, m, &offset, SEXT(sgn,8,p->b), off)) in mget()
1723 if (do_ops(ms, m, &offset, SEXT(sgn,16,BE16(p)), off)) in mget()
1729 if (do_ops(ms, m, &offset, SEXT(sgn,16,LE16(p)), off)) in mget()
1735 if (do_ops(ms, m, &offset, SEXT(sgn,16,p->h), off)) in mget()
1745 if (do_ops(ms, m, &offset, SEXT(sgn,32,lhs), off)) in mget()
1755 if (do_ops(ms, m, &offset, SEXT(sgn,32,lhs), off)) in mget()
1761 if (do_ops(ms, m, &offset, SEXT(sgn,32,ME32(p)), off)) in mget()
1767 if (do_ops(ms, m, &offset, SEXT(sgn,32,p->l), off)) in mget()
1773 if (do_ops(ms, m, &offset, SEXT(sgn,64,LE64(p)), off)) in mget()
1779 if (do_ops(ms, m, &offset, SEXT(sgn,64,BE64(p)), off)) in mget()
1783 if (OFFSET_OOB(nbytes, offset, m->vallen)) in mget()
1785 if(do_ops(ms, m, &offset, in mget()
1795 if (m->flag & INDIROFFADD) { in mget()
1812 if (mcopy(ms, p, m->type, 0, s, offset, nbytes, m) == -1) in mget()
1820 file_mdump(m); in mget()
1826 switch (m->type) { in mget()
1874 if (OFFSET_OOB(nbytes, offset, m->vallen)) in mget()
1884 if (m->str_flags & INDIRECT_RELATIVE) in mget()
1922 file_printf(ms, F(ms, m->desc, "%u"), offset) == -1) in mget()
1938 rbuf = m->value.s; in mget()
1953 if (m->flag & NOSPACE) in mget()
1978 if (file_printf(ms, "%s", m->desc) == -1) in mget()
1987 if (!mconvert(ms, m, flip)) in mget()
2085 magiccheck(struct magic_set *ms, struct magic *m) in magiccheck() argument
2087 uint64_t l = m->value.q; in magiccheck()
2094 switch (m->type) { in magiccheck()
2145 fl = m->value.f; in magiccheck()
2147 switch (m->reln) { in magiccheck()
2170 "invalid relation `%c'", m->reln); in magiccheck()
2178 dl = m->value.d; in magiccheck()
2180 switch (m->reln) { in magiccheck()
2203 "invalid relation `%c'", m->reln); in magiccheck()
2218 v = file_strncmp(m->value.s, p->s, CAST(size_t, m->vallen), in magiccheck()
2219 sizeof(p->s), m->str_flags); in magiccheck()
2225 v = file_strncmp16(m->value.s, p->s, CAST(size_t, m->vallen), in magiccheck()
2226 sizeof(p->s), m->str_flags); in magiccheck()
2236 slen = MIN(m->vallen, sizeof(m->value.s)); in magiccheck()
2240 if (slen > 0 && m->str_flags == 0) { in magiccheck()
2242 idx = m->str_range + slen; in magiccheck()
2243 if (m->str_range == 0 || ms->search.s_len < idx) in magiccheck()
2246 m->value.s, slen, ms->search.s + idx)); in magiccheck()
2258 for (idx = 0; m->str_range == 0 || idx < m->str_range; idx++) { in magiccheck()
2264 v = file_strncmp(m->value.s, ms->search.s + idx, slen, in magiccheck()
2265 ms->search.s_len - idx, m->str_flags); in magiccheck()
2281 if (m->str_flags & STRING_IGNORE_CASE) { in magiccheck()
2285 pattern = convert_libmagic_pattern((char *)m->value.s, m->vallen, options); in magiccheck()
2354 matched = der_cmp(ms, m); in magiccheck()
2365 v = memcmp(m->value.guid, p->guid, sizeof(p->guid)); in magiccheck()
2368 file_magerror(ms, "invalid type %d in magiccheck()", m->type); in magiccheck()
2372 v = file_signextend(ms, m, v); in magiccheck()
2374 switch (m->reln) { in magiccheck()
2401 if (m->flag & UNSIGNED) { in magiccheck()
2420 if (m->flag & UNSIGNED) { in magiccheck()
2461 m->reln); in magiccheck()
2466 file_magic_strength(m, 1)); in magiccheck()
2473 handle_annotation(struct magic_set *ms, struct magic *m, int firstline) in handle_annotation() argument
2475 if ((ms->flags & MAGIC_APPLE) && m->apple[0]) { in handle_annotation()
2478 if (file_printf(ms, "%.8s", m->apple) == -1) in handle_annotation()
2482 if ((ms->flags & MAGIC_EXTENSION) && m->ext[0]) { in handle_annotation()
2485 if (file_printf(ms, "%s", m->ext) == -1) in handle_annotation()
2489 if ((ms->flags & MAGIC_MIME_TYPE) && m->mimetype[0]) { in handle_annotation()
2494 if (varexpand(ms, buf, sizeof(buf), m->mimetype) == -1) in handle_annotation()
2495 p = m->mimetype; in handle_annotation()