[2955] in BarnOwl Developers
[PATCH] Replace owl_parse_delete with g_strfreev
daemon@ATHENA.MIT.EDU (David Benjamin)
Tue Mar 8 15:18:23 2011
From: David Benjamin <davidben@MIT.EDU>
To: barnowl-dev@mit.edu
Date: Tue, 8 Mar 2011 15:18:16 -0500
Also cut the pointless g_strdup in owl_cmddict_execute and allow argc to
be NULL if we don't care about the value.
---
cmd.c | 13 ++++---------
filter.c | 2 +-
tester.c | 2 +-
util.c | 20 +++++++-------------
zwrite.c | 2 +-
5 files changed, 14 insertions(+), 25 deletions(-)
diff --git a/cmd.c b/cmd.c
index 2036dbb..50964fc 100644
--- a/cmd.c
+++ b/cmd.c
@@ -88,27 +88,22 @@ char *_owl_cmddict_execute(const owl_cmddict *cd, const owl_context *ctx, const
char *owl_cmddict_execute(const owl_cmddict *cd, const owl_context *ctx, const char *cmdbuff) {
char **argv;
int argc;
- char *tmpbuff;
char *retval = NULL;
- tmpbuff=g_strdup(cmdbuff);
- argv=owl_parseline(tmpbuff, &argc);
- if (argc < 0) {
- g_free(tmpbuff);
+ argv = owl_parseline(cmdbuff, &argc);
+ if (argv == NULL) {
owl_function_makemsg("Unbalanced quotes");
return NULL;
}
if (argc < 1) {
- owl_parse_delete(argv, argc);
- g_free(tmpbuff);
+ g_strfreev(argv);
return NULL;
}
retval = _owl_cmddict_execute(cd, ctx, strs(argv), argc, cmdbuff);
- owl_parse_delete(argv, argc);
- g_free(tmpbuff);
+ g_strfreev(argv);
return retval;
}
diff --git a/filter.c b/filter.c
index 56b3f36..8e3d8df 100644
--- a/filter.c
+++ b/filter.c
@@ -9,7 +9,7 @@ owl_filter *owl_filter_new_fromstring(const char *name, const char *string)
argv = owl_parseline(string, &argc);
f = owl_filter_new(name, argc, strs(argv));
- owl_parse_delete(argv, argc);
+ g_strfreev(argv);
return f;
}
diff --git a/tester.c b/tester.c
index a667492..2951eaf 100644
--- a/tester.c
+++ b/tester.c
@@ -191,7 +191,7 @@ int owl_util_regtest(void)
__argv[__argc] == NULL); \
FAIL_UNLESS(desc " - parsed", \
!strcmp(__argv[0], unquoted)); \
- owl_parse_delete(__argv, __argc); \
+ g_strfreev(__argv); \
g_free(__quoted); \
} while (0)
diff --git a/util.c b/util.c
index 7be32a2..084b92b 100644
--- a/util.c
+++ b/util.c
@@ -97,18 +97,12 @@ char *owl_util_makepath(const char *in)
return(out);
}
-void owl_parse_delete(char **argv, int argc)
-{
- g_strfreev(argv);
-}
-
+/* Break a command line up into argv, argc. The caller must free
+ the returned values with g_strfreev. If there is an error argc will be set
+ to -1, argv will be NULL and the caller does not need to free anything. The
+ returned vector is NULL-terminated. */
char **owl_parseline(const char *line, int *argc)
{
- /* break a command line up into argv, argc. The caller must free
- the returned values. If there is an error argc will be set to
- -1, argv will be NULL and the caller does not need to free
- anything. The returned vector is NULL-terminated. */
-
GPtrArray *argv;
int i, len, between=1;
GString *curarg;
@@ -118,7 +112,7 @@ char **owl_parseline(const char *line, int *argc)
len=strlen(line);
curarg = g_string_new("");
quote='\0';
- *argc=0;
+ if (argc) *argc=0;
for (i=0; i<len+1; i++) {
/* find the first real character */
if (between) {
@@ -169,7 +163,7 @@ char **owl_parseline(const char *line, int *argc)
g_string_append_c(curarg, line[i]);
}
- *argc = argv->len;
+ if (argc) *argc = argv->len;
g_ptr_array_add(argv, NULL);
g_string_free(curarg, true);
@@ -179,7 +173,7 @@ char **owl_parseline(const char *line, int *argc)
* g_ptr_array_new_with_free_func. */
g_ptr_array_foreach(argv, (GFunc)g_free, NULL);
g_ptr_array_free(argv, true);
- *argc = -1;
+ if (argc) *argc = -1;
return(NULL);
}
diff --git a/zwrite.c b/zwrite.c
index 852e2df..6acd146 100644
--- a/zwrite.c
+++ b/zwrite.c
@@ -122,7 +122,7 @@ int owl_zwrite_create_from_line(owl_zwrite *z, const char *line)
}
}
- owl_parse_delete(argv, argc);
+ g_strfreev(argv);
if (badargs) {
return(-1);
--
1.7.3.3.399.g06ddf