[2933] in BarnOwl Developers

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

[PATCH 4/5] refactor owl_zephyr_get_message

daemon@ATHENA.MIT.EDU (Karl Ramm)
Fri Feb 25 21:24:32 2011

From: Karl Ramm <kcr@1ts.org>
To: barnowl-dev@mit.edu
Cc: Karl Ramm <kcr@1ts.org>
Date: Fri, 25 Feb 2011 21:24:20 -0500
In-Reply-To: <uussjvbr0tc.fsf@1ts.org>

Refactor and make the control flow simpler.  Really this code
should get moved to perl.
---
 zephyr.c |   65 ++++++++++++++++++++++---------------------------------------
 1 files changed, 24 insertions(+), 41 deletions(-)

diff --git a/zephyr.c b/zephyr.c
index f546bf5..155146c 100644
--- a/zephyr.c
+++ b/zephyr.c
@@ -590,65 +590,48 @@ int owl_zephyr_get_num_fields(const void *n)
  */
 char *owl_zephyr_get_message(const ZNotice_t *n, const owl_message *m)
 {
+#define OWL_NFIELDS	5
+  int i;
+  char *fields[OWL_NFIELDS + 1];
+  char *msg = NULL;
+
   /* don't let ping messages have a body */
   if (!strcasecmp(n->z_opcode, "ping")) {
     return(g_strdup(""));
   }
 
+  for(i = 0; i < OWL_NFIELDS; i++)
+    fields[i + 1] = owl_zephyr_get_field(n, i + 1);
+
   /* deal with MIT NOC messages */
   if (!strcasecmp(n->z_default_format, "@center(@bold(NOC Message))\n\n@bold(Sender:) $1 <$sender>\n@bold(Time:  ) $time\n\n@italic($opcode service on $instance $3.) $4\n")) {
-    char *msg, *field3, *field4;
-
-    field3 = owl_zephyr_get_field(n, 3);
-    field4 = owl_zephyr_get_field(n, 4);
 
-    msg = g_strdup_printf("%s service on %s %s\n%s", n->z_opcode, n->z_class_inst, field3, field4);
-    g_free(field3);
-    g_free(field4);
-    if (msg) {
-      return msg;
-    }
+    msg = g_strdup_printf("%s service on %s %s\n%s", n->z_opcode, n->z_class_inst, fields[3], fields[4]);
   }
   /* deal with MIT Discuss messages */
   else if (!strcasecmp(n->z_default_format, "New transaction [$1] entered in $2\nFrom: $3 ($5)\nSubject: $4") ||
            !strcasecmp(n->z_default_format, "New transaction [$1] entered in $2\nFrom: $3\nSubject: $4")) {
-    char *msg, *field1, *field2, *field3, *field4, *field5;
-    
-    field1 = owl_zephyr_get_field(n, 1);
-    field2 = owl_zephyr_get_field(n, 2);
-    field3 = owl_zephyr_get_field(n, 3);
-    field4 = owl_zephyr_get_field(n, 4);
-    field5 = owl_zephyr_get_field(n, 5);
     
-    msg = g_strdup_printf("New transaction [%s] entered in %s\nFrom: %s (%s)\nSubject: %s", field1, field2, field3, field5, field4);
-    g_free(field1);
-    g_free(field2);
-    g_free(field3);
-    g_free(field4);
-    g_free(field5);
-    if (msg) {
-      return msg;
-    }
+    msg = g_strdup_printf("New transaction [%s] entered in %s\nFrom: %s (%s)\nSubject: %s",
+                          fields[1], fields[2], fields[3], fields[5], fields[4]);
   }
   /* deal with MIT Moira messages */
   else if (!strcasecmp(n->z_default_format, "MOIRA $instance on $fromhost:\n $message\n")) {
-    char *msg, *field1;
-    
-    field1 = owl_zephyr_get_field(n, 1);
-    
-    msg = g_strdup_printf("MOIRA %s on %s: %s", n->z_class_inst, owl_message_get_hostname(m), field1);
-    g_free(field1);
-    if (msg) {
-      return msg;
-    }
+    msg = g_strdup_printf("MOIRA %s on %s: %s",
+                          n->z_class_inst,
+                          owl_message_get_hostname(m),
+                          fields[1]);
+  } else {
+    if (owl_zephyr_get_num_fields(n) == 1)
+      msg = g_strdup(fields[1]);
+    else
+      msg = g_strdup(fields[2]);
   }
 
-  if (owl_zephyr_get_num_fields(n) == 1) {
-    return(owl_zephyr_get_field(n, 1));
-  }
-  else {
-    return(owl_zephyr_get_field(n, 2));
-  }
+  for (i = 0; i < OWL_NFIELDS; i++)
+    g_free(fields[i + 1]);
+
+  return msg;
 }
 #endif
 
-- 
1.7.2.3


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