[2955] in BarnOwl Developers

home help back first fref pref prev next nref lref last post

[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


home help back first fref pref prev next nref lref last post