file/src/softmagic.c File Reference

#include "file.h"
#include "magic.h"
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
#include <time.h>

Include dependency graph for softmagic.c:

Go to the source code of this file.

Defines

#define DO_CVT(fld, cast)
#define REG_STARTEND   0

Functions

static const char * rcsid (const char *p)
static int match (struct magic_set *ms, struct magic *magic, uint32_t nmagic, const unsigned char *s, size_t nbytes)
static int mget (struct magic_set *ms, const unsigned char *s, struct magic *m, size_t nbytes, unsigned int cont_level)
static int magiccheck (struct magic_set *ms, struct magic *m)
static int32_t mprint (struct magic_set *ms, struct magic *m)
static void mdebug (uint32_t offset, const char *str, size_t len)
static int mcopy (struct magic_set *ms, union VALUETYPE *p, int type, int indir, const unsigned char *s, uint32_t offset, size_t nbytes, size_t linecnt)
static int mconvert (struct magic_set *ms, struct magic *m)
static int print_sep (struct magic_set *ms, int firstline)
static void cvt_8 (union VALUETYPE *p, const struct magic *m)
static void cvt_16 (union VALUETYPE *p, const struct magic *m)
static void cvt_32 (union VALUETYPE *p, const struct magic *m)
static void cvt_64 (union VALUETYPE *p, const struct magic *m)
int file_softmagic (struct magic_set *ms, const unsigned char *buf, size_t nbytes)
int file_check_mem (struct magic_set *ms, unsigned int level)
static int check_fmt (struct magic_set *ms, struct magic *m)
char * strndup (const char *, size_t)
static uint64_t file_strncmp (const char *s1, const char *s2, size_t len, uint32_t flags)
static uint64_t file_strncmp16 (const char *a, const char *b, size_t len, uint32_t flags)


Define Documentation

#define DO_CVT ( fld,
cast   ) 

Value:

if (m->num_mask) \
                switch (m->mask_op & FILE_OPS_MASK) { \
                case FILE_OPAND: \
                        p->fld &= cast m->num_mask; \
                        break; \
                case FILE_OPOR: \
                        p->fld |= cast m->num_mask; \
                        break; \
                case FILE_OPXOR: \
                        p->fld ^= cast m->num_mask; \
                        break; \
                case FILE_OPADD: \
                        p->fld += cast m->num_mask; \
                        break; \
                case FILE_OPMINUS: \
                        p->fld -= cast m->num_mask; \
                        break; \
                case FILE_OPMULTIPLY: \
                        p->fld *= cast m->num_mask; \
                        break; \
                case FILE_OPDIVIDE: \
                        p->fld /= cast m->num_mask; \
                        break; \
                case FILE_OPMODULO: \
                        p->fld %= cast m->num_mask; \
                        break; \
                } \
        if (m->mask_op & FILE_OPINVERSE) \
                p->fld = ~p->fld \

Definition at line 537 of file softmagic.c.

Referenced by cvt_16(), cvt_32(), cvt_64(), and cvt_8().

#define REG_STARTEND   0

Referenced by magiccheck().


Function Documentation

static int check_fmt ( struct magic_set ms,
struct magic m 
) [static]

Definition at line 311 of file softmagic.c.

References magic::desc, and file_magerror().

Referenced by mprint().

static void cvt_16 ( union VALUETYPE *  p,
const struct magic m 
) [static]

Definition at line 575 of file softmagic.c.

References DO_CVT.

Referenced by mconvert().

static void cvt_32 ( union VALUETYPE *  p,
const struct magic m 
) [static]

Definition at line 581 of file softmagic.c.

References DO_CVT.

Referenced by mconvert().

static void cvt_64 ( union VALUETYPE *  p,
const struct magic m 
) [static]

Definition at line 587 of file softmagic.c.

References DO_CVT.

Referenced by mconvert().

static void cvt_8 ( union VALUETYPE *  p,
const struct magic m 
) [static]

Definition at line 569 of file softmagic.c.

References DO_CVT.

Referenced by mconvert().

int file_check_mem ( struct magic_set ms,
unsigned int  level 
)

Definition at line 99 of file softmagic.c.

References magic_set::c, COND_NONE, file_oomem(), magic_set::cont::level_info::got_match, magic_set::cont::level_info::last_cond, magic_set::cont::level_info::last_match, magic_set::cont::len, and magic_set::cont::li.

Referenced by match(), and parse().

int file_softmagic ( struct magic_set ms,
const unsigned char *  buf,
size_t  nbytes 
)

Definition at line 83 of file softmagic.c.

References mlist::magic, match(), magic_set::mlist, mlist::next, and mlist::nmagic.

Referenced by file_buffer().

static uint64_t file_strncmp ( const char *  s1,
const char *  s2,
size_t  len,
uint32_t  flags 
) [static]

Definition at line 1362 of file softmagic.c.

References STRING_COMPACT_BLANK, STRING_COMPACT_OPTIONAL_BLANK, STRING_IGNORE_LOWERCASE, and STRING_IGNORE_UPPERCASE.

Referenced by file_strncmp16(), and magiccheck().

static uint64_t file_strncmp16 ( const char *  a,
const char *  b,
size_t  len,
uint32_t  flags 
) [static]

Definition at line 1427 of file softmagic.c.

References file_strncmp().

Referenced by magiccheck().

static int magiccheck ( struct magic_set ms,
struct magic m 
) [static]

Definition at line 1440 of file softmagic.c.

References FILE_BEDATE, FILE_BELDATE, FILE_BELONG, FILE_BEQDATE, FILE_BEQLDATE, FILE_BEQUAD, FILE_BESHORT, FILE_BESTRING16, FILE_BYTE, FILE_DATE, FILE_DEFAULT, FILE_LDATE, FILE_LEDATE, FILE_LELDATE, FILE_LELONG, FILE_LEQDATE, FILE_LEQLDATE, FILE_LEQUAD, FILE_LESHORT, FILE_LESTRING16, FILE_LONG, file_magerror(), FILE_MEDATE, FILE_MELDATE, FILE_MELONG, FILE_PSTRING, FILE_QDATE, FILE_QLDATE, FILE_QUAD, FILE_REGEX, FILE_SEARCH, FILE_SHORT, file_signextend(), FILE_STRING, file_strncmp(), file_strncmp16(), magic::flag, magic_set::flags, MAGIC_DEBUG, MIN, magic_set::ms_value, magic::offset, magic_set::offset, magic::VALUETYPE::q, REG_STARTEND, magic::reln, magic_set::rm_len, magic_set::s, magic::VALUETYPE::s, magic_set::s_len, magic_set::search, STRING_IGNORE_CASE, magic::type, UNSIGNED, magic::vallen, and magic::value.

Referenced by match().

static int match ( struct magic_set ms,
struct magic magic,
uint32_t  nmagic,
const unsigned char *  s,
size_t  nbytes 
) [static]

Definition at line 148 of file softmagic.c.

References magic_set::c, cond(), COND_ELIF, COND_ELSE, file_check_mem(), FILE_DEFAULT, file_printf(), magic_set::flags, magic_set::cont::level_info::last_match, magic_set::cont::li, magic_set::line, magic, MAGIC_CONTINUE, magiccheck(), mget(), mprint(), magic_set::cont::level_info::off, OFFADD, magic_set::offset, and print_sep().

Referenced by file_softmagic(), readLine(), and rpmalAllSatisfiesDepend().

static int mconvert ( struct magic_set ms,
struct magic m 
) [static]

Definition at line 598 of file softmagic.c.

References cvt_16(), cvt_32(), cvt_64(), cvt_8(), FILE_BEDATE, FILE_BELDATE, FILE_BELONG, FILE_BEQDATE, FILE_BEQLDATE, FILE_BEQUAD, FILE_BESHORT, FILE_BESTRING16, FILE_BYTE, FILE_DATE, FILE_DEFAULT, FILE_LDATE, FILE_LEDATE, FILE_LELDATE, FILE_LELONG, FILE_LEQDATE, FILE_LEQLDATE, FILE_LEQUAD, FILE_LESHORT, FILE_LESTRING16, FILE_LONG, file_magerror(), FILE_MEDATE, FILE_MELDATE, FILE_MELONG, FILE_PSTRING, FILE_QDATE, FILE_QLDATE, FILE_QUAD, FILE_REGEX, FILE_SEARCH, FILE_SHORT, FILE_STRING, magic_set::ms_value, and magic::type.

Referenced by mget().

static int mcopy ( struct magic_set ms,
union VALUETYPE *  p,
int  type,
int  indir,
const unsigned char *  s,
uint32_t  offset,
size_t  nbytes,
size_t  linecnt 
) [static]

Definition at line 712 of file softmagic.c.

References FILE_BESTRING16, FILE_LESTRING16, file_magerror(), FILE_PSTRING, FILE_REGEX, FILE_SEARCH, FILE_STRING, magic_set::offset, magic_set::rm_len, magic_set::s, magic_set::s_len, and magic_set::search.

Referenced by mget().

static void mdebug ( uint32_t  offset,
const char *  str,
size_t  len 
) [static]

Definition at line 703 of file softmagic.c.

References file_showstr().

Referenced by mget().

static int mget ( struct magic_set ms,
const unsigned char *  s,
struct magic m,
size_t  nbytes,
unsigned int  cont_level 
) [static]

Definition at line 817 of file softmagic.c.

References magic_set::c, FILE_BEDATE, FILE_BELDATE, FILE_BELONG, FILE_BESHORT, FILE_BYTE, FILE_DATE, FILE_DEFAULT, FILE_LDATE, FILE_LEDATE, FILE_LELDATE, FILE_LELONG, FILE_LESHORT, FILE_LONG, file_mdump(), FILE_MEDATE, FILE_MELDATE, FILE_MELONG, FILE_OPADD, FILE_OPAND, FILE_OPDIVIDE, FILE_OPINDIRECT, FILE_OPINVERSE, FILE_OPMINUS, FILE_OPMODULO, FILE_OPMULTIPLY, FILE_OPOR, FILE_OPS_MASK, FILE_OPXOR, FILE_PSTRING, FILE_REGEX, FILE_SEARCH, FILE_SHORT, FILE_STRING, magic::flag, magic_set::flags, magic::in_offset, magic::in_op, magic::in_type, INDIR, INDIROFFADD, magic_set::cont::li, MAGIC_DEBUG, mconvert(), mcopy(), mdebug(), magic_set::ms_value, magic_set::cont::level_info::off, magic_set::offset, magic::type, and magic::vallen.

Referenced by match().

static int32_t mprint ( struct magic_set ms,
struct magic m 
) [static]

Definition at line 354 of file softmagic.c.

References check_fmt(), magic::desc, FILE_BEDATE, FILE_BELDATE, FILE_BELONG, FILE_BEQDATE, FILE_BEQLDATE, FILE_BEQUAD, FILE_BESHORT, FILE_BESTRING16, FILE_BYTE, FILE_DATE, FILE_DEFAULT, file_fmttime(), FILE_LDATE, FILE_LEDATE, FILE_LELDATE, FILE_LELONG, FILE_LEQDATE, FILE_LEQLDATE, FILE_LEQUAD, FILE_LESHORT, FILE_LESTRING16, FILE_LONG, file_magerror(), FILE_MEDATE, FILE_MELDATE, FILE_MELONG, file_oomem(), file_printf(), FILE_PSTRING, FILE_QDATE, FILE_QLDATE, FILE_QUAD, FILE_REGEX, FILE_SEARCH, FILE_SHORT, file_signextend(), FILE_STRING, magic_set::ms_value, magic_set::offset, REGEX_OFFSET_START, magic::reln, magic_set::rm_len, magic_set::s, magic::VALUETYPE::s, magic_set::search, snprintf(), strndup(), magic::type, magic::vallen, and magic::value.

Referenced by match().

static int print_sep ( struct magic_set ms,
int  firstline 
) [static]

Definition at line 1676 of file softmagic.c.

References file_printf().

Referenced by match().

static const char* rcsid ( const char *  p  )  [static]

Definition at line 41 of file softmagic.c.

char * strndup ( const char *  ,
size_t   
)

Definition at line 337 of file softmagic.c.

Referenced by mprint().


Generated on Fri May 25 21:18:43 2007 for rpm by  doxygen 1.5.2