search for: empty_vector

Displaying 20 results from an estimated 51 matches for "empty_vector".

2023 Mar 28
1
[nbdkit PATCH 1/2] common/utils: document empty_vector compound literal assignment
We usually zero-initialize vectors like string_vector names = empty_vector; Allocating and zeroing separately is frequently useful however. Document the pattern string_vector names; names = (string_vector)empty_vector; where "(string_vector)empty_vector" is a compound literal. Link: http://mid.mail-archive.com/20230221183810.vjilfbmj3woqivlj at redhat.co...
2023 Mar 28
3
[nbdkit PATCH 0/2] various
I originally meant to post only the "vector.h" patch, but then (independently) nbdkit wouldn't build. Hence the other (rust plugin) patch. Laszlo Laszlo Ersek (2): common/utils: document empty_vector compound literal assignment plugins/rust: restrict predicates-{tree,core} to {1.0.7,1.0.5} common/utils/vector.h | 8 +++++++- plugins/rust/Cargo.toml | 2 ++ 2 files changed, 9 insertions(+), 1 deletion(-) base-commit: 45b72f5bd8fc1b475fa130d06c86cd877bf595d5
2023 Aug 30
2
[nbdkit PATCH] sh: Allow pwrite to not consume all data
..."in the script", - argv0); + *pipe_full = true; + r = wbuflen; } else nbdkit_error ("%s: write: %m", argv0); @@ -555,7 +550,7 @@ call (const char **argv) CLEANUP_FREE_STRING string rbuf = empty_vector; CLEANUP_FREE_STRING string ebuf = empty_vector; - r = call3 (NULL, 0, &rbuf, &ebuf, argv); + r = call3 (NULL, 0, NULL, &rbuf, &ebuf, argv); return handle_script_error (argv[0], &ebuf, r); } @@ -568,7 +563,7 @@ call_read (string *rbuf, const char **argv) int r;...
2023 Aug 31
1
[nbdkit PATCH] sh: Allow pwrite to not consume all data
...uot;, > - argv0); > + *pipe_full = true; > + r = wbuflen; > } > else > nbdkit_error ("%s: write: %m", argv0); > @@ -555,7 +550,7 @@ call (const char **argv) > CLEANUP_FREE_STRING string rbuf = empty_vector; > CLEANUP_FREE_STRING string ebuf = empty_vector; > > - r = call3 (NULL, 0, &rbuf, &ebuf, argv); > + r = call3 (NULL, 0, NULL, &rbuf, &ebuf, argv); > return handle_script_error (argv[0], &ebuf, r); > } > > @@ -568,7 +563,7 @@ call_read (string...
2023 Aug 31
1
[nbdkit PATCH] sh: Allow pwrite to not consume all data
...uot;, > - argv0); > + *pipe_full = true; > + r = wbuflen; > } > else > nbdkit_error ("%s: write: %m", argv0); > @@ -555,7 +550,7 @@ call (const char **argv) > CLEANUP_FREE_STRING string rbuf = empty_vector; > CLEANUP_FREE_STRING string ebuf = empty_vector; > > - r = call3 (NULL, 0, &rbuf, &ebuf, argv); > + r = call3 (NULL, 0, NULL, &rbuf, &ebuf, argv); > return handle_script_error (argv[0], &ebuf, r); > } > > @@ -568,7 +563,7 @@ call_read (string...
2023 Aug 31
1
[nbdkit PATCH] sh: Allow pwrite to not consume all data
...argv0); > > + *pipe_full = true; > > + r = wbuflen; > > } > > else > > nbdkit_error ("%s: write: %m", argv0); > > @@ -555,7 +550,7 @@ call (const char **argv) > > CLEANUP_FREE_STRING string rbuf = empty_vector; > > CLEANUP_FREE_STRING string ebuf = empty_vector; > > > > - r = call3 (NULL, 0, &rbuf, &ebuf, argv); > > + r = call3 (NULL, 0, NULL, &rbuf, &ebuf, argv); > > return handle_script_error (argv[0], &ebuf, r); > > } > > > &g...
2023 Aug 31
2
[nbdkit PATCH] sh: Allow pwrite to not consume all data
...argv0); >> + *pipe_full = true; >> + r = wbuflen; >> } >> else >> nbdkit_error ("%s: write: %m", argv0); >> @@ -555,7 +550,7 @@ call (const char **argv) >> CLEANUP_FREE_STRING string rbuf = empty_vector; >> CLEANUP_FREE_STRING string ebuf = empty_vector; >> >> - r = call3 (NULL, 0, &rbuf, &ebuf, argv); >> + r = call3 (NULL, 0, NULL, &rbuf, &ebuf, argv); >> return handle_script_error (argv[0], &ebuf, r); >> } >> >> @@ -568...
2023 Aug 31
2
[nbdkit PATCH] sh: Allow pwrite to not consume all data
...*pipe_full = true; > >> + r = wbuflen; > >> } > >> else > >> nbdkit_error ("%s: write: %m", argv0); > >> @@ -555,7 +550,7 @@ call (const char **argv) > >> CLEANUP_FREE_STRING string rbuf = empty_vector; > >> CLEANUP_FREE_STRING string ebuf = empty_vector; > >> > >> - r = call3 (NULL, 0, &rbuf, &ebuf, argv); > >> + r = call3 (NULL, 0, NULL, &rbuf, &ebuf, argv); > >> return handle_script_error (argv[0], &ebuf, r); > >&gt...
2023 Aug 31
1
[nbdkit PATCH] sh: Allow pwrite to not consume all data
...+ *pipe_full = true; >>> + r = wbuflen; >>> } >>> else >>> nbdkit_error ("%s: write: %m", argv0); >>> @@ -555,7 +550,7 @@ call (const char **argv) >>> CLEANUP_FREE_STRING string rbuf = empty_vector; >>> CLEANUP_FREE_STRING string ebuf = empty_vector; >>> >>> - r = call3 (NULL, 0, &rbuf, &ebuf, argv); >>> + r = call3 (NULL, 0, NULL, &rbuf, &ebuf, argv); >>> return handle_script_error (argv[0], &ebuf, r); >>> } &...
2023 Aug 31
0
[nbdkit PATCH] sh: Allow pwrite to not consume all data
...r = wbuflen; > >>>> } > >>>> else > >>>> nbdkit_error ("%s: write: %m", argv0); > >>>> @@ -555,7 +550,7 @@ call (const char **argv) > >>>> CLEANUP_FREE_STRING string rbuf = empty_vector; > >>>> CLEANUP_FREE_STRING string ebuf = empty_vector; > >>>> > >>>> - r = call3 (NULL, 0, &rbuf, &ebuf, argv); > >>>> + r = call3 (NULL, 0, NULL, &rbuf, &ebuf, argv); > >>>> return handle_script_err...
2023 Aug 31
1
[nbdkit PATCH] sh: Allow pwrite to not consume all data
...> >>> + r = wbuflen; > >>> } > >>> else > >>> nbdkit_error ("%s: write: %m", argv0); > >>> @@ -555,7 +550,7 @@ call (const char **argv) > >>> CLEANUP_FREE_STRING string rbuf = empty_vector; > >>> CLEANUP_FREE_STRING string ebuf = empty_vector; > >>> > >>> - r = call3 (NULL, 0, &rbuf, &ebuf, argv); > >>> + r = call3 (NULL, 0, NULL, &rbuf, &ebuf, argv); > >>> return handle_script_error (argv[0], &eb...
2020 Apr 15
0
[PATCH nbdkit 1/9] common: Add a generic implementation of vectors.
...gt; + +#include <stdio.h> +#include <stdlib.h> +#include <stdint.h> +#include <assert.h> + +#include "vector.h" + +DEFINE_VECTOR_TYPE(int64_vector, int64_t); +DEFINE_VECTOR_TYPE(string_vector, char *); + +static void +test_int64_vector (void) +{ + int64_vector v = empty_vector; + size_t i; + + for (i = 0; i < 10; ++i) + assert (int64_vector_append (&v, i) == 0); + for (i = 0; i < 10; ++i) + assert (v.ptr[i] == i); + free (v.ptr); +} + +static void +test_string_vector (void) +{ + string_vector v = empty_vector; + size_t i; + + for (i = 0; i < 10;...
2020 Jun 02
0
[PATCH nbdkit 3/5] vddk: Miscellaneous improvements to reexec code.
...tor (string_vector *v) static void perform_reexec (const char *env, const char *prepend) { + static const char cmdline_file[] = "/proc/self/cmdline"; + static const char exe_file[] = "/proc/self/exe"; CLEANUP_FREE char *library = NULL; + CLEANUP_FREE_BUFFER buffer buf = empty_vector; CLEANUP_FREE_STRING_VECTOR string_vector argv = empty_vector; int fd; - size_t len = 0, buflen = 512; - CLEANUP_FREE char *buf = NULL; + size_t len; /* In order to re-exec, we need our original command line. The * Linux kernel does not make it easy to know in advance how large @...
2020 Oct 27
6
[PATCH libnbd 0/5] info: --map: Coalesce adjacent extents of the same type.
This adds coalescing of adjacent extents of the same type, as mentioned by Eric Blake in the commit message here: https://github.com/libguestfs/libnbd/commit/46072f6611f80245846a445766da071e457b00cd The patch series is rather long because it detours through adding the <vector.h> library from nbdkit into libnbd and replacing ad hoc uses of realloc, char ** etc in various places. Rich.
2020 Oct 27
0
[PATCH libnbd 1/5] common/utils: Copy simple vector library from nbdkit.
...es a new type called ‘name’ containing an + * extensible vector of ‘type’ elements. For example: + * + * DEFINE_VECTOR_TYPE(string_vector, char *) + * + * defines a new type called ‘string_vector’ as a vector of ‘char *’. + * You can create variables of this type: + * + * string_vector names = empty_vector; + * + * where ‘names.ptr[]’ will be an array of strings and ‘names.size’ + * will be the number of strings. There are no get/set accessors. To + * iterate over the strings you can use the ‘.ptr’ field directly: + * + * for (size_t i = 0; i < names.size; ++i) + * printf ("%s\n"...
2020 Apr 15
1
Re: [PATCH nbdkit 1/9] common: Add a generic implementation of vectors.
...> + for (i = 0; i < v->size; ++i) \ > + f (v->ptr[i]); \ > + } Should we allow the callback to return a value, where returning 0 can abort the iteration early? > + > +#define empty_vector { .ptr = NULL, .size = 0, .alloc = 0 } Nice that this initializer is type-agnostic. > + > +struct generic_vector { > + void *ptr; > + size_t size; > + size_t alloc; > +}; > + > +static int > +generic_vector_extend (struct generic_vector *v, size_t n, size_t itemsize)...
2020 Apr 15
0
[PATCH nbdkit 2/9] floppy, iso, split, ssh: Use new vector type to store lists of strings.
...-43,10 +43,11 @@ #include "cleanup.h" #include "utils.h" +#include "vector.h" /* List of directories parsed from the command line. */ -static char **dirs = NULL; -static size_t nr_dirs = 0; +DEFINE_VECTOR_TYPE(string_vector, char *); +static string_vector dirs = empty_vector; /* genisoimage or mkisofs program, picked at compile time, but can be * overridden at run time. @@ -98,9 +99,9 @@ make_iso (void) fprintf (fp, " -quiet"); if (params) fprintf (fp, " %s", params); - for (i = 0; i < nr_dirs; ++i) { + for (i = 0; i < dirs.s...
2020 Apr 15
18
[PATCH nbdkit 0/9] Generic vector, and pass $nbdkit_stdio_safe to shell scripts.
This was a rather longer trip around the houses than I anticipated! The basic purpose of the patch series is to set $nbdkit_stdio_safe to "0" or "1" in sh and eval plugin scripts. To do that, I ended up adding a nicer way to manipulate environ lists, and to do that, I ended up adding a whole generic vector implementation which is applicable in a lot of different places.
2023 Feb 22
1
[PATCH nbdkit] curl: Try to share as much as possible between handles in the pool
...b + */ +static pthread_rwlock_t lockarray[CURL_LOCK_DATA_LAST]; + +/* Curl share data. */ +static CURLSH *share; /* This lock protects access to the curl_handles vector below. */ static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER; @@ -90,18 +103,46 @@ static curl_handle_list curl_handles = empty_vector; static pthread_cond_t cond = PTHREAD_COND_INITIALIZER; static size_t in_use = 0, waiting = 0; -/* Close and free all handles in the pool. */ +/* Initialize pool structures. */ void -free_all_handles (void) +load_pool (void) { size_t i; + for (i = 0; i < ARRAY_SIZE (lockarray); ++i)...
2020 Jul 07
0
[nbdkit PATCH 1/3] vector: Add VECT_remove
...mon/utils/test-vector.c @@ -43,19 +43,43 @@ DEFINE_VECTOR_TYPE(int64_vector, int64_t); DEFINE_VECTOR_TYPE(string_vector, char *); +static int +compare (const int64_t *a, const int64_t *b) +{ + return (*a > *b) - (*a < *b); +} + static void test_int64_vector (void) { int64_vector v = empty_vector; size_t i; int r; + int64_t tmp, *p; for (i = 0; i < 10; ++i) { - r = int64_vector_append (&v, i); + r = int64_vector_insert (&v, i, 0); assert (r == 0); } + + for (i = 0; i < 10; ++i) + assert (v.ptr[i] == 9 - i); + int64_vector_sort (&v, compare);...