]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
Added seq_range_array_merge()
authorTimo Sirainen <tss@iki.fi>
Thu, 5 Jun 2008 02:02:01 +0000 (05:02 +0300)
committerTimo Sirainen <tss@iki.fi>
Thu, 5 Jun 2008 02:02:01 +0000 (05:02 +0300)
--HG--
branch : HEAD

src/lib/seq-range-array.c
src/lib/seq-range-array.h

index 3101f6ac8179097842aa0db38c8f7f804c2fa894..09ca0b247ee87eeaf71e9f43462daebf85437db5 100644 (file)
@@ -138,6 +138,22 @@ void seq_range_array_add_range(ARRAY_TYPE(seq_range) *array,
        }
 }
 
+void seq_range_array_merge(ARRAY_TYPE(seq_range) *dest,
+                          const ARRAY_TYPE(seq_range) *src)
+{
+       const struct seq_range *range;
+       unsigned int i, count;
+
+       if (array_count(dest) == 0) {
+               array_append_array(dest, src);
+               return;
+       }
+
+       range = array_get(src, &count);
+       for (i = 0; i < count; i++)
+               seq_range_array_add_range(dest, range[i].seq1, range[i].seq2);
+}
+
 bool seq_range_array_remove(ARRAY_TYPE(seq_range) *array, uint32_t seq)
 {
        struct seq_range *data, value;
index 6ddb2be1885e94fbe04b37f11ba48648d480f047..d059df931562318f997b307c8e2e7989fbbd9deb 100644 (file)
@@ -17,6 +17,8 @@ void seq_range_array_add(ARRAY_TYPE(seq_range) *array, unsigned int init_count,
                         uint32_t seq);
 void seq_range_array_add_range(ARRAY_TYPE(seq_range) *array,
                               uint32_t seq1, uint32_t seq2);
+void seq_range_array_merge(ARRAY_TYPE(seq_range) *dest,
+                          const ARRAY_TYPE(seq_range) *src);
 /* Remove given sequrence from range. Returns TRUE if it was found. */
 bool seq_range_array_remove(ARRAY_TYPE(seq_range) *array, uint32_t seq);
 /* Remove a sequence range. Returns number of sequences actually removed. */