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/argparse.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/argparse.c')
-rw-r--r-- | src/argparse.c | 37 |
1 files changed, 6 insertions, 31 deletions
diff --git a/src/argparse.c b/src/argparse.c index c59e5b2..cb1527d 100644 --- a/src/argparse.c +++ b/src/argparse.c @@ -204,31 +204,6 @@ is_native_utf8 (void) } -static char * -trim_spaces (char *str) -{ - char *string, *p, *mark; - - string = str; - /* Find first non space character. */ - for (p=string; *p && isspace (*(unsigned char*)p) ; p++) - ; - /* Move characters. */ - for ((mark = NULL); (*string = *p); string++, p++) - if (isspace (*(unsigned char*)p)) - { - if (!mark) - mark = string; - } - else - mark = NULL; - if (mark) - *mark = '\0' ; /* Remove trailing spaces. */ - - return str ; -} - - static const char * map_fixed_string (const char *string) { @@ -1220,7 +1195,7 @@ handle_meta_let (gpgrt_argparse_t *arg, unsigned int alternate, char *args) if (*value) { *value++ = 0; - trim_spaces (value); + _gpgrt_trim_spaces (value); } if (!isascii (*name) || !isalpha (*name)) @@ -1273,7 +1248,7 @@ handle_meta_getenv (gpgrt_argparse_t *arg, unsigned int alternate, char *args) if (*varname) { *varname++ = 0; - trim_spaces (varname); + _gpgrt_trim_spaces (varname); } if (!isascii (*name) || !isalpha (*name)) @@ -1461,7 +1436,7 @@ handle_metacmd (gpgrt_argparse_t *arg, char *keyword) if (*rest) { *rest++ = 0; - trim_spaces (rest); + _gpgrt_trim_spaces (rest); } for (i=0; i < DIM (cmds); i++) @@ -1772,7 +1747,7 @@ _gpgrt_argparse (estream_t fp, gpgrt_argparse_t *arg, gpgrt_opt_t *opts_orig) { /* We are at the end of a line. */ gpgrt_assert (*keyword == '['); - trim_spaces (keyword+1); + _gpgrt_trim_spaces (keyword+1); if (!keyword[1]) { arg->r_opt = ARGPARSE_INVALID_META; /* Empty. */ @@ -1841,7 +1816,7 @@ _gpgrt_argparse (estream_t fp, gpgrt_argparse_t *arg, gpgrt_opt_t *opts_orig) if (p) { *p++ = 0; - trim_spaces (p); + _gpgrt_trim_spaces (p); } if (!p || !*p) @@ -1873,7 +1848,7 @@ _gpgrt_argparse (estream_t fp, gpgrt_argparse_t *arg, gpgrt_opt_t *opts_orig) if (buffer) { - trim_spaces (buffer); + _gpgrt_trim_spaces (buffer); p = buffer; if (*p == '"') { |