core: New functions to help parsing of status lines.
* src/conversion.c (_gpgme_split_fields): New. (_gpgme_strtoul_field): New. -- Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
parent
eaf2d018e6
commit
a92946a8ca
@ -317,6 +317,53 @@ _gpgme_encode_percent_string (const char *src, char **destp, size_t len)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Split a string into space delimited fields and remove leading and
|
||||||
|
* trailing spaces from each field. A pointer to the each field is
|
||||||
|
* stored in ARRAY. Stop splitting at ARRAYSIZE fields. The function
|
||||||
|
* modifies STRING. The number of parsed fields is returned.
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
_gpgme_split_fields (char *string, char **array, int arraysize)
|
||||||
|
{
|
||||||
|
int n = 0;
|
||||||
|
char *p, *pend;
|
||||||
|
|
||||||
|
for (p = string; *p == ' '; p++)
|
||||||
|
;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
if (n == arraysize)
|
||||||
|
break;
|
||||||
|
array[n++] = p;
|
||||||
|
pend = strchr (p, ' ');
|
||||||
|
if (!pend)
|
||||||
|
break;
|
||||||
|
*pend++ = 0;
|
||||||
|
for (p = pend; *p == ' '; p++)
|
||||||
|
;
|
||||||
|
}
|
||||||
|
while (*p);
|
||||||
|
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Convert the field STRING into an unsigned long value. Check for
|
||||||
|
* trailing garbage. */
|
||||||
|
gpgme_error_t
|
||||||
|
_gpgme_strtoul_field (const char *string, unsigned long *result)
|
||||||
|
{
|
||||||
|
char *endp;
|
||||||
|
|
||||||
|
gpg_err_set_errno (0);
|
||||||
|
*result = strtoul (string, &endp, 0);
|
||||||
|
if (errno)
|
||||||
|
return gpg_error_from_syserror ();
|
||||||
|
if (endp == string || *endp)
|
||||||
|
return gpg_error (GPG_ERR_INV_VALUE);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifdef HAVE_W32_SYSTEM
|
#ifdef HAVE_W32_SYSTEM
|
||||||
static time_t
|
static time_t
|
||||||
_gpgme_timegm (struct tm *tm)
|
_gpgme_timegm (struct tm *tm)
|
||||||
|
@ -124,6 +124,15 @@ gpgme_error_t _gpgme_decode_percent_string (const char *src, char **destp,
|
|||||||
gpgme_error_t _gpgme_encode_percent_string (const char *src, char **destp,
|
gpgme_error_t _gpgme_encode_percent_string (const char *src, char **destp,
|
||||||
size_t len);
|
size_t len);
|
||||||
|
|
||||||
|
/* Split a string into space delimited fields and remove leading and
|
||||||
|
* trailing spaces from each field. A pointer to the each field is
|
||||||
|
* stored in ARRAY. Stop splitting at ARRAYSIZE fields. The function
|
||||||
|
* modifies STRING. The number of parsed fields is returned. */
|
||||||
|
int _gpgme_split_fields (char *string, char **array, int arraysize);
|
||||||
|
|
||||||
|
/* Convert the field STRING into an unsigned long value. Check for
|
||||||
|
* trailing garbage. */
|
||||||
|
gpgme_error_t _gpgme_strtoul_field (const char *string, unsigned long *result);
|
||||||
|
|
||||||
/* Parse the string TIMESTAMP into a time_t. The string may either be
|
/* Parse the string TIMESTAMP into a time_t. The string may either be
|
||||||
seconds since Epoch or in the ISO 8601 format like
|
seconds since Epoch or in the ISO 8601 format like
|
||||||
|
Loading…
Reference in New Issue
Block a user