diff --git a/src/lib-sieve/cmd-if.c b/src/lib-sieve/cmd-if.c
index c528588a92df59e02159c48c2b282559ceb9301f..aa4cd78e571a242d2873149450954f65488e98ed 100644
--- a/src/lib-sieve/cmd-if.c
+++ b/src/lib-sieve/cmd-if.c
@@ -73,7 +73,7 @@ bool cmd_if_validate(struct sieve_validator *validator, struct sieve_command_con
 	return TRUE;
 }
 
-bool cmd_elsif_validate(struct sieve_validator *validator __attr_unused__, struct sieve_command_context *cmd)
+bool cmd_elsif_validate(struct sieve_validator *validator ATTR_UNUSED, struct sieve_command_context *cmd)
 {
 	struct sieve_command_context *prev_context;
 
@@ -92,7 +92,7 @@ bool cmd_elsif_validate(struct sieve_validator *validator __attr_unused__, struc
 	return TRUE;
 }
 
-bool cmd_else_validate(struct sieve_validator *validator __attr_unused__, struct sieve_command_context *cmd) 
+bool cmd_else_validate(struct sieve_validator *validator ATTR_UNUSED, struct sieve_command_context *cmd) 
 {		
 	struct sieve_command_context *prev_context;
 	
diff --git a/src/lib-sieve/ext-fileinto.c b/src/lib-sieve/ext-fileinto.c
index 3d06c953462e2f3707422e1b5271b0425eccb00d..37a7527767aa55ba8877b494ecf22fae92f05283 100644
--- a/src/lib-sieve/ext-fileinto.c
+++ b/src/lib-sieve/ext-fileinto.c
@@ -88,7 +88,7 @@ static bool ext_fileinto_opcode_dump(struct sieve_interpreter *interpreter)
  */
 
 static bool ext_fileinto_opcode_execute
-	(struct sieve_interpreter *interpreter __attr_unused__) 
+	(struct sieve_interpreter *interpreter ATTR_UNUSED) 
 {
 	return TRUE;
 }
diff --git a/src/lib-sieve/ext-reject.c b/src/lib-sieve/ext-reject.c
index 1d4a1b415b7e83b5ec64b9db548c1bd1a47345d0..c98a82cf37df594f9d650f627cdc9fe037ca85c5 100644
--- a/src/lib-sieve/ext-reject.c
+++ b/src/lib-sieve/ext-reject.c
@@ -73,7 +73,7 @@ static bool cmd_reject_generate
 }
 
 /* Load extension into generator */
-static bool ext_reject_generator_load(struct sieve_generator *generator __attr_unused__)
+static bool ext_reject_generator_load(struct sieve_generator *generator ATTR_UNUSED)
 {
 	return TRUE;
 }
diff --git a/src/lib-sieve/plugins/Makefile b/src/lib-sieve/plugins/Makefile
index 282c7b6cacc3b07df25d802517660ff646ce84e2..47250fb368ca4a49b862c2a3a8968604198e9cef 100644
--- a/src/lib-sieve/plugins/Makefile
+++ b/src/lib-sieve/plugins/Makefile
@@ -67,7 +67,7 @@ AUTOMAKE = ${SHELL} /home/stephan/src/dovecot-libsieve/missing --run automake-1.
 AWK = gawk
 CC = gcc
 CCDEPMODE = depmode=gcc3
-CFLAGS = -std=gnu99 -g -O2 -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wchar-subscripts -Wformat=2 -Wbad-function-cast 
+CFLAGS = -std=gnu99 -g -O2 -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wchar-subscripts -Wformat=2 -Wbad-function-cast -Wstrict-aliasing=2 
 CPP = gcc -E
 CPPFLAGS = 
 CXX = g++
@@ -116,7 +116,7 @@ RAND_LIBS =
 RANLIB = ranlib
 SET_MAKE = 
 SHELL = /bin/bash
-STORAGE_LIBS =  /home/stephan/src/dovecot/dovecot-1.0.2/src/lib-storage/index/maildir/libstorage_maildir.a /home/stephan/src/dovecot/dovecot-1.0.2/src/lib-storage/index/mbox/libstorage_mbox.a /home/stephan/src/dovecot/dovecot-1.0.2/src/lib-storage/index/libstorage_index.a /home/stephan/src/dovecot/dovecot-1.0.2/src/lib-index/libindex.a
+STORAGE_LIBS =  /home/stephan/src/release/dovecot/src/lib-storage/index/maildir/libstorage_maildir.a /home/stephan/src/release/dovecot/src/lib-storage/index/mbox/libstorage_mbox.a /home/stephan/src/release/dovecot/src/lib-storage/index/dbox/libstorage_dbox.a /home/stephan/src/release/dovecot/src/lib-storage/index/cydir/libstorage_cydir.a /home/stephan/src/release/dovecot/src/lib-storage/index/libstorage_index.a /home/stephan/src/release/dovecot/src/lib-index/libindex.a
 STRIP = strip
 VERSION = 1.0.2
 ac_ct_CC = gcc
@@ -140,8 +140,8 @@ build_vendor = pc
 datadir = ${datarootdir}
 datarootdir = ${prefix}/share
 docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
-dovecot_incdir = /home/stephan/src/dovecot/dovecot-1.0.2
-dovecotdir = /home/stephan/src/dovecot/dovecot-1.0.2
+dovecot_incdir = /home/stephan/src/release/dovecot
+dovecotdir = /home/stephan/src/release/dovecot
 dvidir = ${docdir}
 exec_prefix = ${prefix}
 host = i686-pc-linux-gnu
diff --git a/src/lib-sieve/plugins/vacation/ext-vacation.c b/src/lib-sieve/plugins/vacation/ext-vacation.c
index 4e186bf2ac5a7aed40a261ebc650e25f1eebd831..64f2da6cf3998a4bcc08a0c2f559754ebc5726ce 100644
--- a/src/lib-sieve/plugins/vacation/ext-vacation.c
+++ b/src/lib-sieve/plugins/vacation/ext-vacation.c
@@ -116,9 +116,9 @@ static bool cmd_vacation_validate_addresses_tag
 }
 
 static bool cmd_vacation_validate_mime_tag
-	(struct sieve_validator *validator __attr_unused__, 
-	struct sieve_ast_argument **arg __attr_unused__, 
-	struct sieve_command_context *cmd __attr_unused__)
+	(struct sieve_validator *validator ATTR_UNUSED, 
+	struct sieve_ast_argument **arg ATTR_UNUSED, 
+	struct sieve_command_context *cmd ATTR_UNUSED)
 {
 	/* FIXME: assign somewhere */
 		
diff --git a/src/lib-sieve/sieve-ast.c b/src/lib-sieve/sieve-ast.c
index 8d5c709806922289896cb4a190d9a7e787e2cc9c..bf2a19294568cd205def016532b5e5aa4cca5e31 100644
--- a/src/lib-sieve/sieve-ast.c
+++ b/src/lib-sieve/sieve-ast.c
@@ -253,7 +253,7 @@ void sieve_ast_ref(struct sieve_ast *ast) {
 
 void sieve_ast_unref(struct sieve_ast **ast) {
 	if ( ast != NULL ) {
-		pool_unref((*ast)->pool);
+		pool_unref(&((*ast)->pool));
 		*ast = NULL;
 	}
 }
diff --git a/src/lib-sieve/sieve-binary.c b/src/lib-sieve/sieve-binary.c
index 00b3bf8307f397018d6f67ffc0151146a5285d4c..90920446edcdc5a85cb8026f2fc471a3e3acb746 100644
--- a/src/lib-sieve/sieve-binary.c
+++ b/src/lib-sieve/sieve-binary.c
@@ -7,7 +7,7 @@
 
 struct sieve_binary {
 	pool_t pool;
-	array_t ARRAY_DEFINE(extensions, struct sieve_extension *); 
+	ARRAY_DEFINE(extensions, const struct sieve_extension *); 
 	buffer_t *code;
 };
 
@@ -22,7 +22,7 @@ struct sieve_binary *sieve_binary_create_new(void)
 	
 	binary->code = buffer_create_dynamic(pool, 256);
 	
-	ARRAY_CREATE(&binary->extensions, pool, struct sieve_extension *, 4);
+	p_array_init(&binary->extensions, pool, 4);
 	
 	return binary;
 }
@@ -35,7 +35,7 @@ void sieve_binary_ref(struct sieve_binary *binary)
 void sieve_binary_unref(struct sieve_binary **binary) 
 {
 	if ( binary != NULL && *binary != NULL ) {
-		pool_unref((*binary)->pool);
+		pool_unref(&((*binary)->pool));
 		*binary = NULL;
 	}
 }
@@ -44,14 +44,14 @@ void sieve_binary_unref(struct sieve_binary **binary)
 
 unsigned int sieve_binary_link_extension(struct sieve_binary *binary, const struct sieve_extension *extension) 
 {
-	array_append(&binary->extensions, &extension, 1);
+	array_append(&(binary->extensions), &extension, 1);
 	
-	return array_count(&binary->extensions) - 1;
+	return array_count(&(binary->extensions)) - 1;
 }
 
 const struct sieve_extension *sieve_binary_get_extension(struct sieve_binary *binary, unsigned int index) 
 {
-	const struct sieve_extension * const *ext = array_idx(&binary->extensions, index);
+	const struct sieve_extension * const*ext = array_idx(&(binary->extensions), index);
 	
 	return *ext;
 }
diff --git a/src/lib-sieve/sieve-code.c b/src/lib-sieve/sieve-code.c
index 6c71bf80268cccac21d2eadab8c684c608d9818d..8c5e7713b7d93c0599d7547fdc0aa2e6b0fd950b 100644
--- a/src/lib-sieve/sieve-code.c
+++ b/src/lib-sieve/sieve-code.c
@@ -77,21 +77,21 @@ static bool sieve_code_dump_jmpfalse(struct sieve_interpreter *interpreter)
 	return TRUE;
 }	
 	
-static bool sieve_code_dump_stop(struct sieve_interpreter *interpreter __attr_unused__)
+static bool sieve_code_dump_stop(struct sieve_interpreter *interpreter ATTR_UNUSED)
 {	
 	printf("STOP\n");
 	
 	return TRUE;
 }
 
-static bool sieve_code_dump_keep(struct sieve_interpreter *interpreter __attr_unused__)
+static bool sieve_code_dump_keep(struct sieve_interpreter *interpreter ATTR_UNUSED)
 {	
 	printf("KEEP\n");
 	
 	return TRUE;
 }
 
-static bool sieve_code_dump_discard(struct sieve_interpreter *interpreter __attr_unused__)
+static bool sieve_code_dump_discard(struct sieve_interpreter *interpreter ATTR_UNUSED)
 {	
 	printf("DISCARD\n");
 	
@@ -121,21 +121,21 @@ static bool sieve_code_execute_jmpfalse(struct sieve_interpreter *interpreter)
 	return TRUE;
 }	
 	
-static bool sieve_code_execute_stop(struct sieve_interpreter *interpreter __attr_unused__)
+static bool sieve_code_execute_stop(struct sieve_interpreter *interpreter ATTR_UNUSED)
 {	
 	printf(">> STOP\n");
 	
 	return FALSE;
 }
 
-static bool sieve_code_execute_keep(struct sieve_interpreter *interpreter __attr_unused__)
+static bool sieve_code_execute_keep(struct sieve_interpreter *interpreter ATTR_UNUSED)
 {	
 	printf(">> KEEP\n");
 	
 	return TRUE;
 }
 
-static bool sieve_code_execute_discard(struct sieve_interpreter *interpreter __attr_unused__)
+static bool sieve_code_execute_discard(struct sieve_interpreter *interpreter ATTR_UNUSED)
 {	
 	printf(">> DISCARD\n");
 	
diff --git a/src/lib-sieve/sieve-commands.c b/src/lib-sieve/sieve-commands.c
index da5bca0db77e30b082b2f9cd5abd2065da68527a..a9959202be63294480963173de3a4594f60e705b 100644
--- a/src/lib-sieve/sieve-commands.c
+++ b/src/lib-sieve/sieve-commands.c
@@ -77,7 +77,7 @@ const char *sieve_command_type_name(const struct sieve_command *command) {
 /* Code generation for trivial commands and tests */
 bool cmd_stop_generate
 	(struct sieve_generator *generator, 
-		struct sieve_command_context *ctx __attr_unused__) 
+		struct sieve_command_context *ctx ATTR_UNUSED) 
 {
 	sieve_generator_emit_opcode(generator, SIEVE_OPCODE_STOP);
 	return TRUE;
@@ -85,7 +85,7 @@ bool cmd_stop_generate
 
 bool cmd_keep_generate
 	(struct sieve_generator *generator, 
-		struct sieve_command_context *ctx __attr_unused__) 
+		struct sieve_command_context *ctx ATTR_UNUSED) 
 {
 	sieve_generator_emit_opcode(generator, SIEVE_OPCODE_KEEP);
 	return TRUE;
@@ -93,7 +93,7 @@ bool cmd_keep_generate
 
 bool cmd_discard_generate
 	(struct sieve_generator *generator, 
-		struct sieve_command_context *ctx __attr_unused__) 
+		struct sieve_command_context *ctx ATTR_UNUSED) 
 {
 	sieve_generator_emit_opcode(generator, SIEVE_OPCODE_DISCARD);
 	return TRUE;
@@ -101,7 +101,7 @@ bool cmd_discard_generate
 
 bool tst_false_generate
 	(struct sieve_generator *generator, 
-		struct sieve_command_context *context __attr_unused__,
+		struct sieve_command_context *context ATTR_UNUSED,
 		struct sieve_jumplist *jumps, bool jump_true)
 {
 	if ( !jump_true ) {
@@ -114,7 +114,7 @@ bool tst_false_generate
 
 bool tst_true_generate
 	(struct sieve_generator *generator, 
-		struct sieve_command_context *ctx __attr_unused__,
+		struct sieve_command_context *ctx ATTR_UNUSED,
 		struct sieve_jumplist *jumps, bool jump_true)
 {
 	if ( jump_true ) {
diff --git a/src/lib-sieve/sieve-generator.c b/src/lib-sieve/sieve-generator.c
index e9c6c1b58a72819f739ce069aac3f1aa40611c8f..50601f7b3d75096dc905a66a8eadefc3479cec1f 100644
--- a/src/lib-sieve/sieve-generator.c
+++ b/src/lib-sieve/sieve-generator.c
@@ -15,7 +15,7 @@
 /* Jump list */
 void sieve_jumplist_init(struct sieve_jumplist *jlist)
 {
-	ARRAY_CREATE(&jlist->jumps, pool_datastack_create(), sieve_size_t, 4);
+	t_array_init(&jlist->jumps, 4);
 }
 
 void sieve_jumplist_add(struct sieve_jumplist *jlist, sieve_size_t jump) 
@@ -78,11 +78,11 @@ struct sieve_generator *sieve_generator_create(struct sieve_ast *ast)
 
 void sieve_generator_free(struct sieve_generator *generator) 
 {
-	hash_destroy(generator->extension_index);
+	hash_destroy(&generator->extension_index);
 	
 	sieve_ast_unref(&generator->ast);
 	sieve_binary_unref(&generator->binary);
-	pool_unref(generator->pool);
+	pool_unref(&(generator->pool));
 }
 
 /* Registration functions */
diff --git a/src/lib-sieve/sieve-generator.h b/src/lib-sieve/sieve-generator.h
index f13ede8aa64a8af67e3df9605b1976485effc4ac..189629af5cd27982e52b1958866396587d5956d8 100644
--- a/src/lib-sieve/sieve-generator.h
+++ b/src/lib-sieve/sieve-generator.h
@@ -17,7 +17,7 @@ unsigned int sieve_generator_find_extension
 /* Jump list */
 
 struct sieve_jumplist {
-	array_t ARRAY_DEFINE(jumps, sieve_size_t);
+	ARRAY_DEFINE(jumps, sieve_size_t);
 };
 
 void sieve_jumplist_init(struct sieve_jumplist *jlist);
diff --git a/src/lib-sieve/sieve-interpreter.c b/src/lib-sieve/sieve-interpreter.c
index 65367437e7c23fe2c5e7fc0f78c701af5c47f2f4..1f59d20691b19ee3731dd56d1168ed117a4c029a 100644
--- a/src/lib-sieve/sieve-interpreter.c
+++ b/src/lib-sieve/sieve-interpreter.c
@@ -59,8 +59,8 @@ struct sieve_interpreter *sieve_interpreter_create(struct sieve_binary *binary)
 
 void sieve_interpreter_free(struct sieve_interpreter *interpreter) 
 {
-	pool_unref(interpreter->pool);
 	sieve_binary_unref(&interpreter->binary);
+	pool_unref(&(interpreter->pool));
 }
 
 inline void sieve_interpreter_reset(struct sieve_interpreter *interpreter) 
diff --git a/src/lib-sieve/sieve-lexer.c b/src/lib-sieve/sieve-lexer.c
index 544909f65c53470f9c9553b538e64662304f4c61..804e9d2f3ee87e7541f4498824e0c762dc9ccd66 100644
--- a/src/lib-sieve/sieve-lexer.c
+++ b/src/lib-sieve/sieve-lexer.c
@@ -27,8 +27,8 @@ struct sieve_lexer {
 	int current_line;
 	
 	enum sieve_token_type token_type;
-  string_t *token_str_value;
-  int token_int_value;
+	string_t *token_str_value;
+	int token_int_value;
 	
 	struct sieve_error_handler *ehandler;
 	
@@ -59,8 +59,8 @@ struct sieve_lexer *sieve_lexer_create(struct istream *stream, struct sieve_erro
 	return lexer;
 }
 
-void sieve_lexer_free(struct sieve_lexer *lexer __attr_unused__) {
-	pool_unref(lexer->pool); /* This frees any allocated string value as well */
+void sieve_lexer_free(struct sieve_lexer *lexer ATTR_UNUSED) {
+	pool_unref(&(lexer->pool)); /* This frees any allocated string value as well */
 }
 
 static void sieve_lexer_shift(struct sieve_lexer *lexer) {
@@ -68,15 +68,15 @@ static void sieve_lexer_shift(struct sieve_lexer *lexer) {
 		lexer->current_line++;	
 	
 	if ( lexer->buffer != NULL && lexer->buffer_pos + 1 < lexer->buffer_size )
-	  lexer->buffer_pos++;
+		lexer->buffer_pos++;
 	else {
 		if ( lexer->buffer != NULL )
 			i_stream_skip(lexer->input, lexer->buffer_size);
 		
 		lexer->buffer = i_stream_get_data(lexer->input, &lexer->buffer_size);
 	  
-	  if ( lexer->buffer == NULL && i_stream_read(lexer->input) > 0 )
-	  	lexer->buffer = i_stream_get_data(lexer->input, &lexer->buffer_size);
+		if ( lexer->buffer == NULL && i_stream_read(lexer->input) > 0 )
+	  		lexer->buffer = i_stream_get_data(lexer->input, &lexer->buffer_size);
 	  	
 		lexer->buffer_pos = 0;
 	}
@@ -94,64 +94,66 @@ static __inline__ int sieve_lexer_curchar(struct sieve_lexer *lexer) {
   return lexer->buffer[lexer->buffer_pos];
 }
 
-const char *sieve_lexer_token_string(struct sieve_lexer *lexer) {
+const char *sieve_lexer_token_string(struct sieve_lexer *lexer) 
+{
 	switch ( lexer->token_type ) {
-	case STT_NONE: return "no token (bug)"; 		
-	case STT_WHITESPACE: return "whitespace (bug)";
-  case STT_EOF: return "end of file";
-  
-  case STT_NUMBER: return "number"; 
-	case STT_IDENTIFIER: return "identifier"; 
-  case STT_TAG: return "tag";
-  case STT_STRING: return "string"; 
+		case STT_NONE: return "no token (bug)"; 		
+		case STT_WHITESPACE: return "whitespace (bug)";
+		case STT_EOF: return "end of file";
   
-  case STT_RBRACKET: return "')'"; 
-  case STT_LBRACKET: return "'('";
-  case STT_RCURLY: return "'}'"; 
-  case STT_LCURLY: return "'{'"; 
-  case STT_RSQUARE: return "']'"; 
-  case STT_LSQUARE: return "'['"; 
-  case STT_SEMICOLON: return "';'"; 
-  case STT_COMMA: return "','"; 
+		case STT_NUMBER: return "number"; 
+		case STT_IDENTIFIER: return "identifier"; 
+		case STT_TAG: return "tag";
+		case STT_STRING: return "string"; 
   
-  case STT_SLASH: return "'/'";  
-  case STT_COLON: return "':'";   
+		case STT_RBRACKET: return "')'"; 
+		case STT_LBRACKET: return "'('";
+		case STT_RCURLY: return "'}'"; 
+		case STT_LCURLY: return "'{'"; 
+		case STT_RSQUARE: return "']'"; 
+		case STT_LSQUARE: return "'['"; 
+		case STT_SEMICOLON: return "';'"; 
+		case STT_COMMA: return "','"; 
+  	
+		case STT_SLASH: return "'/'";  
+		case STT_COLON: return "':'";   
   
-  case STT_GARBAGE: return "unknown characters"; 
-  case STT_ERROR: return "error token (bug)";
-  }
+		case STT_GARBAGE: return "unknown characters"; 
+		case STT_ERROR: return "error token (bug)";
+	}
    
-  return "unknown token (bug)";
+	return "unknown token (bug)";
 }
 	
-void sieve_lexer_print_token(struct sieve_lexer *lexer) {
+void sieve_lexer_print_token(struct sieve_lexer *lexer) 
+{
 	switch ( lexer->token_type ) {
-	case STT_NONE: printf("??NONE?? "); break;		
-	case STT_WHITESPACE: printf("??WHITESPACE?? "); break;
-  case STT_EOF: printf("EOF\n"); break;
-  
-  case STT_NUMBER: printf("NUMBER "); break;
-	case STT_IDENTIFIER: printf("IDENTIFIER "); break;
-  case STT_TAG: printf("TAG "); break;
-  case STT_STRING: printf("STRING "); break;
+		case STT_NONE: printf("??NONE?? "); break;		
+		case STT_WHITESPACE: printf("??WHITESPACE?? "); break;
+		case STT_EOF: printf("EOF\n"); break;
   
-  case STT_RBRACKET: printf(") "); break;
-  case STT_LBRACKET: printf("( "); break;
-  case STT_RCURLY: printf("}\n"); break;
-  case STT_LCURLY: printf("{\n"); break;
-  case STT_RSQUARE: printf("] "); break;
-  case STT_LSQUARE: printf("[ "); break;
-  case STT_SEMICOLON: printf(";\n"); break;
-  case STT_COMMA: printf(", "); break;
+		case STT_NUMBER: printf("NUMBER "); break;
+		case STT_IDENTIFIER: printf("IDENTIFIER "); break;
+		case STT_TAG: printf("TAG "); break;
+		case STT_STRING: printf("STRING "); break;
   
-  case STT_SLASH: printf("/ "); break; 
-  case STT_COLON: printf(": "); break;  
+		case STT_RBRACKET: printf(") "); break;
+		case STT_LBRACKET: printf("( "); break;
+		case STT_RCURLY: printf("}\n"); break;
+		case STT_LCURLY: printf("{\n"); break;
+		case STT_RSQUARE: printf("] "); break;
+		case STT_LSQUARE: printf("[ "); break;
+		case STT_SEMICOLON: printf(";\n"); break;
+		case STT_COMMA: printf(", "); break;
   
-  case STT_GARBAGE: printf(">>GARBAGE<<"); break;
-  case STT_ERROR: printf(">>ERROR<<"); break;
-  default: 
-  	printf("UNKNOWN ");
-  	break;
+		case STT_SLASH: printf("/ "); break; 
+		case STT_COLON: printf(": "); break;  
+  	
+		case STT_GARBAGE: printf(">>GARBAGE<<"); break;
+		case STT_ERROR: printf(">>ERROR<<"); break;
+	default: 
+		printf("UNKNOWN ");
+		break;
 	}
 }
 
@@ -264,7 +266,7 @@ bool sieve_lexer_scan_raw_token(struct sieve_lexer *lexer)
 		return TRUE;
 		
 	// comment = bracket-comment / hash-comment
-  // white-space = 1*(SP / CRLF / HTAB) / comment
+  	// white-space = 1*(SP / CRLF / HTAB) / comment
 	case '\t':
 	case '\r':
 	case '\n':
diff --git a/src/lib-sieve/sieve-parser.c b/src/lib-sieve/sieve-parser.c
index 49c66103f104c73b0cf309feed6e9d1e2e464c75..2f9ac59c54737eb23e6a7bb13f1c1a8e2d0329dc 100644
--- a/src/lib-sieve/sieve-parser.c
+++ b/src/lib-sieve/sieve-parser.c
@@ -39,15 +39,15 @@ static bool sieve_parser_recover(struct sieve_parser *parser, enum sieve_token_t
 
 struct sieve_parser *sieve_parser_create(int fd, struct sieve_ast *ast, struct sieve_error_handler *ehandler) 
 {
-  pool_t pool;
 	struct sieve_parser *parser;
-  struct istream *stream;
+	struct istream *stream;
   
-	pool = pool_alloconly_create("sieve_parser", 4096);	
-	stream = i_stream_create_file(fd, pool,
-	 SIEVE_READ_BLOCK_SIZE, TRUE);
+	stream = i_stream_create_fd
+		(fd, SIEVE_READ_BLOCK_SIZE, TRUE);
 
 	if ( stream != NULL ) {
+		pool_t pool = pool_alloconly_create("sieve_parser", 4096);	
+
 		parser = p_new(pool, struct sieve_parser, 1);
 		parser->input = stream;
 		parser->pool = pool;
@@ -61,7 +61,6 @@ struct sieve_parser *sieve_parser_create(int fd, struct sieve_ast *ast, struct s
 		return parser;
 	}
 	
-	pool_unref(pool);
 	return NULL;
 }
 
@@ -74,7 +73,7 @@ void sieve_parser_free(struct sieve_parser *parser)
 
 	sieve_lexer_free(parser->lexer);
 
-	pool_unref(parser->pool);
+	pool_unref(&(parser->pool));
 }
 
 /* arguments = *argument [test / test-list]
diff --git a/src/lib-sieve/sieve-result.c b/src/lib-sieve/sieve-result.c
index b4812120b28e07c14762bcdf205cba96ac16cb0a..fc463b9f618c49c28ea4e2fedf9f3d854a66462c 100644
--- a/src/lib-sieve/sieve-result.c
+++ b/src/lib-sieve/sieve-result.c
@@ -38,7 +38,7 @@ struct sieve_result *sieve_result_create(void)
 
 void sieve_result_free(struct sieve_result *result) 
 {
-	pool_unref(result->pool);
+	pool_unref(&(result->pool));
 }
 
 void sieve_result_add_action
diff --git a/src/lib-sieve/sieve-validator.c b/src/lib-sieve/sieve-validator.c
index d3d06d0c37659c8b52658fa4a793b0cee4616e32..d6e00558a44c95a68e2eaa989eba218217bdb4d3 100644
--- a/src/lib-sieve/sieve-validator.c
+++ b/src/lib-sieve/sieve-validator.c
@@ -71,10 +71,10 @@ struct sieve_validator *sieve_validator_create(struct sieve_ast *ast, struct sie
 
 void sieve_validator_free(struct sieve_validator *validator) 
 {
-	hash_destroy(validator->commands);
+	hash_destroy(&validator->commands);
 	
 	sieve_ast_unref(&validator->ast);
-	pool_unref(validator->pool);
+	pool_unref(&(validator->pool));
 }
 
 /* Command registry */
@@ -87,8 +87,8 @@ struct sieve_command_registration {
 
 /* Dummy function */
 static bool _cmd_unknown_validate
-	(struct sieve_validator *validator __attr_unused__, 
-	struct sieve_command_context *cmd __attr_unused__) 
+	(struct sieve_validator *validator ATTR_UNUSED, 
+	struct sieve_command_context *cmd ATTR_UNUSED) 
 {
 	i_unreached();
 	return FALSE;
@@ -157,9 +157,9 @@ static const struct sieve_command *
 /* Per-command tag registry */
 
 static bool _unknown_tag_validate
-	(struct sieve_validator *validator __attr_unused__, 
-	struct sieve_ast_argument **arg __attr_unused__, 
-	struct sieve_command_context *tst __attr_unused__)
+	(struct sieve_validator *validator ATTR_UNUSED, 
+	struct sieve_ast_argument **arg ATTR_UNUSED, 
+	struct sieve_command_context *tst ATTR_UNUSED)
 {
 	i_unreached();
 	return FALSE;
@@ -256,9 +256,9 @@ void sieve_validator_link_comparator_tag
 /* Match type validation */
 
 static bool sieve_validate_match_type_tag
-	(struct sieve_validator *validator __attr_unused__, 
-	struct sieve_ast_argument **arg __attr_unused__, 
-	struct sieve_command_context *cmd __attr_unused__)
+	(struct sieve_validator *validator ATTR_UNUSED, 
+	struct sieve_ast_argument **arg ATTR_UNUSED, 
+	struct sieve_command_context *cmd ATTR_UNUSED)
 {
 	/* Syntax:   
 	 *   ":is" / ":contains" / ":matches"
@@ -284,9 +284,9 @@ void sieve_validator_link_match_type_tags
 /* Address part validation */
 
 static bool sieve_validate_address_part_tag
-	(struct sieve_validator *validator __attr_unused__, 
-	struct sieve_ast_argument **arg __attr_unused__, 
-	struct sieve_command_context *cmd __attr_unused__)
+	(struct sieve_validator *validator ATTR_UNUSED, 
+	struct sieve_ast_argument **arg ATTR_UNUSED, 
+	struct sieve_command_context *cmd ATTR_UNUSED)
 {
 	/* Syntax:   
 	 *   ":localpart" / ":domain" / ":all"
diff --git a/src/lib-sieve/tst-address.c b/src/lib-sieve/tst-address.c
index 023fcfb45f5859a8728495b90ad966af2ebe5d83..665bfebecdf6b5e554425d203f92f3cd45a9a0ad 100644
--- a/src/lib-sieve/tst-address.c
+++ b/src/lib-sieve/tst-address.c
@@ -63,7 +63,7 @@ bool tst_address_validate(struct sieve_validator *validator, struct sieve_comman
 
 bool tst_address_generate
 	(struct sieve_generator *generator, 
-		struct sieve_command_context *ctx __attr_unused__) 
+		struct sieve_command_context *ctx ATTR_UNUSED) 
 {
 	struct sieve_ast_argument *arg = (struct sieve_ast_argument *) ctx->data;
 	sieve_generator_emit_opcode(generator, SIEVE_OPCODE_ADDRESS);
diff --git a/src/lib-sieve/tst-size.c b/src/lib-sieve/tst-size.c
index 563f730684315b14b60d81db547931abbf26e831..751c76f453a2a3fb8eb9bfec02b78990e428a205 100644
--- a/src/lib-sieve/tst-size.c
+++ b/src/lib-sieve/tst-size.c
@@ -31,7 +31,7 @@ struct tst_size_context_data {
 
 static bool tst_size_validate_over_tag
 	(struct sieve_validator *validator, 
-	struct sieve_ast_argument **arg __attr_unused__, 
+	struct sieve_ast_argument **arg ATTR_UNUSED, 
 	struct sieve_command_context *tst)
 {
 	struct tst_size_context_data *ctx_data = (struct tst_size_context_data *) tst->data;	
@@ -47,7 +47,7 @@ static bool tst_size_validate_over_tag
 
 static bool tst_size_validate_under_tag
 	(struct sieve_validator *validator, 
-	struct sieve_ast_argument **arg __attr_unused__, 
+	struct sieve_ast_argument **arg ATTR_UNUSED, 
 	struct sieve_command_context *tst)
 {
 	struct tst_size_context_data *ctx_data = (struct tst_size_context_data *) tst->data;	
diff --git a/src/sieve-bin/Makefile b/src/sieve-bin/Makefile
index 452e69a4500a5c86691baa3597b32a8c1a8b2e2f..935e219d7c654f96c3e4a3189633f848f60d1eac 100644
--- a/src/sieve-bin/Makefile
+++ b/src/sieve-bin/Makefile
@@ -36,7 +36,7 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = i686-pc-linux-gnu
 host_triplet = i686-pc-linux-gnu
-sbin_PROGRAMS = sievec$(EXEEXT)
+bin_PROGRAMS = sievec$(EXEEXT)
 subdir = src/sieve-bin
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -46,15 +46,18 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/libsieve-config.h
 CONFIG_CLEAN_FILES =
-am__installdirs = "$(DESTDIR)$(sbindir)"
-sbinPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
-PROGRAMS = $(sbin_PROGRAMS)
+am__installdirs = "$(DESTDIR)$(bindir)"
+binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+PROGRAMS = $(bin_PROGRAMS)
 am_sievec_OBJECTS = sievec.$(OBJEXT)
 sievec_OBJECTS = $(am_sievec_OBJECTS)
 am__DEPENDENCIES_1 = $(top_srcdir)/src/lib-sieve/libsieve.a \
 	$(dovecot_incdir)/src/lib/liblib.a
 am__DEPENDENCIES_2 = $(plugin_dir)/vacation/lib_ext_vacation.a
 am__DEPENDENCIES_3 =
+am__DEPENDENCIES_4 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) \
+	$(am__DEPENDENCIES_3) $(am__DEPENDENCIES_3) \
+	$(am__DEPENDENCIES_3)
 DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/depcomp
 am__depfiles_maybe = depfiles
@@ -82,7 +85,7 @@ AUTOMAKE = ${SHELL} /home/stephan/src/dovecot-libsieve/missing --run automake-1.
 AWK = gawk
 CC = gcc
 CCDEPMODE = depmode=gcc3
-CFLAGS = -std=gnu99 -g -O2 -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wchar-subscripts -Wformat=2 -Wbad-function-cast 
+CFLAGS = -std=gnu99 -g -O2 -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wchar-subscripts -Wformat=2 -Wbad-function-cast -Wstrict-aliasing=2 
 CPP = gcc -E
 CPPFLAGS = 
 CXX = g++
@@ -131,7 +134,7 @@ RAND_LIBS =
 RANLIB = ranlib
 SET_MAKE = 
 SHELL = /bin/bash
-STORAGE_LIBS =  /home/stephan/src/dovecot/dovecot-1.0.2/src/lib-storage/index/maildir/libstorage_maildir.a /home/stephan/src/dovecot/dovecot-1.0.2/src/lib-storage/index/mbox/libstorage_mbox.a /home/stephan/src/dovecot/dovecot-1.0.2/src/lib-storage/index/libstorage_index.a /home/stephan/src/dovecot/dovecot-1.0.2/src/lib-index/libindex.a
+STORAGE_LIBS =  /home/stephan/src/release/dovecot/src/lib-storage/index/maildir/libstorage_maildir.a /home/stephan/src/release/dovecot/src/lib-storage/index/mbox/libstorage_mbox.a /home/stephan/src/release/dovecot/src/lib-storage/index/dbox/libstorage_dbox.a /home/stephan/src/release/dovecot/src/lib-storage/index/cydir/libstorage_cydir.a /home/stephan/src/release/dovecot/src/lib-storage/index/libstorage_index.a /home/stephan/src/release/dovecot/src/lib-index/libindex.a
 STRIP = strip
 VERSION = 1.0.2
 ac_ct_CC = gcc
@@ -155,8 +158,8 @@ build_vendor = pc
 datadir = ${datarootdir}
 datarootdir = ${prefix}/share
 docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
-dovecot_incdir = /home/stephan/src/dovecot/dovecot-1.0.2
-dovecotdir = /home/stephan/src/dovecot/dovecot-1.0.2
+dovecot_incdir = /home/stephan/src/release/dovecot
+dovecotdir = /home/stephan/src/release/dovecot
 dvidir = ${docdir}
 exec_prefix = ${prefix}
 host = i686-pc-linux-gnu
@@ -198,21 +201,28 @@ plugins = \
 	$(plugin_dir)/vacation/lib_ext_vacation.a
 
 sievec_LDFLAGS = -export-dynamic
+sieve_test_LDFLAGS = -export-dynamic
 libs = \
 	$(top_srcdir)/src/lib-sieve/libsieve.a \
 	$(dovecot_incdir)/src/lib/liblib.a
 
-sievec_LDADD = \
+ldadd = \
 	$(libs) \
 	$(plugins) \
  	$(LIBICONV) \
     $(RAND_LIBS) \
     $(MODULE_LIBS)
 
+sievec_LDADD = $(ldadd)
+sieve_test_LDADD = $(ldadd)
 sievec_DEPENDENCIES = $(libs)
+sieve_test_DEPENDENCIES = $(libs)
 sievec_SOURCES = \
 	sievec.c 
 
+sieve_test_SOURCES = \
+	sieve_test.c
+
 all: all-am
 
 .SUFFIXES:
@@ -246,30 +256,30 @@ $(top_srcdir)/configure: # $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): # $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-install-sbinPROGRAMS: $(sbin_PROGRAMS)
+install-binPROGRAMS: $(bin_PROGRAMS)
 	@$(NORMAL_INSTALL)
-	test -z "$(sbindir)" || $(mkdir_p) "$(DESTDIR)$(sbindir)"
-	@list='$(sbin_PROGRAMS)'; for p in $$list; do \
+	test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
+	@list='$(bin_PROGRAMS)'; for p in $$list; do \
 	  p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
 	  if test -f $$p \
 	     || test -f $$p1 \
 	  ; then \
 	    f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
-	   echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(sbinPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(sbindir)/$$f'"; \
-	   $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(sbinPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(sbindir)/$$f" || exit 1; \
+	   echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
+	   $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
 	  else :; fi; \
 	done
 
-uninstall-sbinPROGRAMS:
+uninstall-binPROGRAMS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(sbin_PROGRAMS)'; for p in $$list; do \
+	@list='$(bin_PROGRAMS)'; for p in $$list; do \
 	  f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
-	  echo " rm -f '$(DESTDIR)$(sbindir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(sbindir)/$$f"; \
+	  echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
+	  rm -f "$(DESTDIR)$(bindir)/$$f"; \
 	done
 
-clean-sbinPROGRAMS:
-	@list='$(sbin_PROGRAMS)'; for p in $$list; do \
+clean-binPROGRAMS:
+	@list='$(bin_PROGRAMS)'; for p in $$list; do \
 	  f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
 	  echo " rm -f $$p $$f"; \
 	  rm -f $$p $$f ; \
@@ -396,7 +406,7 @@ check-am: all-am
 check: check-am
 all-am: Makefile $(PROGRAMS)
 installdirs:
-	for dir in "$(DESTDIR)$(sbindir)"; do \
+	for dir in "$(DESTDIR)$(bindir)"; do \
 	  test -z "$$dir" || $(mkdir_p) "$$dir"; \
 	done
 install: install-am
@@ -425,8 +435,7 @@ maintainer-clean-generic:
 	@echo "it deletes files that may require special tools to rebuild."
 clean: clean-am
 
-clean-am: clean-generic clean-libtool clean-sbinPROGRAMS \
-	mostlyclean-am
+clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
 
 distclean: distclean-am
 	-rm -rf ./$(DEPDIR)
@@ -446,7 +455,7 @@ info-am:
 
 install-data-am:
 
-install-exec-am: install-sbinPROGRAMS
+install-exec-am: install-binPROGRAMS
 
 install-info: install-info-am
 
@@ -472,20 +481,19 @@ ps: ps-am
 
 ps-am:
 
-uninstall-am: uninstall-info-am uninstall-sbinPROGRAMS
+uninstall-am: uninstall-binPROGRAMS uninstall-info-am
 
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-	clean-libtool clean-sbinPROGRAMS ctags distclean \
-	distclean-compile distclean-generic distclean-libtool \
-	distclean-tags distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am install-exec \
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
+	clean-generic clean-libtool ctags distclean distclean-compile \
+	distclean-generic distclean-libtool distclean-tags distdir dvi \
+	dvi-am html html-am info info-am install install-am \
+	install-binPROGRAMS install-data install-data-am install-exec \
 	install-exec-am install-info install-info-am install-man \
-	install-sbinPROGRAMS install-strip installcheck \
-	installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-compile \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags uninstall uninstall-am uninstall-info-am \
-	uninstall-sbinPROGRAMS
+	install-strip installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+	pdf pdf-am ps ps-am tags uninstall uninstall-am \
+	uninstall-binPROGRAMS uninstall-info-am
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/src/sieve-bin/Makefile.am b/src/sieve-bin/Makefile.am
index b2578fb6b714f1aa25c51a7cde825a6bf5a81a10..6ddde06ea5b09f08cf7073c0f39e1fc63bb60975 100644
--- a/src/sieve-bin/Makefile.am
+++ b/src/sieve-bin/Makefile.am
@@ -1,4 +1,4 @@
-sbin_PROGRAMS = sievec
+bin_PROGRAMS = sievec
 
 AM_CPPFLAGS = \
 	-I$(top_srcdir)/src/lib-sieve \
@@ -7,7 +7,6 @@ AM_CPPFLAGS = \
 	-I$(dovecot_incdir)/src/lib-mail \
 	-I$(dovecot_incdir)/src/lib-storage 
 
-
 plugin_dir = \
 	$(top_srcdir)/src/lib-sieve/plugins
 
@@ -15,20 +14,28 @@ plugins = \
 	$(plugin_dir)/vacation/lib_ext_vacation.a
 
 sievec_LDFLAGS = -export-dynamic
+sieve_test_LDFLAGS = -export-dynamic
 
 libs = \
 	$(top_srcdir)/src/lib-sieve/libsieve.a \
 	$(dovecot_incdir)/src/lib/liblib.a
 
-sievec_LDADD = \
+ldadd = \
 	$(libs) \
 	$(plugins) \
  	$(LIBICONV) \
     $(RAND_LIBS) \
     $(MODULE_LIBS)
 
+sievec_LDADD = $(ldadd)
+sieve_test_LDADD = $(ldadd)
+
 sievec_DEPENDENCIES = $(libs)
+sieve_test_DEPENDENCIES = $(libs)
 
 sievec_SOURCES = \
 	sievec.c 
 
+sieve_test_SOURCES = \
+	sieve_test.c
+
diff --git a/src/sieve-bin/Makefile.in b/src/sieve-bin/Makefile.in
index d85ef8ef2524b88535c06615016a49ada85433db..5cd9fe58e8ff6d63bd8fd21fa89ec620b5ea5619 100644
--- a/src/sieve-bin/Makefile.in
+++ b/src/sieve-bin/Makefile.in
@@ -36,7 +36,7 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-sbin_PROGRAMS = sievec$(EXEEXT)
+bin_PROGRAMS = sievec$(EXEEXT)
 subdir = src/sieve-bin
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -46,15 +46,18 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/libsieve-config.h
 CONFIG_CLEAN_FILES =
-am__installdirs = "$(DESTDIR)$(sbindir)"
-sbinPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
-PROGRAMS = $(sbin_PROGRAMS)
+am__installdirs = "$(DESTDIR)$(bindir)"
+binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+PROGRAMS = $(bin_PROGRAMS)
 am_sievec_OBJECTS = sievec.$(OBJEXT)
 sievec_OBJECTS = $(am_sievec_OBJECTS)
 am__DEPENDENCIES_1 = $(top_srcdir)/src/lib-sieve/libsieve.a \
 	$(dovecot_incdir)/src/lib/liblib.a
 am__DEPENDENCIES_2 = $(plugin_dir)/vacation/lib_ext_vacation.a
 am__DEPENDENCIES_3 =
+am__DEPENDENCIES_4 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) \
+	$(am__DEPENDENCIES_3) $(am__DEPENDENCIES_3) \
+	$(am__DEPENDENCIES_3)
 DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/depcomp
 am__depfiles_maybe = depfiles
@@ -198,21 +201,28 @@ plugins = \
 	$(plugin_dir)/vacation/lib_ext_vacation.a
 
 sievec_LDFLAGS = -export-dynamic
+sieve_test_LDFLAGS = -export-dynamic
 libs = \
 	$(top_srcdir)/src/lib-sieve/libsieve.a \
 	$(dovecot_incdir)/src/lib/liblib.a
 
-sievec_LDADD = \
+ldadd = \
 	$(libs) \
 	$(plugins) \
  	$(LIBICONV) \
     $(RAND_LIBS) \
     $(MODULE_LIBS)
 
+sievec_LDADD = $(ldadd)
+sieve_test_LDADD = $(ldadd)
 sievec_DEPENDENCIES = $(libs)
+sieve_test_DEPENDENCIES = $(libs)
 sievec_SOURCES = \
 	sievec.c 
 
+sieve_test_SOURCES = \
+	sieve_test.c
+
 all: all-am
 
 .SUFFIXES:
@@ -246,30 +256,30 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-install-sbinPROGRAMS: $(sbin_PROGRAMS)
+install-binPROGRAMS: $(bin_PROGRAMS)
 	@$(NORMAL_INSTALL)
-	test -z "$(sbindir)" || $(mkdir_p) "$(DESTDIR)$(sbindir)"
-	@list='$(sbin_PROGRAMS)'; for p in $$list; do \
+	test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
+	@list='$(bin_PROGRAMS)'; for p in $$list; do \
 	  p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
 	  if test -f $$p \
 	     || test -f $$p1 \
 	  ; then \
 	    f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
-	   echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(sbinPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(sbindir)/$$f'"; \
-	   $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(sbinPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(sbindir)/$$f" || exit 1; \
+	   echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
+	   $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
 	  else :; fi; \
 	done
 
-uninstall-sbinPROGRAMS:
+uninstall-binPROGRAMS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(sbin_PROGRAMS)'; for p in $$list; do \
+	@list='$(bin_PROGRAMS)'; for p in $$list; do \
 	  f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
-	  echo " rm -f '$(DESTDIR)$(sbindir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(sbindir)/$$f"; \
+	  echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
+	  rm -f "$(DESTDIR)$(bindir)/$$f"; \
 	done
 
-clean-sbinPROGRAMS:
-	@list='$(sbin_PROGRAMS)'; for p in $$list; do \
+clean-binPROGRAMS:
+	@list='$(bin_PROGRAMS)'; for p in $$list; do \
 	  f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
 	  echo " rm -f $$p $$f"; \
 	  rm -f $$p $$f ; \
@@ -396,7 +406,7 @@ check-am: all-am
 check: check-am
 all-am: Makefile $(PROGRAMS)
 installdirs:
-	for dir in "$(DESTDIR)$(sbindir)"; do \
+	for dir in "$(DESTDIR)$(bindir)"; do \
 	  test -z "$$dir" || $(mkdir_p) "$$dir"; \
 	done
 install: install-am
@@ -425,8 +435,7 @@ maintainer-clean-generic:
 	@echo "it deletes files that may require special tools to rebuild."
 clean: clean-am
 
-clean-am: clean-generic clean-libtool clean-sbinPROGRAMS \
-	mostlyclean-am
+clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
 
 distclean: distclean-am
 	-rm -rf ./$(DEPDIR)
@@ -446,7 +455,7 @@ info-am:
 
 install-data-am:
 
-install-exec-am: install-sbinPROGRAMS
+install-exec-am: install-binPROGRAMS
 
 install-info: install-info-am
 
@@ -472,20 +481,19 @@ ps: ps-am
 
 ps-am:
 
-uninstall-am: uninstall-info-am uninstall-sbinPROGRAMS
+uninstall-am: uninstall-binPROGRAMS uninstall-info-am
 
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-	clean-libtool clean-sbinPROGRAMS ctags distclean \
-	distclean-compile distclean-generic distclean-libtool \
-	distclean-tags distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am install-exec \
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
+	clean-generic clean-libtool ctags distclean distclean-compile \
+	distclean-generic distclean-libtool distclean-tags distdir dvi \
+	dvi-am html html-am info info-am install install-am \
+	install-binPROGRAMS install-data install-data-am install-exec \
 	install-exec-am install-info install-info-am install-man \
-	install-sbinPROGRAMS install-strip installcheck \
-	installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-compile \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags uninstall uninstall-am uninstall-info-am \
-	uninstall-sbinPROGRAMS
+	install-strip installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+	pdf pdf-am ps ps-am tags uninstall uninstall-am \
+	uninstall-binPROGRAMS uninstall-info-am
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/src/sieve-bin/sievec b/src/sieve-bin/sievec
index dfe3689ce84f77240f613a8c57a14c8b3869a389..7432608d8a6ae5b36779c092a61f8ea0263fc204 100755
Binary files a/src/sieve-bin/sievec and b/src/sieve-bin/sievec differ
diff --git a/src/sieve-bin/sievec.o b/src/sieve-bin/sievec.o
index cae0223aa00f695c13e1eb7a45d401683c4d13c1..de1ab936962b969d9b5c49f4a6ee51b55788845e 100644
Binary files a/src/sieve-bin/sievec.o and b/src/sieve-bin/sievec.o differ