X-Git-Url: https://sigrok.org/gitweb/?p=sigrok-cli.git;a=blobdiff_plain;f=parsers.c;h=f587f8d0e9da6701083a16283de0992e64b51c8f;hp=206e1d639940f6a042ed87b55704f958ab614456;hb=ad54a1a630e6887204bc57a95075f403fd44aa6c;hpb=630293b49d7645f2525ac5addad37c1f9315d2ce
diff --git a/parsers.c b/parsers.c
index 206e1d6..f587f8d 100644
--- a/parsers.c
+++ b/parsers.c
@@ -17,15 +17,14 @@
* along with this program. If not, see .
*/
+#include "sigrok-cli.h"
#include
#include
#include
#include
#include
-#include
-#include "sigrok-cli.h"
-struct sr_probe *find_probe(GSList *probelist, const char *probename)
+static struct sr_probe *find_probe(GSList *probelist, const char *probename)
{
struct sr_probe *probe;
GSList *l;
@@ -73,25 +72,25 @@ GSList *parse_probestring(struct sr_dev_inst *sdi, const char *probestring)
/* Need exactly two arguments. */
g_critical("Invalid probe syntax '%s'.", tokens[i]);
ret = SR_ERR;
- break;
+ goto range_fail;
}
b = strtol(range[0], &eptr, 10);
if (eptr == range[0] || *eptr != '\0') {
g_critical("Invalid probe '%s'.", range[0]);
ret = SR_ERR;
- break;
+ goto range_fail;
}
e = strtol(range[1], NULL, 10);
if (eptr == range[1] || *eptr != '\0') {
g_critical("Invalid probe '%s'.", range[1]);
ret = SR_ERR;
- break;
+ goto range_fail;
}
if (b < 0 || b >= e) {
g_critical("Invalid probe range '%s'.", tokens[i]);
ret = SR_ERR;
- break;
+ goto range_fail;
}
while (b <= e) {
@@ -110,6 +109,10 @@ GSList *parse_probestring(struct sr_dev_inst *sdi, const char *probestring)
probelist = g_slist_append(probelist, probe);
b++;
}
+range_fail:
+ if (range)
+ g_strfreev(range);
+
if (ret != SR_OK)
break;
} else {
@@ -133,13 +136,11 @@ GSList *parse_probestring(struct sr_dev_inst *sdi, const char *probestring)
probe->name = g_strdup(names[1]);
}
probelist = g_slist_append(probelist, probe);
+
+ if (names)
+ g_strfreev(names);
}
}
- if (range)
- g_strfreev(range);
-
- if (names)
- g_strfreev(names);
if (ret != SR_OK) {
g_slist_free(probelist);
@@ -181,7 +182,7 @@ GHashTable *parse_generic_arg(const char *arg, gboolean sep_first)
return hash;
}
-char *strcanon(const char *str)
+static char *strcanon(const char *str)
{
int p0, p1;
char *s;