[1153] in BarnOwl Developers

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

[D-O-H] r1101 - branches/barnowl_perlaim/owl

daemon@ATHENA.MIT.EDU (geofft@MIT.EDU)
Thu Oct 29 18:13:33 2009

Resent-From: nelhage@mit.edu
Resent-To: barnowl-dev-mtg@charon.mit.edu
X-Original-To: nelhage@nelhage.com
Date: Sun, 10 Aug 2008 10:53:17 -0400 (EDT)
To: dirty-owl-hackers@mit.edu
From: geofft@MIT.EDU
Reply-to: dirty-owl-hackers@MIT.EDU

Author: geofft
Date: 2008-08-10 10:53:16 -0400 (Sun, 10 Aug 2008)
New Revision: 1101

Modified:
   branches/barnowl_perlaim/owl/commands.c
   branches/barnowl_perlaim/owl/editwin.c
   branches/barnowl_perlaim/owl/functions.c
   branches/barnowl_perlaim/owl/global.c
   branches/barnowl_perlaim/owl/owl.h
   branches/barnowl_perlaim/owl/perlconfig.c
   branches/barnowl_perlaim/owl/perlglue.xs
Log:
Now it compiles. Highly likely to leak or crash, although it seems to work for me...

Modified: branches/barnowl_perlaim/owl/commands.c
===================================================================
--- branches/barnowl_perlaim/owl/commands.c	2008-08-10 12:33:50 UTC (rev 1100)
+++ branches/barnowl_perlaim/owl/commands.c	2008-08-10 14:53:16 UTC (rev 1101)
@@ -2470,7 +2470,7 @@
 void owl_command_editresponse_done(owl_editwin *e)
 {
   char *text = owl_strdup(owl_editwin_get_text(e));
-  void (*callback)(void *, char *) = owl_editwin_get_callback(e);
+  owl_callback_t callback = owl_editwin_get_callback(e);
   void *cbdata = owl_editwin_get_cbdata(e);
 
   owl_global_set_typwin_inactive(&g);

Modified: branches/barnowl_perlaim/owl/editwin.c
===================================================================
--- branches/barnowl_perlaim/owl/editwin.c	2008-08-10 12:33:50 UTC (rev 1100)
+++ branches/barnowl_perlaim/owl/editwin.c	2008-08-10 14:53:16 UTC (rev 1101)
@@ -83,41 +83,27 @@
   e->dotsend=1;
 }
 
-void owl_editwin_set_command(owl_editwin *e, char *command) {
-  if(e->command) owl_free(e->command);
-  e->command = owl_strdup(command);
-}
-
-char *owl_editwin_get_command(owl_editwin *e) {
-  if(e->command) return e->command;
-  return "";
-}
-
-void owl_editwin_set_callback(owl_editwin *e, void (*cb)(void*, char*)) {
+void owl_editwin_set_callback(owl_editwin *e, owl_callback_t cb, void *cbdata) {
   e->callback = cb;
+  e->cbdata = cbdata;
 }
 
-void (*owl_editwin_get_callback(owl_editwin*))(void *cbdata, char *text) {
+owl_callback_t owl_editwin_get_callback(owl_editwin *e) {
   return e->callback;
 }
 
-void owl_editwin_set_cbdata(owl_editwin *e, void *data) {
-  e->cbdata = data;
-}
-
 void* owl_editwin_get_cbdata(owl_editwin *e) {
   return e->cbdata;
 }
 
 void owl_editwin_do_callback(owl_editwin *e) {
   /* XXX get rid of me */
-  void (*cb)(void*, char*);
-  cb=owl_editwin_get_callback(e);
+  owl_callback_t cb = owl_editwin_get_callback(e);
   if(!cb) {
     owl_function_error("Internal error: No editwin callback!");
   } else {
     /* owl_function_error("text: |%s|", owl_editwin_get_text(e)); */
-    cb(e->cbdata, e->text);
+    cb(e->cbdata, owl_editwin_get_text(e));
   }
 }
 

Modified: branches/barnowl_perlaim/owl/functions.c
===================================================================
--- branches/barnowl_perlaim/owl/functions.c	2008-08-10 12:33:50 UTC (rev 1100)
+++ branches/barnowl_perlaim/owl/functions.c	2008-08-10 14:53:16 UTC (rev 1101)
@@ -267,8 +267,7 @@
   /* make it active */
   owl_global_set_typwin_active(&g);
 
-  owl_global_set_buffercommand(&g, line);
-  owl_global_set_buffercallback(&g, &owl_callback_zwrite);
+  owl_global_set_buffercallback(&g, &owl_callback_zwrite, line);
 }
 
 void owl_function_loopwrite_setup()
@@ -292,13 +291,11 @@
   /* make it active */
   owl_global_set_typwin_active(&g);
 
-  owl_global_set_buffercommand(&g, "loopwrite");
-  owl_global_set_buffercallback(&g, &owl_callback_loopwrite);
+  owl_global_set_buffercallback(&g, &owl_callback_loopwrite, "loopwrite");
 }
 
-void owl_callback_zwrite(owl_editwin *e) {
-  owl_function_zwrite(owl_editwin_get_command(e),
-                      owl_editwin_get_text(e));
+void owl_callback_zwrite(void *cbdata, char *text) {
+  owl_function_zwrite((char *)cbdata, text);
 }
 
 /* send, log and display an outgoing zephyr.  If 'msg' is NULL
@@ -397,8 +394,8 @@
   owl_zwrite_free(&z);
 }
 
-void owl_callback_loopwrite(owl_editwin *e) {
-  owl_function_loopwrite(owl_editwin_get_text(e));
+void owl_callback_loopwrite(void *cbdata, char *text) {
+  owl_function_loopwrite(text);
 }
 
 void owl_function_loopwrite(char *msg)

Modified: branches/barnowl_perlaim/owl/global.c
===================================================================
--- branches/barnowl_perlaim/owl/global.c	2008-08-10 12:33:50 UTC (rev 1100)
+++ branches/barnowl_perlaim/owl/global.c	2008-08-10 14:53:16 UTC (rev 1101)
@@ -236,24 +236,12 @@
   return(&(g->tw));
 }
 
-/* buffercommand */
+/* buffercallback */
 
-void owl_global_set_buffercommand(owl_global *g, char *command) {
-  owl_editwin_set_command(owl_global_get_typwin(g), command);
+void owl_global_set_buffercallback(owl_global *g, owl_callback_t cb, char *line) {
+  owl_editwin_set_callback(owl_global_get_typwin(g), cb, line);
 }
 
-char *owl_global_get_buffercommand(owl_global *g) {
-  return owl_editwin_get_command(owl_global_get_typwin(g));
-}
-
-void owl_global_set_buffercallback(owl_global *g, void (*cb)(owl_editwin*)) {
-  owl_editwin_set_callback(owl_global_get_typwin(g), cb);
-}
-
-void (*owl_global_get_buffercallback(owl_global *g))(owl_editwin*) {
-  return owl_editwin_get_callback(owl_global_get_typwin(g));
-}
-
 /* refresh */
 
 int owl_global_is_needrefresh(owl_global *g) {

Modified: branches/barnowl_perlaim/owl/owl.h
===================================================================
--- branches/barnowl_perlaim/owl/owl.h	2008-08-10 12:33:50 UTC (rev 1100)
+++ branches/barnowl_perlaim/owl/owl.h	2008-08-10 14:53:16 UTC (rev 1101)
@@ -203,6 +203,8 @@
 
 #define LINE 2048
 
+typedef void (*owl_callback_t)(void *cbdata, char *text);
+
 typedef struct _owl_variable {
   char *name;
   int   type;  /* OWL_VARIABLE_* */
@@ -451,8 +453,7 @@
   int dotsend;
   int echochar;
 
-  char *command;
-  void (*callback)(void *, char *);
+  owl_callback_t callback;
   void *cbdata;
 } owl_editwin;
 

Modified: branches/barnowl_perlaim/owl/perlconfig.c
===================================================================
--- branches/barnowl_perlaim/owl/perlconfig.c	2008-08-10 12:33:50 UTC (rev 1100)
+++ branches/barnowl_perlaim/owl/perlconfig.c	2008-08-10 14:53:16 UTC (rev 1101)
@@ -471,14 +471,13 @@
   SvREFCNT_dec(d->pfunc);
 }
 
-void owl_perlconfig_edit_callback(void *cbdata, char *c_text);
+void owl_perlconfig_edit_callback(void *cbdata, char *c_text)
 {
   SV *cb = (SV*)cbdata;
   SV *text;
   unsigned int n_a;
   dSP;
 
-  e->cbdata = NULL;
   if(cb == NULL) {
     owl_function_error("Perl callback is NULL!");
   }

Modified: branches/barnowl_perlaim/owl/perlglue.xs
===================================================================
--- branches/barnowl_perlaim/owl/perlglue.xs	2008-08-10 12:33:50 UTC (rev 1100)
+++ branches/barnowl_perlaim/owl/perlglue.xs	2008-08-10 14:53:16 UTC (rev 1101)
@@ -165,8 +165,7 @@
 		owl_function_start_question(line);
 
 		SvREFCNT_inc(callback);
-		owl_editwin_set_cbdata(owl_global_get_typwin(&g), callback);
-		owl_editwin_set_callback(owl_global_get_typwin(&g), owl_perlconfig_edit_callback);
+		owl_editwin_set_callback(owl_global_get_typwin(&g), owl_perlconfig_edit_callback, callback);
 	}
 
 void start_password(line, callback)
@@ -181,8 +180,7 @@
 		owl_function_start_password(line);
 
 		SvREFCNT_inc(callback);
-		owl_editwin_set_cbdata(owl_global_get_typwin(&g), callback);
-		owl_editwin_set_callback(owl_global_get_typwin(&g), owl_perlconfig_edit_callback);
+		owl_editwin_set_callback(owl_global_get_typwin(&g), owl_perlconfig_edit_callback, callback);
 	}
 
 void start_edit_win(line, callback)
@@ -207,8 +205,7 @@
 		owl_global_set_typwin_active(&g);
 
 		SvREFCNT_inc(callback);
-		owl_editwin_set_cbdata(owl_global_get_typwin(&g), callback);
-		owl_editwin_set_callback(owl_global_get_typwin(&g), owl_perlconfig_edit_callback);
+		owl_editwin_set_callback(owl_global_get_typwin(&g), owl_perlconfig_edit_callback, callback);
 	}
 
 


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