[Libguestfs] [PATCH libnbd v2 4/8] common/utils/vector: Rename `alloc` to `cap`

Nir Soffer
Sun, 31 Oct 2021 15:38:53 -0000

The `alloc` field is the maximum number of items you can append to a
vector before it need to be resized. This may confuse users with the
size of the `ptr` array which is `alloc * itemsize`. Rename to "cap",
common term for this property in many languages (e.g C++, Rust, Go).

Signed-off-by: Nir Soffer <nsoffer at redhat.com>
---
 common/utils/vector.c | 16 ++++++++--------
 common/utils/vector.h | 10 +++++-----
 lib/crypto.c          |  4 ++--
 3 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/common/utils/vector.c b/common/utils/vector.c
index 7df17e1..a4b43ce 100644
--- a/common/utils/vector.c
+++ b/common/utils/vector.c
@@ -41,21 +41,21 @@ int
 generic_vector_reserve (struct generic_vector *v, size_t n, size_t itemsize)
 {
   void *newptr;
-  size_t reqalloc, newalloc;
+  size_t reqcap, newcap;

-  reqalloc = v->alloc + n;
-  if (reqalloc < v->alloc)
+  reqcap = v->cap + n;
+  if (reqcap < v->cap)
     return -1; /* overflow */

-  newalloc = (v->alloc * 3 + 1) / 2;
+  newcap = (v->cap * 3 + 1) / 2;

-  if (newalloc < reqalloc)
-    newalloc = reqalloc;
+  if (newcap < reqcap)
+    newcap = reqcap;

-  newptr = realloc (v->ptr, newalloc * itemsize);
+  newptr = realloc (v->ptr, newcap * itemsize);
   if (newptr == NULL)
     return -1;
   v->ptr = newptr;
-  v->alloc = newalloc;
+  v->cap = newcap;
   return 0;
 }
diff --git a/common/utils/vector.h b/common/utils/vector.h
index 69aad8d..3fc8b68 100644
--- a/common/utils/vector.h
+++ b/common/utils/vector.h
@@ -86,7 +86,7 @@
   struct name {                                                         \
     type *ptr;                 /* Pointer to array of items. */         \
     size_t size;               /* Number of valid items in the array. */ \
-    size_t alloc;              /* Number of items allocated. */         \
+    size_t cap;                /* Maximum number of items. */           \
   };                                                                    \
   typedef struct name name;                                             \
                                                                         \
@@ -106,7 +106,7 @@
   name##_insert (name *v, type elem, size_t i)                          \
   {                                                                     \
     assert (i <= v->size);                                              \
-    if (v->size >= v->alloc) {
\
+    if (v->size >= v->cap) {
\
       if (name##_reserve (v, 1) == -1) return -1;                       \
     }                                                                   \
     memmove (&v->ptr[i+1], &v->ptr[i], (v->size-i) * sizeof
(elem));    \
@@ -137,7 +137,7 @@
   {                                                                     \
     free (v->ptr);                                                      \
     v->ptr = NULL;                                                      \
-    v->size = v->alloc = 0;                                             \
+    v->size = v->cap = 0;                                               \
   }                                                                     \
                                                                         \
   /* Iterate over the vector, calling f() on each element. */           \
@@ -168,12 +168,12 @@
                     (void *) compare);                                  \
   }

-#define empty_vector { .ptr = NULL, .size = 0, .alloc = 0 }
+#define empty_vector { .ptr = NULL, .size = 0, .cap = 0 }

 struct generic_vector {
   void *ptr;
   size_t size;
-  size_t alloc;
+  size_t cap;
 };

 extern int generic_vector_reserve (struct generic_vector *v,
diff --git a/lib/crypto.c b/lib/crypto.c
index a9b3789..f570db3 100644
--- a/lib/crypto.c
+++ b/lib/crypto.c
@@ -141,7 +141,7 @@ nbd_unlocked_get_tls_username (struct nbd_handle *h)
   }

   for (;;) {
-    if (getlogin_r (str.ptr, str.alloc) == 0) {
+    if (getlogin_r (str.ptr, str.cap) == 0) {
       return str.ptr;
     }
     else if (errno != ERANGE) {
@@ -150,7 +150,7 @@ nbd_unlocked_get_tls_username (struct nbd_handle *h)
       return NULL;
     }
     /* Try again with a larger buffer. */
-    if (string_reserve (&str, str.alloc == 0 ? 16 : str.alloc * 2) == -1) {
+    if (string_reserve (&str, str.cap == 0 ? 16 : str.cap * 2) == -1) {
       set_error (errno, "realloc");
       free (str.ptr);
       return NULL;
--
2.31.1