]> sigrok.org Git - libsigrok.git/blobdiff - strutil.c
hantek-dso: support for SR_HWCAP_FILTER
[libsigrok.git] / strutil.c
index f8a52918deee38adef0217760a16dcd5ceabb456..ea69a2af628b43a6be95c7977863336fbe5da3c1 100644 (file)
--- a/strutil.c
+++ b/strutil.c
@@ -306,11 +306,41 @@ SR_API gboolean sr_parse_boolstring(const char *boolstr)
        if (!boolstr)
                return FALSE;
 
-       if (!g_strcasecmp(boolstr, "true") ||
-           !g_strcasecmp(boolstr, "yes") ||
-           !g_strcasecmp(boolstr, "on") ||
-           !g_strcasecmp(boolstr, "1"))
+       if (!g_ascii_strncasecmp(boolstr, "true", 4) ||
+           !g_ascii_strncasecmp(boolstr, "yes", 3) ||
+           !g_ascii_strncasecmp(boolstr, "on", 2) ||
+           !g_ascii_strncasecmp(boolstr, "1", 1))
                return TRUE;
 
        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;
+}
+
+