dovecot-1.2-sieve: Sieve binary: now using better defined intege...

pigeonhole at rename-it.nl pigeonhole at rename-it.nl
Fri Jul 30 19:01:39 EEST 2010


details:   http://hg.rename-it.nl/dovecot-1.2-sieve/rev/f91059c42ab1
changeset: 1265:f91059c42ab1
user:      Stephan Bosch <stephan at rename-it.nl>
date:      Fri Jul 30 17:56:10 2010 +0200
description:
Sieve binary: now using better defined integer types for byte-coded data.

diffstat:

 src/lib-sieve/plugins/variables/ext-variables-common.c |   2 +-
 src/lib-sieve/plugins/variables/ext-variables-dump.c   |   2 +-
 src/lib-sieve/sieve-binary.c                           |  34 ++++++++--------
 src/lib-sieve/sieve-binary.h                           |   6 +-
 src/lib-sieve/sieve-code.c                             |   6 +-
 src/lib-sieve/sieve-interpreter.c                      |   2 +-
 src/testsuite/cmd-test-fail.c                          |   2 +-
 7 files changed, 27 insertions(+), 27 deletions(-)

diffs (233 lines):

diff -r a0cffaa484ee -r f91059c42ab1 src/lib-sieve/plugins/variables/ext-variables-common.c
--- a/src/lib-sieve/plugins/variables/ext-variables-common.c	Fri Jul 30 17:15:46 2010 +0200
+++ b/src/lib-sieve/plugins/variables/ext-variables-common.c	Fri Jul 30 17:56:10 2010 +0200
@@ -513,7 +513,7 @@
 	struct ext_variables_interpreter_context *ctx;
 	unsigned int scope_size;
 	sieve_size_t pc;
-	int end_offset;
+	sieve_offset_t end_offset;
 		
 	if ( !sieve_binary_read_unsigned(renv->sbin, address, &scope_size) ) {
 		sieve_sys_error("variables: failed to read main scope size");
diff -r a0cffaa484ee -r f91059c42ab1 src/lib-sieve/plugins/variables/ext-variables-dump.c
--- a/src/lib-sieve/plugins/variables/ext-variables-dump.c	Fri Jul 30 17:15:46 2010 +0200
+++ b/src/lib-sieve/plugins/variables/ext-variables-dump.c	Fri Jul 30 17:56:10 2010 +0200
@@ -74,7 +74,7 @@
 	struct sieve_variable_scope *main_scope;
 	unsigned int i, scope_size;
 	sieve_size_t pc;
-	int end_offset;
+	sieve_offset_t end_offset;
 	
 	sieve_code_mark(denv);
 	if ( !sieve_binary_read_unsigned(denv->sbin, address, &scope_size) )
diff -r a0cffaa484ee -r f91059c42ab1 src/lib-sieve/sieve-binary.c
--- a/src/lib-sieve/sieve-binary.c	Fri Jul 30 17:15:46 2010 +0200
+++ b/src/lib-sieve/sieve-binary.c	Fri Jul 30 17:56:10 2010 +0200
@@ -1468,7 +1468,7 @@
 }
 
 static inline void _sieve_binary_emit_byte
-(struct sieve_binary *sbin, unsigned char byte)
+(struct sieve_binary *sbin, uint8_t byte)
 {
     _sieve_binary_emit_data(sbin, &byte, 1);
 }
@@ -1491,7 +1491,7 @@
 }
 
 sieve_size_t sieve_binary_emit_byte
-(struct sieve_binary *sbin, unsigned char byte) 
+(struct sieve_binary *sbin, uint8_t byte) 
 {
 	sieve_size_t address = _sieve_binary_get_code_size(sbin);
 
@@ -1509,13 +1509,14 @@
 
 /* Offset emission functions */
 
-sieve_size_t sieve_binary_emit_offset(struct sieve_binary *binary, int offset) 
+sieve_size_t sieve_binary_emit_offset
+(struct sieve_binary *binary, sieve_offset_t offset) 
 {
 	int i;
 	sieve_size_t address = _sieve_binary_get_code_size(binary);
 
 	for ( i = 3; i >= 0; i-- ) {
-		char c = (char) (offset >> (i * 8));
+		uint8_t c = (uint8_t) (offset >> (i * 8));
 		_sieve_binary_emit_data(binary, &c, 1);
 	}
 	
@@ -1526,10 +1527,10 @@
 	(struct sieve_binary *binary, sieve_size_t address) 
 {
 	int i;
-	int offset = _sieve_binary_get_code_size(binary) - address; 
+	sieve_offset_t offset = _sieve_binary_get_code_size(binary) - address; 
 	
 	for ( i = 3; i >= 0; i-- ) {
-		char c = (char) (offset >> (i * 8));	
+		uint8_t c = (uint8_t) (offset >> (i * 8));	
 		_sieve_binary_update_data(binary, address + 3 - i, &c, 1);
 	}
 }
@@ -1544,7 +1545,7 @@
 {
 	sieve_size_t address = _sieve_binary_get_code_size(binary);
 	int i;
-	char buffer[sizeof(sieve_number_t) + 1];
+	uint8_t buffer[sizeof(sieve_number_t) + 1];
 	int bufpos = sizeof(buffer) - 1;
   
 	buffer[bufpos] = integer & 0x7F;
@@ -1630,11 +1631,11 @@
  */
  
 #define ADDR_CODE_AT(binary, address) \
-	((signed char) ((binary)->code[*address]))
+	((int8_t) ((binary)->code[*address]))
 #define ADDR_DATA_AT(binary, address) \
-	((unsigned char) ((binary)->code[*address]))
+	((uint8_t) ((binary)->code[*address]))
 #define ADDR_POINTER(binary, address) \
-	((const char *) (&(binary)->code[*address]))
+	((uint8_t *) (&(binary)->code[*address]))
 #define ADDR_BYTES_LEFT(binary, address) \
 	((binary)->code_size - (*address))
 #define ADDR_JUMP(address, offset) \
@@ -1643,7 +1644,7 @@
 /* Literals */
 
 bool sieve_binary_read_byte
-	(struct sieve_binary *binary, sieve_size_t *address, unsigned int *byte_r) 
+(struct sieve_binary *binary, sieve_size_t *address, unsigned int *byte_r) 
 {	
 	if ( ADDR_BYTES_LEFT(binary, address) >= 1 ) {
 		if ( byte_r != NULL )
@@ -1658,7 +1659,7 @@
 }
 
 bool sieve_binary_read_code
-	(struct sieve_binary *binary, sieve_size_t *address, signed int *code_r) 
+(struct sieve_binary *binary, sieve_size_t *address, signed int *code_r) 
 {	
 	if ( ADDR_BYTES_LEFT(binary, address) >= 1 ) {
 		if ( code_r != NULL )
@@ -1672,11 +1673,10 @@
 	return FALSE;
 }
 
-
 bool sieve_binary_read_offset
-	(struct sieve_binary *binary, sieve_size_t *address, int *offset_r) 
+(struct sieve_binary *binary, sieve_size_t *address, sieve_offset_t *offset_r) 
 {
-	uint32_t offs = 0;
+	sieve_offset_t offs = 0;
 	
 	if ( ADDR_BYTES_LEFT(binary, address) >= 4 ) {
 		int i; 
@@ -1697,7 +1697,7 @@
 
 /* FIXME: might need negative numbers in the future */
 bool sieve_binary_read_integer
-  (struct sieve_binary *binary, sieve_size_t *address, sieve_number_t *int_r) 
+(struct sieve_binary *binary, sieve_size_t *address, sieve_number_t *int_r) 
 {
 	int bits = sizeof(sieve_number_t) * 8;
 	*int_r = 0;
@@ -1736,7 +1736,7 @@
 		return FALSE;
  
  	if ( str_r != NULL )  
-		*str_r = t_str_new_const(ADDR_POINTER(binary, address), strlen);
+		*str_r = t_str_new_const((const char *) ADDR_POINTER(binary, address), strlen);
 	ADDR_JUMP(address, strlen);
 	
 	if ( ADDR_CODE_AT(binary, address) != 0 )
diff -r a0cffaa484ee -r f91059c42ab1 src/lib-sieve/sieve-binary.h
--- a/src/lib-sieve/sieve-binary.h	Fri Jul 30 17:15:46 2010 +0200
+++ b/src/lib-sieve/sieve-binary.h	Fri Jul 30 17:56:10 2010 +0200
@@ -126,7 +126,7 @@
 sieve_size_t sieve_binary_emit_data
 	(struct sieve_binary *binary, const void *data, sieve_size_t size);
 sieve_size_t sieve_binary_emit_byte
-	(struct sieve_binary *binary, unsigned char byte);
+	(struct sieve_binary *binary, uint8_t byte);
 void sieve_binary_update_data
 	(struct sieve_binary *binary, sieve_size_t address, const void *data, 
 		sieve_size_t size);
@@ -135,7 +135,7 @@
 /* Offset emission functions */
 
 sieve_size_t sieve_binary_emit_offset
-	(struct sieve_binary *binary, int offset);
+	(struct sieve_binary *binary, sieve_offset_t offset);
 void sieve_binary_resolve_offset
 	(struct sieve_binary *binary, sieve_size_t address);
 
@@ -174,7 +174,7 @@
 bool sieve_binary_read_code
 	(struct sieve_binary *binary, sieve_size_t *address, signed int *code_r);
 bool sieve_binary_read_offset
-	(struct sieve_binary *binary, sieve_size_t *address, int *offset_r);
+	(struct sieve_binary *binary, sieve_size_t *address, sieve_offset_t *offset_r);
 bool sieve_binary_read_integer
   (struct sieve_binary *binary, sieve_size_t *address, sieve_number_t *int_r); 
 bool sieve_binary_read_string
diff -r a0cffaa484ee -r f91059c42ab1 src/lib-sieve/sieve-code.c
--- a/src/lib-sieve/sieve-code.c	Fri Jul 30 17:15:46 2010 +0200
+++ b/src/lib-sieve/sieve-code.c	Fri Jul 30 17:56:10 2010 +0200
@@ -779,7 +779,7 @@
 	sieve_size_t pc = *address;
 	sieve_size_t end; 
 	unsigned int length = 0; 
- 	int end_offset;
+ 	sieve_offset_t end_offset;
 
 	if ( !sieve_binary_read_offset(denv->sbin, address, &end_offset) )
 		return FALSE;
@@ -799,7 +799,7 @@
 	sieve_size_t pc = *address;
 	sieve_size_t end; 
 	unsigned int length = 0;  
-	int end_offset;
+	sieve_offset_t end_offset;
 	
 	if ( !sieve_binary_read_offset(renv->sbin, address, &end_offset) )
 		return NULL;
@@ -1035,7 +1035,7 @@
 {
 	const struct sieve_operation *op = &denv->oprtn;
 	unsigned int pc = *address;
-	int offset;
+	sieve_offset_t offset;
 	
 	if ( sieve_binary_read_offset(denv->sbin, address, &offset) ) 
 		sieve_code_dumpf(denv, "%s %d [%08x]", 
diff -r a0cffaa484ee -r f91059c42ab1 src/lib-sieve/sieve-interpreter.c
--- a/src/lib-sieve/sieve-interpreter.c	Fri Jul 30 17:15:46 2010 +0200
+++ b/src/lib-sieve/sieve-interpreter.c	Fri Jul 30 17:56:10 2010 +0200
@@ -347,7 +347,7 @@
 {
 	const struct sieve_runtime_env *renv = &interp->runenv;
 	sieve_size_t pc = interp->pc;
-	int offset;
+	sieve_offset_t offset;
 	
 	if ( !sieve_binary_read_offset(renv->sbin, &(interp->pc), &offset) )
 	{
diff -r a0cffaa484ee -r f91059c42ab1 src/testsuite/cmd-test-fail.c
--- a/src/testsuite/cmd-test-fail.c	Fri Jul 30 17:15:46 2010 +0200
+++ b/src/testsuite/cmd-test-fail.c	Fri Jul 30 17:56:10 2010 +0200
@@ -105,7 +105,7 @@
 (const struct sieve_dumptime_env *denv, sieve_size_t *address)
 {
 	unsigned int pc;
-	int offset;
+	sieve_offset_t offset;
     
 	sieve_code_dumpf(denv, "TEST_FAIL:");
 	sieve_code_descend(denv);


More information about the dovecot-cvs mailing list