File: lex.h

package info (click to toggle)
bmf 0.9.4-9
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd, wheezy
  • size: 388 kB
  • ctags: 428
  • sloc: ansic: 5,517; sh: 322; makefile: 132
file content (44 lines) | stat: -rw-r--r-- 1,249 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
/* $Id: lex.h,v 1.4 2002/10/12 17:36:41 tommy Exp $ */

/*
 * Copyright (c) 2002 Tom Marshall <tommy@tig-grr.com>
 *
 * This program is free software.  It may be distributed under the terms
 * in the file LICENSE, found in the top level of the distribution.
 */

#ifndef _TOK_H
#define _TOK_H

typedef enum { from, eof, word } toktype_t;

typedef struct _tok
{
    toktype_t   tt;         /* token type */
    char*       p;
    uint        len;
} tok_t;

typedef enum { envelope, hdrs, body } msgsec_t;

typedef struct _lex
{
    mbox_t      mboxtype;
    msgsec_t    section;    /* current section (envelope, headers, body) */
    uint        pos;        /* current position */
    uint        bom;        /* beginning of message */
    uint        eom;        /* end of current message (start of next) */
    uint        lineend;    /* line end (actually, start of next line) */
    uint        buflen;     /* length of buffer */
    char*       pbuf;
} lex_t;

void    lex_create   ( lex_t* plex, mbox_t mboxtype );
void    lex_destroy  ( lex_t* plex );

bool_t  lex_load     ( lex_t* plex, int fd );
void    lex_nexttoken( lex_t* plex, tok_t* ptok );

void    lex_passthru ( lex_t* plex, bool_t is_spam, double hits );

#endif /* ndef TOK_H */