X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=strutil.c;h=b26caea0190c3510931eabdb6ef0f545d0ac7263;hb=a0ecd83bc6e07ea412db5cd0108d50d89e36df8f;hp=8b0203b01765cd06ff8fb35b07fb0df0309f0a1c;hpb=b53738baf76219237e0a6629905981d7a1f2508e;p=libsigrok.git diff --git a/strutil.c b/strutil.c index 8b0203b0..b26caea0 100644 --- a/strutil.c +++ b/strutil.c @@ -144,7 +144,7 @@ char **sr_parse_triggerstring(struct sr_device *device, } if (probenum < 1 || probenum > max_probes) { - printf("Invalid probe.\n"); + sr_err("Invalid probe.\n"); error = TRUE; break; } @@ -152,7 +152,7 @@ char **sr_parse_triggerstring(struct sr_device *device, if ((trigger = strchr(tokens[i], '='))) { for (tc = ++trigger; *tc; tc++) { if (strchr(trigger_types, *tc) == NULL) { - printf("Unsupported trigger type " + sr_err("Unsupported trigger type " "'%c'\n", *tc); error = TRUE; break; @@ -186,19 +186,19 @@ char **sr_parse_triggerstring(struct sr_device *device, * Spaces (but not other whitespace) between value and suffix are allowed. * * @param sizestring A string containing a (decimal) size value. - * @return The string's size value as uint64_t. + * @param size Pointer to uint64_t which will contain the string's size value. + * @return SR_OK or error code * - * TODO: Error handling. */ -uint64_t sr_parse_sizestring(const char *sizestring) +int sr_parse_sizestring(const char *sizestring, uint64_t *size) { - int multiplier; - uint64_t val; + int multiplier, done; char *s; - val = strtoull(sizestring, &s, 10); + *size = strtoull(sizestring, &s, 10); multiplier = 0; - while (s && *s && multiplier == 0) { + done = FALSE; + while (s && *s && multiplier == 0 && !done) { switch (*s) { case ' ': break; @@ -215,15 +215,18 @@ uint64_t sr_parse_sizestring(const char *sizestring) multiplier = SR_GHZ(1); break; default: - val = 0; - multiplier = -1; + done = TRUE; + s--; } s++; } if (multiplier > 0) - val *= multiplier; + *size *= multiplier; + + if (*s && strcasecmp(s, "Hz")) + return SR_ERR; - return val; + return SR_OK; } /** @@ -267,3 +270,17 @@ uint64_t sr_parse_timestring(const char *timestring) return time_msec; } + +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")) + return TRUE; + + return FALSE; +}