Revision: 6766
http://bogofilter.svn.sourceforge.net/bogofilter/?rev=6766&view=rev
Author: relson
Date: 2009-01-12 04:27:36 +0000 (Mon, 12 Jan 2009)
Log Message:
-----------
Sun Studio 12 compatibility changes.
Modified Paths:
--------------
trunk/bogofilter/NEWS
trunk/bogofilter/src/base64.c
trunk/bogofilter/src/bogohist.c
trunk/bogofilter/src/bogolexer.c
trunk/bogofilter/src/bogoreader.c
trunk/bogofilter/src/bogotune.c
trunk/bogofilter/src/bogoutil.c
trunk/bogofilter/src/buff.c
trunk/bogofilter/src/collect.c
trunk/bogofilter/src/datastore.c
trunk/bogofilter/src/format.c
trunk/bogofilter/src/iconvert.c
trunk/bogofilter/src/lexer.c
trunk/bogofilter/src/lexer_v3.l
trunk/bogofilter/src/maint.c
trunk/bogofilter/src/mime.c
trunk/bogofilter/src/qp.c
trunk/bogofilter/src/robx.c
trunk/bogofilter/src/tests/deb64.c
trunk/bogofilter/src/tests/deqp.c
trunk/bogofilter/src/token.c
trunk/bogofilter/src/uudecode.c
trunk/bogofilter/src/word.c
trunk/bogofilter/src/word.h
trunk/bogofilter/src/wordhash.c
Modified: trunk/bogofilter/NEWS
===================================================================
--- trunk/bogofilter/NEWS 2009-01-12 04:12:41 UTC (rev 6765)
+++ trunk/bogofilter/NEWS 2009-01-12 04:27:36 UTC (rev 6766)
@@ -15,6 +15,12 @@
-------------------------------------------------------------------------------
+ 2009-01-11
+
+ * For compatibility with Sun's Sun Studio 12 compiler, provide
+ a name for the anonymous union in typedef word_t.
+ Patch provided by Jack Bailey.
+
2008-10-20
* update bf_compact documentation by removing explicit Berkeley DB
Modified: trunk/bogofilter/src/base64.c
===================================================================
--- trunk/bogofilter/src/base64.c 2009-01-12 04:12:41 UTC (rev 6765)
+++ trunk/bogofilter/src/base64.c 2009-01-12 04:27:36 UTC (rev 6766)
@@ -26,8 +26,8 @@
{
uint count = 0;
uint size = word->leng;
- byte *s = word->text; /* src */
- byte *d = word->text; /* dst */
+ byte *s = word->u.text; /* src */
+ byte *d = word->u.text; /* dst */
if (!base64_validate(word))
return size;
@@ -96,7 +96,7 @@
base64_init();
for (i = 0; i < word->leng; i += 1) {
- byte b = word->text[i];
+ byte b = word->u.text[i];
byte v = base64_xlate[b];
if (v == 0 && b != 'A' && b != '\n' && b != '\r')
return false;
Modified: trunk/bogofilter/src/bogohist.c
===================================================================
--- trunk/bogofilter/src/bogohist.c 2009-01-12 04:12:41 UTC (rev 6765)
+++ trunk/bogofilter/src/bogohist.c 2009-01-12 04:27:36 UTC (rev 6766)
@@ -53,7 +53,7 @@
uint idx = min(fw * INTERVALS, INTERVALS-1);
/* ignore meta-tokens */
- if (*key->text == (byte) '.')
+ if (*key->u.text == (byte) '.')
return 0;
hist->count[idx] += 1;
Modified: trunk/bogofilter/src/bogolexer.c
===================================================================
--- trunk/bogofilter/src/bogolexer.c 2009-01-12 04:12:41 UTC (rev 6765)
+++ trunk/bogofilter/src/bogolexer.c 2009-01-12 04:27:36 UTC (rev 6766)
@@ -323,10 +323,10 @@
{
count += 1;
if (passthrough) {
- fprintf(fpo, "%s\n", token.text);
+ fprintf(fpo, "%s\n", token.u.text);
}
else if (!quiet)
- fprintf(fpo, "get_token: %d \"%s\"\n", (int)t, token.text);
+ fprintf(fpo, "get_token: %d \"%s\"\n", (int)t, token.u.text);
}
}
Modified: trunk/bogofilter/src/bogoreader.c
===================================================================
--- trunk/bogofilter/src/bogoreader.c 2009-01-12 04:12:41 UTC (rev 6765)
+++ trunk/bogofilter/src/bogoreader.c 2009-01-12 04:27:36 UTC (rev 6766)
@@ -437,7 +437,7 @@
static int mailbox_getline(buff_t *buff)
{
uint used = buff->t.leng;
- byte *buf = buff->t.text + used;
+ byte *buf = buff->t.u.text + used;
int count;
static word_t *saved = NULL;
static bool emptyline = false; /* for mailbox /^From / match */
@@ -472,7 +472,7 @@
}
else {
if (buff->t.leng < buff->size) /* for easier debugging - removable */
- Z(buff->t.text[buff->t.leng]); /* for easier debugging - removable */
+ Z(buff->t.u.text[buff->t.leng]); /* for easier debugging - removable */
}
emptyline = is_eol((char *)buf, count);
@@ -485,7 +485,7 @@
{
int count;
uint used = buff->t.leng;
- byte *buf = buff->t.text + used;
+ byte *buf = buff->t.u.text + used;
static word_t *saved = NULL;
static unsigned long bytesleft = 0;
@@ -525,7 +525,7 @@
}
} else {
if (buff->t.leng < buff->size) /* for easier debugging - removable */
- Z(buff->t.text[buff->t.leng]); /* for easier debugging - removable */
+ Z(buff->t.u.text[buff->t.leng]); /* for easier debugging - removable */
}
return count;
@@ -536,7 +536,7 @@
{
int count;
uint used = buff->t.leng;
- byte *buf = buff->t.text + used;
+ byte *buf = buff->t.u.text + used;
static word_t *saved = NULL;
static bool dot_found = true;
@@ -568,7 +568,7 @@
(buf[1] == '\r' || buf[1] == '\n'))
dot_found = true; /* dot found. look for separator */
if (buff->t.leng < buff->size) /* for easier debugging - removable */
- Z(buff->t.text[buff->t.leng]); /* for easier debugging - removable */
+ Z(buff->t.u.text[buff->t.leng]); /* for easier debugging - removable */
}
return count;
@@ -580,7 +580,7 @@
int count = buff_fgetsl(buff, fpin);
if (buff->t.leng < buff->size) /* for easier debugging - removable */
- Z(buff->t.text[buff->t.leng]); /* for easier debugging - removable */
+ Z(buff->t.u.text[buff->t.leng]);/* for easier debugging - removable */
return count;
}
Modified: trunk/bogofilter/src/bogotune.c
===================================================================
--- trunk/bogofilter/src/bogotune.c 2009-01-12 04:12:41 UTC (rev 6765)
+++ trunk/bogofilter/src/bogotune.c 2009-01-12 04:27:36 UTC (rev 6766)
@@ -743,7 +743,7 @@
}
}
- print_msgcount_entry((char *)token->text, cnts->bad, cnts->good);
+ print_msgcount_entry((char *)token->u.text, cnts->bad, cnts->good);
}
return;
Modified: trunk/bogofilter/src/bogoutil.c
===================================================================
--- trunk/bogofilter/src/bogoutil.c 2009-01-12 04:12:41 UTC (rev 6765)
+++ trunk/bogofilter/src/bogoutil.c 2009-01-12 04:27:36 UTC (rev 6766)
@@ -86,10 +86,10 @@
return 0;
if (replace_nonascii_characters)
- do_replace_nonascii_characters(key->text, key->leng);
+ do_replace_nonascii_characters(key->u.text, key->leng);
fprintf(fpo, "%.*s %lu %lu",
- CLAMP_INT_MAX(key->leng), key->text,
+ CLAMP_INT_MAX(key->leng), key->u.text,
(unsigned long)data->spamcount,
(unsigned long)data->goodcount);
if (data->date)
@@ -285,7 +285,7 @@
{
int rv = 0;
- if (fgets((char *)buff->t.text, buff->size, fp) == NULL) {
+ if (fgets((char *)buff->t.u.text, buff->size, fp) == NULL) {
if (ferror(fp)) {
perror(progname);
rv = 2;
@@ -293,17 +293,17 @@
rv = 1;
}
} else {
- buff->t.leng = (uint) strlen((const char *)buff->t.text);
- if (buff->t.text[buff->t.leng - 1] == '\n' ) {
+ buff->t.leng = (uint) strlen((const char *)buff->t.u.text);
+ if (buff->t.u.text[buff->t.leng - 1] == '\n' ) {
buff->t.leng -= 1;
- buff->t.text[buff->t.leng] = (byte) '\0';
+ buff->t.u.text[buff->t.leng] = (byte) '\0';
}
else
{
fprintf(stderr,
"%s: Unexpected input [%s]. Does not end with newline "
"or line too long.\n",
- progname, buff->t.text);
+ progname, buff->t.u.text);
rv = 1;
}
}
@@ -384,11 +384,11 @@
good_count = val.goodcount;
if (!show_probability)
- fprintf(fpo, data_format, token->text, spam_count, good_count);
+ fprintf(fpo, data_format, token->u.text, spam_count, good_count);
else
{
rob_prob = calc_prob(good_count, spam_count, msgcnts.goodcount, msgcnts.spamcount);
- fprintf(fpo, data_format, token->text, spam_count, good_count, rob_prob);
+ fprintf(fpo, data_format, token->u.text, spam_count, good_count, rob_prob);
}
break;
case 1:
Modified: trunk/bogofilter/src/buff.c
===================================================================
--- trunk/bogofilter/src/buff.c 2009-01-12 04:12:41 UTC (rev 6765)
+++ trunk/bogofilter/src/buff.c 2009-01-12 04:27:36 UTC (rev 6766)
@@ -21,7 +21,7 @@
/* Function Definitions */
buff_t *buff_init(buff_t *self, byte *buff, uint used, uint size)
{
- self->t.text = buff;
+ self->t.u.text = buff;
self->t.leng = used;
self->read = 0;
self->size = size;
@@ -43,7 +43,7 @@
int buff_fgetsln(buff_t *self, FILE *in, uint maxlen)
{
uint readpos = self->t.leng;
- int readcnt = xfgetsl((char *)self->t.text + readpos,
+ int readcnt = xfgetsl((char *)self->t.u.text + readpos,
min(self->size - readpos, maxlen), in, true);
/* WARNING: do not add NUL termination, the size must be exact! */
self->read = readpos;
@@ -58,13 +58,13 @@
int readcnt = in->leng;
uint new_size = self->t.leng + in->leng;
if (new_size > self->size) {
- self->t.text = xrealloc(self->t.text, new_size);
+ self->t.u.text = xrealloc(self->t.u.text, new_size);
self->size = new_size;
}
self->read = readpos;
self->t.leng += readcnt;
- memcpy(self->t.text + readpos, in->text, readcnt);
- Z(self->t.text[self->t.leng]); /* for easier debugging - removable */
+ memcpy(self->t.u.text + readpos, in->u.text, readcnt);
+ Z(self->t.u.text[self->t.leng]); /* for easier debugging - removable */
return readcnt;
}
@@ -73,7 +73,7 @@
{
word_t word;
word.leng = self->t.leng - self->read;
- word.text = self->t.text + self->read;
+ word.u.text = self->t.u.text + self->read;
word_puts(&word, width, fp);
}
@@ -85,8 +85,8 @@
BOGO_ASSERT(start + length <= self->t.leng,
"Invalid buff_shift() parameters.");
- memmove(self->t.text + start, self->t.text + start + length, self->t.leng - length);
+ memmove(self->t.u.text + start, self->t.u.text + start + length, self->t.leng - length);
self->t.leng -= length;
- Z(self->t.text[self->t.leng]); /* for easier debugging - removable */
+ Z(self->t.u.text[self->t.leng]); /* for easier debugging - removable */
return;
}
Modified: trunk/bogofilter/src/collect.c
===================================================================
--- trunk/bogofilter/src/collect.c 2009-01-12 04:12:41 UTC (rev 6765)
+++ trunk/bogofilter/src/collect.c 2009-01-12 04:27:36 UTC (rev 6766)
@@ -52,12 +52,12 @@
if (cls == BOGO_LEX_LINE)
{
- char *beg = (char *)token.text+1; /* skip leading quote mark */
+ char *beg = (char *)token.u.text+1; /* skip leading quote mark */
char *end = strchr(beg, '"');
assert(end);
token.leng = end - beg;
- memmove(token.text, token.text + 1, token.leng + 1);
- token.text[token.leng] = '\0'; /* ensure nul termination */
+ memmove(token.u.text, token.u.text + 1, token.leng + 1);
+ token.u.text[token.leng] = '\0'; /* ensure nul termination */
}
wp = wordhash_insert(wh, &token, sizeof(wordprop_t), &wordprop_init);
@@ -96,7 +96,7 @@
if (cls == BOGO_LEX_LINE)
{
- char *s = (char *)token.text;
+ char *s = (char *)token.u.text;
s += token.leng + 2;
wp->cnts.bad = atoi(s);
s = strchr(s+1, ' ') + 1;
Modified: trunk/bogofilter/src/datastore.c
===================================================================
--- trunk/bogofilter/src/datastore.c 2009-01-12 04:12:41 UTC (rev 6765)
+++ trunk/bogofilter/src/datastore.c 2009-01-12 04:27:36 UTC (rev 6766)
@@ -203,7 +203,7 @@
struct_init(ex_key);
struct_init(ex_data);
- ex_key.data = word->text;
+ ex_key.data = word->u.text;
ex_key.leng = word->leng;
memset(val, 0, sizeof(*val));
@@ -224,7 +224,7 @@
if (DEBUG_DATABASE(3)) {
fprintf(dbgout, "ds_read: [%.*s] -- %lu,%lu\n",
- CLAMP_INT_MAX(word->leng), (const char *)word->text,
+ CLAMP_INT_MAX(word->leng), (const char *)word->u.text,
(unsigned long)val->spamcount,
(unsigned long)val->goodcount);
}
@@ -233,21 +233,21 @@
case DS_NOTFOUND:
if (DEBUG_DATABASE(3)) {
fprintf(dbgout, "ds_read: [%.*s] not found\n",
- CLAMP_INT_MAX(word->leng), (char *) word->text);
+ CLAMP_INT_MAX(word->leng), (char *) word->u.text);
}
return 1;
case DS_ABORT_RETRY:
if (DEBUG_DATABASE(1)) {
print_error(__FILE__, __LINE__, "ds_read('%.*s') was aborted to recover from a deadlock.",
- CLAMP_INT_MAX(word->leng), (char *) word->text);
+ CLAMP_INT_MAX(word->leng), (char *) word->u.text);
}
break;
default:
fprintf(dbgout, "ret=%d, DS_NOTFOUND=%d\n", ret, DS_NOTFOUND);
print_error(__FILE__, __LINE__, "ds_read( '%.*s' ), err: %d, %s",
- CLAMP_INT_MAX(word->leng), (char *) word->text, ret, db_str_err(ret));
+ CLAMP_INT_MAX(word->leng), (char *) word->u.text, ret, db_str_err(ret));
exit(EX_ERROR);
}
@@ -265,7 +265,7 @@
struct_init(ex_key);
struct_init(ex_data);
- ex_key.data = word->text;
+ ex_key.data = word->u.text;
ex_key.leng = word->leng;
ex_data.data = cv;
@@ -280,7 +280,7 @@
if (DEBUG_DATABASE(3)) {
fprintf(dbgout, "ds_write: [%.*s] -- %lu,%lu,%lu\n",
- CLAMP_INT_MAX(word->leng), (const char *)word->text,
+ CLAMP_INT_MAX(word->leng), (const char *)word->u.text,
(unsigned long)val->spamcount,
(unsigned long)val->goodcount,
(unsigned long)val->date);
@@ -296,7 +296,7 @@
dbv_t ex_key;
struct_init(ex_key);
- ex_key.data = word->text;
+ ex_key.data = word->u.text;
ex_key.leng = word->leng;
ret = db_delete(dsh->dbh, &ex_key);
@@ -344,7 +344,7 @@
ds_userdata_t *ds_data = userdata;
dsh_t *dsh = ds_data->dsh;
- w_key.text = ex_key->data;
+ w_key.u.text = ex_key->data;
w_key.leng = ex_key->leng;
memset(&in_data, 0, sizeof(in_data));
Modified: trunk/bogofilter/src/format.c
===================================================================
--- trunk/bogofilter/src/format.c 2009-01-12 04:12:41 UTC (rev 6765)
+++ trunk/bogofilter/src/format.c 2009-01-12 04:27:36 UTC (rev 6766)
@@ -325,7 +325,7 @@
*buff++ = '%';
break;
case 'A': /* A - Message Address */
- buff += format_string(buff, (*msg_addr->text != '\0') ? (const char *)msg_addr->text : "UNKNOWN", 0, prec, flags, end);
+ buff += format_string(buff, (*msg_addr->u.text != '\0') ? (const char *)msg_addr->u.text : "UNKNOWN", 0, prec, flags, end);
break;
case 'c': /* c - classification, e.g. Yes/No, Spam/Ham/Unsure, or YN, SHU, +-? */
{
@@ -347,10 +347,10 @@
break;
}
case 'I': /* M - Message ID */
- buff += format_string(buff, (*msg_id->text != '\0') ? (const char *)msg_id->text : "UNKNOWN", 0, prec, flags, end);
+ buff += format_string(buff, (*msg_id->u.text != '\0') ? (const char *)msg_id->u.text : "UNKNOWN", 0, prec, flags, end);
break;
case 'Q': /* Q - Queue ID */
- buff += format_string(buff, (*queue_id->text != '\0') ? (const char *)queue_id->text : "UNKNOWN", 0, prec, flags, end);
+ buff += format_string(buff, (*queue_id->u.text != '\0') ? (const char *)queue_id->u.text : "UNKNOWN", 0, prec, flags, end);
break;
case 'p': /* p - spamicity as a probability */
{
Modified: trunk/bogofilter/src/iconvert.c
===================================================================
--- trunk/bogofilter/src/iconvert.c 2009-01-12 04:12:41 UTC (rev 6765)
+++ trunk/bogofilter/src/iconvert.c 2009-01-12 04:27:36 UTC (rev 6766)
@@ -54,7 +54,7 @@
}
if (msg != NULL)
fprintf(dbgout, "err: %s (%d), tx: %p, rd: %d, ln: %d, sz: %d\n",
- msg, err, src->t.text, src->read, src->t.leng, src->size);
+ msg, err, src->t.u.text, src->read, src->t.leng, src->size);
}
}
@@ -70,10 +70,10 @@
size_t outbytesleft;
size_t count;
- inbuf = (char *)src->t.text + src->read;
+ inbuf = (char *)src->t.u.text + src->read;
inbytesleft = src->t.leng - src->read;
- outbuf = (char *)dst->t.text + dst->t.leng;
+ outbuf = (char *)dst->t.u.text + dst->t.leng;
outbytesleft = dst->size - dst->read - dst->t.leng;
if (outbytesleft == 0)
@@ -169,19 +169,19 @@
done = true;
}
- Z(dst->t.text[dst->t.leng]); /* for easier debugging - removable */
+ Z(dst->t.u.text[dst->t.leng]); /* for easier debugging - removable */
if (DEBUG_ICONV(1) &&
src->t.leng != src->read)
fprintf(dbgout, "tx: %p, rd: %d, ln: %d, sz: %d\n",
- src->t.text, src->read, src->t.leng, src->size);
+ src->t.u.text, src->read, src->t.leng, src->size);
}
static void copy(buff_t *src, buff_t *dst)
{
/* if conversion not available, use memcpy */
dst->t.leng = min(dst->size, src->t.leng);
- memcpy(dst->t.text, src->t.text, dst->t.leng+D);
+ memcpy(dst->t.u.text, src->t.u.text, dst->t.leng+D);
}
void iconvert(buff_t *src, buff_t *dst)
Modified: trunk/bogofilter/src/lexer.c
===================================================================
--- trunk/bogofilter/src/lexer.c 2009-01-12 04:12:41 UTC (rev 6765)
+++ trunk/bogofilter/src/lexer.c 2009-01-12 04:27:36 UTC (rev 6766)
@@ -75,7 +75,7 @@
yylineno-1, msg_header ? 'h' : 'b', yy_get_state(),
(long)(buff->t.leng - buff->read));
buff_puts(buff, 0, dbgout);
- if (buff->t.leng > 0 && buff->t.text[buff->t.leng-1] != '\n')
+ if (buff->t.leng > 0 && buff->t.u.text[buff->t.leng-1] != '\n')
fputc('\n', dbgout);
}
@@ -105,7 +105,7 @@
static int yy_get_new_line(buff_t *buff)
{
int count = (*reader_getline)(buff);
- const byte *buf = buff->t.text;
+ const byte *buf = buff->t.u.text;
static size_t hdrlen = 0;
if (hdrlen==0)
@@ -142,7 +142,7 @@
&& count != EOF
/* don't skip if inside message/rfc822 */
&& msg_state->parent == NULL
- && memcmp(buff->t.text,spam_header_name,hdrlen) == 0) {
+ && memcmp(buff->t.u.text,spam_header_name,hdrlen) == 0) {
count = skip_folded_line(buff);
}
@@ -171,9 +171,9 @@
* sufficiently small that the UTF-8 text can fit in the output
* buffer */
if (tempbuff->size < buff->size / 6) {
- xfree(tempbuff->t.text);
+ xfree(tempbuff->t.u.text);
tempbuff->size = buff->size / 6;
- tempbuff->t.text = (byte *) xmalloc(tempbuff->size+D);
+ tempbuff->t.u.text = (byte *) xmalloc(tempbuff->size+D);
}
tempbuff->t.leng = tempbuff->read = 0;
@@ -198,7 +198,7 @@
* than one of these. */
if (passthrough && passmode == PASS_MEM && count > 0)
- textblock_add(linebuff->t.text+linebuff->read, (size_t) count);
+ textblock_add(linebuff->t.u.text+linebuff->read, (size_t) count);
if ( !msg_header &&
!msg_state->mime_dont_decode &&
@@ -208,7 +208,7 @@
uint decoded_count;
temp.leng = (uint) count;
- temp.text = linebuff->t.text+linebuff->read;
+ temp.u.text = linebuff->t.u.text+linebuff->read;
decoded_count = mime_decode(&temp);
/*change buffer size only if the decoding worked */
@@ -243,7 +243,7 @@
/* CRLF -> NL */
if (count >= 2) {
- byte *buf = buff->t.text;
+ byte *buf = buff->t.u.text;
if (memcmp(buf + count - 2, CRLF, 2) == 0) {
count --;
*(buf + count - 1) = (byte) '\n';
@@ -251,7 +251,7 @@
}
if (buff->t.leng < buff->size) /* for easier debugging - removable */
- Z(buff->t.text[buff->t.leng]); /* for easier debugging - removable */
+ Z(buff->t.u.text[buff->t.leng]); /* for easier debugging - removable */
return count;
}
@@ -265,11 +265,11 @@
yylineno += 1;
/* only check for LWSP-char (RFC-822) aka. WSP (RFC-2822),
* these only include SP and HTAB */
- if (buff->t.text[0] != ' ' &&
- buff->t.text[0] != '\t')
+ if (buff->t.u.text[0] != ' ' &&
+ buff->t.u.text[0] != '\t')
return count;
/* Check for empty line which terminates message header */
- if (is_eol((char *)buff->t.text, count))
+ if (is_eol((char *)buff->t.u.text, count))
return count;
}
}
@@ -334,7 +334,7 @@
break;
if (count >= MAX_TOKEN_LEN * 2 &&
- long_token(buff.t.text, (uint) count)) {
+ long_token(buff.t.u.text, (uint) count)) {
uint start = buff.t.leng - count;
uint length = count - max_token_len;
buff_shift(&buff, start, length);
@@ -391,10 +391,10 @@
word_t *text_decode(word_t *w)
{
word_t *r = w;
- byte *const beg = w->text; /* base pointer, fixed */
+ byte *const beg = w->u.text; /* base pointer, fixed */
byte *const fin = beg + w->leng; /* end+1 position */
- byte *txt = (byte *) memstr(w->text, w->leng, "=?"); /* input position */
+ byte *txt = (byte *) memstr(w->u.text, w->leng, "=?"); /* input position */
uint size = (uint) (txt - beg); /* output offset */
#ifndef DISABLE_UNICODE
@@ -414,12 +414,12 @@
buf->t.leng = 0;
if (buf->size < max) {
buf->size = max;
- buf->t.text = (byte *) xrealloc(buf->t.text, buf->size+D);
+ buf->t.u.text = (byte *) xrealloc(buf->t.u.text, buf->size+D);
}
buf->t.leng = size;
- memcpy(buf->t.text, beg, size );
- Z(buf->t.text[buf->t.leng]); /* for easier debugging - removable */
+ memcpy(buf->t.u.text, beg, size );
+ Z(buf->t.u.text[buf->t.leng]); /* for easier debugging - removable */
}
#endif
@@ -446,9 +446,9 @@
end = (byte *) memstr((char *)tmp, fin-tmp, "?="); /* last byte of encoded word */
len = end - tmp;
- w->text = tmp; /* Start of encoded word */
+ w->u.text = tmp; /* Start of encoded word */
w->leng = len; /* Length of encoded word */
- Z(w->text[w->leng]); /* for easier debugging - removable */
+ Z(w->u.text[w->leng]); /* for easier debugging - removable */
if (DEBUG_LEXER(2)) {
fputs("**2** ", dbgout);
@@ -469,7 +469,7 @@
/* move decoded word to where the encoded used to be */
if (encoding == E_RAW) {
- memmove(beg+size, w->text, len);
+ memmove(beg+size, w->u.text, len);
size += len; /* bump output pointer */
Z(beg[size]); /* for easier debugging - removable */
@@ -485,7 +485,7 @@
/* convert 'word_t *w' to 'buff_t src' because
** iconvert_cd() needs buff_t pointers
*/
- src.t.text = w->text;
+ src.t.u.text = w->u.text;
src.t.leng = len;
src.read = 0;
src.size = len;
@@ -534,13 +534,13 @@
beg[size++] = *txt++;
#ifndef DISABLE_UNICODE
if (encoding == E_UNICODE)
- buf->t.text[buf->t.leng++] = *txt++;
+ buf->t.u.text[buf->t.leng++] = *txt++;
#endif
}
}
if (encoding == E_RAW) {
- r->text = beg;
+ r->u.text = beg;
r->leng = size;
}
Modified: trunk/bogofilter/src/lexer_v3.l
===================================================================
--- trunk/bogofilter/src/lexer_v3.l 2009-01-12 04:12:41 UTC (rev 6765)
+++ trunk/bogofilter/src/lexer_v3.l 2009-01-12 04:27:36 UTC (rev 6766)
@@ -117,7 +117,7 @@
static word_t *yy_text(void)
{
static word_t yyt;
- yyt.text = (byte *)yytext;
+ yyt.u.text = (byte *)yytext;
yyt.leng = yyleng;
return &yyt;
}
@@ -225,7 +225,7 @@
<INITIAL>{ENCODED_TOKEN} { word_t *raw = yy_text();
word_t *txt = text_decode(raw);
- yy_unput(txt->text, txt->leng);
+ yy_unput(txt->u.text, txt->leng);
}
<INITIAL>^(To|CC|From|Return-Path|Subject|Received): { set_tag(yytext); }
Modified: trunk/bogofilter/src/maint.c
===================================================================
--- trunk/bogofilter/src/maint.c 2009-01-12 04:12:41 UTC (rev 6765)
+++ trunk/bogofilter/src/maint.c 2009-01-12 04:27:36 UTC (rev 6766)
@@ -117,10 +117,10 @@
{
bool discard;
- if (token->text[0] == '.') { /* keep .MSG_COUNT and .ROBX */
- if (strcmp((const char *)token->text, MSG_COUNT) == 0)
+ if (token->u.text[0] == '.') { /* keep .MSG_COUNT and .ROBX */
+ if (strcmp((const char *)token->u.text, MSG_COUNT) == 0)
return false;
- if (strcmp((const char *)token->text, ROBX_W) == 0)
+ if (strcmp((const char *)token->u.text, ROBX_W) == 0)
return false;
}
@@ -167,31 +167,31 @@
void *vhandle = ((struct userdata_t *) userdata)->vhandle;
ta_t *transaction = ((struct userdata_t *) userdata)->transaction;
- token.text = w_key->text;
+ token.u.text = w_key->u.text;
token.leng = w_key->leng;
len = strlen(MSG_COUNT);
if (len == token.leng &&
- strncmp((char *)token.text, MSG_COUNT, token.leng) == 0)
+ strncmp((char *)token.u.text, MSG_COUNT, token.leng) == 0)
return EX_OK;
if (discard_token(&token, in_val)) {
int ret = ta_delete(transaction, vhandle, &token);
if (DEBUG_DATABASE(0))
- fprintf(dbgout, "deleting '%.*s'\n", (int)min(INT_MAX, token.leng), (char *)token.text);
+ fprintf(dbgout, "deleting '%.*s'\n", (int)min(INT_MAX, token.leng), (char *)token.u.text);
return ret;
}
if (replace_nonascii_characters)
{
word_t new_token;
- new_token.text = (byte *)xmalloc(token.leng + 1);
- memcpy(new_token.text, token.text, token.leng);
+ new_token.u.text = (byte *)xmalloc(token.leng + 1);
+ memcpy(new_token.u.text, token.u.text, token.leng);
new_token.leng = token.leng;
- new_token.text[new_token.leng] = '\0';
- if (do_replace_nonascii_characters(new_token.text, new_token.leng))
+ new_token.u.text[new_token.leng] = '\0';
+ if (do_replace_nonascii_characters(new_token.u.text, new_token.leng))
merge_tokens(&token, &new_token, in_val, transaction, vhandle);
- xfree(new_token.text);
+ xfree(new_token.u.text);
}
#ifndef DISABLE_UNICODE
@@ -202,18 +202,18 @@
old_buff.read = 0;
old_buff.size = token.leng;
- old_buff.t.text = token.text;
+ old_buff.t.u.text = token.u.text;
old_buff.t.leng = token.leng;
new_buff.read = 0;
new_buff.size = token.leng * 6;
new_buff.t.leng = 0;
- new_buff.t.text = (byte *)xmalloc(new_buff.size);
+ new_buff.t.u.text = (byte *)xmalloc(new_buff.size);
iconvert(&old_buff, &new_buff);
if (old_buff.t.leng != new_buff.t.leng ||
- memcmp(old_buff.t.text, new_buff.t.text, new_buff.t.leng) != 0) {
+ memcmp(old_buff.t.u.text, new_buff.t.u.text, new_buff.t.leng) != 0) {
if (DEBUG_ICONV(2)) {
fputs("*** ", dbgout); word_puts(&old_buff.t, 0, dbgout); fputs( "\n", dbgout);
fputs("*** ", dbgout); word_puts(&new_buff.t, 0, dbgout); fputs( "\n", dbgout);
@@ -222,7 +222,7 @@
merge_tokens(&old_buff.t, &new_buff.t, in_val, transaction, vhandle);
}
- xfree(new_buff.t.text);
+ xfree(new_buff.t.u.text);
}
#endif
@@ -244,16 +244,16 @@
const char *ip_hdr = "ip:";
size_t ip_len = strlen(ip_hdr);
- if (token.leng > url_len && memcmp(token.text, url_hdr, url_len) == 0)
+ if (token.leng > url_len && memcmp(token.u.text, url_hdr, url_len) == 0)
{
word_t new_token;
new_token.leng = token.leng + ip_len - url_len;
- new_token.text = (byte *)xmalloc(new_token.leng + 1);
- memcpy(new_token.text, ip_hdr, ip_len);
- memcpy(new_token.text+ip_len, token.text+url_len, token.leng - url_len);
- new_token.text[new_token.leng] = '\0';
+ new_token.u.text = (byte *)xmalloc(new_token.leng + 1);
+ memcpy(new_token.u.text, ip_hdr, ip_len);
+ memcpy(new_token.u.text+ip_len, token.u.text+url_len, token.leng - url_len);
+ new_token.u.text[new_token.leng] = '\0';
replace_token(&token, &new_token, in_val, transaction, vhandle);
- xfree(new_token.text);
+ xfree(new_token.u.text);
}
break;
}
@@ -323,14 +323,14 @@
dsv_t val;
word_t enco;
- enco.text = (byte *)xstrdup(WORDLIST_ENCODING);
+ enco.u.text = (byte *)xstrdup(WORDLIST_ENCODING);
enco.leng = strlen(WORDLIST_ENCODING);
val.count[0] = new_encoding;
val.count[1] = 0;
val.date = 0;
ds_write(database, &enco, &val);
- xfree(enco.text);
+ xfree(enco.u.text);
}
#endif
Modified: trunk/bogofilter/src/mime.c
===================================================================
--- trunk/bogofilter/src/mime.c 2009-01-12 04:12:41 UTC (rev 6765)
+++ trunk/bogofilter/src/mime.c 2009-01-12 04:27:36 UTC (rev 6766)
@@ -288,7 +288,7 @@
boundary_t * b /*@out@*/ /**< output properties, must be pre-allocated by caller */)
{
mime_t *ptr;
- const byte *buf = boundary->text;
+ const byte *buf = boundary->u.text;
size_t blen = boundary->leng;
b->is_valid = false;
@@ -350,7 +350,7 @@
if (DEBUG_MIME(0))
fprintf(dbgout,
"*** got_mime_boundary: stackp: %d, boundary: '%s'\n",
- mime_stack_top->depth, boundary->text);
+ mime_stack_top->depth, boundary->u.text);
if (msg_state != NULL)
{
@@ -420,7 +420,7 @@
void mime_content(word_t * text)
{
- char *key = (char *) text->text;
+ char *key = (char *) text->u.text;
switch (tolower(key[9])) {
case 'r': /* Content-Transfer-Encoding: */
mime_encoding(text);
@@ -438,7 +438,7 @@
{
size_t i;
const size_t l = sizeof("Content-Disposition:") - 1;
- byte *w = getword(text->text + l, text->text + text->leng);
+ byte *w = getword(text->u.text + l, text->u.text + text->leng);
if (!w)
return;
@@ -449,7 +449,7 @@
if (strcasecmp((const char *)w, dis->name) == 0) {
msg_state->mime_disposition = dis->disposition;
if (DEBUG_MIME(1))
- fprintf(dbgout, "*** mime_disposition: %s\n", text->text);
+ fprintf(dbgout, "*** mime_disposition: %s\n", text->u.text);
break;
}
}
@@ -479,7 +479,7 @@
{
size_t i;
const size_t l = sizeof("Content-Transfer-Encoding:") - 1;
- byte *w = getword(text->text + l, text->text + text->leng);
+ byte *w = getword(text->u.text + l, text->u.text + text->leng);
if (!w)
return;
@@ -490,7 +490,7 @@
if (strcasecmp((const char *)w, enc->name) == 0) {
msg_state->mime_encoding = enc->encoding;
if (DEBUG_MIME(1))
- fprintf(dbgout, "*** mime_encoding: %s\n", text->text);
+ fprintf(dbgout, "*** mime_encoding: %s\n", text->u.text);
break;
}
}
@@ -508,7 +508,7 @@
{
const struct type_s *typ;
const size_t l = sizeof("Content-Type:") - 1;
- byte *w = getword(text->text + l, text->text + text->leng);
+ byte *w = getword(text->u.text + l, text->u.text + text->leng);
if (!w)
return;
@@ -519,7 +519,7 @@
if (strncasecmp((const char *)w, typ->name, strlen(typ->name)) == 0) {
msg_state->mime_type = typ->type;
if (DEBUG_MIME(1) || DEBUG_LEXER(1))
- fprintf(dbgout, "*** mime_type: %s\n", text->text);
+ fprintf(dbgout, "*** mime_type: %s\n", text->u.text);
break;
}
}
@@ -545,7 +545,7 @@
void mime_boundary_set(word_t * text)
{
- byte *boundary = text->text;
+ byte *boundary = text->u.text;
size_t blen = text->leng;
if (DEBUG_MIME(1)) {
@@ -582,7 +582,7 @@
if (DEBUG_MIME(3))
fprintf(dbgout, "*** mime_decode %lu \"%-.*s\"\n",
(unsigned long) count,
- count > INT_MAX ? INT_MAX : (int) (count - 1), text->text);
+ count > INT_MAX ? INT_MAX : (int) (count - 1), text->u.text);
/* Do not decode "real" boundary lines */
if (mime_is_boundary(text) == true)
Modified: trunk/bogofilter/src/qp.c
===================================================================
--- trunk/bogofilter/src/qp.c 2009-01-12 04:12:41 UTC (rev 6765)
+++ trunk/bogofilter/src/qp.c 2009-01-12 04:27:36 UTC (rev 6766)
@@ -46,8 +46,8 @@
uint qp_decode(word_t *word, qp_mode mode)
{
uint size = word->leng;
- byte *s = word->text; /* src */
- byte *d = word->text; /* dst */
+ byte *s = word->u.text; /* src */
+ byte *d = word->u.text; /* dst */
byte *e = s + size; /* end */
while (s < e)
@@ -77,7 +77,7 @@
}
/* do not stuff NUL byte here:
* if there was one, it has been copied! */
- return d - word->text;
+ return d - word->u.text;
}
/* rfc2047 - QP [!->@-~]+
@@ -115,7 +115,7 @@
qp_init();
for (i = 0; i < word->leng; i += 1) {
- byte b = word->text[i];
+ byte b = word->u.text[i];
byte v = qp_xlate[b];
if (v == 0)
switch (b) {
Modified: trunk/bogofilter/src/robx.c
===================================================================
--- trunk/bogofilter/src/robx.c 2009-01-12 04:12:41 UTC (rev 6765)
+++ trunk/bogofilter/src/robx.c 2009-01-12 04:27:36 UTC (rev 6766)
@@ -51,7 +51,7 @@
" sp: %3lu, gd: %3lu, p: %9.6f, t: %.*s\n",
(unsigned long)rh->count, rh->sum, rh->sum / rh->count,
(unsigned long)spamness, (unsigned long)goodness, prob,
- CLAMP_INT_MAX(key->leng), key->text);
+ CLAMP_INT_MAX(key->leng), key->u.text);
}
}
@@ -61,7 +61,7 @@
struct robhook_data *rh = userdata;
/* ignore system meta-data */
- if (*key->text != '.')
+ if (*key->u.text != '.')
robx_accum(rh, key, data);
return 0;
Modified: trunk/bogofilter/src/tests/deb64.c
===================================================================
--- trunk/bogofilter/src/tests/deb64.c 2009-01-12 04:12:41 UTC (rev 6765)
+++ trunk/bogofilter/src/tests/deb64.c 2009-01-12 04:27:36 UTC (rev 6766)
@@ -22,9 +22,9 @@
size = ftell(stdin);
if (fseek(stdin, 0, SEEK_SET)) die();
w = word_new(NULL, size);
- if (fread(w->text, 1, w->leng, stdin) != w->leng) die();
+ if (fread(w->u.text, 1, w->leng, stdin) != w->leng) die();
size = base64_decode(w);
- if (fwrite(w->text, 1, size, stdout) != size) die();
+ if (fwrite(w->u.text, 1, size, stdout) != size) die();
word_free(w);
if (fflush(stdout)) die();
if (fclose(stdout)) die();
Modified: trunk/bogofilter/src/tests/deqp.c
===================================================================
--- trunk/bogofilter/src/tests/deqp.c 2009-01-12 04:12:41 UTC (rev 6765)
+++ trunk/bogofilter/src/tests/deqp.c 2009-01-12 04:27:36 UTC (rev 6766)
@@ -26,9 +26,9 @@
size = ftell(stdin);
if (fseek(stdin, 0, SEEK_SET)) die();
w = word_new(NULL, size);
- if (fread(w->text, 1, w->leng, stdin) != w->leng) die();
+ if (fread(w->u.text, 1, w->leng, stdin) != w->leng) die();
size = qp_decode(w, mode);
- if (fwrite(w->text, 1, size, stdout) != size) die();
+ if (fwrite(w->u.text, 1, size, stdout) != size) die();
word_free(w);
if (fflush(stdout)) die();
if (fclose(stdout)) die();
Modified: trunk/bogofilter/src/token.c
===================================================================
--- trunk/bogofilter/src/token.c 2009-01-12 04:12:41 UTC (rev 6765)
+++ trunk/bogofilter/src/token.c 2009-01-12 04:27:36 UTC (rev 6766)
@@ -95,7 +95,7 @@
for (i = 0; i < multi_token_count; i += 1) {
words->leng = 0;
- words->text = text;
+ words->u.text = text;
w_token_array[i] = words;
words += 1;
text += max_token_len+1+D;
@@ -112,13 +112,13 @@
static void token_set( word_t *token, byte *text, uint leng )
{
token->leng = leng;
- memcpy(token->text, text, leng); /* include nul terminator */
- token->text[leng] = '\0'; /* ensure nul termination */
+ memcpy(token->u.text, text, leng); /* include nul terminator */
+ token->u.text[leng] = '\0'; /* ensure nul termination */
}
static inline void token_copy( word_t *dst, word_t *src )
{
- token_set(dst, src->text, src->leng);
+ token_set(dst, src->u.text, src->leng);
}
static void build_prefixed_token( word_t *prefix, word_t *token,
@@ -130,12 +130,12 @@
len = temp_size - prefix->leng - 1;
temp->leng = len;
- memmove(temp->text+prefix->leng, token->text, len-prefix->leng);
- memcpy(temp->text, prefix->text, prefix->leng);
- Z(temp->text[temp->leng]);
+ memmove(temp->u.text+prefix->leng, token->u.text, len-prefix->leng);
+ memcpy(temp->u.text, prefix->u.text, prefix->leng);
+ Z(temp->u.text[temp->leng]);
token->leng = temp->leng;
- token->text = temp->text;
+ token->u.text = temp->u.text;
}
#define WRAP(n) ((n) % multi_token_count)
@@ -186,13 +186,13 @@
/* If saved IPADDR, truncate last octet */
if ( block_on_subnets && save_class == IPADDR )
{
- byte *t = xmemrchr(ipsave->text, '.', ipsave->leng);
+ byte *t = xmemrchr(ipsave->u.text, '.', ipsave->leng);
if (t == NULL)
save_class = NONE;
else
{
- ipsave->leng = (uint) (t - ipsave->text);
- token_set( token, ipsave->text, ipsave->leng);
+ ipsave->leng = (uint) (t - ipsave->u.text);
+ token_set( token, ipsave->u.text, ipsave->leng);
cls = save_class;
done = true;
}
@@ -205,11 +205,11 @@
cls = (*lexer->yylex)();
token->leng = (uint) *lexer->yyleng;
- token->text = (byte *) *lexer->yytext;
- Z(token->text[token->leng]); /* for easier debugging - removable */
+ token->u.text = (byte *) *lexer->yytext;
+ Z(token->u.text[token->leng]); /* for easier debugging - removable */
leng = token->leng;
- text = token->text;
+ text = token->u.text;
if (DEBUG_TEXT(2)) {
word_puts(token, 0, dbgout);
@@ -261,7 +261,7 @@
*ot = *in;
token->leng = leng = (uint) (ot - st);
}
- Z(token->text[token->leng]); /* for easier debugging - removable */
+ Z(token->u.text[token->leng]); /* for easier debugging - removable */
}
break;
@@ -287,7 +287,7 @@
if (leng > max_token_len)
continue;
- token->text = text;
+ token->u.text = text;
token->leng = leng;
if (token_prefix == NULL) {
@@ -327,7 +327,7 @@
case QUEUE_ID:
/* special token; saved for formatted output, but not returned to bogofilter */
/** \bug: the parser MUST be aligned with lexer_v3.l! */
- if (*queue_id->text == '\0' &&
+ if (*queue_id->u.text == '\0' &&
leng < max_token_len )
{
while (isspace(text[0])) {
@@ -350,8 +350,8 @@
leng -= 1;
}
leng = min(queue_id->leng, leng);
- memcpy( queue_id->text, text, leng );
- Z(queue_id->text[leng]);
+ memcpy( queue_id->u.text, text, leng );
+ Z(queue_id->u.text[leng]);
}
continue;
@@ -365,12 +365,12 @@
/* if top level, no address, not localhost, .... */
if (token_prefix == w_recv &&
msg_state->parent == NULL &&
- *msg_addr->text == '\0' &&
+ *msg_addr->u.text == '\0' &&
strcmp((char *)text, "127.0.0.1") != 0)
{
/* Not guaranteed to be the originating address of the message. */
- memcpy( msg_addr->text, yylval.text, min(msg_addr->leng, yylval.leng)+D );
- Z(msg_addr->text[yylval.leng]);
+ memcpy( msg_addr->u.text, yylval.u.text, min(msg_addr->leng, yylval.leng)+D );
+ Z(msg_addr->u.text[yylval.leng]);
}
}
@@ -398,7 +398,7 @@
q1 & 0xff, q2 & 0xff, q3 & 0xff, q4 & 0xff);
leng = strlen((const char *)text);
- token->text = text;
+ token->u.text = text;
token->leng = leng;
token_copy( ipsave, token );
@@ -408,7 +408,7 @@
return (cls);
}
- token->text = text;
+ token->u.text = text;
token->leng = leng;
break;
@@ -448,20 +448,20 @@
if (!msg_count_file) {
/* Remove trailing blanks */
/* From "From ", for example */
- while (token->leng > 1 && token->text[token->leng-1] == ' ') {
+ while (token->leng > 1 && token->u.text[token->leng-1] == ' ') {
token->leng -= 1;
- token->text[token->leng] = (byte) '\0';
+ token->u.text[token->leng] = (byte) '\0';
}
/* Remove trailing colon */
- if (token->leng > 1 && token->text[token->leng-1] == ':') {
+ if (token->leng > 1 && token->u.text[token->leng-1] == ':') {
token->leng -= 1;
- token->text[token->leng] = (byte) '\0';
+ token->u.text[token->leng] = (byte) '\0';
}
if (replace_nonascii_characters) {
/* replace nonascii characters by '?'s */
- for (cp = token->text; cp < token->text+token->leng; cp += 1)
+ for (cp = token->u.text; cp < token->u.text+token->leng; cp += 1)
*cp = casefold_table[*cp];
}
}
@@ -476,12 +476,12 @@
word_t *w = w_token_array[WRAP(tok_count)];
w->leng = token->leng;
- memcpy(w->text, token->text, w->leng);
- Z(w->text[w->leng]); /* for easier debugging - removable */
+ memcpy(w->u.text, token->u.text, w->leng);
+ Z(w->u.text[w->leng]); /* for easier debugging - removable */
if (DEBUG_MULTI(1))
fprintf(stderr, "%s:%d %2s %2d %2d %p %s\n", __FILE__, __LINE__,
- "", tok_count, w->leng, w->text, w->text);
+ "", tok_count, w->leng, w->u.text, w->u.text);
tok_count += 1;
init_token = 1;
@@ -500,19 +500,19 @@
leng = init_token;
for ( tok = init_token; tok >= 0; tok -= 1 ) {
uint idx = tok_count - 1 - tok;
- leng += strlen((char *) w_token_array[WRAP(idx)]->text);
+ leng += strlen((char *) w_token_array[WRAP(idx)]->u.text);
}
if (leng > max_multi_token_len)
leng = max_multi_token_len;
token->leng = leng;
- token->text = dest = p_multi_buff;
+ token->u.text = dest = p_multi_buff;
for ( tok = init_token; tok >= 0; tok -= 1 ) {
uint idx = tok_count - 1 - tok;
uint len = w_token_array[WRAP(idx)]->leng;
- byte *str = w_token_array[WRAP(idx)]->text;
+ byte *str = w_token_array[WRAP(idx)]->u.text;
if (DEBUG_MULTI(1))
fprintf(stderr, "%s:%d %2d %2d %2d %p %s\n", __FILE__, __LINE__,
@@ -529,7 +529,7 @@
sep = "*";
}
- Z(token->text[token->leng]); /* for easier debugging - removable */
+ Z(token->u.text[token->leng]); /* for easier debugging - removable */
init_token += 1; /* progress to next multi-token */
return;
@@ -564,7 +564,7 @@
yylval_text = (byte *) malloc( yylval_text_size+D );
yylval.leng = 0;
- yylval.text = yylval_text;
+ yylval.u.text = yylval_text;
/* First IP Address in Received: statement */
msg_addr = word_new( NULL, max_token_len );
@@ -694,8 +694,8 @@
{
if (msg_addr != NULL)
{
- *msg_addr->text = '\0';
- *msg_id->text = '\0';
- *queue_id->text = '\0';
+ *msg_addr->u.text = '\0';
+ *msg_id->u.text = '\0';
+ *queue_id->u.text = '\0';
}
}
Modified: trunk/bogofilter/src/uudecode.c
===================================================================
--- trunk/bogofilter/src/uudecode.c 2009-01-12 04:12:41 UTC (rev 6765)
+++ trunk/bogofilter/src/uudecode.c 2009-01-12 04:27:36 UTC (rev 6766)
@@ -18,7 +18,7 @@
{
uint size = word->leng;
uint count = 0;
- byte *b = word->text; /* beg */
+ byte *b = word->u.text; /* beg */
byte *s = b; /* src */
byte *d = b; /* dst */
byte *e = b+size; /* end */
Modified: trunk/bogofilter/src/word.c
===================================================================
--- trunk/bogofilter/src/word.c 2009-01-12 04:12:41 UTC (rev 6765)
+++ trunk/bogofilter/src/word.c 2009-01-12 04:27:36 UTC (rev 6766)
@@ -25,12 +25,12 @@
/* to lessen malloc/free calls, allocate struct and data in one block */
word_t *self = xmalloc(sizeof(word_t)+len+1);
self->leng = len;
- self->text = (byte *)((char *)self+sizeof(word_t));
+ self->u.text = (byte *)((char *)self+sizeof(word_t));
if (text != NULL) {
- memcpy(self->text, text, len);
- self->text[len] = '\0'; /* ensure nul termination */
+ memcpy(self->u.text, text, len);
+ self->u.text[len] = '\0'; /* ensure nul termination */
} else {
- self->text[0] = '\0'; /* ditto for text == NULL */
+ self->u.text[0] = '\0'; /* ditto for text == NULL */
}
return self;
}
@@ -38,7 +38,7 @@
int word_cmp(const word_t *w1, const word_t *w2)
{
uint l = min(w1->leng, w2->leng);
- int r = memcmp((const char *)w1->text, (const char *)w2->text, l);
+ int r = memcmp((const char *)w1->u.text, (const char *)w2->u.text, l);
if (r) return r;
if (w1->leng > w2->leng) return 1;
if (w1->leng < w2->leng) return -1;
@@ -49,7 +49,7 @@
{
word_t w2;
w2.leng = strlen(s);
- w2.ctext = s;
+ w2.u.ctext = s;
return word_cmp(w, &w2);
}
@@ -57,9 +57,9 @@
{
uint len = w1->leng + w2->leng;
word_t *ans = word_new(NULL, len);
- memcpy(ans->text, w1->text, w1->leng);
- memcpy(ans->text+w1->leng, w2->text, w2->leng);
- Z(ans->text[ans->leng]); /* for easier debugging - removable */
+ memcpy(ans->u.text, w1->u.text, w1->leng);
+ memcpy(ans->u.text+w1->leng, w2->u.text, w2->leng);
+ Z(ans->u.text[ans->leng]); /* for easier debugging - removable */
return ans;
}
@@ -70,7 +70,7 @@
** blank fill if 'width' < length
*/
uint l = (width == 0) ? word->leng : min(width, word->leng);
- (void)fwrite(word->text, 1, l, fp);
+ (void)fwrite(word->u.text, 1, l, fp);
if (l < width)
(void) fprintf(fp, "%*s", (int)(width - l), " ");
}
Modified: trunk/bogofilter/src/word.h
===================================================================
--- trunk/bogofilter/src/word.h 2009-01-12 04:12:41 UTC (rev 6765)
+++ trunk/bogofilter/src/word.h 2009-01-12 04:27:36 UTC (rev 6766)
@@ -21,7 +21,7 @@
union {
byte *text; /** pointer to the string */
const char *ctext;
- };
+ } u;
} word_t;
/** create a new word_t from the \a leng bytes at address \a text */
@@ -35,7 +35,7 @@
#define word_free(self) xfree((self))
/** create a newly word_t to form a deep copy of \a self */
-#define word_dup(self) word_new((self)->text, (self)->leng)
+#define word_dup(self) word_new((self)->u.text, (self)->leng)
/** compare \a w1 and \a w2 with memcmp() */
extern int word_cmp(const word_t *w1, const word_t *w2);
Modified: trunk/bogofilter/src/wordhash.c
===================================================================
--- trunk/bogofilter/src/wordhash.c 2009-01-12 04:12:41 UTC (rev 6765)
+++ trunk/bogofilter/src/wordhash.c 2009-01-12 04:27:36 UTC (rev 6766)
@@ -235,7 +235,7 @@
unsigned int h = 0;
size_t l;
for (l=0; l<t->leng; l++)
- h = MULT * h + t->text[l];
+ h = MULT * h + t->u.text[l];
return h % NHASH;
}
@@ -243,7 +243,7 @@
{
wordprop_t *p = (wordprop_t *)n->buf;
if (verbose > 2)
- printf( "%20.20s %5u %5u%s", n->key->text, p->cnts.bad, p->cnts.good, str);
+ printf( "%20.20s %5u %5u%s", n->key->u.text, p->cnts.bad, p->cnts.good, str);
}
/* this function accumulates the word frequencies from the src hash to
@@ -311,7 +311,7 @@
for (hn = wh->bin[idx]; hn != NULL; hn = hn->next) {
word_t *key = hn->key;
- if (key->leng == t->leng && memcmp (t->text, key->text, t->leng) == 0) {
+ if (key->leng == t->leng && memcmp (t->u.text, key->u.text, t->leng) == 0) {
wordprop_t *p = (wordprop_t *)hn->buf;
return p;
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|