diff options
author | Werner Koch <[email protected]> | 2025-04-01 08:26:30 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2025-04-01 08:26:30 +0000 |
commit | 47097806f13d93daffb73b4221f3f18a99f66b2b (patch) | |
tree | f461610d9566dfe2c7b4c7708a4a523022ea8c8e /src/visibility.c | |
parent | Add source file strlist.c (diff) | |
download | libgpg-error-47097806f13d93daffb73b4221f3f18a99f66b2b.tar.gz libgpg-error-47097806f13d93daffb73b4221f3f18a99f66b2b.zip |
New public API gpgrt_strlist_*
* src/strlist.c: Rename all functions to have a _gpgrt_strlist prefix.
(append_to_strlist2, strlist_length): Remove.
(_gpgrt_strlist_free): rtake care of the wipe flag.
(_gpgrt_strlist_add): Add a flags arg to use it for prepend and
append. Return an error on failure.
(_gpgrt_strlist_tokenize): Ditto.
(_gpgrt_strlist_copy): Chnage to return an error on failure.
(_gpgrt_strlist_pop): Ditto.
* src/Makefile.am (libgpg_error_la_SOURCES): Add strlist.c.
* src/argparse.c (trim_spaces): Move to ...
* src/stringutils.c (_gpgrt_trim_spaces): here and rename.
* src/visibility.c: Add wrappers for all exported functions.
* src/visibility.h: MArk exported functions as visisble.
* src/gpg-error.def.in: Export new functions
* src/gpg-error.vers: Ditto.
* src/gpg-error.h.in (GPGRT_STRLIST_APPEND): New.
(GPGRT_STRLIST_WIPE): New.
(gpgrt_strlist_free): New.
(gpgrt_strlist_add): New.
(gpgrt_strlist_tokenize): New.
(gpgrt_strlist_copy): New.
(gpgrt_strlist_rev): New.
(gpgrt_strlist_prev): New.
(gpgrt_strlist_last): New.
(gpgrt_strlist_pop): New.
(gpgrt_strlist_find): New.
(gpgrt_strlist_count): New inline function.
--
This is a modified set of function as used by gpg for ages. These are
quite useful functions and will be needed internally for some other
planned features. The idea is to make their counterparts in gnupg
wrapper around those new functions.
After we have moved the secure memory stuff from Libgcrypt to here we
can also implement a GPGRT_STRLICT_SECMEM flag to allow allocating
strings here ion secure memory. For now we only have the WIPE flag
which wipes the memory on free.
Diffstat (limited to 'src/visibility.c')
-rw-r--r-- | src/visibility.c | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/src/visibility.c b/src/visibility.c index 836d4d0..367b6ef 100644 --- a/src/visibility.c +++ b/src/visibility.c @@ -1345,6 +1345,65 @@ gpgrt_absfnameconcat (const char *first, ... ) +void +gpgrt_strlist_free (gpgrt_strlist_t sl) +{ + _gpgrt_strlist_free (sl); +} + +gpgrt_strlist_t +gpgrt_strlist_add (gpgrt_strlist_t *list, const char *string, + unsigned int flags) +{ + return _gpgrt_strlist_add (list, string, flags); +} + +gpgrt_strlist_t +gpgrt_strlist_tokenize (gpgrt_strlist_t *list, const char *string, + const char *delim, unsigned int flags) +{ + return _gpgrt_strlist_tokenize (list, string, delim, flags); +} + +gpgrt_strlist_t +gpgrt_strlist_copy (gpgrt_strlist_t list) +{ + return _gpgrt_strlist_copy (list); +} + +gpgrt_strlist_t +gpgrt_strlist_rev (gpgrt_strlist_t *list) +{ + return _gpgrt_strlist_rev (list); +} + +gpgrt_strlist_t +gpgrt_strlist_prev (gpgrt_strlist_t head, gpgrt_strlist_t node) +{ + return _gpgrt_strlist_prev (head, node); +} + +gpgrt_strlist_t +gpgrt_strlist_last (gpgrt_strlist_t node) +{ + return _gpgrt_strlist_last (node); +} + +char * +gpgrt_strlist_pop (gpgrt_strlist_t *list) +{ + return _gpgrt_strlist_pop (list); +} + +gpgrt_strlist_t +gpgrt_strlist_find (gpgrt_strlist_t haystack, const char *needle) +{ + return _gpgrt_strlist_find (haystack, needle); +} + + + + /* For consistency reasons we use function wrappers also for Windows * specific function despite that they are technically not needed. */ #ifdef HAVE_W32_SYSTEM |