sr: add period parser

This commit is contained in:
Bert Vermeulen 2012-05-15 20:46:14 +02:00
parent 0fe1178996
commit 76f4c61086
2 changed files with 31 additions and 0 deletions

View File

@ -119,6 +119,7 @@ SR_API char **sr_parse_triggerstring(struct sr_dev *dev,
SR_API int sr_parse_sizestring(const char *sizestring, uint64_t *size);
SR_API uint64_t sr_parse_timestring(const char *timestring);
SR_API gboolean sr_parse_boolstring(const char *boolstring);
SR_API int sr_parse_period(const char *periodstr, struct sr_rational *r);
/*--- version.c -------------------------------------------------------------*/

View File

@ -314,3 +314,33 @@ SR_API gboolean sr_parse_boolstring(const char *boolstr)
return FALSE;
}
SR_API int sr_parse_period(const char *periodstr, struct sr_rational *r)
{
char *s;
r->p = strtoull(periodstr, &s, 10);
if (r->p == 0 && s == periodstr)
/* No digits found. */
return SR_ERR_ARG;
if (s && *s) {
while (*s == ' ')
s++;
if (!strcmp(s, "ns"))
r->q = 1000000000L;
else if (!strcmp(s, "us"))
r->q = 1000000;
else if (!strcmp(s, "ms"))
r->q = 1000;
else if (!strcmp(s, "s"))
r->q = 1;
else
/* Must have a time suffix. */
return SR_ERR_ARG;
}
return SR_OK;
}