~ubuntu-branches/ubuntu/lucid/bogofilter/lucid-updates

« back to all changes in this revision

Viewing changes to src/buff.c

  • Committer: Bazaar Package Importer
  • Author(s): Bhavani Shankar
  • Date: 2009-05-06 05:41:52 UTC
  • mfrom: (1.1.11 upstream) (2.1.4 squeeze)
  • Revision ID: james.westby@ubuntu.com-20090506054152-tgameecssbuv4np6
Tags: 1.2.0-2ubuntu1
* Merge from debian unstable, remaining changes: LP: #372497
  - don't build qdbm.
  - Don't build tokyocabinet support as it's in universe.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* $Id: buff.c 5310 2005-01-08 01:17:28Z relson $ */
 
1
/* $Id: buff.c 6766 2009-01-12 04:27:36Z relson $ */
2
2
 
3
3
/** \file buff.c
4
4
 * implementation of the buff type, a buffer for arbitrary strings
21
21
/* Function Definitions */
22
22
buff_t *buff_init(buff_t *self, byte *buff, uint used, uint size)
23
23
{
24
 
    self->t.text = buff;
 
24
    self->t.u.text = buff;
25
25
    self->t.leng = used;
26
26
    self->read = 0;
27
27
    self->size = size;
43
43
int buff_fgetsln(buff_t *self, FILE *in, uint maxlen)
44
44
{
45
45
    uint readpos = self->t.leng;
46
 
    int readcnt = xfgetsl((char *)self->t.text + readpos,
 
46
    int readcnt = xfgetsl((char *)self->t.u.text + readpos,
47
47
            min(self->size - readpos, maxlen), in, true);
48
48
    /* WARNING: do not add NUL termination, the size must be exact! */
49
49
    self->read = readpos;
58
58
    int readcnt = in->leng;
59
59
    uint new_size = self->t.leng + in->leng;
60
60
    if (new_size > self->size) {
61
 
        self->t.text = xrealloc(self->t.text, new_size);
 
61
        self->t.u.text = xrealloc(self->t.u.text, new_size);
62
62
        self->size = new_size;
63
63
    }
64
64
    self->read = readpos;
65
65
    self->t.leng += readcnt;
66
 
    memcpy(self->t.text + readpos, in->text, readcnt);
67
 
    Z(self->t.text[self->t.leng]);              /* for easier debugging - removable */
 
66
    memcpy(self->t.u.text + readpos, in->u.text, readcnt);
 
67
    Z(self->t.u.text[self->t.leng]);            /* for easier debugging - removable */
68
68
 
69
69
    return readcnt;
70
70
}
73
73
{
74
74
    word_t word;
75
75
    word.leng = self->t.leng - self->read;
76
 
    word.text = self->t.text + self->read;
 
76
    word.u.text = self->t.u.text + self->read;
77
77
    word_puts(&word, width, fp);
78
78
}
79
79
 
85
85
    BOGO_ASSERT(start + length <= self->t.leng,
86
86
                "Invalid buff_shift() parameters.");
87
87
 
88
 
    memmove(self->t.text + start, self->t.text + start + length, self->t.leng - length);
 
88
    memmove(self->t.u.text + start, self->t.u.text + start + length, self->t.leng - length);
89
89
    self->t.leng -= length;
90
 
    Z(self->t.text[self->t.leng]);              /* for easier debugging - removable */
 
90
    Z(self->t.u.text[self->t.leng]);            /* for easier debugging - removable */
91
91
    return;
92
92
}