Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
John McEleney
/
mailutils
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
Commit
2b74ba3a
...
2b74ba3aaf67363f6bceed21a905d0a42b59ce3b
authored
2003-01-05 16:55:33 +0000
by
Sergey Poznyakoff
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
Added relational.c.
1 parent
677d309d
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
100 additions
and
0 deletions
libsieve/Makefile.am
libsieve/relational.c
libsieve/Makefile.am
View file @
2b74ba3
...
...
@@ -31,6 +31,7 @@ libsieve_la_SOURCES = \
load.c
\
prog.c
\
register.c
\
relational.c
\
require.c
\
runtime.c
\
sieve-gram.c
\
...
...
libsieve/relational.c
0 → 100644
View file @
2b74ba3
/* GNU Mailutils -- a suite of utilities for electronic mail
Copyright (C) 2003 Free Software Foundation, Inc.
GNU Mailutils is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Mailutils is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with GNU Mailutils; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <unistd.h>
#include <string.h>
#include <sieve.h>
#define CAT2(a,b) a##b
#define CAT3(a,b,c) a##b##c
#define DCL(name,op)\
static int CAT2(op_,name) (int num, int lim) { return num op lim; }\
static int CAT3(op_,name,_size_t) (size_t num, size_t lim) { return num op lim; }
DCL
(
eq
,
==
)
DCL
(
ne
,
!=
)
DCL
(
gt
,
>
)
DCL
(
ge
,
>=
)
DCL
(
lt
,
<
)
DCL
(
le
,
<=
)
static
struct
reltest_tab
{
char
*
name
;
sieve_relcmp_t
test
;
sieve_relcmpn_t
stest
;
}
testtab
[]
=
{
#define DEF(name) { #name, CAT2(op_,name), CAT3(op_,name,_size_t) }
DEF
(
eq
),
DEF
(
ne
),
DEF
(
gt
),
DEF
(
ge
),
DEF
(
lt
),
DEF
(
le
)
};
static
struct
reltest_tab
*
_relcmp_lookup
(
const
char
*
str
)
{
int
i
;
for
(
i
=
0
;
i
<
sizeof
(
testtab
)
/
sizeof
(
testtab
[
0
]);
i
++
)
if
(
strcmp
(
testtab
[
i
].
name
,
str
)
==
0
)
return
&
testtab
[
i
];
return
0
;
}
int
sieve_str_to_relcmp
(
const
char
*
str
,
sieve_relcmp_t
*
test
,
sieve_relcmpn_t
*
stest
)
{
struct
reltest_tab
*
t
=
_relcmp_lookup
(
str
);
if
(
t
)
{
if
(
test
)
*
test
=
t
->
test
;
if
(
stest
)
*
stest
=
t
->
stest
;
return
0
;
}
return
1
;
}
sieve_relcmp_t
sieve_get_relcmp
(
sieve_machine_t
mach
,
list_t
tags
)
{
sieve_value_t
*
arg
;
sieve_relcmp_t
test
=
NULL
;
if
(
sieve_tag_lookup
(
tags
,
"value"
,
&
arg
)
==
0
)
return
op_ne
;
sieve_str_to_relcmp
(
arg
->
v
.
string
,
&
test
,
NULL
);
return
test
;
}
int
sieve_require_relational
(
sieve_machine_t
mach
,
const
char
*
name
)
{
/* noop */
return
0
;
}
Please
register
or
sign in
to post a comment