Can remove the sender and/or the recipient from the key of the greylister.
[apps/pfixtools.git] / common / array.h
index 6f5217d..4a5b88d 100644 (file)
         array_ensure_can_edit(array);                                          \
         p_allocgrow(&(array).data, (goal), &(array).size);                     \
     }
-#define array_adjust(array)                                                    \
+#define array_shrink(array, cap)                                               \
     do {                                                                       \
         array_ensure_can_edit(array);                                          \
-        p_shrink(&(array).data, (array).len, &(array).size);                   \
+        if ((cap) < (array).size && (array).size != (array).len) {             \
+            p_shrink(&(array).data, MAX((array).len, (cap)), &(array).size);   \
+        }                                                                      \
     } while (0)
+#define array_adjust(array) array_shrink(array, 0)
+
 #define array_elt(array, n) ((array).data[(n)])
+#define array_last(array) array_elt(array, (array).len - 1)
+#define array_pop_last(array) array_elt(array, --((array).len))
+
 #define array_ptr(array, n) ((array).data + (n))
 
 #define foreach(var, array)                                                    \